Diff of the two buildlogs: -- --- b1/build.log 2020-03-18 20:44:43.752520281 +0000 +++ b2/build.log 2020-03-18 20:56:19.618520064 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Wed Mar 18 08:00:27 -12 2020 -I: pbuilder-time-stamp: 1584561627 +I: Current time: Wed Apr 21 17:07:47 +14 2021 +I: pbuilder-time-stamp: 1618974467 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/buster-reproducible-base.tgz] I: copying local configuration @@ -18,7 +18,7 @@ I: Extracting source gpgv: unknown type of key resource 'trustedkeys.kbx' gpgv: keyblock resource '/root/.gnupg/trustedkeys.kbx': General error -gpgv: Signature made Sun Jan 20 05:49:11 2019 -12 +gpgv: Signature made Mon Jan 21 07:49:11 2019 +14 gpgv: using RSA key 8F58342BEABE1EF4379551FBB193770C186A1C7D gpgv: Can't check signature: No public key dpkg-source: warning: failed to verify signature on ./ppl_1.2-7.dsc @@ -32,6 +32,18 @@ dpkg-source: info: applying fix_AC_CHECK_SWI_PROLOG.patch I: Not using root during the build. I: Installing the build-deps +I: user script /srv/workspace/pbuilder/36219/tmp/hooks/D01_modify_environment starting +disorder-fs debug: Running on profitbricks-build6-i386. +I: Changing host+domainname to test build reproducibility +I: Adding a custom variable just for the fun of it... +I: Changing /bin/sh to bash +Removing 'diversion of /bin/sh to /bin/sh.distrib by dash' +Adding 'diversion of /bin/sh to /bin/sh.distrib by bash' +Removing 'diversion of /usr/share/man/man1/sh.1.gz to /usr/share/man/man1/sh.distrib.1.gz by dash' +Adding 'diversion of /usr/share/man/man1/sh.1.gz to /usr/share/man/man1/sh.distrib.1.gz by bash' +I: Setting pbuilder2's login shell to /bin/bash +I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other +I: user script /srv/workspace/pbuilder/36219/tmp/hooks/D01_modify_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -268,7 +280,7 @@ Get: 179 http://deb.debian.org/debian buster/main i386 swi-prolog i386 8.0.2+dfsg-3+deb10u1 [24.4 kB] Get: 180 http://deb.debian.org/debian buster/main i386 texlive-lang-greek all 2018.20190227-2 [76.3 MB] Get: 181 http://deb.debian.org/debian buster/main i386 texlive-science all 2018.20190227-2 [3168 kB] -Fetched 296 MB in 1min 4s (4633 kB/s) +Fetched 296 MB in 10s (29.6 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libbsd0:i386. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19231 files and directories currently installed.) @@ -1032,7 +1044,7 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/ppl-1.2/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b +I: Running cd /build/ppl-1.2/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b dpkg-buildpackage: info: source package ppl dpkg-buildpackage: info: source version 1:1.2-7 dpkg-buildpackage: info: source distribution unstable @@ -1071,8 +1083,8 @@ checking for mawk... mawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes -checking whether UID '1111' is supported by ustar format... yes -checking whether GID '1111' is supported by ustar format... yes +checking whether UID '2222' is supported by ustar format... yes +checking whether GID '2222' is supported by ustar format... yes checking how to create a ustar tar archive... gnutar checking for gcc... gcc checking whether the C compiler works... yes @@ -1358,7 +1370,7 @@ debian/rules override_dh_auto_build-indep make[1]: Entering directory '/build/ppl-1.2' dh_auto_build - make -j10 + make -j18 make[2]: Entering directory '/build/ppl-1.2' make all-recursive make[3]: Entering directory '/build/ppl-1.2' @@ -1371,8 +1383,8 @@ g++ -DHAVE_CONFIG_H -I. -I.. -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o timings.o timings.cc /bin/sed -e 's,[@]PERL[@],/usr/bin/perl,g' -e 's,[@]generated_automatically[@],Generated automatically: do not modify; modify the .in file instead.,g' < ./build_header.in > build_header /bin/sed -e 's,[@]PERL[@],/usr/bin/perl,g' -e 's,[@]generated_automatically[@],Generated automatically: do not modify; modify the .in file instead.,g' < ./text2cxxarray.in > text2cxxarray -chmod +x text2cxxarray chmod +x build_header +chmod +x text2cxxarray rm -f libppl_utils.a ar cru libppl_utils.a timings.o ar: `u' modifier ignored since `D' is the default (see `U') @@ -1393,10 +1405,10 @@ ../CREDITS >>CREDITS.hh ../utils/text2cxxarray --name=BUGS_array \ ../BUGS >>BUGS.cc -../utils/text2cxxarray --name=COPYING_array \ - ../COPYING >>COPYING.cc ../utils/text2cxxarray --name=CREDITS_array \ ../CREDITS >>CREDITS.cc +../utils/text2cxxarray --name=COPYING_array \ + ../COPYING >>COPYING.cc ../utils/build_header \ -I .. -I ../src \ ../src/ppl_header.hh >ppl.hh @@ -1406,81 +1418,122 @@ g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o COPYING.o COPYING.cc g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o CREDITS.o CREDITS.cc g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl-config.o ppl-config.cc -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o assertions.lo assertions.cc -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Box.lo Box.cc -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o checked.lo checked.cc -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Checked_Number.lo Checked_Number.cc -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Float.lo Float.cc -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o fpu-ia32.lo fpu-ia32.cc +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o assertions.lo assertions.cc +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Box.lo Box.cc +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o checked.lo checked.cc +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Checked_Number.lo Checked_Number.cc +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Float.lo Float.cc +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o fpu-ia32.lo fpu-ia32.cc +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o BDS_Status.lo BDS_Status.cc +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Box_Status.lo Box_Status.cc +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Og_Status.lo Og_Status.cc +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Concrete_Expression.lo Concrete_Expression.cc +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Constraint.lo Constraint.cc +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Constraint_System.lo Constraint_System.cc +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Congruence.lo Congruence.cc +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Congruence_System.lo Congruence_System.cc +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Generator_System.lo Generator_System.cc +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Grid_Generator_System.lo Grid_Generator_System.cc +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Generator.lo Generator.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Box.cc -fPIC -DPIC -o .libs/Box.o libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Checked_Number.cc -fPIC -DPIC -o .libs/Checked_Number.o -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o BDS_Status.lo BDS_Status.cc -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Box_Status.lo Box_Status.cc -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Og_Status.lo Og_Status.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c checked.cc -fPIC -DPIC -o .libs/checked.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c BDS_Status.cc -fPIC -DPIC -o .libs/BDS_Status.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c assertions.cc -fPIC -DPIC -o .libs/assertions.o libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Float.cc -fPIC -DPIC -o .libs/Float.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Constraint.cc -fPIC -DPIC -o .libs/Constraint.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Box_Status.cc -fPIC -DPIC -o .libs/Box_Status.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Og_Status.cc -fPIC -DPIC -o .libs/Og_Status.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Constraint_System.cc -fPIC -DPIC -o .libs/Constraint_System.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Congruence_System.cc -fPIC -DPIC -o .libs/Congruence_System.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Generator_System.cc -fPIC -DPIC -o .libs/Generator_System.o libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c fpu-ia32.cc -fPIC -DPIC -o .libs/fpu-ia32.o -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Box.cc -fPIC -DPIC -o .libs/Box.o -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c assertions.cc -fPIC -DPIC -o .libs/assertions.o -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c BDS_Status.cc -fPIC -DPIC -o .libs/BDS_Status.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Concrete_Expression.cc -fPIC -DPIC -o .libs/Concrete_Expression.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c checked.cc -fPIC -DPIC -o .libs/checked.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Congruence.cc -fPIC -DPIC -o .libs/Congruence.o libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c BDS_Status.cc -o BDS_Status.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Og_Status.cc -fPIC -DPIC -o .libs/Og_Status.o -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Box_Status.cc -fPIC -DPIC -o .libs/Box_Status.o -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Concrete_Expression.lo Concrete_Expression.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_Generator_System.cc -fPIC -DPIC -o .libs/Grid_Generator_System.o libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Og_Status.cc -o Og_Status.o >/dev/null 2>&1 libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Box_Status.cc -o Box_Status.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Generator.cc -fPIC -DPIC -o .libs/Generator.o +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Grid_Generator.lo Grid_Generator.cc libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c fpu-ia32.cc -o fpu-ia32.o >/dev/null 2>&1 -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Constraint.lo Constraint.cc -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Constraint_System.lo Constraint_System.cc -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Congruence.lo Congruence.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Concrete_Expression.cc -fPIC -DPIC -o .libs/Concrete_Expression.o -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Constraint.cc -fPIC -DPIC -o .libs/Constraint.o -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Constraint_System.cc -fPIC -DPIC -o .libs/Constraint_System.o -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Congruence.cc -fPIC -DPIC -o .libs/Congruence.o +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Handler.lo Handler.cc +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Init.lo Init.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_Generator.cc -fPIC -DPIC -o .libs/Grid_Generator.o +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Coefficient.lo Coefficient.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Handler.cc -fPIC -DPIC -o .libs/Handler.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Init.cc -fPIC -DPIC -o .libs/Init.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Handler.cc -o Handler.o >/dev/null 2>&1 libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c assertions.cc -o assertions.o >/dev/null 2>&1 +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Linear_Expression.lo Linear_Expression.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Coefficient.cc -fPIC -DPIC -o .libs/Coefficient.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Linear_Expression.cc -fPIC -DPIC -o .libs/Linear_Expression.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Float.cc -o Float.o >/dev/null 2>&1 +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Linear_Expression_Impl.lo Linear_Expression_Impl.cc In file included from CO_Tree_defs.hh:1557, from Sparse_Row_defs.hh:29, from Expression_Adapter_defs.hh:31, from Linear_Expression_defs.hh:48, - from Constraint_defs.hh:36, - from Box_defs.hh:34, - from Box.cc:25: + from Generator_defs.hh:40, + from Generator.cc:25: CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); ^ -In file included from mp_std_bits_defs.hh:28, - from checked_defs.hh:27, - from Checked_Number_defs.hh:28, - from Coefficient_types.hh:16, - from Coefficient_defs.hh:27, - from Box_defs.hh:29, - from Box.cc:25: +In file included from meta_programming.hh:27, + from C_Integer.hh:27, + from globals_defs.hh:28, + from Variable_inlines.hh:27, + from Variable_defs.hh:155, + from Generator_defs.hh:39, + from Generator.cc:25: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Congruence_System.lo Congruence_System.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Float.cc -o Float.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Congruence_System.cc -fPIC -DPIC -o .libs/Congruence_System.o -In file included from Linear_System_templates.hh:30, +In file included from CO_Tree_defs.hh:1557, + from Sparse_Row_defs.hh:29, + from Expression_Adapter_defs.hh:31, + from Linear_Expression_defs.hh:48, + from Linear_System_templates.hh:28, + from Linear_System_defs.hh:580, + from Generator_System_defs.hh:30, + from Generator_System.cc:25: +CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from meta_programming.hh:27, + from C_Integer.hh:27, + from globals_defs.hh:28, + from Swapping_Vector_defs.hh:28, + from Linear_System_defs.hh:29, + from Generator_System_defs.hh:30, + from Generator_System.cc:25: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from CO_Tree_defs.hh:1557, + from Sparse_Row_defs.hh:29, + from Expression_Adapter_defs.hh:31, + from Linear_Expression_defs.hh:48, + from Linear_System_templates.hh:28, from Linear_System_defs.hh:580, from Constraint_System_defs.hh:29, - from Box_inlines.hh:28, - from Box_defs.hh:2285, - from Box.cc:25: -Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': -Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': -Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ + from Constraint_System.cc:25: +CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from meta_programming.hh:27, + from C_Integer.hh:27, + from globals_defs.hh:28, + from Swapping_Vector_defs.hh:28, + from Linear_System_defs.hh:29, + from Constraint_System_defs.hh:29, + from Constraint_System.cc:25: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from CO_Tree_defs.hh:1557, from Sparse_Row_defs.hh:29, from Expression_Adapter_defs.hh:31, @@ -1501,40 +1554,14 @@ /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ -In file included from ppl-config.cc:25: -ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from ppl.hh:754, - from ppl-config.cc:25: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ -In file included from ppl-config.cc:25: -ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': -ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -ppl.hh:42068:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': -ppl.hh:42075:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -ppl.hh:42076:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Checked_Number.cc -o Checked_Number.o >/dev/null 2>&1 In file included from CO_Tree_defs.hh:1557, from Sparse_Row_defs.hh:29, from Expression_Adapter_defs.hh:31, from Linear_Expression_defs.hh:48, from Linear_System_templates.hh:28, from Linear_System_defs.hh:580, - from Constraint_System_defs.hh:29, - from Constraint_System.cc:25: + from Grid_Generator_System_defs.hh:29, + from Grid_Generator_System.cc:25: CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -1544,8 +1571,8 @@ from globals_defs.hh:28, from Swapping_Vector_defs.hh:28, from Linear_System_defs.hh:29, - from Constraint_System_defs.hh:29, - from Constraint_System.cc:25: + from Grid_Generator_System_defs.hh:29, + from Grid_Generator_System.cc:25: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -1569,28 +1596,39 @@ /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Concrete_Expression.cc -o Concrete_Expression.o >/dev/null 2>&1 -In file included from Linear_System_templates.hh:30, - from Linear_System_defs.hh:580, - from Constraint_System_defs.hh:29, - from Constraint_System.cc:25: -Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': -Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': -Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c checked.cc -o checked.o >/dev/null 2>&1 -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Generator_System.lo Generator_System.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Generator_System.cc -fPIC -DPIC -o .libs/Generator_System.o +In file included from ppl-config.cc:25: +ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ppl.hh:754, + from ppl-config.cc:25: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from CO_Tree_defs.hh:1557, + from Sparse_Row_defs.hh:29, + from Expression_Adapter_defs.hh:31, + from Linear_Expression_defs.hh:48, + from Constraint_defs.hh:36, + from Box_defs.hh:34, + from Box.cc:25: +CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from mp_std_bits_defs.hh:28, + from checked_defs.hh:27, + from Checked_Number_defs.hh:28, + from Coefficient_types.hh:16, + from Coefficient_defs.hh:27, + from Box_defs.hh:29, + from Box.cc:25: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Checked_Number.cc -o Checked_Number.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Linear_Expression_Impl.cc -fPIC -DPIC -o .libs/Linear_Expression_Impl.o In file included from CO_Tree_defs.hh:1557, from Sparse_Row_defs.hh:29, from Expression_Adapter_defs.hh:31, @@ -1613,8 +1651,8 @@ ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from Linear_System_templates.hh:30, from Linear_System_defs.hh:580, - from Constraint_System_defs.hh:29, - from Congruence_System.cc:27: + from Generator_System_defs.hh:30, + from Generator_System.cc:25: Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -1629,37 +1667,28 @@ Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Box.cc -o Box.o >/dev/null 2>&1 -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Grid_Generator_System.lo Grid_Generator_System.cc -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Generator.lo Generator.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_Generator_System.cc -fPIC -DPIC -o .libs/Grid_Generator_System.o -In file included from CO_Tree_defs.hh:1557, - from Sparse_Row_defs.hh:29, - from Expression_Adapter_defs.hh:31, - from Linear_Expression_defs.hh:48, - from Linear_System_templates.hh:28, +In file included from Linear_System_templates.hh:30, from Linear_System_defs.hh:580, - from Generator_System_defs.hh:30, - from Generator_System.cc:25: -CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from meta_programming.hh:27, - from C_Integer.hh:27, - from globals_defs.hh:28, - from Swapping_Vector_defs.hh:28, - from Linear_System_defs.hh:29, - from Generator_System_defs.hh:30, - from Generator_System.cc:25: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Generator.cc -fPIC -DPIC -o .libs/Generator.o + from Constraint_System_defs.hh:29, + from Constraint_System.cc:25: +Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ In file included from Linear_System_templates.hh:30, from Linear_System_defs.hh:580, - from Generator_System_defs.hh:30, - from Generator_System.cc:25: + from Grid_Generator_System_defs.hh:29, + from Grid_Generator_System.cc:25: Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -1674,19 +1703,12 @@ Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Grid_Generator.lo Grid_Generator.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Congruence.cc -o Congruence.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_Generator.cc -fPIC -DPIC -o .libs/Grid_Generator.o -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Constraint.cc -o Constraint.o >/dev/null 2>&1 -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Handler.lo Handler.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Handler.cc -fPIC -DPIC -o .libs/Handler.o -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Handler.cc -o Handler.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Concrete_Expression.cc -o Concrete_Expression.o >/dev/null 2>&1 In file included from CO_Tree_defs.hh:1557, from Sparse_Row_defs.hh:29, from Expression_Adapter_defs.hh:31, from Linear_Expression_defs.hh:48, - from Generator_defs.hh:40, - from Generator.cc:25: + from Init.cc:31: CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -1696,39 +1718,16 @@ from globals_defs.hh:28, from Variable_inlines.hh:27, from Variable_defs.hh:155, - from Generator_defs.hh:39, - from Generator.cc:25: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Init.lo Init.cc -In file included from CO_Tree_defs.hh:1557, - from Sparse_Row_defs.hh:29, - from Expression_Adapter_defs.hh:31, - from Linear_Expression_defs.hh:48, - from Linear_System_templates.hh:28, - from Linear_System_defs.hh:580, - from Grid_Generator_System_defs.hh:29, - from Grid_Generator_System.cc:25: -CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from meta_programming.hh:27, - from C_Integer.hh:27, - from globals_defs.hh:28, - from Swapping_Vector_defs.hh:28, - from Linear_System_defs.hh:29, - from Grid_Generator_System_defs.hh:29, - from Grid_Generator_System.cc:25: + from Init.cc:26: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Init.cc -fPIC -DPIC -o .libs/Init.o In file included from Linear_System_templates.hh:30, from Linear_System_defs.hh:580, - from Grid_Generator_System_defs.hh:29, - from Grid_Generator_System.cc:25: + from Constraint_System_defs.hh:29, + from Box_inlines.hh:28, + from Box_defs.hh:2285, + from Box.cc:25: Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -1743,6 +1742,21 @@ Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ +In file included from ppl-config.cc:25: +ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +ppl.hh:42068:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +ppl.hh:42075:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +ppl.hh:42076:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ In file included from CO_Tree_defs.hh:1557, from Sparse_Row_defs.hh:29, from Expression_Adapter_defs.hh:31, @@ -1763,27 +1777,24 @@ /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Coefficient.lo Coefficient.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Constraint_System.cc -o Constraint_System.o >/dev/null 2>&1 -In file included from CO_Tree_defs.hh:1557, - from Sparse_Row_defs.hh:29, - from Expression_Adapter_defs.hh:31, - from Linear_Expression_defs.hh:48, - from Init.cc:31: -CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from meta_programming.hh:27, - from C_Integer.hh:27, - from globals_defs.hh:28, - from Variable_inlines.hh:27, - from Variable_defs.hh:155, - from Init.cc:26: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Coefficient.cc -fPIC -DPIC -o .libs/Coefficient.o +In file included from Linear_System_templates.hh:30, + from Linear_System_defs.hh:580, + from Constraint_System_defs.hh:29, + from Congruence_System.cc:27: +Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ In file included from Linear_System_templates.hh:30, from Linear_System_defs.hh:580, from Constraint_System_defs.hh:29, @@ -1802,18 +1813,9 @@ Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Congruence_System.cc -o Congruence_System.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c checked.cc -o checked.o >/dev/null 2>&1 +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Linear_Expression_Interface.lo Linear_Expression_Interface.cc libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Coefficient.cc -o Coefficient.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Generator.cc -o Generator.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_Generator.cc -o Grid_Generator.o >/dev/null 2>&1 -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Linear_Expression.lo Linear_Expression.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Generator_System.cc -o Generator_System.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Linear_Expression.cc -fPIC -DPIC -o .libs/Linear_Expression.o -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Linear_Expression_Impl.lo Linear_Expression_Impl.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Linear_Expression_Impl.cc -fPIC -DPIC -o .libs/Linear_Expression_Impl.o -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_Generator_System.cc -o Grid_Generator_System.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Init.cc -o Init.o >/dev/null 2>&1 -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Linear_Expression_Interface.lo Linear_Expression_Interface.cc libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Linear_Expression_Interface.cc -fPIC -DPIC -o .libs/Linear_Expression_Interface.o In file included from CO_Tree_defs.hh:1557, from Sparse_Row_defs.hh:29, @@ -1833,6 +1835,13 @@ /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Constraint.cc -o Constraint.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Generator.cc -o Generator.o >/dev/null 2>&1 +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Linear_Form.lo Linear_Form.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Congruence.cc -o Congruence.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_Generator.cc -o Grid_Generator.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_Generator_System.cc -o Grid_Generator_System.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Init.cc -o Init.o >/dev/null 2>&1 In file included from CO_Tree_defs.hh:1557, from Sparse_Row_defs.hh:29, from Linear_Expression_Impl_defs.hh:33, @@ -1852,40 +1861,21 @@ /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Linear_Expression_Interface.cc -o Linear_Expression_Interface.o >/dev/null 2>&1 -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Linear_Form.lo Linear_Form.cc +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Scalar_Products.lo Scalar_Products.cc libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Linear_Form.cc -fPIC -DPIC -o .libs/Linear_Form.o -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Scalar_Products.lo Scalar_Products.cc -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o MIP_Problem.lo MIP_Problem.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Box.cc -o Box.o >/dev/null 2>&1 libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Scalar_Products.cc -fPIC -DPIC -o .libs/Scalar_Products.o -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Linear_Expression_Impl.cc -o Linear_Expression_Impl.o >/dev/null 2>&1 +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o MIP_Problem.lo MIP_Problem.cc +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o PIP_Tree.lo PIP_Tree.cc libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c MIP_Problem.cc -fPIC -DPIC -o .libs/MIP_Problem.o -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o PIP_Tree.lo PIP_Tree.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Linear_Form.cc -o Linear_Form.o >/dev/null 2>&1 -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o PIP_Problem.lo PIP_Problem.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Linear_Expression_Interface.cc -o Linear_Expression_Interface.o >/dev/null 2>&1 libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c PIP_Tree.cc -fPIC -DPIC -o .libs/PIP_Tree.o -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Poly_Con_Relation.lo Poly_Con_Relation.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Congruence_System.cc -o Congruence_System.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Generator_System.cc -o Generator_System.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Linear_Form.cc -o Linear_Form.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Constraint_System.cc -o Constraint_System.o >/dev/null 2>&1 +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o PIP_Problem.lo PIP_Problem.cc libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c PIP_Problem.cc -fPIC -DPIC -o .libs/PIP_Problem.o -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Poly_Con_Relation.cc -fPIC -DPIC -o .libs/Poly_Con_Relation.o -In file included from CO_Tree_defs.hh:1557, - from Sparse_Row_defs.hh:29, - from Expression_Adapter_defs.hh:31, - from Linear_Expression_defs.hh:48, - from MIP_Problem_defs.hh:30, - from MIP_Problem.cc:25: -CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from meta_programming.hh:27, - from C_Integer.hh:27, - from globals_defs.hh:28, - from Matrix_defs.hh:28, - from MIP_Problem_defs.hh:29, - from MIP_Problem.cc:25: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from CO_Tree_defs.hh:1557, from Sparse_Row_defs.hh:29, from Expression_Adapter_defs.hh:31, @@ -1905,25 +1895,7 @@ /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ -In file included from Linear_System_templates.hh:30, - from Linear_System_defs.hh:580, - from Constraint_System_defs.hh:29, - from MIP_Problem.cc:30: -Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': -Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': -Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Poly_Gen_Relation.lo Poly_Gen_Relation.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Linear_Expression_Impl.cc -o Linear_Expression_Impl.o >/dev/null 2>&1 In file included from Scalar_Products.cc:26: Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] @@ -1943,23 +1915,23 @@ from Sparse_Row_defs.hh:29, from Expression_Adapter_defs.hh:31, from Linear_Expression_defs.hh:48, - from PIP_Problem_defs.hh:30, - from PIP_Problem.cc:25: + from MIP_Problem_defs.hh:30, + from MIP_Problem.cc:25: CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); ^ -In file included from mp_std_bits_defs.hh:28, - from checked_defs.hh:27, - from Checked_Number_defs.hh:28, - from Coefficient_types.hh:16, - from Linear_Expression_defs.hh:36, - from PIP_Problem_defs.hh:30, - from PIP_Problem.cc:25: +In file included from meta_programming.hh:27, + from C_Integer.hh:27, + from globals_defs.hh:28, + from Matrix_defs.hh:28, + from MIP_Problem_defs.hh:29, + from MIP_Problem.cc:25: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Poly_Gen_Relation.cc -fPIC -DPIC -o .libs/Poly_Gen_Relation.o +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Poly_Con_Relation.lo Poly_Con_Relation.cc +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Poly_Gen_Relation.lo Poly_Gen_Relation.cc In file included from CO_Tree_defs.hh:1557, from Sparse_Row_defs.hh:29, from Expression_Adapter_defs.hh:31, @@ -1983,7 +1955,11 @@ /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Poly_Con_Relation.cc -o Poly_Con_Relation.o >/dev/null 2>&1 +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o BHRZ03_Certificate.lo BHRZ03_Certificate.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Scalar_Products.cc -o Scalar_Products.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Poly_Con_Relation.cc -fPIC -DPIC -o .libs/Poly_Con_Relation.o +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o H79_Certificate.lo H79_Certificate.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c BHRZ03_Certificate.cc -fPIC -DPIC -o .libs/BHRZ03_Certificate.o In file included from Linear_System_templates.hh:30, from Linear_System_defs.hh:580, from Constraint_System_defs.hh:29, @@ -2003,11 +1979,11 @@ Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Poly_Gen_Relation.cc -fPIC -DPIC -o .libs/Poly_Gen_Relation.o In file included from Linear_System_templates.hh:30, from Linear_System_defs.hh:580, from Constraint_System_defs.hh:29, - from PIP_Tree_defs.hh:30, - from PIP_Problem.cc:26: + from MIP_Problem.cc:30: Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -2022,6 +1998,8 @@ Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Grid_Certificate.lo Grid_Certificate.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c H79_Certificate.cc -fPIC -DPIC -o .libs/H79_Certificate.o PIP_Tree.cc: In copy constructor 'Parma_Polyhedra_Library::PIP_Decision_Node::PIP_Decision_Node(const Parma_Polyhedra_Library::PIP_Decision_Node&)': PIP_Tree.cc:1105:8: warning: 'template class std::auto_ptr' is deprecated [-Wdeprecated-declarations] std::auto_ptr wrapped_node(false_child); @@ -2041,6 +2019,9 @@ /usr/include/c++/8/bits/unique_ptr.h:53:28: note: declared here template class auto_ptr; ^~~~~~~~ +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Partial_Function.lo Partial_Function.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_Certificate.cc -fPIC -DPIC -o .libs/Grid_Certificate.o +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Polyhedron_nonpublic.lo Polyhedron_nonpublic.cc PIP_Tree.cc: In member function 'virtual Parma_Polyhedra_Library::PIP_Tree_Node* Parma_Polyhedra_Library::PIP_Solution_Node::solve(const Parma_Polyhedra_Library::PIP_Problem&, bool, const Parma_Polyhedra_Library::Matrix&, const Parma_Polyhedra_Library::Variables_Set&, Parma_Polyhedra_Library::dimension_type, int)': PIP_Tree.cc:3144:12: warning: 'template class std::auto_ptr' is deprecated [-Wdeprecated-declarations] std::auto_ptr wrapped_node(t_node); @@ -2060,16 +2041,51 @@ /usr/include/c++/8/bits/unique_ptr.h:53:28: note: declared here template class auto_ptr; ^~~~~~~~ -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o BHRZ03_Certificate.lo BHRZ03_Certificate.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c BHRZ03_Certificate.cc -fPIC -DPIC -o .libs/BHRZ03_Certificate.o -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o H79_Certificate.lo H79_Certificate.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Poly_Gen_Relation.cc -o Poly_Gen_Relation.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c H79_Certificate.cc -fPIC -DPIC -o .libs/H79_Certificate.o -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Scalar_Products.cc -o Scalar_Products.o >/dev/null 2>&1 -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Grid_Certificate.lo Grid_Certificate.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_Certificate.cc -fPIC -DPIC -o .libs/Grid_Certificate.o -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Partial_Function.lo Partial_Function.cc libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Partial_Function.cc -fPIC -DPIC -o .libs/Partial_Function.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Polyhedron_nonpublic.cc -fPIC -DPIC -o .libs/Polyhedron_nonpublic.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Poly_Con_Relation.cc -o Poly_Con_Relation.o >/dev/null 2>&1 +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Polyhedron_public.lo Polyhedron_public.cc +In file included from CO_Tree_defs.hh:1557, + from Sparse_Row_defs.hh:29, + from Expression_Adapter_defs.hh:31, + from Linear_Expression_defs.hh:48, + from PIP_Problem_defs.hh:30, + from PIP_Problem.cc:25: +CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from mp_std_bits_defs.hh:28, + from checked_defs.hh:27, + from Checked_Number_defs.hh:28, + from Coefficient_types.hh:16, + from Linear_Expression_defs.hh:36, + from PIP_Problem_defs.hh:30, + from PIP_Problem.cc:25: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Poly_Gen_Relation.cc -o Poly_Gen_Relation.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Polyhedron_public.cc -fPIC -DPIC -o .libs/Polyhedron_public.o +In file included from Linear_System_templates.hh:30, + from Linear_System_defs.hh:580, + from Constraint_System_defs.hh:29, + from PIP_Tree_defs.hh:30, + from PIP_Problem.cc:26: +Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ In file included from CO_Tree_defs.hh:1557, from Sparse_Row_defs.hh:29, from Expression_Adapter_defs.hh:31, @@ -2091,6 +2107,7 @@ /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Polyhedron_chdims.lo Polyhedron_chdims.cc In file included from Linear_System_templates.hh:30, from Linear_System_defs.hh:580, from Constraint_System_defs.hh:29, @@ -2114,6 +2131,27 @@ from Sparse_Row_defs.hh:29, from Expression_Adapter_defs.hh:31, from Linear_Expression_defs.hh:48, + from Grid_defs.hh:31, + from Grid_Certificate.cc:27: +CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from meta_programming.hh:27, + from C_Integer.hh:27, + from globals_defs.hh:28, + from Grid_Certificate_defs.hh:30, + from Grid_Certificate.cc:26: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Polyhedron_widenings.lo Polyhedron_widenings.cc +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o C_Polyhedron.lo C_Polyhedron.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Polyhedron_chdims.cc -fPIC -DPIC -o .libs/Polyhedron_chdims.o +In file included from CO_Tree_defs.hh:1557, + from Sparse_Row_defs.hh:29, + from Expression_Adapter_defs.hh:31, + from Linear_Expression_defs.hh:48, from Linear_System_templates.hh:28, from Linear_System_defs.hh:580, from Constraint_System_defs.hh:29, @@ -2140,10 +2178,8 @@ In file included from Linear_System_templates.hh:30, from Linear_System_defs.hh:580, from Constraint_System_defs.hh:29, - from Polyhedron_defs.hh:32, - from H79_Certificate_inlines.hh:27, - from H79_Certificate_defs.hh:95, - from H79_Certificate.cc:26: + from Grid_defs.hh:33, + from Grid_Certificate.cc:27: Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -2158,33 +2194,15 @@ Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Polyhedron_nonpublic.lo Polyhedron_nonpublic.cc libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Partial_Function.cc -o Partial_Function.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Polyhedron_nonpublic.cc -fPIC -DPIC -o .libs/Polyhedron_nonpublic.o -In file included from CO_Tree_defs.hh:1557, - from Sparse_Row_defs.hh:29, - from Expression_Adapter_defs.hh:31, - from Linear_Expression_defs.hh:48, - from Grid_defs.hh:31, - from Grid_Certificate.cc:27: -CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from meta_programming.hh:27, - from C_Integer.hh:27, - from globals_defs.hh:28, - from Grid_Certificate_defs.hh:30, - from Grid_Certificate.cc:26: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Polyhedron_public.lo Polyhedron_public.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Polyhedron_widenings.cc -fPIC -DPIC -o .libs/Polyhedron_widenings.o In file included from Linear_System_templates.hh:30, from Linear_System_defs.hh:580, from Constraint_System_defs.hh:29, - from Grid_defs.hh:33, - from Grid_Certificate.cc:27: + from Polyhedron_defs.hh:32, + from H79_Certificate_inlines.hh:27, + from H79_Certificate_defs.hh:95, + from H79_Certificate.cc:26: Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -2192,6 +2210,7 @@ Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c C_Polyhedron.cc -fPIC -DPIC -o .libs/C_Polyhedron.o Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -2199,7 +2218,8 @@ Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Polyhedron_public.cc -fPIC -DPIC -o .libs/Polyhedron_public.o +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o NNC_Polyhedron.lo NNC_Polyhedron.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c NNC_Polyhedron.cc -fPIC -DPIC -o .libs/NNC_Polyhedron.o In file included from CO_Tree_defs.hh:1557, from Sparse_Row_defs.hh:29, from Expression_Adapter_defs.hh:31, @@ -2223,7 +2243,6 @@ /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Polyhedron_chdims.lo Polyhedron_chdims.cc In file included from Linear_System_templates.hh:30, from Linear_System_defs.hh:580, from Constraint_System_defs.hh:29, @@ -2243,7 +2262,7 @@ Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Polyhedron_chdims.cc -fPIC -DPIC -o .libs/Polyhedron_chdims.o +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Grid_nonpublic.lo Grid_nonpublic.cc In file included from CO_Tree_defs.hh:1557, from Sparse_Row_defs.hh:29, from Expression_Adapter_defs.hh:31, @@ -2267,6 +2286,7 @@ /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Grid_public.lo Grid_public.cc In file included from Linear_System_templates.hh:30, from Linear_System_defs.hh:580, from Constraint_System_defs.hh:29, @@ -2286,9 +2306,17 @@ Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c BHRZ03_Certificate.cc -o BHRZ03_Certificate.o >/dev/null 2>&1 libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_Certificate.cc -o Grid_Certificate.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_nonpublic.cc -fPIC -DPIC -o .libs/Grid_nonpublic.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_public.cc -fPIC -DPIC -o .libs/Grid_public.o +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Grid_chdims.lo Grid_chdims.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Linear_Expression.cc -o Linear_Expression.o >/dev/null 2>&1 +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Grid_widenings.lo Grid_widenings.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c BHRZ03_Certificate.cc -o BHRZ03_Certificate.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_chdims.cc -fPIC -DPIC -o .libs/Grid_chdims.o +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o BD_Shape.lo BD_Shape.cc libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c H79_Certificate.cc -o H79_Certificate.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_widenings.cc -fPIC -DPIC -o .libs/Grid_widenings.o In file included from CO_Tree_defs.hh:1557, from Sparse_Row_defs.hh:29, from Expression_Adapter_defs.hh:31, @@ -2312,6 +2340,7 @@ /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c BD_Shape.cc -fPIC -DPIC -o .libs/BD_Shape.o In file included from Linear_System_templates.hh:30, from Linear_System_defs.hh:580, from Constraint_System_defs.hh:29, @@ -2331,10 +2360,6 @@ Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c PIP_Problem.cc -o PIP_Problem.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Linear_Expression.cc -o Linear_Expression.o >/dev/null 2>&1 -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Polyhedron_widenings.lo Polyhedron_widenings.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Polyhedron_widenings.cc -fPIC -DPIC -o .libs/Polyhedron_widenings.o In file included from CO_Tree_defs.hh:1557, from Sparse_Row_defs.hh:29, from Expression_Adapter_defs.hh:31, @@ -2343,7 +2368,8 @@ from Linear_System_defs.hh:580, from Constraint_System_defs.hh:29, from Polyhedron_defs.hh:32, - from Polyhedron_widenings.cc:26: + from C_Polyhedron_defs.hh:29, + from C_Polyhedron.cc:25: CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -2354,33 +2380,37 @@ from Variable_inlines.hh:27, from Variable_defs.hh:155, from Polyhedron_defs.hh:29, - from Polyhedron_widenings.cc:26: + from C_Polyhedron_defs.hh:29, + from C_Polyhedron.cc:25: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ -In file included from Linear_System_templates.hh:30, +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c PIP_Problem.cc -o PIP_Problem.o >/dev/null 2>&1 +In file included from CO_Tree_defs.hh:1557, + from Sparse_Row_defs.hh:29, + from Expression_Adapter_defs.hh:31, + from Linear_Expression_defs.hh:48, + from Linear_System_templates.hh:28, from Linear_System_defs.hh:580, from Constraint_System_defs.hh:29, from Polyhedron_defs.hh:32, - from Polyhedron_widenings.cc:26: -Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': -Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': -Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o C_Polyhedron.lo C_Polyhedron.cc -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o NNC_Polyhedron.lo NNC_Polyhedron.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c C_Polyhedron.cc -fPIC -DPIC -o .libs/C_Polyhedron.o -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c NNC_Polyhedron.cc -fPIC -DPIC -o .libs/NNC_Polyhedron.o + from NNC_Polyhedron_defs.hh:29, + from NNC_Polyhedron.cc:25: +CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from meta_programming.hh:27, + from C_Integer.hh:27, + from globals_defs.hh:28, + from Variable_inlines.hh:27, + from Variable_defs.hh:155, + from Polyhedron_defs.hh:29, + from NNC_Polyhedron_defs.hh:29, + from NNC_Polyhedron.cc:25: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from CO_Tree_defs.hh:1557, from Sparse_Row_defs.hh:29, from Expression_Adapter_defs.hh:31, @@ -2389,8 +2419,7 @@ from Linear_System_defs.hh:580, from Constraint_System_defs.hh:29, from Polyhedron_defs.hh:32, - from C_Polyhedron_defs.hh:29, - from C_Polyhedron.cc:25: + from Polyhedron_widenings.cc:26: CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -2401,8 +2430,7 @@ from Variable_inlines.hh:27, from Variable_defs.hh:155, from Polyhedron_defs.hh:29, - from C_Polyhedron_defs.hh:29, - from C_Polyhedron.cc:25: + from Polyhedron_widenings.cc:26: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -2426,37 +2454,31 @@ Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -In file included from CO_Tree_defs.hh:1557, - from Sparse_Row_defs.hh:29, - from Expression_Adapter_defs.hh:31, - from Linear_Expression_defs.hh:48, - from Linear_System_templates.hh:28, +In file included from Linear_System_templates.hh:30, from Linear_System_defs.hh:580, from Constraint_System_defs.hh:29, from Polyhedron_defs.hh:32, from NNC_Polyhedron_defs.hh:29, from NNC_Polyhedron.cc:25: -CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from meta_programming.hh:27, - from C_Integer.hh:27, - from globals_defs.hh:28, - from Variable_inlines.hh:27, - from Variable_defs.hh:155, - from Polyhedron_defs.hh:29, - from NNC_Polyhedron_defs.hh:29, - from NNC_Polyhedron.cc:25: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ +Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ In file included from Linear_System_templates.hh:30, from Linear_System_defs.hh:580, from Constraint_System_defs.hh:29, from Polyhedron_defs.hh:32, - from NNC_Polyhedron_defs.hh:29, - from NNC_Polyhedron.cc:25: + from Polyhedron_widenings.cc:26: Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -2471,10 +2493,6 @@ Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Polyhedron_chdims.cc -o Polyhedron_chdims.o >/dev/null 2>&1 -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Grid_nonpublic.lo Grid_nonpublic.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_nonpublic.cc -fPIC -DPIC -o .libs/Grid_nonpublic.o -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c NNC_Polyhedron.cc -o NNC_Polyhedron.o >/dev/null 2>&1 In file included from CO_Tree_defs.hh:1557, from Sparse_Row_defs.hh:29, from Expression_Adapter_defs.hh:31, @@ -2493,7 +2511,42 @@ /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c MIP_Problem.cc -o MIP_Problem.o >/dev/null 2>&1 +In file included from CO_Tree_defs.hh:1557, + from Sparse_Row_defs.hh:29, + from Expression_Adapter_defs.hh:31, + from Linear_Expression_defs.hh:48, + from Grid_defs.hh:31, + from Grid_public.cc:25: +CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from meta_programming.hh:27, + from C_Integer.hh:27, + from globals_defs.hh:28, + from Grid_defs.hh:28, + from Grid_public.cc:25: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from CO_Tree_defs.hh:1557, + from Sparse_Row_defs.hh:29, + from Expression_Adapter_defs.hh:31, + from Linear_Expression_defs.hh:48, + from Grid_defs.hh:31, + from Grid_chdims.cc:26: +CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from meta_programming.hh:27, + from C_Integer.hh:27, + from globals_defs.hh:28, + from Grid_defs.hh:28, + from Grid_chdims.cc:26: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from Linear_System_templates.hh:30, from Linear_System_defs.hh:580, from Constraint_System_defs.hh:29, @@ -2513,32 +2566,6 @@ Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c C_Polyhedron.cc -o C_Polyhedron.o >/dev/null 2>&1 -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Grid_public.lo Grid_public.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_public.cc -fPIC -DPIC -o .libs/Grid_public.o -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Grid_chdims.lo Grid_chdims.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_chdims.cc -fPIC -DPIC -o .libs/Grid_chdims.o -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Grid_widenings.lo Grid_widenings.cc -In file included from CO_Tree_defs.hh:1557, - from Sparse_Row_defs.hh:29, - from Expression_Adapter_defs.hh:31, - from Linear_Expression_defs.hh:48, - from Grid_defs.hh:31, - from Grid_public.cc:25: -CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from meta_programming.hh:27, - from C_Integer.hh:27, - from globals_defs.hh:28, - from Grid_defs.hh:28, - from Grid_public.cc:25: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_widenings.cc -fPIC -DPIC -o .libs/Grid_widenings.o -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o BD_Shape.lo BD_Shape.cc In file included from Linear_System_templates.hh:30, from Linear_System_defs.hh:580, from Constraint_System_defs.hh:29, @@ -2558,13 +2585,12 @@ Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c BD_Shape.cc -fPIC -DPIC -o .libs/BD_Shape.o In file included from CO_Tree_defs.hh:1557, from Sparse_Row_defs.hh:29, from Expression_Adapter_defs.hh:31, from Linear_Expression_defs.hh:48, from Grid_defs.hh:31, - from Grid_chdims.cc:26: + from Grid_widenings.cc:26: CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -2573,11 +2599,10 @@ from C_Integer.hh:27, from globals_defs.hh:28, from Grid_defs.hh:28, - from Grid_chdims.cc:26: + from Grid_widenings.cc:26: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_nonpublic.cc -o Grid_nonpublic.o >/dev/null 2>&1 In file included from Linear_System_templates.hh:30, from Linear_System_defs.hh:580, from Constraint_System_defs.hh:29, @@ -2597,25 +2622,6 @@ Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Polyhedron_widenings.cc -o Polyhedron_widenings.o >/dev/null 2>&1 -In file included from CO_Tree_defs.hh:1557, - from Sparse_Row_defs.hh:29, - from Expression_Adapter_defs.hh:31, - from Linear_Expression_defs.hh:48, - from Grid_defs.hh:31, - from Grid_widenings.cc:26: -CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from meta_programming.hh:27, - from C_Integer.hh:27, - from globals_defs.hh:28, - from Grid_defs.hh:28, - from Grid_widenings.cc:26: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from Linear_System_templates.hh:30, from Linear_System_defs.hh:580, from Constraint_System_defs.hh:29, @@ -2657,6 +2663,8 @@ /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Octagonal_Shape.lo Octagonal_Shape.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c NNC_Polyhedron.cc -o NNC_Polyhedron.o >/dev/null 2>&1 In file included from Linear_System_templates.hh:30, from Linear_System_defs.hh:580, from Constraint_System_defs.hh:29, @@ -2677,14 +2685,15 @@ Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c BD_Shape.cc -o BD_Shape.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c PIP_Tree.cc -o PIP_Tree.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Polyhedron_nonpublic.cc -o Polyhedron_nonpublic.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Octagonal_Shape.cc -fPIC -DPIC -o .libs/Octagonal_Shape.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c C_Polyhedron.cc -o C_Polyhedron.o >/dev/null 2>&1 +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Pointset_Powerset.lo Pointset_Powerset.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Pointset_Powerset.cc -fPIC -DPIC -o .libs/Pointset_Powerset.o +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o CO_Tree.lo CO_Tree.cc libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_widenings.cc -o Grid_widenings.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c CO_Tree.cc -fPIC -DPIC -o .libs/CO_Tree.o libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_chdims.cc -o Grid_chdims.o >/dev/null 2>&1 -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Octagonal_Shape.lo Octagonal_Shape.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Octagonal_Shape.cc -fPIC -DPIC -o .libs/Octagonal_Shape.o -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Pointset_Powerset.lo Pointset_Powerset.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c BD_Shape.cc -o BD_Shape.o >/dev/null 2>&1 In file included from CO_Tree_defs.hh:1557, from Sparse_Row_defs.hh:29, from Expression_Adapter_defs.hh:31, @@ -2711,6 +2720,7 @@ /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Polyhedron_chdims.cc -o Polyhedron_chdims.o >/dev/null 2>&1 In file included from Linear_System_templates.hh:30, from Linear_System_defs.hh:580, from Constraint_System_defs.hh:29, @@ -2734,7 +2744,6 @@ Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Pointset_Powerset.cc -fPIC -DPIC -o .libs/Pointset_Powerset.o In file included from CO_Tree_defs.hh:1557, from Sparse_Row_defs.hh:29, from Expression_Adapter_defs.hh:31, @@ -2779,12 +2788,7 @@ Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o CO_Tree.lo CO_Tree.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c CO_Tree.cc -fPIC -DPIC -o .libs/CO_Tree.o -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Octagonal_Shape.cc -o Octagonal_Shape.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Polyhedron_public.cc -o Polyhedron_public.o >/dev/null 2>&1 -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Sparse_Row.lo Sparse_Row.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Sparse_Row.cc -fPIC -DPIC -o .libs/Sparse_Row.o +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Sparse_Row.lo Sparse_Row.cc In file included from CO_Tree_defs.hh:1557, from CO_Tree.cc:25: CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': @@ -2801,8 +2805,15 @@ /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Dense_Row.lo Dense_Row.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_nonpublic.cc -o Grid_nonpublic.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Sparse_Row.cc -fPIC -DPIC -o .libs/Sparse_Row.o +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Dense_Row.lo Dense_Row.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c MIP_Problem.cc -o MIP_Problem.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Octagonal_Shape.cc -o Octagonal_Shape.o >/dev/null 2>&1 libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Dense_Row.cc -fPIC -DPIC -o .libs/Dense_Row.o +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Bit_Matrix.lo Bit_Matrix.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c CO_Tree.cc -o CO_Tree.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Bit_Matrix.cc -fPIC -DPIC -o .libs/Bit_Matrix.o In file included from CO_Tree_defs.hh:1557, from Sparse_Row_defs.hh:29, from Sparse_Row.cc:25: @@ -2821,7 +2832,9 @@ /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Bit_Matrix.lo Bit_Matrix.cc +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Bit_Row.lo Bit_Row.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Bit_Row.cc -fPIC -DPIC -o .libs/Bit_Row.o +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Ph_Status.lo Ph_Status.cc In file included from CO_Tree_defs.hh:1557, from Sparse_Row_defs.hh:29, from Dense_Row.cc:28: @@ -2906,20 +2919,17 @@ /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::Coefficient' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Bit_Matrix.cc -fPIC -DPIC -o .libs/Bit_Matrix.o -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c CO_Tree.cc -o CO_Tree.o >/dev/null 2>&1 -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Bit_Row.lo Bit_Row.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_public.cc -o Grid_public.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Bit_Row.cc -fPIC -DPIC -o .libs/Bit_Row.o -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Dense_Row.cc -o Dense_Row.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Bit_Row.cc -o Bit_Row.o >/dev/null 2>&1 -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Ph_Status.lo Ph_Status.cc +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Grid_Status.lo Grid_Status.cc +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Variable.lo Variable.cc libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Ph_Status.cc -fPIC -DPIC -o .libs/Ph_Status.o -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Grid_Status.lo Grid_Status.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Variable.cc -fPIC -DPIC -o .libs/Variable.o libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_Status.cc -fPIC -DPIC -o .libs/Grid_Status.o -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Bit_Matrix.cc -o Bit_Matrix.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Sparse_Row.cc -o Sparse_Row.o >/dev/null 2>&1 -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Variable.lo Variable.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Polyhedron_widenings.cc -o Polyhedron_widenings.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Bit_Row.cc -o Bit_Row.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Dense_Row.cc -o Dense_Row.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_public.cc -o Grid_public.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Variable.cc -o Variable.o >/dev/null 2>&1 +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Variables_Set.lo Variables_Set.cc In file included from CO_Tree_defs.hh:1557, from Sparse_Row_defs.hh:29, from Expression_Adapter_defs.hh:31, @@ -2943,7 +2953,28 @@ /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Variable.cc -fPIC -DPIC -o .libs/Variable.o +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Grid_conversion.lo Grid_conversion.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Variables_Set.cc -fPIC -DPIC -o .libs/Variables_Set.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c PIP_Tree.cc -o PIP_Tree.o >/dev/null 2>&1 +In file included from CO_Tree_defs.hh:1557, + from Sparse_Row_defs.hh:29, + from Expression_Adapter_defs.hh:31, + from Linear_Expression_defs.hh:48, + from Grid_defs.hh:31, + from Grid_Status.cc:25: +CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from meta_programming.hh:27, + from C_Integer.hh:27, + from globals_defs.hh:28, + from Grid_defs.hh:28, + from Grid_Status.cc:25: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_conversion.cc -fPIC -DPIC -o .libs/Grid_conversion.o In file included from Linear_System_templates.hh:30, from Linear_System_defs.hh:580, from Constraint_System_defs.hh:29, @@ -2963,24 +2994,6 @@ Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -In file included from CO_Tree_defs.hh:1557, - from Sparse_Row_defs.hh:29, - from Expression_Adapter_defs.hh:31, - from Linear_Expression_defs.hh:48, - from Grid_defs.hh:31, - from Grid_Status.cc:25: -CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from meta_programming.hh:27, - from C_Integer.hh:27, - from globals_defs.hh:28, - from Grid_defs.hh:28, - from Grid_Status.cc:25: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from Linear_System_templates.hh:30, from Linear_System_defs.hh:580, from Constraint_System_defs.hh:29, @@ -3000,15 +3013,21 @@ Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Pointset_Powerset.cc -o Pointset_Powerset.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Variable.cc -o Variable.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Ph_Status.cc -o Ph_Status.o >/dev/null 2>&1 -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Variables_Set.lo Variables_Set.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Variables_Set.cc -fPIC -DPIC -o .libs/Variables_Set.o -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_Status.cc -o Grid_Status.o >/dev/null 2>&1 -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Grid_conversion.lo Grid_conversion.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_conversion.cc -fPIC -DPIC -o .libs/Grid_conversion.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Bit_Matrix.cc -o Bit_Matrix.o >/dev/null 2>&1 +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Grid_simplify.lo Grid_simplify.cc +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o set_GMP_memory_alloc_funcs.lo set_GMP_memory_alloc_funcs.cc +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o stdiobuf.lo stdiobuf.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_simplify.cc -fPIC -DPIC -o .libs/Grid_simplify.o +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o c_streambuf.lo c_streambuf.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c set_GMP_memory_alloc_funcs.cc -fPIC -DPIC -o .libs/set_GMP_memory_alloc_funcs.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c stdiobuf.cc -fPIC -DPIC -o .libs/stdiobuf.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Sparse_Row.cc -o Sparse_Row.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c set_GMP_memory_alloc_funcs.cc -o set_GMP_memory_alloc_funcs.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c c_streambuf.cc -fPIC -DPIC -o .libs/c_streambuf.o +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o globals.lo globals.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c globals.cc -fPIC -DPIC -o .libs/globals.o libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Variables_Set.cc -o Variables_Set.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Ph_Status.cc -o Ph_Status.o >/dev/null 2>&1 In file included from CO_Tree_defs.hh:1557, from Sparse_Row_defs.hh:29, from Expression_Adapter_defs.hh:31, @@ -3027,6 +3046,8 @@ /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_Status.cc -o Grid_Status.o >/dev/null 2>&1 +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o mp_std_bits.lo mp_std_bits.cc In file included from Linear_System_templates.hh:30, from Linear_System_defs.hh:580, from Constraint_System_defs.hh:29, @@ -3046,18 +3067,9 @@ Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Grid_simplify.lo Grid_simplify.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_simplify.cc -fPIC -DPIC -o .libs/Grid_simplify.o -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o set_GMP_memory_alloc_funcs.lo set_GMP_memory_alloc_funcs.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c set_GMP_memory_alloc_funcs.cc -fPIC -DPIC -o .libs/set_GMP_memory_alloc_funcs.o -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c set_GMP_memory_alloc_funcs.cc -o set_GMP_memory_alloc_funcs.o >/dev/null 2>&1 -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o stdiobuf.lo stdiobuf.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c stdiobuf.cc -fPIC -DPIC -o .libs/stdiobuf.o -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o c_streambuf.lo c_streambuf.cc -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o globals.lo globals.cc -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o mp_std_bits.lo mp_std_bits.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c c_streambuf.cc -fPIC -DPIC -o .libs/c_streambuf.o -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c globals.cc -fPIC -DPIC -o .libs/globals.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Pointset_Powerset.cc -o Pointset_Powerset.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c c_streambuf.cc -o c_streambuf.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c stdiobuf.cc -o stdiobuf.o >/dev/null 2>&1 libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c mp_std_bits.cc -fPIC -DPIC -o .libs/mp_std_bits.o In file included from CO_Tree_defs.hh:1557, from Sparse_Row_defs.hh:29, @@ -3096,11 +3108,6 @@ Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c mp_std_bits.cc -o mp_std_bits.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c stdiobuf.cc -o stdiobuf.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c c_streambuf.cc -o c_streambuf.o >/dev/null 2>&1 -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Weight_Profiler.lo Weight_Profiler.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Weight_Profiler.cc -fPIC -DPIC -o .libs/Weight_Profiler.o In file included from CO_Tree_defs.hh:1557, from Sparse_Row_defs.hh:29, from Expression_Adapter_defs.hh:31, @@ -3118,24 +3125,29 @@ /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o version.lo version.cc +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Weight_Profiler.lo Weight_Profiler.cc +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o version.lo version.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c mp_std_bits.cc -o mp_std_bits.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Weight_Profiler.cc -fPIC -DPIC -o .libs/Weight_Profiler.o libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c version.cc -fPIC -DPIC -o .libs/version.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Polyhedron_nonpublic.cc -o Polyhedron_nonpublic.o >/dev/null 2>&1 +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o termination.lo termination.cc libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c version.cc -o version.o >/dev/null 2>&1 -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o termination.lo termination.cc -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o wrap_string.lo wrap_string.cc libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c globals.cc -o globals.o >/dev/null 2>&1 +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o wrap_string.lo wrap_string.cc libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c termination.cc -fPIC -DPIC -o .libs/termination.o -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Weight_Profiler.cc -o Weight_Profiler.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_conversion.cc -o Grid_conversion.o >/dev/null 2>&1 libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c wrap_string.cc -fPIC -DPIC -o .libs/wrap_string.o -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Time.lo Time.cc +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Time.lo Time.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Weight_Profiler.cc -o Weight_Profiler.o >/dev/null 2>&1 +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Watchdog.lo Watchdog.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Watchdog.cc -fPIC -DPIC -o .libs/Watchdog.o libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Time.cc -fPIC -DPIC -o .libs/Time.o libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Time.cc -o Time.o >/dev/null 2>&1 -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Watchdog.lo Watchdog.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Watchdog.cc -fPIC -DPIC -o .libs/Watchdog.o -/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Threshold_Watcher.lo Threshold_Watcher.cc +/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o Threshold_Watcher.lo Threshold_Watcher.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_conversion.cc -o Grid_conversion.o >/dev/null 2>&1 libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Threshold_Watcher.cc -fPIC -DPIC -o .libs/Threshold_Watcher.o libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c wrap_string.cc -o wrap_string.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Threshold_Watcher.cc -o Threshold_Watcher.o >/dev/null 2>&1 In file included from CO_Tree_defs.hh:1557, from Sparse_Row_defs.hh:29, from Expression_Adapter_defs.hh:31, @@ -3157,7 +3169,7 @@ /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Threshold_Watcher.cc -o Threshold_Watcher.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Watchdog.cc -o Watchdog.o >/dev/null 2>&1 In file included from Linear_System_templates.hh:30, from Linear_System_defs.hh:580, from Constraint_System_defs.hh:29, @@ -3179,9 +3191,9 @@ : static_cast(&Scalar_Products::reduced_sign)) { ^ libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Grid_simplify.cc -o Grid_simplify.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Watchdog.cc -o Watchdog.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c Polyhedron_public.cc -o Polyhedron_public.o >/dev/null 2>&1 libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c termination.cc -o termination.o >/dev/null 2>&1 -/bin/bash ../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -version-info 14:0:0 -Wl,-z,relro -o libppl.la -rpath /usr/lib/i386-linux-gnu assertions.lo Box.lo checked.lo Checked_Number.lo Float.lo fpu-ia32.lo BDS_Status.lo Box_Status.lo Og_Status.lo Concrete_Expression.lo Constraint.lo Constraint_System.lo Congruence.lo Congruence_System.lo Generator_System.lo Grid_Generator_System.lo Generator.lo Grid_Generator.lo Handler.lo Init.lo Coefficient.lo Linear_Expression.lo Linear_Expression_Impl.lo Linear_Expression_Interface.lo Linear_Form.lo Scalar_Products.lo MIP_Problem.lo PIP_Tree.lo PIP_Problem.lo Poly_Con_Relation.lo Poly_Gen_Relation.lo BHRZ03_Certificate.lo H79_Certificate.lo Grid_Certificate.lo Partial_Function.lo Polyhedron_nonpublic.lo Polyhedron_public.lo Polyhedron_chdims.lo Polyhedron_widenings.lo C_Polyhedron.lo NNC_Polyhedron.lo Grid_nonpublic.lo Grid_public.lo Grid_chdims.lo Grid_widenings.lo BD_Shape.lo Octagonal_Shape.lo Pointset_Powerset.lo CO_Tree.lo Sparse_Row.lo Dense_Row.lo Bit_Matrix.lo Bit_Row.lo Ph_Status.lo Grid_Status.lo Variable.lo Variables_Set.lo Grid_conversion.lo Grid_simplify.lo set_GMP_memory_alloc_funcs.lo stdiobuf.lo c_streambuf.lo globals.lo mp_std_bits.lo Weight_Profiler.lo version.lo termination.lo wrap_string.lo Time.lo Watchdog.lo Threshold_Watcher.lo -lgmpxx -lgmp +/bin/sh ../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -version-info 14:0:0 -Wl,-z,relro -o libppl.la -rpath /usr/lib/i386-linux-gnu assertions.lo Box.lo checked.lo Checked_Number.lo Float.lo fpu-ia32.lo BDS_Status.lo Box_Status.lo Og_Status.lo Concrete_Expression.lo Constraint.lo Constraint_System.lo Congruence.lo Congruence_System.lo Generator_System.lo Grid_Generator_System.lo Generator.lo Grid_Generator.lo Handler.lo Init.lo Coefficient.lo Linear_Expression.lo Linear_Expression_Impl.lo Linear_Expression_Interface.lo Linear_Form.lo Scalar_Products.lo MIP_Problem.lo PIP_Tree.lo PIP_Problem.lo Poly_Con_Relation.lo Poly_Gen_Relation.lo BHRZ03_Certificate.lo H79_Certificate.lo Grid_Certificate.lo Partial_Function.lo Polyhedron_nonpublic.lo Polyhedron_public.lo Polyhedron_chdims.lo Polyhedron_widenings.lo C_Polyhedron.lo NNC_Polyhedron.lo Grid_nonpublic.lo Grid_public.lo Grid_chdims.lo Grid_widenings.lo BD_Shape.lo Octagonal_Shape.lo Pointset_Powerset.lo CO_Tree.lo Sparse_Row.lo Dense_Row.lo Bit_Matrix.lo Bit_Row.lo Ph_Status.lo Grid_Status.lo Variable.lo Variables_Set.lo Grid_conversion.lo Grid_simplify.lo set_GMP_memory_alloc_funcs.lo stdiobuf.lo c_streambuf.lo globals.lo mp_std_bits.lo Weight_Profiler.lo version.lo termination.lo wrap_string.lo Time.lo Watchdog.lo Threshold_Watcher.lo -lgmpxx -lgmp libtool: link: g++ -fPIC -DPIC -shared -nostdlib /usr/lib/gcc/i686-linux-gnu/8/../../../i386-linux-gnu/crti.o /usr/lib/gcc/i686-linux-gnu/8/crtbeginS.o .libs/assertions.o .libs/Box.o .libs/checked.o .libs/Checked_Number.o .libs/Float.o .libs/fpu-ia32.o .libs/BDS_Status.o .libs/Box_Status.o .libs/Og_Status.o .libs/Concrete_Expression.o .libs/Constraint.o .libs/Constraint_System.o .libs/Congruence.o .libs/Congruence_System.o .libs/Generator_System.o .libs/Grid_Generator_System.o .libs/Generator.o .libs/Grid_Generator.o .libs/Handler.o .libs/Init.o .libs/Coefficient.o .libs/Linear_Expression.o .libs/Linear_Expression_Impl.o .libs/Linear_Expression_Interface.o .libs/Linear_Form.o .libs/Scalar_Products.o .libs/MIP_Problem.o .libs/PIP_Tree.o .libs/PIP_Problem.o .libs/Poly_Con_Relation.o .libs/Poly_Gen_Relation.o .libs/BHRZ03_Certificate.o .libs/H79_Certificate.o .libs/Grid_Certificate.o .libs/Partial_Function.o .libs/Polyhedron_nonpublic.o .libs/Polyhedron_public.o .libs/Polyhedron_chdims.o .libs/Polyhedron_widenings.o .libs/C_Polyhedron.o .libs/NNC_Polyhedron.o .libs/Grid_nonpublic.o .libs/Grid_public.o .libs/Grid_chdims.o .libs/Grid_widenings.o .libs/BD_Shape.o .libs/Octagonal_Shape.o .libs/Pointset_Powerset.o .libs/CO_Tree.o .libs/Sparse_Row.o .libs/Dense_Row.o .libs/Bit_Matrix.o .libs/Bit_Row.o .libs/Ph_Status.o .libs/Grid_Status.o .libs/Variable.o .libs/Variables_Set.o .libs/Grid_conversion.o .libs/Grid_simplify.o .libs/set_GMP_memory_alloc_funcs.o .libs/stdiobuf.o .libs/c_streambuf.o .libs/globals.o .libs/mp_std_bits.o .libs/Weight_Profiler.o .libs/version.o .libs/termination.o .libs/wrap_string.o .libs/Time.o .libs/Watchdog.o .libs/Threshold_Watcher.o -lgmpxx -lgmp -L/usr/lib/gcc/i686-linux-gnu/8 -L/usr/lib/gcc/i686-linux-gnu/8/../../../i386-linux-gnu -L/usr/lib/gcc/i686-linux-gnu/8/../../../../lib -L/lib/i386-linux-gnu -L/lib/../lib -L/usr/lib/i386-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/i686-linux-gnu/8/../../.. -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/i686-linux-gnu/8/crtendS.o /usr/lib/gcc/i686-linux-gnu/8/../../../i386-linux-gnu/crtn.o -g -O2 -g -O2 -fstack-protector-strong -g -Wl,-z -Wl,relro -Wl,-soname -Wl,libppl.so.14 -o .libs/libppl.so.14.0.0 libtool: link: (cd ".libs" && rm -f "libppl.so.14" && ln -s "libppl.so.14.0.0" "libppl.so.14") libtool: link: (cd ".libs" && rm -f "libppl.so" && ln -s "libppl.so.14.0.0" "libppl.so") @@ -3189,7 +3201,7 @@ ar: `u' modifier ignored since `D' is the default (see `U') libtool: link: ranlib .libs/libppl.a libtool: link: ( cd ".libs" && rm -f "libppl.la" && ln -s "../libppl.la" "libppl.la" ) -/bin/bash ../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o ppl-config BUGS.o COPYING.o CREDITS.o ppl-config.o -lgmpxx -lgmp libppl.la +/bin/sh ../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o ppl-config BUGS.o COPYING.o CREDITS.o ppl-config.o -lgmpxx -lgmp libppl.la libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/ppl-config BUGS.o COPYING.o CREDITS.o ppl-config.o -lgmpxx -lgmp ./.libs/libppl.so make[5]: Leaving directory '/build/ppl-1.2/src' make[4]: Leaving directory '/build/ppl-1.2/src' @@ -3282,47 +3294,43 @@ make[7]: Entering directory '/build/ppl-1.2/interfaces/C' Making all in . make[8]: Entering directory '/build/ppl-1.2/interfaces/C' -/bin/bash ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_c_implementation_common.lo ppl_c_implementation_common.cc -/bin/bash ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_c_Polyhedron.lo ppl_c_Polyhedron.cc -/bin/bash ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_c_Grid.lo ppl_c_Grid.cc -/bin/bash ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_c_Rational_Box.lo ppl_c_Rational_Box.cc -/bin/bash ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_c_BD_Shape_mpz_class.lo ppl_c_BD_Shape_mpz_class.cc -/bin/bash ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_c_BD_Shape_mpq_class.lo ppl_c_BD_Shape_mpq_class.cc -/bin/bash ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_c_Octagonal_Shape_mpz_class.lo ppl_c_Octagonal_Shape_mpz_class.cc -/bin/bash ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_c_Octagonal_Shape_mpq_class.lo ppl_c_Octagonal_Shape_mpq_class.cc -/bin/bash ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_c_Constraints_Product_C_Polyhedron_Grid.lo ppl_c_Constraints_Product_C_Polyhedron_Grid.cc -/bin/bash ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_c_Pointset_Powerset_C_Polyhedron.lo ppl_c_Pointset_Powerset_C_Polyhedron.cc +/bin/sh ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_c_implementation_common.lo ppl_c_implementation_common.cc +/bin/sh ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_c_Polyhedron.lo ppl_c_Polyhedron.cc +/bin/sh ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_c_Grid.lo ppl_c_Grid.cc +/bin/sh ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_c_Rational_Box.lo ppl_c_Rational_Box.cc +/bin/sh ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_c_BD_Shape_mpz_class.lo ppl_c_BD_Shape_mpz_class.cc +/bin/sh ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_c_BD_Shape_mpq_class.lo ppl_c_BD_Shape_mpq_class.cc +/bin/sh ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_c_Octagonal_Shape_mpz_class.lo ppl_c_Octagonal_Shape_mpz_class.cc +/bin/sh ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_c_Octagonal_Shape_mpq_class.lo ppl_c_Octagonal_Shape_mpq_class.cc +/bin/sh ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_c_Constraints_Product_C_Polyhedron_Grid.lo ppl_c_Constraints_Product_C_Polyhedron_Grid.cc +/bin/sh ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_c_Pointset_Powerset_C_Polyhedron.lo ppl_c_Pointset_Powerset_C_Polyhedron.cc +/bin/sh ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_c_Pointset_Powerset_NNC_Polyhedron.lo ppl_c_Pointset_Powerset_NNC_Polyhedron.cc +/bin/sh ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_c_Double_Box.lo ppl_c_Double_Box.cc +/bin/sh ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_c_BD_Shape_double.lo ppl_c_BD_Shape_double.cc +/bin/sh ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_c_Octagonal_Shape_double.lo ppl_c_Octagonal_Shape_double.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_BD_Shape_double.cc -fPIC -DPIC -o .libs/ppl_c_BD_Shape_double.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Pointset_Powerset_C_Polyhedron.cc -fPIC -DPIC -o .libs/ppl_c_Pointset_Powerset_C_Polyhedron.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_BD_Shape_mpz_class.cc -fPIC -DPIC -o .libs/ppl_c_BD_Shape_mpz_class.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Octagonal_Shape_mpz_class.cc -fPIC -DPIC -o .libs/ppl_c_Octagonal_Shape_mpz_class.o libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_implementation_common.cc -fPIC -DPIC -o .libs/ppl_c_implementation_common.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Constraints_Product_C_Polyhedron_Grid.cc -fPIC -DPIC -o .libs/ppl_c_Constraints_Product_C_Polyhedron_Grid.o libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Polyhedron.cc -fPIC -DPIC -o .libs/ppl_c_Polyhedron.o libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Grid.cc -fPIC -DPIC -o .libs/ppl_c_Grid.o -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Rational_Box.cc -fPIC -DPIC -o .libs/ppl_c_Rational_Box.o -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_BD_Shape_mpz_class.cc -fPIC -DPIC -o .libs/ppl_c_BD_Shape_mpz_class.o -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Octagonal_Shape_mpz_class.cc -fPIC -DPIC -o .libs/ppl_c_Octagonal_Shape_mpz_class.o -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Pointset_Powerset_C_Polyhedron.cc -fPIC -DPIC -o .libs/ppl_c_Pointset_Powerset_C_Polyhedron.o -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_BD_Shape_mpq_class.cc -fPIC -DPIC -o .libs/ppl_c_BD_Shape_mpq_class.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Double_Box.cc -fPIC -DPIC -o .libs/ppl_c_Double_Box.o libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Octagonal_Shape_mpq_class.cc -fPIC -DPIC -o .libs/ppl_c_Octagonal_Shape_mpq_class.o -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Constraints_Product_C_Polyhedron_Grid.cc -fPIC -DPIC -o .libs/ppl_c_Constraints_Product_C_Polyhedron_Grid.o -In file included from ppl_c_implementation_common_defs.hh:28, - from ppl_c_Octagonal_Shape_mpz_class.cc:24: -../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from ../../src/ppl.hh:754, - from ppl_c_implementation_common_defs.hh:28, - from ppl_c_Octagonal_Shape_mpz_class.cc:24: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_BD_Shape_mpq_class.cc -fPIC -DPIC -o .libs/ppl_c_BD_Shape_mpq_class.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Pointset_Powerset_NNC_Polyhedron.cc -fPIC -DPIC -o .libs/ppl_c_Pointset_Powerset_NNC_Polyhedron.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Rational_Box.cc -fPIC -DPIC -o .libs/ppl_c_Rational_Box.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Octagonal_Shape_double.cc -fPIC -DPIC -o .libs/ppl_c_Octagonal_Shape_double.o In file included from ppl_c_implementation_common_defs.hh:28, - from ppl_c_Octagonal_Shape_mpq_class.cc:24: + from ppl_c_Rational_Box.cc:24: ../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); ^ In file included from ../../src/ppl.hh:754, from ppl_c_implementation_common_defs.hh:28, - from ppl_c_Octagonal_Shape_mpq_class.cc:24: + from ppl_c_Rational_Box.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -3339,31 +3347,7 @@ class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ppl_c_implementation_common_defs.hh:28, - from ppl_c_Polyhedron.cc:24: -../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from ../../src/ppl.hh:754, - from ppl_c_implementation_common_defs.hh:28, - from ppl_c_Polyhedron.cc:24: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ -In file included from ppl_c_implementation_common_defs.hh:28, from ppl_c_Rational_Box.cc:24: -../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from ../../src/ppl.hh:754, - from ppl_c_implementation_common_defs.hh:28, - from ppl_c_Rational_Box.cc:24: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ -In file included from ppl_c_implementation_common_defs.hh:28, - from ppl_c_Octagonal_Shape_mpz_class.cc:24: ../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -3379,7 +3363,7 @@ : static_cast(&Scalar_Products::reduced_sign)) { ^ In file included from ppl_c_implementation_common_defs.hh:28, - from ppl_c_Octagonal_Shape_mpq_class.cc:24: + from ppl_c_Constraints_Product_C_Polyhedron_Grid.cc:24: ../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -3407,6 +3391,66 @@ class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ppl_c_implementation_common_defs.hh:28, + from ppl_c_Octagonal_Shape_mpz_class.cc:24: +../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../../src/ppl.hh:754, + from ppl_c_implementation_common_defs.hh:28, + from ppl_c_Octagonal_Shape_mpz_class.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ppl_c_implementation_common_defs.hh:28, + from ppl_c_BD_Shape_mpq_class.cc:24: +../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ppl_c_implementation_common_defs.hh:28, + from ppl_c_Octagonal_Shape_double.cc:24: +../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../../src/ppl.hh:754, + from ppl_c_implementation_common_defs.hh:28, + from ppl_c_Octagonal_Shape_double.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../../src/ppl.hh:754, + from ppl_c_implementation_common_defs.hh:28, + from ppl_c_BD_Shape_mpq_class.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ppl_c_implementation_common_defs.hh:28, + from ppl_c_Pointset_Powerset_NNC_Polyhedron.cc:24: +../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ppl_c_implementation_common_defs.hh:28, + from ppl_c_Octagonal_Shape_mpq_class.cc:24: +../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../../src/ppl.hh:754, + from ppl_c_implementation_common_defs.hh:28, + from ppl_c_Pointset_Powerset_NNC_Polyhedron.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../../src/ppl.hh:754, + from ppl_c_implementation_common_defs.hh:28, + from ppl_c_Octagonal_Shape_mpq_class.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ppl_c_implementation_common_defs.hh:28, from ppl_c_Grid.cc:24: ../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] @@ -3419,6 +3463,30 @@ class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ppl_c_implementation_common_defs.hh:28, + from ppl_c_Double_Box.cc:24: +../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../../src/ppl.hh:754, + from ppl_c_implementation_common_defs.hh:28, + from ppl_c_Double_Box.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ppl_c_implementation_common_defs.hh:28, + from ppl_c_BD_Shape_double.cc:24: +../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../../src/ppl.hh:754, + from ppl_c_implementation_common_defs.hh:28, + from ppl_c_BD_Shape_double.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ppl_c_implementation_common_defs.hh:28, from ppl_c_implementation_common.cc:26: ../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] @@ -3431,6 +3499,18 @@ class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ppl_c_implementation_common_defs.hh:28, + from ppl_c_Polyhedron.cc:24: +../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../../src/ppl.hh:754, + from ppl_c_implementation_common_defs.hh:28, + from ppl_c_Polyhedron.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ppl_c_implementation_common_defs.hh:28, from ppl_c_BD_Shape_mpz_class.cc:24: ../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] @@ -3443,7 +3523,7 @@ class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ppl_c_implementation_common_defs.hh:28, - from ppl_c_Constraints_Product_C_Polyhedron_Grid.cc:24: + from ppl_c_Pointset_Powerset_C_Polyhedron.cc:24: ../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -3459,7 +3539,7 @@ : static_cast(&Scalar_Products::reduced_sign)) { ^ In file included from ppl_c_implementation_common_defs.hh:28, - from ppl_c_Pointset_Powerset_C_Polyhedron.cc:24: + from ppl_c_Octagonal_Shape_mpz_class.cc:24: ../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -3475,35 +3555,13 @@ : static_cast(&Scalar_Products::reduced_sign)) { ^ In file included from ppl_c_implementation_common_defs.hh:28, - from ppl_c_Grid.cc:24: + from ppl_c_Octagonal_Shape_double.cc:24: ../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) ^ -../../src/ppl.hh:42068:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': -../../src/ppl.hh:42075:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../src/ppl.hh:42076:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ In file included from ppl_c_implementation_common_defs.hh:28, from ppl_c_BD_Shape_mpq_class.cc:24: -../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from ../../src/ppl.hh:754, - from ppl_c_implementation_common_defs.hh:28, - from ppl_c_BD_Shape_mpq_class.cc:24: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ -In file included from ppl_c_implementation_common_defs.hh:28, - from ppl_c_implementation_common.cc:26: ../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -3511,6 +3569,13 @@ ../../src/ppl.hh:42068:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ +../../src/ppl.hh:42068:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../src/ppl.hh:42075:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ ../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': ../../src/ppl.hh:42075:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -3518,24 +3583,17 @@ ../../src/ppl.hh:42076:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ +../../src/ppl.hh:42076:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ In file included from ppl_c_implementation_common_defs.hh:28, - from ppl_c_Rational_Box.cc:24: + from ppl_c_Octagonal_Shape_mpq_class.cc:24: ../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) ^ -../../src/ppl.hh:42068:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': -../../src/ppl.hh:42075:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../src/ppl.hh:42076:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ In file included from ppl_c_implementation_common_defs.hh:28, - from ppl_c_Polyhedron.cc:24: + from ppl_c_Pointset_Powerset_NNC_Polyhedron.cc:24: ../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -3543,6 +3601,13 @@ ../../src/ppl.hh:42068:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ +../../src/ppl.hh:42068:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../src/ppl.hh:42075:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ ../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': ../../src/ppl.hh:42075:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -3550,8 +3615,11 @@ ../../src/ppl.hh:42076:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ +../../src/ppl.hh:42076:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ In file included from ppl_c_implementation_common_defs.hh:28, - from ppl_c_BD_Shape_mpz_class.cc:24: + from ppl_c_Grid.cc:24: ../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -3567,7 +3635,7 @@ : static_cast(&Scalar_Products::reduced_sign)) { ^ In file included from ppl_c_implementation_common_defs.hh:28, - from ppl_c_BD_Shape_mpq_class.cc:24: + from ppl_c_Double_Box.cc:24: ../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -3582,27 +3650,8 @@ ../../src/ppl.hh:42076:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Pointset_Powerset_C_Polyhedron.cc -o ppl_c_Pointset_Powerset_C_Polyhedron.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Grid.cc -o ppl_c_Grid.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Constraints_Product_C_Polyhedron_Grid.cc -o ppl_c_Constraints_Product_C_Polyhedron_Grid.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_implementation_common.cc -o ppl_c_implementation_common.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Polyhedron.cc -o ppl_c_Polyhedron.o >/dev/null 2>&1 -/bin/bash ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_c_Pointset_Powerset_NNC_Polyhedron.lo ppl_c_Pointset_Powerset_NNC_Polyhedron.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Pointset_Powerset_NNC_Polyhedron.cc -fPIC -DPIC -o .libs/ppl_c_Pointset_Powerset_NNC_Polyhedron.o -In file included from ppl_c_implementation_common_defs.hh:28, - from ppl_c_Pointset_Powerset_NNC_Polyhedron.cc:24: -../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from ../../src/ppl.hh:754, - from ppl_c_implementation_common_defs.hh:28, - from ppl_c_Pointset_Powerset_NNC_Polyhedron.cc:24: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ppl_c_implementation_common_defs.hh:28, - from ppl_c_Pointset_Powerset_NNC_Polyhedron.cc:24: + from ppl_c_implementation_common.cc:26: ../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -3617,27 +3666,8 @@ ../../src/ppl.hh:42076:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Rational_Box.cc -o ppl_c_Rational_Box.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_BD_Shape_mpq_class.cc -o ppl_c_BD_Shape_mpq_class.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_BD_Shape_mpz_class.cc -o ppl_c_BD_Shape_mpz_class.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Octagonal_Shape_mpz_class.cc -o ppl_c_Octagonal_Shape_mpz_class.o >/dev/null 2>&1 -/bin/bash ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_c_Double_Box.lo ppl_c_Double_Box.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Double_Box.cc -fPIC -DPIC -o .libs/ppl_c_Double_Box.o -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Octagonal_Shape_mpq_class.cc -o ppl_c_Octagonal_Shape_mpq_class.o >/dev/null 2>&1 -In file included from ppl_c_implementation_common_defs.hh:28, - from ppl_c_Double_Box.cc:24: -../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from ../../src/ppl.hh:754, - from ppl_c_implementation_common_defs.hh:28, - from ppl_c_Double_Box.cc:24: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ppl_c_implementation_common_defs.hh:28, - from ppl_c_Double_Box.cc:24: + from ppl_c_BD_Shape_double.cc:24: ../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -3652,23 +3682,8 @@ ../../src/ppl.hh:42076:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Pointset_Powerset_NNC_Polyhedron.cc -o ppl_c_Pointset_Powerset_NNC_Polyhedron.o >/dev/null 2>&1 -/bin/bash ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_c_BD_Shape_double.lo ppl_c_BD_Shape_double.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_BD_Shape_double.cc -fPIC -DPIC -o .libs/ppl_c_BD_Shape_double.o -In file included from ppl_c_implementation_common_defs.hh:28, - from ppl_c_BD_Shape_double.cc:24: -../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from ../../src/ppl.hh:754, - from ppl_c_implementation_common_defs.hh:28, - from ppl_c_BD_Shape_double.cc:24: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ppl_c_implementation_common_defs.hh:28, - from ppl_c_BD_Shape_double.cc:24: + from ppl_c_Polyhedron.cc:24: ../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -3683,22 +3698,8 @@ ../../src/ppl.hh:42076:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -/bin/bash ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_c_Octagonal_Shape_double.lo ppl_c_Octagonal_Shape_double.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Octagonal_Shape_double.cc -fPIC -DPIC -o .libs/ppl_c_Octagonal_Shape_double.o -In file included from ppl_c_implementation_common_defs.hh:28, - from ppl_c_Octagonal_Shape_double.cc:24: -../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from ../../src/ppl.hh:754, - from ppl_c_implementation_common_defs.hh:28, - from ppl_c_Octagonal_Shape_double.cc:24: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ppl_c_implementation_common_defs.hh:28, - from ppl_c_Octagonal_Shape_double.cc:24: + from ppl_c_BD_Shape_mpz_class.cc:24: ../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -3713,10 +3714,21 @@ ../../src/ppl.hh:42076:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Double_Box.cc -o ppl_c_Double_Box.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Pointset_Powerset_C_Polyhedron.cc -o ppl_c_Pointset_Powerset_C_Polyhedron.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Pointset_Powerset_NNC_Polyhedron.cc -o ppl_c_Pointset_Powerset_NNC_Polyhedron.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Grid.cc -o ppl_c_Grid.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Constraints_Product_C_Polyhedron_Grid.cc -o ppl_c_Constraints_Product_C_Polyhedron_Grid.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_implementation_common.cc -o ppl_c_implementation_common.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Polyhedron.cc -o ppl_c_Polyhedron.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Rational_Box.cc -o ppl_c_Rational_Box.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Octagonal_Shape_mpz_class.cc -o ppl_c_Octagonal_Shape_mpz_class.o >/dev/null 2>&1 libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_BD_Shape_double.cc -o ppl_c_BD_Shape_double.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Double_Box.cc -o ppl_c_Double_Box.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_BD_Shape_mpz_class.cc -o ppl_c_BD_Shape_mpz_class.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_BD_Shape_mpq_class.cc -o ppl_c_BD_Shape_mpq_class.o >/dev/null 2>&1 libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Octagonal_Shape_double.cc -o ppl_c_Octagonal_Shape_double.o >/dev/null 2>&1 -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -version-info 4:0:0 -Wl,-z,relro -o libppl_c.la -rpath /usr/lib/i386-linux-gnu ppl_c_implementation_common.lo ppl_c_Polyhedron.lo ppl_c_Grid.lo ppl_c_Rational_Box.lo ppl_c_BD_Shape_mpz_class.lo ppl_c_BD_Shape_mpq_class.lo ppl_c_Octagonal_Shape_mpz_class.lo ppl_c_Octagonal_Shape_mpq_class.lo ppl_c_Constraints_Product_C_Polyhedron_Grid.lo ppl_c_Pointset_Powerset_C_Polyhedron.lo ppl_c_Pointset_Powerset_NNC_Polyhedron.lo ppl_c_Double_Box.lo ppl_c_BD_Shape_double.lo ppl_c_Octagonal_Shape_double.lo ../../src/libppl.la -lgmpxx -lgmp +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../interfaces -I../../interfaces/C -I../../src -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_c_Octagonal_Shape_mpq_class.cc -o ppl_c_Octagonal_Shape_mpq_class.o >/dev/null 2>&1 +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -version-info 4:0:0 -Wl,-z,relro -o libppl_c.la -rpath /usr/lib/i386-linux-gnu ppl_c_implementation_common.lo ppl_c_Polyhedron.lo ppl_c_Grid.lo ppl_c_Rational_Box.lo ppl_c_BD_Shape_mpz_class.lo ppl_c_BD_Shape_mpq_class.lo ppl_c_Octagonal_Shape_mpz_class.lo ppl_c_Octagonal_Shape_mpq_class.lo ppl_c_Constraints_Product_C_Polyhedron_Grid.lo ppl_c_Pointset_Powerset_C_Polyhedron.lo ppl_c_Pointset_Powerset_NNC_Polyhedron.lo ppl_c_Double_Box.lo ppl_c_BD_Shape_double.lo ppl_c_Octagonal_Shape_double.lo ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -fPIC -DPIC -shared -nostdlib /usr/lib/gcc/i686-linux-gnu/8/../../../i386-linux-gnu/crti.o /usr/lib/gcc/i686-linux-gnu/8/crtbeginS.o .libs/ppl_c_implementation_common.o .libs/ppl_c_Polyhedron.o .libs/ppl_c_Grid.o .libs/ppl_c_Rational_Box.o .libs/ppl_c_BD_Shape_mpz_class.o .libs/ppl_c_BD_Shape_mpq_class.o .libs/ppl_c_Octagonal_Shape_mpz_class.o .libs/ppl_c_Octagonal_Shape_mpq_class.o .libs/ppl_c_Constraints_Product_C_Polyhedron_Grid.o .libs/ppl_c_Pointset_Powerset_C_Polyhedron.o .libs/ppl_c_Pointset_Powerset_NNC_Polyhedron.o .libs/ppl_c_Double_Box.o .libs/ppl_c_BD_Shape_double.o .libs/ppl_c_Octagonal_Shape_double.o -Wl,-rpath -Wl,/build/ppl-1.2/src/.libs ../../src/.libs/libppl.so -lgmpxx -lgmp -L/usr/lib/gcc/i686-linux-gnu/8 -L/usr/lib/gcc/i686-linux-gnu/8/../../../i386-linux-gnu -L/usr/lib/gcc/i686-linux-gnu/8/../../../../lib -L/lib/i386-linux-gnu -L/lib/../lib -L/usr/lib/i386-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/i686-linux-gnu/8/../../.. -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/i686-linux-gnu/8/crtendS.o /usr/lib/gcc/i686-linux-gnu/8/../../../i386-linux-gnu/crtn.o -g -O2 -g -O2 -fstack-protector-strong -g -Wl,-z -Wl,relro -Wl,-soname -Wl,libppl_c.so.4 -o .libs/libppl_c.so.4.0.0 libtool: link: (cd ".libs" && rm -f "libppl_c.so.4" && ln -s "libppl_c.so.4.0.0" "libppl_c.so.4") libtool: link: (cd ".libs" && rm -f "libppl_c.so" && ln -s "libppl_c.so.4.0.0" "libppl_c.so") @@ -3760,71 +3772,113 @@ make[8]: Leaving directory '/build/ppl-1.2/interfaces/Prolog/tests' Making all in SWI make[8]: Entering directory '/build/ppl-1.2/interfaces/Prolog/SWI' -/bin/bash ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o swi_efli.lo swi_efli.cc +/bin/sh ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o swi_efli.lo swi_efli.cc /usr/bin/m4 --prefix-builtin -I../.. -I./.. -I./../.. \ ./ppl_interface_generator_swiprolog_cc.m4 > ppl_swiprolog.cc -/bin/bash ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_prolog_common.lo `test -f '../ppl_prolog_common.cc' || echo './'`../ppl_prolog_common.cc -/bin/bash ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_prolog_Polyhedron.lo `test -f '../ppl_prolog_Polyhedron.cc' || echo './'`../ppl_prolog_Polyhedron.cc -/bin/bash ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_prolog_Grid.lo `test -f '../ppl_prolog_Grid.cc' || echo './'`../ppl_prolog_Grid.cc -/bin/bash ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_prolog_Rational_Box.lo `test -f '../ppl_prolog_Rational_Box.cc' || echo './'`../ppl_prolog_Rational_Box.cc -/bin/bash ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_prolog_BD_Shape_mpz_class.lo `test -f '../ppl_prolog_BD_Shape_mpz_class.cc' || echo './'`../ppl_prolog_BD_Shape_mpz_class.cc -/bin/bash ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_prolog_BD_Shape_mpq_class.lo `test -f '../ppl_prolog_BD_Shape_mpq_class.cc' || echo './'`../ppl_prolog_BD_Shape_mpq_class.cc -/bin/bash ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_prolog_Octagonal_Shape_mpz_class.lo `test -f '../ppl_prolog_Octagonal_Shape_mpz_class.cc' || echo './'`../ppl_prolog_Octagonal_Shape_mpz_class.cc -/bin/bash ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_prolog_Octagonal_Shape_mpq_class.lo `test -f '../ppl_prolog_Octagonal_Shape_mpq_class.cc' || echo './'`../ppl_prolog_Octagonal_Shape_mpq_class.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Octagonal_Shape_mpq_class.cc -fPIC -DPIC -o .libs/ppl_prolog_Octagonal_Shape_mpq_class.o +/bin/sh ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_prolog_common.lo `test -f '../ppl_prolog_common.cc' || echo './'`../ppl_prolog_common.cc +/bin/sh ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_prolog_Polyhedron.lo `test -f '../ppl_prolog_Polyhedron.cc' || echo './'`../ppl_prolog_Polyhedron.cc +/bin/sh ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_prolog_Grid.lo `test -f '../ppl_prolog_Grid.cc' || echo './'`../ppl_prolog_Grid.cc +/bin/sh ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_prolog_Rational_Box.lo `test -f '../ppl_prolog_Rational_Box.cc' || echo './'`../ppl_prolog_Rational_Box.cc +/bin/sh ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_prolog_BD_Shape_mpz_class.lo `test -f '../ppl_prolog_BD_Shape_mpz_class.cc' || echo './'`../ppl_prolog_BD_Shape_mpz_class.cc +/bin/sh ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_prolog_BD_Shape_mpq_class.lo `test -f '../ppl_prolog_BD_Shape_mpq_class.cc' || echo './'`../ppl_prolog_BD_Shape_mpq_class.cc +/bin/sh ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_prolog_Octagonal_Shape_mpz_class.lo `test -f '../ppl_prolog_Octagonal_Shape_mpz_class.cc' || echo './'`../ppl_prolog_Octagonal_Shape_mpz_class.cc +/bin/sh ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_prolog_Octagonal_Shape_mpq_class.lo `test -f '../ppl_prolog_Octagonal_Shape_mpq_class.cc' || echo './'`../ppl_prolog_Octagonal_Shape_mpq_class.cc +/bin/sh ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_prolog_Constraints_Product_C_Polyhedron_Grid.lo `test -f '../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.cc' || echo './'`../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.cc +/bin/sh ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_prolog_Pointset_Powerset_C_Polyhedron.lo `test -f '../ppl_prolog_Pointset_Powerset_C_Polyhedron.cc' || echo './'`../ppl_prolog_Pointset_Powerset_C_Polyhedron.cc +/bin/sh ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_prolog_Pointset_Powerset_NNC_Polyhedron.lo `test -f '../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.cc' || echo './'`../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.cc +/bin/sh ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_prolog_Double_Box.lo `test -f '../ppl_prolog_Double_Box.cc' || echo './'`../ppl_prolog_Double_Box.cc +/bin/sh ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_prolog_BD_Shape_double.lo `test -f '../ppl_prolog_BD_Shape_double.cc' || echo './'`../ppl_prolog_BD_Shape_double.cc +/bin/sh ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_prolog_Octagonal_Shape_double.lo `test -f '../ppl_prolog_Octagonal_Shape_double.cc' || echo './'`../ppl_prolog_Octagonal_Shape_double.cc libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c swi_efli.cc -fPIC -DPIC -o .libs/swi_efli.o libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_common.cc -fPIC -DPIC -o .libs/ppl_prolog_common.o -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Grid.cc -fPIC -DPIC -o .libs/ppl_prolog_Grid.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Polyhedron.cc -fPIC -DPIC -o .libs/ppl_prolog_Polyhedron.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Rational_Box.cc -fPIC -DPIC -o .libs/ppl_prolog_Rational_Box.o libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_BD_Shape_mpz_class.cc -fPIC -DPIC -o .libs/ppl_prolog_BD_Shape_mpz_class.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Grid.cc -fPIC -DPIC -o .libs/ppl_prolog_Grid.o libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_BD_Shape_mpq_class.cc -fPIC -DPIC -o .libs/ppl_prolog_BD_Shape_mpq_class.o libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Octagonal_Shape_mpz_class.cc -fPIC -DPIC -o .libs/ppl_prolog_Octagonal_Shape_mpz_class.o -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Polyhedron.cc -fPIC -DPIC -o .libs/ppl_prolog_Polyhedron.o -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Rational_Box.cc -fPIC -DPIC -o .libs/ppl_prolog_Rational_Box.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_BD_Shape_double.cc -fPIC -DPIC -o .libs/ppl_prolog_BD_Shape_double.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Double_Box.cc -fPIC -DPIC -o .libs/ppl_prolog_Double_Box.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Pointset_Powerset_C_Polyhedron.cc -fPIC -DPIC -o .libs/ppl_prolog_Pointset_Powerset_C_Polyhedron.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Octagonal_Shape_double.cc -fPIC -DPIC -o .libs/ppl_prolog_Octagonal_Shape_double.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.cc -fPIC -DPIC -o .libs/ppl_prolog_Constraints_Product_C_Polyhedron_Grid.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.cc -fPIC -DPIC -o .libs/ppl_prolog_Pointset_Powerset_NNC_Polyhedron.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Octagonal_Shape_mpq_class.cc -fPIC -DPIC -o .libs/ppl_prolog_Octagonal_Shape_mpq_class.o In file included from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_BD_Shape_mpz_class.hh:24, - from ../ppl_prolog_BD_Shape_mpz_class.cc:24: + from ../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.hh:24, + from ../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.cc:24: ../../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); ^ In file included from ../../../src/ppl.hh:754, from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_BD_Shape_mpz_class.hh:24, - from ../ppl_prolog_BD_Shape_mpz_class.cc:24: + from ../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.hh:24, + from ../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_Polyhedron.hh:24, - from ../ppl_prolog_Polyhedron.cc:24: + from ../ppl_prolog_Octagonal_Shape_double.hh:24, + from ../ppl_prolog_Octagonal_Shape_double.cc:24: +../../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../ppl_prolog_common_defs.hh:28, + from ../ppl_prolog_Double_Box.hh:24, + from ../ppl_prolog_Double_Box.cc:24: ../../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); ^ In file included from ../../../src/ppl.hh:754, from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_Polyhedron.hh:24, - from ../ppl_prolog_Polyhedron.cc:24: + from ../ppl_prolog_Double_Box.hh:24, + from ../ppl_prolog_Double_Box.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../../../src/ppl.hh:754, + from ../ppl_prolog_common_defs.hh:28, + from ../ppl_prolog_Octagonal_Shape_double.hh:24, + from ../ppl_prolog_Octagonal_Shape_double.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_BD_Shape_mpz_class.hh:24, - from ../ppl_prolog_BD_Shape_mpz_class.cc:24: -../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': -../../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../../src/ppl.hh:42068:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': -../../../src/ppl.hh:42075:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../../src/ppl.hh:42076:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ + from ../ppl_prolog_Pointset_Powerset_C_Polyhedron.hh:24, + from ../ppl_prolog_Pointset_Powerset_C_Polyhedron.cc:24: +../../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../ppl_prolog_common_defs.hh:28, + from ../ppl_prolog_common.cc:24: +../../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../../../src/ppl.hh:754, + from ../ppl_prolog_common_defs.hh:28, + from ../ppl_prolog_common.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../../../src/ppl.hh:754, + from ../ppl_prolog_common_defs.hh:28, + from ../ppl_prolog_Pointset_Powerset_C_Polyhedron.hh:24, + from ../ppl_prolog_Pointset_Powerset_C_Polyhedron.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../ppl_prolog_common_defs.hh:28, + from ../ppl_prolog_Octagonal_Shape_mpq_class.hh:24, + from ../ppl_prolog_Octagonal_Shape_mpq_class.cc:24: +../../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ In file included from ../ppl_prolog_common_defs.hh:28, from ../ppl_prolog_Grid.hh:24, from ../ppl_prolog_Grid.cc:24: @@ -3839,37 +3893,55 @@ /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../../../src/ppl.hh:754, + from ../ppl_prolog_common_defs.hh:28, + from ../ppl_prolog_Octagonal_Shape_mpq_class.hh:24, + from ../ppl_prolog_Octagonal_Shape_mpq_class.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_BD_Shape_mpq_class.hh:24, - from ../ppl_prolog_BD_Shape_mpq_class.cc:24: + from ../ppl_prolog_Polyhedron.hh:24, + from ../ppl_prolog_Polyhedron.cc:24: ../../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); ^ In file included from ../../../src/ppl.hh:754, from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_BD_Shape_mpq_class.hh:24, - from ../ppl_prolog_BD_Shape_mpq_class.cc:24: + from ../ppl_prolog_Polyhedron.hh:24, + from ../ppl_prolog_Polyhedron.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_Polyhedron.hh:24, - from ../ppl_prolog_Polyhedron.cc:24: -../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': -../../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../../src/ppl.hh:42068:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': -../../../src/ppl.hh:42075:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../../src/ppl.hh:42076:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ + from ../ppl_prolog_Rational_Box.hh:24, + from ../ppl_prolog_Rational_Box.cc:24: +../../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../../../src/ppl.hh:754, + from ../ppl_prolog_common_defs.hh:28, + from ../ppl_prolog_Rational_Box.hh:24, + from ../ppl_prolog_Rational_Box.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../ppl_prolog_common_defs.hh:28, + from ../ppl_prolog_BD_Shape_mpz_class.hh:24, + from ../ppl_prolog_BD_Shape_mpz_class.cc:24: +../../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../../../src/ppl.hh:754, + from ../ppl_prolog_common_defs.hh:28, + from ../ppl_prolog_BD_Shape_mpz_class.hh:24, + from ../ppl_prolog_BD_Shape_mpz_class.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from swi_efli.hh:28, from swi_efli.cc:24: ../../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': @@ -3883,14 +3955,16 @@ class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_common.cc:24: + from ../ppl_prolog_BD_Shape_double.hh:24, + from ../ppl_prolog_BD_Shape_double.cc:24: ../../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); ^ In file included from ../../../src/ppl.hh:754, from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_common.cc:24: + from ../ppl_prolog_BD_Shape_double.hh:24, + from ../ppl_prolog_BD_Shape_double.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -3909,8 +3983,36 @@ class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_Grid.hh:24, - from ../ppl_prolog_Grid.cc:24: + from ../ppl_prolog_BD_Shape_mpq_class.hh:24, + from ../ppl_prolog_BD_Shape_mpq_class.cc:24: +../../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../../../src/ppl.hh:754, + from ../ppl_prolog_common_defs.hh:28, + from ../ppl_prolog_BD_Shape_mpq_class.hh:24, + from ../ppl_prolog_BD_Shape_mpq_class.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../ppl_prolog_common_defs.hh:28, + from ../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.hh:24, + from ../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.cc:24: +../../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../../../src/ppl.hh:754, + from ../ppl_prolog_common_defs.hh:28, + from ../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.hh:24, + from ../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../ppl_prolog_common_defs.hh:28, + from ../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.hh:24, + from ../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.cc:24: ../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -3926,22 +4028,109 @@ : static_cast(&Scalar_Products::reduced_sign)) { ^ In file included from ../ppl_prolog_common_defs.hh:28, + from ../ppl_prolog_Double_Box.hh:24, + from ../ppl_prolog_Double_Box.cc:24: +../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +../../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +In file included from ../ppl_prolog_common_defs.hh:28, + from ../ppl_prolog_Octagonal_Shape_double.hh:24, + from ../ppl_prolog_Octagonal_Shape_double.cc:24: +../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +../../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../../src/ppl.hh:42068:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../../src/ppl.hh:42068:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../../src/ppl.hh:42075:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../../src/ppl.hh:42075:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../../src/ppl.hh:42076:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../../src/ppl.hh:42076:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +In file included from ../ppl_prolog_common_defs.hh:28, + from ../ppl_prolog_common.cc:24: +../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +../../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +In file included from ../ppl_prolog_common_defs.hh:28, + from ../ppl_prolog_Pointset_Powerset_C_Polyhedron.hh:24, + from ../ppl_prolog_Pointset_Powerset_C_Polyhedron.cc:24: +../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +../../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../../src/ppl.hh:42068:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../../src/ppl.hh:42068:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../../src/ppl.hh:42075:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../../src/ppl.hh:42075:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../../src/ppl.hh:42076:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../../src/ppl.hh:42076:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +In file included from ../ppl_prolog_common_defs.hh:28, + from ../ppl_prolog_Grid.hh:24, + from ../ppl_prolog_Grid.cc:24: +../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +../../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +In file included from ../ppl_prolog_common_defs.hh:28, from ../ppl_prolog_Octagonal_Shape_mpq_class.hh:24, from ../ppl_prolog_Octagonal_Shape_mpq_class.cc:24: -../../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -../../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from ../../../src/ppl.hh:754, - from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_Octagonal_Shape_mpq_class.hh:24, - from ../ppl_prolog_Octagonal_Shape_mpq_class.cc:24: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ +../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +../../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../../src/ppl.hh:42068:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../../src/ppl.hh:42068:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../../src/ppl.hh:42075:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../../src/ppl.hh:42075:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../../src/ppl.hh:42076:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../../src/ppl.hh:42076:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ In file included from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_BD_Shape_mpq_class.hh:24, - from ../ppl_prolog_BD_Shape_mpq_class.cc:24: + from ../ppl_prolog_Polyhedron.hh:24, + from ../ppl_prolog_Polyhedron.cc:24: ../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -3956,8 +4145,9 @@ ../../../src/ppl.hh:42076:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -In file included from swi_efli.hh:28, - from swi_efli.cc:24: +In file included from ../ppl_prolog_common_defs.hh:28, + from ../ppl_prolog_Rational_Box.hh:24, + from ../ppl_prolog_Rational_Box.cc:24: ../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -3973,7 +4163,24 @@ : static_cast(&Scalar_Products::reduced_sign)) { ^ In file included from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_common.cc:24: + from ../ppl_prolog_BD_Shape_mpz_class.hh:24, + from ../ppl_prolog_BD_Shape_mpz_class.cc:24: +../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +../../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../../src/ppl.hh:42068:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../../src/ppl.hh:42075:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../../src/ppl.hh:42076:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +In file included from swi_efli.hh:28, + from swi_efli.cc:24: ../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -4006,8 +4213,8 @@ : static_cast(&Scalar_Products::reduced_sign)) { ^ In file included from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_Octagonal_Shape_mpq_class.hh:24, - from ../ppl_prolog_Octagonal_Shape_mpq_class.cc:24: + from ../ppl_prolog_BD_Shape_double.hh:24, + from ../ppl_prolog_BD_Shape_double.cc:24: ../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -4023,49 +4230,25 @@ : static_cast(&Scalar_Products::reduced_sign)) { ^ In file included from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_Rational_Box.hh:24, - from ../ppl_prolog_Rational_Box.cc:24: -../../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -../../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from ../../../src/ppl.hh:754, - from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_Rational_Box.hh:24, - from ../ppl_prolog_Rational_Box.cc:24: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ -In file included from /usr/include/c++/8/cassert:44, - from ./swi_cfli.hh:32, - from ./swi_efli.hh:31, - from ./ppl_prolog_sysdep.hh:24, - from ../ppl_prolog_common_defs.hh:29, - from ../ppl_prolog_BD_Shape_mpz_class.hh:24, - from ../ppl_prolog_BD_Shape_mpz_class.cc:24: -./swi_cfli.hh: In function 'int Prolog_put_big_ulong(Prolog_term_ref, long unsigned int)': -./swi_cfli.hh:85:30: warning: comparison is always false due to limited range of data type [-Wtype-limits] - assert(ul > LONG_MAX && ul > (uint64_t) INT64_MAX); - ^ -In file included from ./swi_efli.hh:31, - from ./ppl_prolog_sysdep.hh:24, - from ../ppl_prolog_common_defs.hh:29, - from ../ppl_prolog_BD_Shape_mpz_class.hh:24, - from ../ppl_prolog_BD_Shape_mpz_class.cc:24: -./swi_cfli.hh: In function 'int Prolog_put_ulong(Prolog_term_ref, long unsigned int)': -./swi_cfli.hh:108:15: warning: comparison is always true due to limited range of data type [-Wtype-limits] - else if (ul <= (uint64_t) INT64_MAX) { - ^ -../ppl_prolog_BD_Shape_mpz_class.cc: In function 'Prolog_foreign_return_type ppl_new_BD_Shape_mpz_class_from_space_dimension(Prolog_term_ref, Prolog_term_ref, Prolog_term_ref)': -../ppl_prolog_BD_Shape_mpz_class.cc:57:5: warning: this 'else' clause does not guard... [-Wmisleading-indentation] - else - ^~~~ -../ppl_prolog_BD_Shape_mpz_class.cc:62:7: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else' - Prolog_term_ref tmp = Prolog_new_term_ref(); - ^~~~~~~~~~~~~~~ + from ../ppl_prolog_BD_Shape_mpq_class.hh:24, + from ../ppl_prolog_BD_Shape_mpq_class.cc:24: +../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +../../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../../src/ppl.hh:42068:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../../src/ppl.hh:42075:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../../src/ppl.hh:42076:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ In file included from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_Rational_Box.hh:24, - from ../ppl_prolog_Rational_Box.cc:24: + from ../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.hh:24, + from ../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.cc:24: ../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -4085,8 +4268,8 @@ from ./swi_efli.hh:31, from ./ppl_prolog_sysdep.hh:24, from ../ppl_prolog_common_defs.hh:29, - from ../ppl_prolog_Polyhedron.hh:24, - from ../ppl_prolog_Polyhedron.cc:24: + from ../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.hh:24, + from ../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.cc:24: ./swi_cfli.hh: In function 'int Prolog_put_big_ulong(Prolog_term_ref, long unsigned int)': ./swi_cfli.hh:85:30: warning: comparison is always false due to limited range of data type [-Wtype-limits] assert(ul > LONG_MAX && ul > (uint64_t) INT64_MAX); @@ -4094,24 +4277,17 @@ In file included from ./swi_efli.hh:31, from ./ppl_prolog_sysdep.hh:24, from ../ppl_prolog_common_defs.hh:29, - from ../ppl_prolog_Polyhedron.hh:24, - from ../ppl_prolog_Polyhedron.cc:24: + from ../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.hh:24, + from ../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.cc:24: ./swi_cfli.hh: In function 'int Prolog_put_ulong(Prolog_term_ref, long unsigned int)': ./swi_cfli.hh:108:15: warning: comparison is always true due to limited range of data type [-Wtype-limits] else if (ul <= (uint64_t) INT64_MAX) { ^ -../ppl_prolog_Polyhedron.cc: In function 'Prolog_foreign_return_type ppl_new_C_Polyhedron_from_space_dimension(Prolog_term_ref, Prolog_term_ref, Prolog_term_ref)': -../ppl_prolog_Polyhedron.cc:57:5: warning: this 'else' clause does not guard... [-Wmisleading-indentation] - else - ^~~~ -../ppl_prolog_Polyhedron.cc:62:7: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else' - Prolog_term_ref tmp = Prolog_new_term_ref(); - ^~~~~~~~~~~~~~~ -../ppl_prolog_Polyhedron.cc: In function 'Prolog_foreign_return_type ppl_new_NNC_Polyhedron_from_space_dimension(Prolog_term_ref, Prolog_term_ref, Prolog_term_ref)': -../ppl_prolog_Polyhedron.cc:87:5: warning: this 'else' clause does not guard... [-Wmisleading-indentation] +../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.cc: In function 'Prolog_foreign_return_type ppl_new_Constraints_Product_C_Polyhedron_Grid_from_space_dimension(Prolog_term_ref, Prolog_term_ref, Prolog_term_ref)': +../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.cc:57:5: warning: this 'else' clause does not guard... [-Wmisleading-indentation] else ^~~~ -../ppl_prolog_Polyhedron.cc:92:7: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else' +../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.cc:62:7: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else' Prolog_term_ref tmp = Prolog_new_term_ref(); ^~~~~~~~~~~~~~~ In file included from /usr/include/c++/8/cassert:44, @@ -4119,35 +4295,19 @@ from ./swi_efli.hh:31, from ./ppl_prolog_sysdep.hh:24, from ../ppl_prolog_common_defs.hh:29, - from ../ppl_prolog_Grid.hh:24, - from ../ppl_prolog_Grid.cc:24: + from ../ppl_prolog_Octagonal_Shape_double.hh:24, + from ../ppl_prolog_Octagonal_Shape_double.cc:24: ./swi_cfli.hh: In function 'int Prolog_put_big_ulong(Prolog_term_ref, long unsigned int)': ./swi_cfli.hh:85:30: warning: comparison is always false due to limited range of data type [-Wtype-limits] assert(ul > LONG_MAX && ul > (uint64_t) INT64_MAX); ^ -In file included from ./swi_efli.hh:31, - from ./ppl_prolog_sysdep.hh:24, - from ../ppl_prolog_common_defs.hh:29, - from ../ppl_prolog_Grid.hh:24, - from ../ppl_prolog_Grid.cc:24: -./swi_cfli.hh: In function 'int Prolog_put_ulong(Prolog_term_ref, long unsigned int)': -./swi_cfli.hh:108:15: warning: comparison is always true due to limited range of data type [-Wtype-limits] - else if (ul <= (uint64_t) INT64_MAX) { - ^ -../ppl_prolog_Grid.cc: In function 'Prolog_foreign_return_type ppl_new_Grid_from_space_dimension(Prolog_term_ref, Prolog_term_ref, Prolog_term_ref)': -../ppl_prolog_Grid.cc:57:5: warning: this 'else' clause does not guard... [-Wmisleading-indentation] - else - ^~~~ -../ppl_prolog_Grid.cc:62:7: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else' - Prolog_term_ref tmp = Prolog_new_term_ref(); - ^~~~~~~~~~~~~~~ In file included from /usr/include/c++/8/cassert:44, from ./swi_cfli.hh:32, from ./swi_efli.hh:31, from ./ppl_prolog_sysdep.hh:24, from ../ppl_prolog_common_defs.hh:29, - from ../ppl_prolog_BD_Shape_mpq_class.hh:24, - from ../ppl_prolog_BD_Shape_mpq_class.cc:24: + from ../ppl_prolog_Double_Box.hh:24, + from ../ppl_prolog_Double_Box.cc:24: ./swi_cfli.hh: In function 'int Prolog_put_big_ulong(Prolog_term_ref, long unsigned int)': ./swi_cfli.hh:85:30: warning: comparison is always false due to limited range of data type [-Wtype-limits] assert(ul > LONG_MAX && ul > (uint64_t) INT64_MAX); @@ -4155,45 +4315,38 @@ In file included from ./swi_efli.hh:31, from ./ppl_prolog_sysdep.hh:24, from ../ppl_prolog_common_defs.hh:29, - from ../ppl_prolog_BD_Shape_mpq_class.hh:24, - from ../ppl_prolog_BD_Shape_mpq_class.cc:24: + from ../ppl_prolog_Octagonal_Shape_double.hh:24, + from ../ppl_prolog_Octagonal_Shape_double.cc:24: +./swi_cfli.hh: In function 'int Prolog_put_ulong(Prolog_term_ref, long unsigned int)': +./swi_cfli.hh:108:15: warning: comparison is always true due to limited range of data type [-Wtype-limits] + else if (ul <= (uint64_t) INT64_MAX) { + ^ +In file included from ./swi_efli.hh:31, + from ./ppl_prolog_sysdep.hh:24, + from ../ppl_prolog_common_defs.hh:29, + from ../ppl_prolog_Double_Box.hh:24, + from ../ppl_prolog_Double_Box.cc:24: ./swi_cfli.hh: In function 'int Prolog_put_ulong(Prolog_term_ref, long unsigned int)': ./swi_cfli.hh:108:15: warning: comparison is always true due to limited range of data type [-Wtype-limits] else if (ul <= (uint64_t) INT64_MAX) { ^ -../ppl_prolog_BD_Shape_mpq_class.cc: In function 'Prolog_foreign_return_type ppl_new_BD_Shape_mpq_class_from_space_dimension(Prolog_term_ref, Prolog_term_ref, Prolog_term_ref)': -../ppl_prolog_BD_Shape_mpq_class.cc:57:5: warning: this 'else' clause does not guard... [-Wmisleading-indentation] - else - ^~~~ -../ppl_prolog_BD_Shape_mpq_class.cc:62:7: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else' - Prolog_term_ref tmp = Prolog_new_term_ref(); - ^~~~~~~~~~~~~~~ In file included from /usr/include/c++/8/cassert:44, from ./swi_cfli.hh:32, from ./swi_efli.hh:31, from ./ppl_prolog_sysdep.hh:24, from ../ppl_prolog_common_defs.hh:29, - from ../ppl_prolog_Octagonal_Shape_mpz_class.hh:24, - from ../ppl_prolog_Octagonal_Shape_mpz_class.cc:24: + from ../ppl_prolog_common.cc:24: ./swi_cfli.hh: In function 'int Prolog_put_big_ulong(Prolog_term_ref, long unsigned int)': ./swi_cfli.hh:85:30: warning: comparison is always false due to limited range of data type [-Wtype-limits] assert(ul > LONG_MAX && ul > (uint64_t) INT64_MAX); ^ -In file included from ./swi_efli.hh:31, - from ./ppl_prolog_sysdep.hh:24, - from ../ppl_prolog_common_defs.hh:29, - from ../ppl_prolog_Octagonal_Shape_mpz_class.hh:24, - from ../ppl_prolog_Octagonal_Shape_mpz_class.cc:24: -./swi_cfli.hh: In function 'int Prolog_put_ulong(Prolog_term_ref, long unsigned int)': -./swi_cfli.hh:108:15: warning: comparison is always true due to limited range of data type [-Wtype-limits] - else if (ul <= (uint64_t) INT64_MAX) { - ^ In file included from /usr/include/c++/8/cassert:44, from ./swi_cfli.hh:32, from ./swi_efli.hh:31, from ./ppl_prolog_sysdep.hh:24, from ../ppl_prolog_common_defs.hh:29, - from ../ppl_prolog_common.cc:24: + from ../ppl_prolog_Pointset_Powerset_C_Polyhedron.hh:24, + from ../ppl_prolog_Pointset_Powerset_C_Polyhedron.cc:24: ./swi_cfli.hh: In function 'int Prolog_put_big_ulong(Prolog_term_ref, long unsigned int)': ./swi_cfli.hh:85:30: warning: comparison is always false due to limited range of data type [-Wtype-limits] assert(ul > LONG_MAX && ul > (uint64_t) INT64_MAX); @@ -4206,25 +4359,34 @@ ./swi_cfli.hh:108:15: warning: comparison is always true due to limited range of data type [-Wtype-limits] else if (ul <= (uint64_t) INT64_MAX) { ^ -In file included from /usr/include/c++/8/cassert:44, - from swi_cfli.hh:32, - from swi_efli.hh:31, - from swi_efli.cc:24: -swi_cfli.hh: In function 'int Prolog_put_big_ulong(Prolog_term_ref, long unsigned int)': -swi_cfli.hh:85:30: warning: comparison is always false due to limited range of data type [-Wtype-limits] - assert(ul > LONG_MAX && ul > (uint64_t) INT64_MAX); - ^ -In file included from swi_efli.hh:31, - from swi_efli.cc:24: -swi_cfli.hh: In function 'int Prolog_put_ulong(Prolog_term_ref, long unsigned int)': -swi_cfli.hh:108:15: warning: comparison is always true due to limited range of data type [-Wtype-limits] +In file included from ./swi_efli.hh:31, + from ./ppl_prolog_sysdep.hh:24, + from ../ppl_prolog_common_defs.hh:29, + from ../ppl_prolog_Pointset_Powerset_C_Polyhedron.hh:24, + from ../ppl_prolog_Pointset_Powerset_C_Polyhedron.cc:24: +./swi_cfli.hh: In function 'int Prolog_put_ulong(Prolog_term_ref, long unsigned int)': +./swi_cfli.hh:108:15: warning: comparison is always true due to limited range of data type [-Wtype-limits] else if (ul <= (uint64_t) INT64_MAX) { ^ -../ppl_prolog_Octagonal_Shape_mpz_class.cc: In function 'Prolog_foreign_return_type ppl_new_Octagonal_Shape_mpz_class_from_space_dimension(Prolog_term_ref, Prolog_term_ref, Prolog_term_ref)': -../ppl_prolog_Octagonal_Shape_mpz_class.cc:57:5: warning: this 'else' clause does not guard... [-Wmisleading-indentation] +../ppl_prolog_Octagonal_Shape_double.cc: In function 'Prolog_foreign_return_type ppl_new_Octagonal_Shape_double_from_space_dimension(Prolog_term_ref, Prolog_term_ref, Prolog_term_ref)': +../ppl_prolog_Octagonal_Shape_double.cc:57:5: warning: this 'else' clause does not guard... [-Wmisleading-indentation] else ^~~~ -../ppl_prolog_Octagonal_Shape_mpz_class.cc:62:7: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else' +../ppl_prolog_Octagonal_Shape_double.cc:62:7: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else' + Prolog_term_ref tmp = Prolog_new_term_ref(); + ^~~~~~~~~~~~~~~ +../ppl_prolog_Pointset_Powerset_C_Polyhedron.cc: In function 'Prolog_foreign_return_type ppl_new_Pointset_Powerset_C_Polyhedron_from_space_dimension(Prolog_term_ref, Prolog_term_ref, Prolog_term_ref)': +../ppl_prolog_Pointset_Powerset_C_Polyhedron.cc:57:5: warning: this 'else' clause does not guard... [-Wmisleading-indentation] + else + ^~~~ +../ppl_prolog_Pointset_Powerset_C_Polyhedron.cc:62:7: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else' + Prolog_term_ref tmp = Prolog_new_term_ref(); + ^~~~~~~~~~~~~~~ +../ppl_prolog_Double_Box.cc: In function 'Prolog_foreign_return_type ppl_new_Double_Box_from_space_dimension(Prolog_term_ref, Prolog_term_ref, Prolog_term_ref)': +../ppl_prolog_Double_Box.cc:57:5: warning: this 'else' clause does not guard... [-Wmisleading-indentation] + else + ^~~~ +../ppl_prolog_Double_Box.cc:62:7: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else' Prolog_term_ref tmp = Prolog_new_term_ref(); ^~~~~~~~~~~~~~~ In file included from /usr/include/c++/8/cassert:44, @@ -4232,6 +4394,17 @@ from ./swi_efli.hh:31, from ./ppl_prolog_sysdep.hh:24, from ../ppl_prolog_common_defs.hh:29, + from ../ppl_prolog_Grid.hh:24, + from ../ppl_prolog_Grid.cc:24: +./swi_cfli.hh: In function 'int Prolog_put_big_ulong(Prolog_term_ref, long unsigned int)': +./swi_cfli.hh:85:30: warning: comparison is always false due to limited range of data type [-Wtype-limits] + assert(ul > LONG_MAX && ul > (uint64_t) INT64_MAX); + ^ +In file included from /usr/include/c++/8/cassert:44, + from ./swi_cfli.hh:32, + from ./swi_efli.hh:31, + from ./ppl_prolog_sysdep.hh:24, + from ../ppl_prolog_common_defs.hh:29, from ../ppl_prolog_Octagonal_Shape_mpq_class.hh:24, from ../ppl_prolog_Octagonal_Shape_mpq_class.cc:24: ./swi_cfli.hh: In function 'int Prolog_put_big_ulong(Prolog_term_ref, long unsigned int)': @@ -4247,20 +4420,22 @@ ./swi_cfli.hh:108:15: warning: comparison is always true due to limited range of data type [-Wtype-limits] else if (ul <= (uint64_t) INT64_MAX) { ^ -../ppl_prolog_Octagonal_Shape_mpq_class.cc: In function 'Prolog_foreign_return_type ppl_new_Octagonal_Shape_mpq_class_from_space_dimension(Prolog_term_ref, Prolog_term_ref, Prolog_term_ref)': -../ppl_prolog_Octagonal_Shape_mpq_class.cc:57:5: warning: this 'else' clause does not guard... [-Wmisleading-indentation] - else - ^~~~ -../ppl_prolog_Octagonal_Shape_mpq_class.cc:62:7: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else' - Prolog_term_ref tmp = Prolog_new_term_ref(); - ^~~~~~~~~~~~~~~ +In file included from ./swi_efli.hh:31, + from ./ppl_prolog_sysdep.hh:24, + from ../ppl_prolog_common_defs.hh:29, + from ../ppl_prolog_Grid.hh:24, + from ../ppl_prolog_Grid.cc:24: +./swi_cfli.hh: In function 'int Prolog_put_ulong(Prolog_term_ref, long unsigned int)': +./swi_cfli.hh:108:15: warning: comparison is always true due to limited range of data type [-Wtype-limits] + else if (ul <= (uint64_t) INT64_MAX) { + ^ In file included from /usr/include/c++/8/cassert:44, from ./swi_cfli.hh:32, from ./swi_efli.hh:31, from ./ppl_prolog_sysdep.hh:24, from ../ppl_prolog_common_defs.hh:29, - from ../ppl_prolog_Rational_Box.hh:24, - from ../ppl_prolog_Rational_Box.cc:24: + from ../ppl_prolog_Polyhedron.hh:24, + from ../ppl_prolog_Polyhedron.cc:24: ./swi_cfli.hh: In function 'int Prolog_put_big_ulong(Prolog_term_ref, long unsigned int)': ./swi_cfli.hh:85:30: warning: comparison is always false due to limited range of data type [-Wtype-limits] assert(ul > LONG_MAX && ul > (uint64_t) INT64_MAX); @@ -4268,60 +4443,47 @@ In file included from ./swi_efli.hh:31, from ./ppl_prolog_sysdep.hh:24, from ../ppl_prolog_common_defs.hh:29, - from ../ppl_prolog_Rational_Box.hh:24, - from ../ppl_prolog_Rational_Box.cc:24: + from ../ppl_prolog_Polyhedron.hh:24, + from ../ppl_prolog_Polyhedron.cc:24: ./swi_cfli.hh: In function 'int Prolog_put_ulong(Prolog_term_ref, long unsigned int)': ./swi_cfli.hh:108:15: warning: comparison is always true due to limited range of data type [-Wtype-limits] else if (ul <= (uint64_t) INT64_MAX) { ^ -../ppl_prolog_Rational_Box.cc: In function 'Prolog_foreign_return_type ppl_new_Rational_Box_from_space_dimension(Prolog_term_ref, Prolog_term_ref, Prolog_term_ref)': -../ppl_prolog_Rational_Box.cc:57:5: warning: this 'else' clause does not guard... [-Wmisleading-indentation] +../ppl_prolog_Octagonal_Shape_mpq_class.cc: In function 'Prolog_foreign_return_type ppl_new_Octagonal_Shape_mpq_class_from_space_dimension(Prolog_term_ref, Prolog_term_ref, Prolog_term_ref)': +../ppl_prolog_Octagonal_Shape_mpq_class.cc:57:5: warning: this 'else' clause does not guard... [-Wmisleading-indentation] else ^~~~ -../ppl_prolog_Rational_Box.cc:62:7: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else' +../ppl_prolog_Octagonal_Shape_mpq_class.cc:62:7: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else' + Prolog_term_ref tmp = Prolog_new_term_ref(); + ^~~~~~~~~~~~~~~ +../ppl_prolog_Grid.cc: In function 'Prolog_foreign_return_type ppl_new_Grid_from_space_dimension(Prolog_term_ref, Prolog_term_ref, Prolog_term_ref)': +../ppl_prolog_Grid.cc:57:5: warning: this 'else' clause does not guard... [-Wmisleading-indentation] + else + ^~~~ +../ppl_prolog_Grid.cc:62:7: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else' + Prolog_term_ref tmp = Prolog_new_term_ref(); + ^~~~~~~~~~~~~~~ +../ppl_prolog_Polyhedron.cc: In function 'Prolog_foreign_return_type ppl_new_C_Polyhedron_from_space_dimension(Prolog_term_ref, Prolog_term_ref, Prolog_term_ref)': +../ppl_prolog_Polyhedron.cc:57:5: warning: this 'else' clause does not guard... [-Wmisleading-indentation] + else + ^~~~ +../ppl_prolog_Polyhedron.cc:62:7: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else' + Prolog_term_ref tmp = Prolog_new_term_ref(); + ^~~~~~~~~~~~~~~ +../ppl_prolog_Polyhedron.cc: In function 'Prolog_foreign_return_type ppl_new_NNC_Polyhedron_from_space_dimension(Prolog_term_ref, Prolog_term_ref, Prolog_term_ref)': +../ppl_prolog_Polyhedron.cc:87:5: warning: this 'else' clause does not guard... [-Wmisleading-indentation] + else + ^~~~ +../ppl_prolog_Polyhedron.cc:92:7: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else' Prolog_term_ref tmp = Prolog_new_term_ref(); ^~~~~~~~~~~~~~~ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c swi_efli.cc -o swi_efli.o >/dev/null 2>&1 -/bin/bash ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_prolog_Constraints_Product_C_Polyhedron_Grid.lo `test -f '../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.cc' || echo './'`../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.cc -fPIC -DPIC -o .libs/ppl_prolog_Constraints_Product_C_Polyhedron_Grid.o -In file included from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.hh:24, - from ../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.cc:24: -../../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -../../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from ../../../src/ppl.hh:754, - from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.hh:24, - from ../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.cc:24: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ -In file included from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.hh:24, - from ../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.cc:24: -../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': -../../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../../src/ppl.hh:42068:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': -../../../src/ppl.hh:42075:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../../src/ppl.hh:42076:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ In file included from /usr/include/c++/8/cassert:44, from ./swi_cfli.hh:32, from ./swi_efli.hh:31, from ./ppl_prolog_sysdep.hh:24, from ../ppl_prolog_common_defs.hh:29, - from ../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.hh:24, - from ../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.cc:24: + from ../ppl_prolog_BD_Shape_mpq_class.hh:24, + from ../ppl_prolog_BD_Shape_mpq_class.cc:24: ./swi_cfli.hh: In function 'int Prolog_put_big_ulong(Prolog_term_ref, long unsigned int)': ./swi_cfli.hh:85:30: warning: comparison is always false due to limited range of data type [-Wtype-limits] assert(ul > LONG_MAX && ul > (uint64_t) INT64_MAX); @@ -4329,59 +4491,26 @@ In file included from ./swi_efli.hh:31, from ./ppl_prolog_sysdep.hh:24, from ../ppl_prolog_common_defs.hh:29, - from ../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.hh:24, - from ../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.cc:24: + from ../ppl_prolog_BD_Shape_mpq_class.hh:24, + from ../ppl_prolog_BD_Shape_mpq_class.cc:24: ./swi_cfli.hh: In function 'int Prolog_put_ulong(Prolog_term_ref, long unsigned int)': ./swi_cfli.hh:108:15: warning: comparison is always true due to limited range of data type [-Wtype-limits] else if (ul <= (uint64_t) INT64_MAX) { ^ -../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.cc: In function 'Prolog_foreign_return_type ppl_new_Constraints_Product_C_Polyhedron_Grid_from_space_dimension(Prolog_term_ref, Prolog_term_ref, Prolog_term_ref)': -../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.cc:57:5: warning: this 'else' clause does not guard... [-Wmisleading-indentation] +../ppl_prolog_BD_Shape_mpq_class.cc: In function 'Prolog_foreign_return_type ppl_new_BD_Shape_mpq_class_from_space_dimension(Prolog_term_ref, Prolog_term_ref, Prolog_term_ref)': +../ppl_prolog_BD_Shape_mpq_class.cc:57:5: warning: this 'else' clause does not guard... [-Wmisleading-indentation] else ^~~~ -../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.cc:62:7: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else' +../ppl_prolog_BD_Shape_mpq_class.cc:62:7: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else' Prolog_term_ref tmp = Prolog_new_term_ref(); ^~~~~~~~~~~~~~~ -/bin/bash ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_prolog_Pointset_Powerset_C_Polyhedron.lo `test -f '../ppl_prolog_Pointset_Powerset_C_Polyhedron.cc' || echo './'`../ppl_prolog_Pointset_Powerset_C_Polyhedron.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Pointset_Powerset_C_Polyhedron.cc -fPIC -DPIC -o .libs/ppl_prolog_Pointset_Powerset_C_Polyhedron.o -In file included from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_Pointset_Powerset_C_Polyhedron.hh:24, - from ../ppl_prolog_Pointset_Powerset_C_Polyhedron.cc:24: -../../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -../../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from ../../../src/ppl.hh:754, - from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_Pointset_Powerset_C_Polyhedron.hh:24, - from ../ppl_prolog_Pointset_Powerset_C_Polyhedron.cc:24: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ -In file included from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_Pointset_Powerset_C_Polyhedron.hh:24, - from ../ppl_prolog_Pointset_Powerset_C_Polyhedron.cc:24: -../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': -../../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../../src/ppl.hh:42068:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': -../../../src/ppl.hh:42075:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../../src/ppl.hh:42076:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ In file included from /usr/include/c++/8/cassert:44, from ./swi_cfli.hh:32, from ./swi_efli.hh:31, from ./ppl_prolog_sysdep.hh:24, from ../ppl_prolog_common_defs.hh:29, - from ../ppl_prolog_Pointset_Powerset_C_Polyhedron.hh:24, - from ../ppl_prolog_Pointset_Powerset_C_Polyhedron.cc:24: + from ../ppl_prolog_BD_Shape_mpz_class.hh:24, + from ../ppl_prolog_BD_Shape_mpz_class.cc:24: ./swi_cfli.hh: In function 'int Prolog_put_big_ulong(Prolog_term_ref, long unsigned int)': ./swi_cfli.hh:85:30: warning: comparison is always false due to limited range of data type [-Wtype-limits] assert(ul > LONG_MAX && ul > (uint64_t) INT64_MAX); @@ -4389,64 +4518,19 @@ In file included from ./swi_efli.hh:31, from ./ppl_prolog_sysdep.hh:24, from ../ppl_prolog_common_defs.hh:29, - from ../ppl_prolog_Pointset_Powerset_C_Polyhedron.hh:24, - from ../ppl_prolog_Pointset_Powerset_C_Polyhedron.cc:24: + from ../ppl_prolog_BD_Shape_mpz_class.hh:24, + from ../ppl_prolog_BD_Shape_mpz_class.cc:24: ./swi_cfli.hh: In function 'int Prolog_put_ulong(Prolog_term_ref, long unsigned int)': ./swi_cfli.hh:108:15: warning: comparison is always true due to limited range of data type [-Wtype-limits] else if (ul <= (uint64_t) INT64_MAX) { ^ -../ppl_prolog_Pointset_Powerset_C_Polyhedron.cc: In function 'Prolog_foreign_return_type ppl_new_Pointset_Powerset_C_Polyhedron_from_space_dimension(Prolog_term_ref, Prolog_term_ref, Prolog_term_ref)': -../ppl_prolog_Pointset_Powerset_C_Polyhedron.cc:57:5: warning: this 'else' clause does not guard... [-Wmisleading-indentation] - else - ^~~~ -../ppl_prolog_Pointset_Powerset_C_Polyhedron.cc:62:7: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else' - Prolog_term_ref tmp = Prolog_new_term_ref(); - ^~~~~~~~~~~~~~~ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_common.cc -o ppl_prolog_common.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Grid.cc -o ppl_prolog_Grid.o >/dev/null 2>&1 -/bin/bash ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_prolog_Pointset_Powerset_NNC_Polyhedron.lo `test -f '../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.cc' || echo './'`../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.cc -fPIC -DPIC -o .libs/ppl_prolog_Pointset_Powerset_NNC_Polyhedron.o -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Pointset_Powerset_C_Polyhedron.cc -o ppl_prolog_Pointset_Powerset_C_Polyhedron.o >/dev/null 2>&1 -In file included from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.hh:24, - from ../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.cc:24: -../../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -../../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from ../../../src/ppl.hh:754, - from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.hh:24, - from ../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.cc:24: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ -In file included from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.hh:24, - from ../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.cc:24: -../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': -../../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../../src/ppl.hh:42068:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': -../../../src/ppl.hh:42075:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../../src/ppl.hh:42076:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Polyhedron.cc -o ppl_prolog_Polyhedron.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.cc -o ppl_prolog_Constraints_Product_C_Polyhedron_Grid.o >/dev/null 2>&1 In file included from /usr/include/c++/8/cassert:44, from ./swi_cfli.hh:32, from ./swi_efli.hh:31, from ./ppl_prolog_sysdep.hh:24, from ../ppl_prolog_common_defs.hh:29, - from ../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.hh:24, - from ../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.cc:24: + from ../ppl_prolog_Rational_Box.hh:24, + from ../ppl_prolog_Rational_Box.cc:24: ./swi_cfli.hh: In function 'int Prolog_put_big_ulong(Prolog_term_ref, long unsigned int)': ./swi_cfli.hh:85:30: warning: comparison is always false due to limited range of data type [-Wtype-limits] assert(ul > LONG_MAX && ul > (uint64_t) INT64_MAX); @@ -4454,98 +4538,47 @@ In file included from ./swi_efli.hh:31, from ./ppl_prolog_sysdep.hh:24, from ../ppl_prolog_common_defs.hh:29, - from ../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.hh:24, - from ../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.cc:24: + from ../ppl_prolog_Rational_Box.hh:24, + from ../ppl_prolog_Rational_Box.cc:24: ./swi_cfli.hh: In function 'int Prolog_put_ulong(Prolog_term_ref, long unsigned int)': ./swi_cfli.hh:108:15: warning: comparison is always true due to limited range of data type [-Wtype-limits] else if (ul <= (uint64_t) INT64_MAX) { ^ -../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.cc: In function 'Prolog_foreign_return_type ppl_new_Pointset_Powerset_NNC_Polyhedron_from_space_dimension(Prolog_term_ref, Prolog_term_ref, Prolog_term_ref)': -../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.cc:57:5: warning: this 'else' clause does not guard... [-Wmisleading-indentation] +In file included from /usr/include/c++/8/cassert:44, + from swi_cfli.hh:32, + from swi_efli.hh:31, + from swi_efli.cc:24: +swi_cfli.hh: In function 'int Prolog_put_big_ulong(Prolog_term_ref, long unsigned int)': +swi_cfli.hh:85:30: warning: comparison is always false due to limited range of data type [-Wtype-limits] + assert(ul > LONG_MAX && ul > (uint64_t) INT64_MAX); + ^ +In file included from swi_efli.hh:31, + from swi_efli.cc:24: +swi_cfli.hh: In function 'int Prolog_put_ulong(Prolog_term_ref, long unsigned int)': +swi_cfli.hh:108:15: warning: comparison is always true due to limited range of data type [-Wtype-limits] + else if (ul <= (uint64_t) INT64_MAX) { + ^ +../ppl_prolog_BD_Shape_mpz_class.cc: In function 'Prolog_foreign_return_type ppl_new_BD_Shape_mpz_class_from_space_dimension(Prolog_term_ref, Prolog_term_ref, Prolog_term_ref)': +../ppl_prolog_BD_Shape_mpz_class.cc:57:5: warning: this 'else' clause does not guard... [-Wmisleading-indentation] else ^~~~ -../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.cc:62:7: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else' +../ppl_prolog_BD_Shape_mpz_class.cc:62:7: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else' + Prolog_term_ref tmp = Prolog_new_term_ref(); + ^~~~~~~~~~~~~~~ +../ppl_prolog_Rational_Box.cc: In function 'Prolog_foreign_return_type ppl_new_Rational_Box_from_space_dimension(Prolog_term_ref, Prolog_term_ref, Prolog_term_ref)': +../ppl_prolog_Rational_Box.cc:57:5: warning: this 'else' clause does not guard... [-Wmisleading-indentation] + else + ^~~~ +../ppl_prolog_Rational_Box.cc:62:7: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else' Prolog_term_ref tmp = Prolog_new_term_ref(); ^~~~~~~~~~~~~~~ -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Rational_Box.cc -o ppl_prolog_Rational_Box.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_BD_Shape_mpq_class.cc -o ppl_prolog_BD_Shape_mpq_class.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_BD_Shape_mpz_class.cc -o ppl_prolog_BD_Shape_mpz_class.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Octagonal_Shape_mpz_class.cc -o ppl_prolog_Octagonal_Shape_mpz_class.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Octagonal_Shape_mpq_class.cc -o ppl_prolog_Octagonal_Shape_mpq_class.o >/dev/null 2>&1 -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.cc -o ppl_prolog_Pointset_Powerset_NNC_Polyhedron.o >/dev/null 2>&1 -/bin/bash ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_prolog_Double_Box.lo `test -f '../ppl_prolog_Double_Box.cc' || echo './'`../ppl_prolog_Double_Box.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Double_Box.cc -fPIC -DPIC -o .libs/ppl_prolog_Double_Box.o -/bin/bash ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_prolog_BD_Shape_double.lo `test -f '../ppl_prolog_BD_Shape_double.cc' || echo './'`../ppl_prolog_BD_Shape_double.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_BD_Shape_double.cc -fPIC -DPIC -o .libs/ppl_prolog_BD_Shape_double.o -In file included from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_Double_Box.hh:24, - from ../ppl_prolog_Double_Box.cc:24: -../../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -../../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from ../../../src/ppl.hh:754, - from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_Double_Box.hh:24, - from ../ppl_prolog_Double_Box.cc:24: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ -In file included from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_Double_Box.hh:24, - from ../ppl_prolog_Double_Box.cc:24: -../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': -../../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../../src/ppl.hh:42068:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': -../../../src/ppl.hh:42075:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../../src/ppl.hh:42076:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -In file included from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_BD_Shape_double.hh:24, - from ../ppl_prolog_BD_Shape_double.cc:24: -../../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -../../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from ../../../src/ppl.hh:754, - from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_BD_Shape_double.hh:24, - from ../ppl_prolog_BD_Shape_double.cc:24: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ -In file included from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_BD_Shape_double.hh:24, - from ../ppl_prolog_BD_Shape_double.cc:24: -../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': -../../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../../src/ppl.hh:42068:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': -../../../src/ppl.hh:42075:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../../src/ppl.hh:42076:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ In file included from /usr/include/c++/8/cassert:44, from ./swi_cfli.hh:32, from ./swi_efli.hh:31, from ./ppl_prolog_sysdep.hh:24, from ../ppl_prolog_common_defs.hh:29, - from ../ppl_prolog_Double_Box.hh:24, - from ../ppl_prolog_Double_Box.cc:24: + from ../ppl_prolog_Octagonal_Shape_mpz_class.hh:24, + from ../ppl_prolog_Octagonal_Shape_mpz_class.cc:24: ./swi_cfli.hh: In function 'int Prolog_put_big_ulong(Prolog_term_ref, long unsigned int)': ./swi_cfli.hh:85:30: warning: comparison is always false due to limited range of data type [-Wtype-limits] assert(ul > LONG_MAX && ul > (uint64_t) INT64_MAX); @@ -4553,26 +4586,19 @@ In file included from ./swi_efli.hh:31, from ./ppl_prolog_sysdep.hh:24, from ../ppl_prolog_common_defs.hh:29, - from ../ppl_prolog_Double_Box.hh:24, - from ../ppl_prolog_Double_Box.cc:24: + from ../ppl_prolog_Octagonal_Shape_mpz_class.hh:24, + from ../ppl_prolog_Octagonal_Shape_mpz_class.cc:24: ./swi_cfli.hh: In function 'int Prolog_put_ulong(Prolog_term_ref, long unsigned int)': ./swi_cfli.hh:108:15: warning: comparison is always true due to limited range of data type [-Wtype-limits] else if (ul <= (uint64_t) INT64_MAX) { ^ -../ppl_prolog_Double_Box.cc: In function 'Prolog_foreign_return_type ppl_new_Double_Box_from_space_dimension(Prolog_term_ref, Prolog_term_ref, Prolog_term_ref)': -../ppl_prolog_Double_Box.cc:57:5: warning: this 'else' clause does not guard... [-Wmisleading-indentation] - else - ^~~~ -../ppl_prolog_Double_Box.cc:62:7: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else' - Prolog_term_ref tmp = Prolog_new_term_ref(); - ^~~~~~~~~~~~~~~ In file included from /usr/include/c++/8/cassert:44, from ./swi_cfli.hh:32, from ./swi_efli.hh:31, from ./ppl_prolog_sysdep.hh:24, from ../ppl_prolog_common_defs.hh:29, - from ../ppl_prolog_BD_Shape_double.hh:24, - from ../ppl_prolog_BD_Shape_double.cc:24: + from ../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.hh:24, + from ../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.cc:24: ./swi_cfli.hh: In function 'int Prolog_put_big_ulong(Prolog_term_ref, long unsigned int)': ./swi_cfli.hh:85:30: warning: comparison is always false due to limited range of data type [-Wtype-limits] assert(ul > LONG_MAX && ul > (uint64_t) INT64_MAX); @@ -4580,59 +4606,19 @@ In file included from ./swi_efli.hh:31, from ./ppl_prolog_sysdep.hh:24, from ../ppl_prolog_common_defs.hh:29, - from ../ppl_prolog_BD_Shape_double.hh:24, - from ../ppl_prolog_BD_Shape_double.cc:24: + from ../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.hh:24, + from ../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.cc:24: ./swi_cfli.hh: In function 'int Prolog_put_ulong(Prolog_term_ref, long unsigned int)': ./swi_cfli.hh:108:15: warning: comparison is always true due to limited range of data type [-Wtype-limits] else if (ul <= (uint64_t) INT64_MAX) { ^ -../ppl_prolog_BD_Shape_double.cc: In function 'Prolog_foreign_return_type ppl_new_BD_Shape_double_from_space_dimension(Prolog_term_ref, Prolog_term_ref, Prolog_term_ref)': -../ppl_prolog_BD_Shape_double.cc:57:5: warning: this 'else' clause does not guard... [-Wmisleading-indentation] - else - ^~~~ -../ppl_prolog_BD_Shape_double.cc:62:7: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else' - Prolog_term_ref tmp = Prolog_new_term_ref(); - ^~~~~~~~~~~~~~~ -/bin/bash ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_prolog_Octagonal_Shape_double.lo `test -f '../ppl_prolog_Octagonal_Shape_double.cc' || echo './'`../ppl_prolog_Octagonal_Shape_double.cc -libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Octagonal_Shape_double.cc -fPIC -DPIC -o .libs/ppl_prolog_Octagonal_Shape_double.o -In file included from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_Octagonal_Shape_double.hh:24, - from ../ppl_prolog_Octagonal_Shape_double.cc:24: -../../../src/ppl.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -../../../src/ppl.hh:23961:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from ../../../src/ppl.hh:754, - from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_Octagonal_Shape_double.hh:24, - from ../ppl_prolog_Octagonal_Shape_double.cc:24: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ -In file included from ../ppl_prolog_common_defs.hh:28, - from ../ppl_prolog_Octagonal_Shape_double.hh:24, - from ../ppl_prolog_Octagonal_Shape_double.cc:24: -../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': -../../../src/ppl.hh:42067:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../../src/ppl.hh:42068:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -../../../src/ppl.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': -../../../src/ppl.hh:42075:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../../src/ppl.hh:42076:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ In file included from /usr/include/c++/8/cassert:44, from ./swi_cfli.hh:32, from ./swi_efli.hh:31, from ./ppl_prolog_sysdep.hh:24, from ../ppl_prolog_common_defs.hh:29, - from ../ppl_prolog_Octagonal_Shape_double.hh:24, - from ../ppl_prolog_Octagonal_Shape_double.cc:24: + from ../ppl_prolog_BD_Shape_double.hh:24, + from ../ppl_prolog_BD_Shape_double.cc:24: ./swi_cfli.hh: In function 'int Prolog_put_big_ulong(Prolog_term_ref, long unsigned int)': ./swi_cfli.hh:85:30: warning: comparison is always false due to limited range of data type [-Wtype-limits] assert(ul > LONG_MAX && ul > (uint64_t) INT64_MAX); @@ -4640,21 +4626,39 @@ In file included from ./swi_efli.hh:31, from ./ppl_prolog_sysdep.hh:24, from ../ppl_prolog_common_defs.hh:29, - from ../ppl_prolog_Octagonal_Shape_double.hh:24, - from ../ppl_prolog_Octagonal_Shape_double.cc:24: + from ../ppl_prolog_BD_Shape_double.hh:24, + from ../ppl_prolog_BD_Shape_double.cc:24: ./swi_cfli.hh: In function 'int Prolog_put_ulong(Prolog_term_ref, long unsigned int)': ./swi_cfli.hh:108:15: warning: comparison is always true due to limited range of data type [-Wtype-limits] else if (ul <= (uint64_t) INT64_MAX) { ^ -../ppl_prolog_Octagonal_Shape_double.cc: In function 'Prolog_foreign_return_type ppl_new_Octagonal_Shape_double_from_space_dimension(Prolog_term_ref, Prolog_term_ref, Prolog_term_ref)': -../ppl_prolog_Octagonal_Shape_double.cc:57:5: warning: this 'else' clause does not guard... [-Wmisleading-indentation] +../ppl_prolog_Octagonal_Shape_mpz_class.cc: In function 'Prolog_foreign_return_type ppl_new_Octagonal_Shape_mpz_class_from_space_dimension(Prolog_term_ref, Prolog_term_ref, Prolog_term_ref)': +../ppl_prolog_Octagonal_Shape_mpz_class.cc:57:5: warning: this 'else' clause does not guard... [-Wmisleading-indentation] else ^~~~ -../ppl_prolog_Octagonal_Shape_double.cc:62:7: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else' +../ppl_prolog_Octagonal_Shape_mpz_class.cc:62:7: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else' + Prolog_term_ref tmp = Prolog_new_term_ref(); + ^~~~~~~~~~~~~~~ +../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.cc: In function 'Prolog_foreign_return_type ppl_new_Pointset_Powerset_NNC_Polyhedron_from_space_dimension(Prolog_term_ref, Prolog_term_ref, Prolog_term_ref)': +../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.cc:57:5: warning: this 'else' clause does not guard... [-Wmisleading-indentation] + else + ^~~~ +../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.cc:62:7: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else' + Prolog_term_ref tmp = Prolog_new_term_ref(); + ^~~~~~~~~~~~~~~ +../ppl_prolog_BD_Shape_double.cc: In function 'Prolog_foreign_return_type ppl_new_BD_Shape_double_from_space_dimension(Prolog_term_ref, Prolog_term_ref, Prolog_term_ref)': +../ppl_prolog_BD_Shape_double.cc:57:5: warning: this 'else' clause does not guard... [-Wmisleading-indentation] + else + ^~~~ +../ppl_prolog_BD_Shape_double.cc:62:7: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else' Prolog_term_ref tmp = Prolog_new_term_ref(); ^~~~~~~~~~~~~~~ -/bin/bash ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_swiprolog.lo ppl_swiprolog.cc +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c swi_efli.cc -o swi_efli.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.cc -o ppl_prolog_Pointset_Powerset_NNC_Polyhedron.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_common.cc -o ppl_prolog_common.o >/dev/null 2>&1 +/bin/sh ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o ppl_swiprolog.lo ppl_swiprolog.cc libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_swiprolog.cc -fPIC -DPIC -o .libs/ppl_swiprolog.o +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Pointset_Powerset_C_Polyhedron.cc -o ppl_prolog_Pointset_Powerset_C_Polyhedron.o >/dev/null 2>&1 In file included from ../ppl_prolog_common_defs.hh:28, from ../ppl_prolog_domains.hh:24, from ppl_swiprolog.cc:24: @@ -4707,10 +4711,18 @@ else if (ul <= (uint64_t) INT64_MAX) { ^ libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ppl_swiprolog.cc -o ppl_swiprolog.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Grid.cc -o ppl_prolog_Grid.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.cc -o ppl_prolog_Constraints_Product_C_Polyhedron_Grid.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Polyhedron.cc -o ppl_prolog_Polyhedron.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_BD_Shape_mpz_class.cc -o ppl_prolog_BD_Shape_mpz_class.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Rational_Box.cc -o ppl_prolog_Rational_Box.o >/dev/null 2>&1 libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_BD_Shape_double.cc -o ppl_prolog_BD_Shape_double.o >/dev/null 2>&1 libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Double_Box.cc -o ppl_prolog_Double_Box.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Octagonal_Shape_mpz_class.cc -o ppl_prolog_Octagonal_Shape_mpz_class.o >/dev/null 2>&1 libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Octagonal_Shape_double.cc -o ppl_prolog_Octagonal_Shape_double.o >/dev/null 2>&1 -/bin/bash ../../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -module -avoid-version -Wl,-z,relro -o libppl_swiprolog.la -rpath /usr/lib/i386-linux-gnu/ppl swi_efli.lo ppl_swiprolog.lo ppl_prolog_common.lo ppl_prolog_Polyhedron.lo ppl_prolog_Grid.lo ppl_prolog_Rational_Box.lo ppl_prolog_BD_Shape_mpz_class.lo ppl_prolog_BD_Shape_mpq_class.lo ppl_prolog_Octagonal_Shape_mpz_class.lo ppl_prolog_Octagonal_Shape_mpq_class.lo ppl_prolog_Constraints_Product_C_Polyhedron_Grid.lo ppl_prolog_Pointset_Powerset_C_Polyhedron.lo ppl_prolog_Pointset_Powerset_NNC_Polyhedron.lo ppl_prolog_Double_Box.lo ppl_prolog_BD_Shape_double.lo ppl_prolog_Octagonal_Shape_double.lo ../../../src/libppl.la -lgmpxx -lgmp -L/usr/lib/swi-prolog/lib/i686-linux -L/usr/lib/swi-prolog/lib -lswipl +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_BD_Shape_mpq_class.cc -o ppl_prolog_BD_Shape_mpq_class.o >/dev/null 2>&1 +libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../interfaces -I../../../interfaces/Prolog -I/interfaces/Prolog -I../../../src -I/usr/lib/swi-prolog/include -I/usr/include/pl -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c ../ppl_prolog_Octagonal_Shape_mpq_class.cc -o ppl_prolog_Octagonal_Shape_mpq_class.o >/dev/null 2>&1 +/bin/sh ../../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -module -avoid-version -Wl,-z,relro -o libppl_swiprolog.la -rpath /usr/lib/i386-linux-gnu/ppl swi_efli.lo ppl_swiprolog.lo ppl_prolog_common.lo ppl_prolog_Polyhedron.lo ppl_prolog_Grid.lo ppl_prolog_Rational_Box.lo ppl_prolog_BD_Shape_mpz_class.lo ppl_prolog_BD_Shape_mpq_class.lo ppl_prolog_Octagonal_Shape_mpz_class.lo ppl_prolog_Octagonal_Shape_mpq_class.lo ppl_prolog_Constraints_Product_C_Polyhedron_Grid.lo ppl_prolog_Pointset_Powerset_C_Polyhedron.lo ppl_prolog_Pointset_Powerset_NNC_Polyhedron.lo ppl_prolog_Double_Box.lo ppl_prolog_BD_Shape_double.lo ppl_prolog_Octagonal_Shape_double.lo ../../../src/libppl.la -lgmpxx -lgmp -L/usr/lib/swi-prolog/lib/i686-linux -L/usr/lib/swi-prolog/lib -lswipl libtool: link: g++ -fPIC -DPIC -shared -nostdlib /usr/lib/gcc/i686-linux-gnu/8/../../../i386-linux-gnu/crti.o /usr/lib/gcc/i686-linux-gnu/8/crtbeginS.o .libs/swi_efli.o .libs/ppl_swiprolog.o .libs/ppl_prolog_common.o .libs/ppl_prolog_Polyhedron.o .libs/ppl_prolog_Grid.o .libs/ppl_prolog_Rational_Box.o .libs/ppl_prolog_BD_Shape_mpz_class.o .libs/ppl_prolog_BD_Shape_mpq_class.o .libs/ppl_prolog_Octagonal_Shape_mpz_class.o .libs/ppl_prolog_Octagonal_Shape_mpq_class.o .libs/ppl_prolog_Constraints_Product_C_Polyhedron_Grid.o .libs/ppl_prolog_Pointset_Powerset_C_Polyhedron.o .libs/ppl_prolog_Pointset_Powerset_NNC_Polyhedron.o .libs/ppl_prolog_Double_Box.o .libs/ppl_prolog_BD_Shape_double.o .libs/ppl_prolog_Octagonal_Shape_double.o -Wl,-rpath -Wl,/build/ppl-1.2/src/.libs ../../../src/.libs/libppl.so -lgmpxx -lgmp -L/usr/lib/swi-prolog/lib/i686-linux -L/usr/lib/swi-prolog/lib -lswipl -L/usr/lib/gcc/i686-linux-gnu/8 -L/usr/lib/gcc/i686-linux-gnu/8/../../../i386-linux-gnu -L/usr/lib/gcc/i686-linux-gnu/8/../../../../lib -L/lib/i386-linux-gnu -L/lib/../lib -L/usr/lib/i386-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/i686-linux-gnu/8/../../.. -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/i686-linux-gnu/8/crtendS.o /usr/lib/gcc/i686-linux-gnu/8/../../../i386-linux-gnu/crtn.o -g -O2 -g -O2 -fstack-protector-strong -g -Wl,-z -Wl,relro -Wl,-soname -Wl,libppl_swiprolog.so -o .libs/libppl_swiprolog.so libtool: link: ar cru .libs/libppl_swiprolog.a swi_efli.o ppl_swiprolog.o ppl_prolog_common.o ppl_prolog_Polyhedron.o ppl_prolog_Grid.o ppl_prolog_Rational_Box.o ppl_prolog_BD_Shape_mpz_class.o ppl_prolog_BD_Shape_mpq_class.o ppl_prolog_Octagonal_Shape_mpz_class.o ppl_prolog_Octagonal_Shape_mpq_class.o ppl_prolog_Constraints_Product_C_Polyhedron_Grid.o ppl_prolog_Pointset_Powerset_C_Polyhedron.o ppl_prolog_Pointset_Powerset_NNC_Polyhedron.o ppl_prolog_Double_Box.o ppl_prolog_BD_Shape_double.o ppl_prolog_Octagonal_Shape_double.o ar: `u' modifier ignored since `D' is the default (see `U') @@ -4779,7 +4791,7 @@ /usr/include/c++/8/bits/unique_ptr.h:53:28: note: declared here template class auto_ptr; ^~~~~~~~ -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o ppl_pips ppl_pips.o ../../src/libppl.la ../../utils/libppl_utils.a -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o ppl_pips ppl_pips.o ../../src/libppl.la ../../utils/libppl_utils.a -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/ppl_pips ppl_pips.o ../../src/.libs/libppl.so ../../utils/libppl_utils.a -lgmpxx -lgmp make[6]: Leaving directory '/build/ppl-1.2/demos/ppl_pips' make[5]: Leaving directory '/build/ppl-1.2/demos/ppl_pips' @@ -4798,11 +4810,11 @@ make[3]: Leaving directory '/build/ppl-1.2' make[2]: Leaving directory '/build/ppl-1.2' save_size=10000 dh_auto_build --builddirectory=doc -- user-configured - cd doc && make -j10 user-configured + cd doc && make -j18 user-configured make[2]: Entering directory '/build/ppl-1.2/doc' rm -rf ppl-user-1.2-html -TEXINPUTS=/build/ppl-1.2/doc: texmf_casefold_search=0 doxygen user.doxyconf-html rm -rf user-configured-c-interface.latex-dir +TEXINPUTS=/build/ppl-1.2/doc: texmf_casefold_search=0 doxygen user.doxyconf-html rm -rf user-configured-prolog-interface.latex-dir /bin/sed -e 's//PPL_DOXYGEN_CONFIGURED_MANUAL/' -e 's//Configured C/' -e 's//configured-c-interface/' -e 's///' \ ./user-language-interface.tex \ @@ -5187,7 +5199,12 @@ Underfull \hbox (badness 10000) in paragraph at lines 544--545 -[23]) (./configured_domains_predicates.tex [24] +[23]) (./configured_domains_predicates.tex [24]TEXINPUTS=/build/ppl-1.2/doc: texmf_casefold_search=0 make -C user-configured-c-interface.latex-dir refman.pdf \ + && mv -f user-configured-c-interface.latex-dir/refman.pdf ppl-user-configured-c-interface-1.2.pdf +make[3]: Entering directory '/build/ppl-1.2/doc' +make[3]: warning: jobserver unavailable: using -j1. Add '+' to parent make rule. +rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl refman.pdf + Overfull \hbox (6.19531pt too wide) in paragraph at lines 34--36 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]C[][][][]Polyhedron[][][]from[][][]space[ ][][]dimension(+[]Dimension[][][][]Type, +[]Universe[][][]or[] @@ -5198,7 +5215,10 @@ Underfull \hbox (badness 10000) in paragraph at lines 71--72 -[25] +[25pdflatex refman +]This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2019/dev/Debian) (preloaded format=pdflatex) + restricted \write18 enabled. + Overfull \hbox (11.00215pt too wide) in paragraph at lines 104--106 \OT1/ptm/m/it/10 Builds a new N[]NC poly-he-dron \OT1/pcr/m/sl/10 P[][][]1 \OT1 /ptm/m/it/10 from the bd[][][]shape[][][]mpz[][][]class ref-er-enced by han-dle @@ -5224,7 +5244,12 @@ Overfull \hbox (9.79532pt too wide) in paragraph at lines 122--124 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]N[]N[]C[][][][]Polyhedron[][][]from[][][] []Octagonal[][][][]Shape[][][]mpq[][][]class(+[]Handle[][][]1, -[]Handle[] -[26] +[26]entering extended mode +(./refman.tex +LaTeX2e <2018-12-01> +(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls +Document Class: article 2018/09/03 v1.4i Standard LaTeX document class +(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo) Overfull \hbox (15.07239pt too wide) in paragraph at lines 137--139 \OT1/ptm/m/it/10 Builds a new C poly-he-dron \OT1/pcr/m/sl/10 P[][][]1 \OT1/ptm /m/it/10 from the octagonal[][][]shape[][][]double ref-er-enced by han-dle \OT1 @@ -5270,7 +5295,20 @@ Overfull \hbox (1.39532pt too wide) in paragraph at lines 167--169 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]C[][][][]Polyhedron[][][]from[][][][]B[]D [][][][]Shape[][][]mpz[][][]class[][][]with[][][]complexity(+[]Handle, +[] -[27] +[27) +(/usr/share/texlive/texmf-dist/tex/latex/a4wide/a4wide.sty +(/usr/share/texlive/texmf-dist/tex/latex/ntgclass/a4.sty)) +(/usr/share/texlive/texmf-dist/tex/latex/base/makeidx.sty)] +(/usr/share/texlive/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty) +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty +(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty) +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty +(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty) +(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg) +(/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def))) +(/usr/share/texlive/texmf-dist/tex/latex/tools/multicol.sty) +(/usr/share/texlive/texmf-dist/tex/latex/float/float.sty) +(/usr/share/texlive/texmf-dist/tex/latex/base/textcomp.sty Overfull \hbox (13.39532pt too wide) in paragraph at lines 170--172 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]N[]N[]C[][][][]Polyhedron[][][]from[][][] []B[]D[][][][]Shape[][][]mpz[][][]class[][][]with[][][]complexity(+[]Handle, +[ @@ -5321,11 +5359,21 @@ Overfull \hbox (6.81381pt too wide) in paragraph at lines 203--205 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]C[][][][]Polyhedron[][][]from[][][][]Octa gonal[][][][]Shape[][][]double[][][]with[][][]complexity(+[]Handle, -[28] +[28 +(/usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.def +(/usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.dfu)])) +(/usr/share/texlive/texmf-dist/tex/latex/base/alltt.sty) +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/times.sty) +(/usr/share/texlive/texmf-dist/tex/latex/tocloft/tocloft.sty Overfull \hbox (18.81381pt too wide) in paragraph at lines 206--208 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]N[]N[]C[][][][]Polyhedron[][][]from[][][] []Octagonal[][][][]Shape[][][]double[][][]with[][][]complexity(+[]Handle, -[29] +[29) +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty) +(/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty] +(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg) +(/usr/share/texlive/texmf-dist/tex/latex/colortbl/colortbl.sty +(/usr/share/texlive/texmf-dist/tex/latex/tools/array.sty)) Overfull \hbox (15.79529pt too wide) in paragraph at lines 274--276 []\OT1/pcr/m/n/10 ppl[][][][]Polyhedron[][][]relation[][][]with[][][]constraint (+[]Handle, +[]Constraint, ?Relation[] @@ -5366,11 +5414,15 @@ Overfull \hbox (10.9953pt too wide) in paragraph at lines 311--313 []\OT1/pcr/m/n/10 ppl[][][][]Polyhedron[][][]maximize[][][]with[][][]point(+[]H andle, +[]Lin[][][][]Expr, ?Coeff[][][]1, ?Coeff[] -[30] +[30]) +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty Overfull \hbox (10.9953pt too wide) in paragraph at lines 316--318 []\OT1/pcr/m/n/10 ppl[][][][]Polyhedron[][][]minimize[][][]with[][][]point(+[]H andle, +[]Lin[][][][]Expr, ?Coeff[][][]1, ?Coeff[] -[31] +[31])) +(/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty) Overfull \hbox (2.92062pt too wide) in paragraph at lines 386--388 \OT1/ptm/m/it/10 Transforms the poly-he-dron ref-er-enced by \OT1/pcr/m/sl/10 H andle \OT1/ptm/m/it/10 sub-sti-tut-ing the affine ex-pres-sion for \OT1/pcr/m/s @@ -5395,7 +5447,10 @@ Overfull \hbox (6.19531pt too wide) in paragraph at lines 401--403 []\OT1/pcr/m/n/10 ppl[][][][]Polyhedron[][][]generalized[][][]affine[][][]image [][][]lhs[][][]rhs(+[]Handle, +[]Lin[][][][]Expr[][][]1, +[] -[32] +[32 +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/auxhook.sty) +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty]) +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def) Overfull \hbox (0.19531pt too wide) in paragraph at lines 404--406 []\OT1/pcr/m/n/10 ppl[][][][]Polyhedron[][][]generalized[][][]affine[][][]preim age[][][]lhs[][][]rhs(+[]Handle, +[]Lin[][][][]Expr[][][] @@ -5412,6 +5467,8 @@ []\OT1/pcr/m/n/10 ppl[][][][]Polyhedron[][][]linear[][][]partition(+[]Handle[][ ][]1, +[]Handle[][][]2, -[]Handle[][][]3, -[]Handle[] [33] +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/hyperref.cfg) +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/puenc.def Overfull \hbox (18.19531pt too wide) in paragraph at lines 448--450 []\OT1/pcr/m/n/10 ppl[][][][]Polyhedron[][][][]B[]H[]R[]Z03[][][]widening[][][] assign[][][]with[][][]tokens(+[]Handle[][][]1, +[]Handle[][][]2, +[] @@ -5478,7 +5535,10 @@ Underfull \hbox (badness 10000) in paragraph at lines 561--562 -[36] +[36]) +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/backref.sty +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty)) +(/usr/share/texlive/texmf-dist/tex/latex/url/url.sty) Overfull \hbox (2.5953pt too wide) in paragraph at lines 600--602 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]C[][][][]Polyhedron [][][]with[][][]complexity(+[]Handle, +[]Complexity, -[] @@ -5494,7 +5554,11 @@ Overfull \hbox (12.81381pt too wide) in paragraph at lines 612--614 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[] [][]mpz[][][]class[][][]with[][][]complexity(+[]Handle, +[]Complexity, -[37] +[37]) +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def) +(/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty) (./doxygen.sty +(/usr/share/texlive/texmf-dist/tex/latex/tools/calc.sty) +(/usr/share/texlive/texmf-dist/tex/latex/base/ifthen.sty) Overfull \hbox (12.81381pt too wide) in paragraph at lines 615--617 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[] [][]mpq[][][]class[][][]with[][][]complexity(+[]Handle, +[]Complexity, @@ -5518,7 +5582,13 @@ Overfull \hbox (39.2138pt too wide) in paragraph at lines 630--632 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]Octagonal[][][][]Sh ape[][][]double[][][]with[][][]complexity(+[]Handle, +[]Complexity, -[38] +[38 +(/usr/share/texlive/texmf-dist/tex/latex/tools/verbatim.sty) +(/usr/share/texlive/texmf-dist/tex/latex/tools/longtable.sty) +(/usr/share/texlive/texmf-dist/tex/latex/tabu/tabu.sty] +(/usr/share/texlive/texmf-dist/tex/latex/varwidth/varwidth.sty)) +(/usr/share/texlive/texmf-dist/tex/latex/tools/tabularx.sty) +(/usr/share/texlive/texmf-dist/tex/latex/multirow/multirow.sty) Overfull \hbox (7.44052pt too wide) in paragraph at lines 692--694 \OT1/ptm/m/it/10 Unifies \OT1/pcr/m/sl/10 Dimension[][][][]Type \OT1/ptm/m/it/1 0 with the di-men-sion of the vec-tor space en-clos-ing the grid ref-er-enced b @@ -5545,7 +5615,14 @@ Overfull \hbox (22.9953pt too wide) in paragraph at lines 707--709 []\OT1/pcr/m/n/10 ppl[][][][]Grid[][][]relation[][][]with[][][]grid[][][]genera tor(+[]Handle, +[]Grid[][][][]Generator, ?Relation[] -[39] +[39]) +(/build/ppl-1.2/doc/ppl.sty +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty +For additional information on amsmath, use the `?' option. +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty)) +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty) +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty) Overfull \hbox (41.6138pt too wide) in paragraph at lines 738--740 []\OT1/pcr/m/n/10 ppl[][][][]Grid[][][]maximize[][][]with[][][]point(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[][][]1, ?Coeff[][][]2, ?Boolean, @@ -5553,7 +5630,9 @@ Overfull \hbox (41.6138pt too wide) in paragraph at lines 743--745 []\OT1/pcr/m/n/10 ppl[][][][]Grid[][][]minimize[][][]with[][][]point(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[][][]1, ?Coeff[][][]2, ?Boolean, -[40] +[40]) +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty) Overfull \hbox (7.24037pt too wide) in paragraph at lines 785--787 \OT1/ptm/m/it/10 Updates the grid ref-er-enced by \OT1/pcr/m/sl/10 Handle \OT1/ ptm/m/it/10 to one ob-tained by re-fin-ing its con-straint sys-tem with \OT1/pc @@ -5575,7 +5654,17 @@ Overfull \hbox (16.9953pt too wide) in paragraph at lines 822--824 []\OT1/pcr/m/n/10 ppl[][][][]Grid[][][]generalized[][][]affine[][][]image(+[]Ha ndle, +[]P[]P[]L[][][][]Var, +[]Relation[][][][]Symbol, +[] -[41] +[41) +(/usr/share/texlive/texmf-dist/tex/latex/stmaryrd/stmaryrd.sty])) +Writing index file refman.idx +No file refman.aux. +(/usr/share/texlive/texmf-dist/tex/latex/base/ts1cmr.fd) +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/ot1ptm.fd) +(/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty) +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg)) Overfull \hbox (14.0138pt too wide) in paragraph at lines 825--827 []\OT1/pcr/m/n/10 ppl[][][][]Grid[][][]generalized[][][]affine[][][]preimage(+[ ]Handle, +[]P[]P[]L[][][][]Var, +[]Relation[][][][]Symbol, @@ -5607,7 +5696,14 @@ Overfull \hbox (8.0138pt too wide) in paragraph at lines 846--848 []\OT1/pcr/m/n/10 ppl[][][][]Grid[][][]wrap[][][]assign(+[]Handle, +[]List[][][ ]of[][][][]P[]P[]L[][][][]Var, +[]Width, +[]Representation, -[42] +[42 +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/gettitlestring.sty)]) +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/ot1phv.fd) +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd) +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd) +(/usr/share/texlive/texmf-dist/tex/latex/stmaryrd/Ustmry.fd) +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/ts1ptm.fd) Overfull \hbox (6.19531pt too wide) in paragraph at lines 875--877 []\OT1/pcr/m/n/10 ppl[][][][]Grid[][][]congruence[][][]widening[][][]assign[][] []with[][][]tokens(+[]Handle[][][]1, +[]Handle[][][]2, +[] @@ -5635,13 +5731,16 @@ Overfull \hbox (8.5953pt too wide) in paragraph at lines 902--904 []\OT1/pcr/m/n/10 ppl[][][][]Grid[][][]limited[][][]generator[][][]extrapolatio n[][][]assign(+[]Handle[][][]1, +[]Handle[][][]2, +[] -[43] +[43] [1{/var/lib/texmf/fo +nts/map/pdftex/updmap/pdftex.map} Overfull \hbox (0.99101pt too wide) in paragraph at lines 911--913 \OT1/ptm/m/it/10 Assigns to the grid \OT1/pcr/m/sl/10 P \OT1/ptm/m/it/10 ref-er -enced by \OT1/pcr/m/sl/10 Handle[][][]1 \OT1/ptm/m/it/10 the con-cate-na-tion of \OT1/pcr/m/sl/10 P \OT1/ptm/m/it/10 and the grid ref-er-enced by \OT1/pcr/m/ sl/10 Handle[] -[44] +[44 ] [2]] +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/ot1pcr.fd) [3 ] [4] [1] [2] (./index.tex Overfull \hbox (6.19531pt too wide) in paragraph at lines 955--957 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Rational[][][][]Box[][][]from[][][]space[ ][][]dimension(+[]Dimension[][][][]Type, +[]Universe[][][]or[] @@ -5653,6 +5752,20 @@ []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Rational[][][][]Box[][][]from[][][][]Octa gonal[][][][]Shape[][][]mpz[][][]class(+[]Handle[][][]1, -[]Handle[][][] [45] +Underfull \hbox (badness 10000) detected at line 9 +[][][] +pdfTeX warning (ext4): destination with the same identifier (name{page.1}) has +been already used, duplicate ignored + + \relax +l.25 + [1]) (./GPL.texpdfTeX warning (ext4): destination with the same identifie +r (name{page.2}) has been already used, duplicate ignored + + \relax +l.37 ` + `Copyright'' also means copyright-\/like laws that apply to other kind... +[2 Overfull \hbox (1.39532pt too wide) in paragraph at lines 1003--1005 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Rational[][][][]Box[][][]from[][][][]Octa gonal[][][][]Shape[][][]mpq[][][]class(+[]Handle[][][]1, -[]Handle[][][] @@ -5693,7 +5806,17 @@ Overfull \hbox (22.41382pt too wide) in paragraph at lines 1036--1038 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Rational[][][][]Box[][][]from[][][][]Octa gonal[][][][]Shape[][][]mpq[][][]class[][][]with[][][]complexity(+[]Handle, -[46] +[46]]pdfTeX warning (ext4): destination with the same identifier (name{page.3}) h +as been already used, duplicate ignored + + \relax +l.68 + [3]pdfTeX warning (ext4): destination with the same identifier (name{page +.4}) has been already used, duplicate ignored + + \relax +l.104 + [4] [5 Overfull \hbox (15.2138pt too wide) in paragraph at lines 1039--1041 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Rational[][][][]Box[][][]from[][][][]Doub le[][][][]Box[][][]with[][][]complexity(+[]Handle, +[]Complexity, @@ -5705,7 +5828,7 @@ Overfull \hbox (6.81381pt too wide) in paragraph at lines 1045--1047 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Rational[][][][]Box[][][]from[][][][]Octa gonal[][][][]Shape[][][]double[][][]with[][][]complexity(+[]Handle, -[47] +[47]] [6] [7] Overfull \hbox (25.3953pt too wide) in paragraph at lines 1113--1115 []\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][]relation[][][]with[][][]c onstraint(+[]Handle, +[]Constraint, ?Relation[] @@ -5737,7 +5860,7 @@ Overfull \hbox (26.0138pt too wide) in paragraph at lines 1144--1146 []\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][]maximize(+[]Handle, +[]Li n[][][][]Expr, ?Coeff[][][]1, ?Coeff[][][]2, ?Boolean) -[48] +[48 [8]] Overfull \hbox (26.0138pt too wide) in paragraph at lines 1149--1151 []\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][]minimize(+[]Handle, +[]Li n[][][][]Expr, ?Coeff[][][]1, ?Coeff[][][]2, ?Boolean) @@ -5749,7 +5872,11 @@ Overfull \hbox (20.5953pt too wide) in paragraph at lines 1159--1161 []\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][]minimize[][][]with[][][]p oint(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[][][]1, ?Coeff[] -[49] +[49] [9]) +Overfull \hbox (10.35326pt too wide) in paragraph at lines 291--187 +\OT1/ptm/m/n/10 stead of this Li-cense. But first, please read [][]\OT1/pcr/m/n +/10 http[]://www.[]gnu.[]org/philosophy/why-not-lgpl.[] +(./GFDL.tex Overfull \hbox (3.2138pt too wide) in paragraph at lines 1217--1219 []\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][]unconstrain[][][]space[][ ][]dimensions(+[]Handle, +[]List[][][]of[][][][]P[]P[]L[][][][]Var) @@ -5774,7 +5901,7 @@ Overfull \hbox (22.9953pt too wide) in paragraph at lines 1235--1237 []\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][]generalized[][][]affine[] [][]preimage(+[]Handle, +[]P[]P[]L[][][][]Var, +[]Relation[] -[50] +[50 [10]] [11] [12] Overfull \hbox (15.79532pt too wide) in paragraph at lines 1238--1240 []\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][]generalized[][][]affine[] [][]image[][][]lhs[][][]rhs(+[]Handle, +[]Lin[][][][]Expr[][][]1, +[] @@ -5794,7 +5921,13 @@ Overfull \hbox (26.5953pt too wide) in paragraph at lines 1269--1271 []\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][]linear[][][]partition(+[] Handle[][][]1, +[]Handle[][][]2, -[]Handle[][][]3, -[]Handle[] -[51] +[51 [13]] +Overfull \hbox (7.49895pt too wide) in paragraph at lines 97--98 +\OT1/ptm/m/n/10 ments, form-ing one sec-tion En-ti-tled "[]History"; like-wise +com-bine any sec-tions En-ti-tled "[]Acknowledgements", + +Underfull \vbox (badness 1377) has occurred while \output is active [14]) +(./modules.tex Overfull \hbox (15.79532pt too wide) in paragraph at lines 1276--1278 []\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][][]C[]C76[][][]widening[][ ][]assign[][][]with[][][]tokens(+[]Handle[][][]1, +[]Handle[][][]2, +[] @@ -5810,7 +5943,47 @@ Overfull \hbox (0.19531pt too wide) in paragraph at lines 1291--1293 []\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][]limited[][][][]C[]C76[][] []extrapolation[][][]assign(+[]Handle[][][]1, +[]Handle[][][] -[52] +[52 + +LaTeX Warning: Reference `group__PPL__C__interface' on page 15 undefined on inp +ut line 3. + + +LaTeX Warning: Reference `group__Init' on page 15 undefined on input line 4. + + +LaTeX Warning: Reference `group__Version' on page 15 undefined on input line 5. + + + +LaTeX Warning: Reference `group__Error' on page 15 undefined on input line 6. + + +LaTeX Warning: Reference `group__Timeout' on page 15 undefined on input line 7. + + + +LaTeX Warning: Reference `group__Datatypes' on page 15 undefined on input line +8. + +) (./annotated.tex] + +LaTeX Warning: Reference `interfaceppl__Artificial__Parameter__Sequence__const_ +_iterator__tag' on page 15 undefined on input line 3. + + +LaTeX Warning: Reference `interfaceppl__Artificial__Parameter__tag' on page 15 +undefined on input line 4. + + +LaTeX Warning: Reference `interfaceppl__BD__Shape__double__tag' on page 15 unde +fined on input line 5. + + +LaTeX Warning: Reference `interfaceppl__BD__Shape__mpq__class__tag' on page 15 +undefined on input line 6. + +[15] Overfull \hbox (9.2138pt too wide) in paragraph at lines 1310--1312 []\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][]add[][][]space[][][]dimen sions[][][]and[][][]embed(+[]Handle, +[]Dimension[][][][]Type) @@ -5843,6 +6016,83 @@ []\OT1/pcr/m/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] []from[][][]congruences(+[]Congruence[][][][]System, -[]Handle) [53] + +LaTeX Warning: Reference `interfaceppl__BD__Shape__mpz__class__tag' on page 16 +undefined on input line 7. + + +LaTeX Warning: Reference `interfaceppl__Coefficient__tag' on page 16 undefined +on input line 8. + + +LaTeX Warning: Reference `interfaceppl__Congruence__System__const__iterator__ta +g' on page 16 undefined on input line 9. + + +LaTeX Warning: Reference `interfaceppl__Congruence__System__tag' on page 16 und +efined on input line 10. + + +LaTeX Warning: Reference `interfaceppl__Congruence__tag' on page 16 undefined o +n input line 11. + + +LaTeX Warning: Reference `interfaceppl__Constraint__System__const__iterator__ta +g' on page 16 undefined on input line 12. + + +LaTeX Warning: Reference `interfaceppl__Constraint__System__tag' on page 16 und +efined on input line 13. + + +LaTeX Warning: Reference `interfaceppl__Constraint__tag' on page 16 undefined o +n input line 14. + + +LaTeX Warning: Reference `interfaceppl__Constraints__Product__C__Polyhedron__Gr +id__tag' on page 16 undefined on input line 15. + + +LaTeX Warning: Reference `interfaceppl__Double__Box__tag' on page 16 undefined +on input line 16. + + +LaTeX Warning: Reference `interfaceppl__Generator__System__const__iterator__tag +' on page 16 undefined on input line 17. + + +LaTeX Warning: Reference `interfaceppl__Generator__System__tag' on page 16 unde +fined on input line 18. + + +LaTeX Warning: Reference `interfaceppl__Generator__tag' on page 16 undefined on + input line 19. + + +LaTeX Warning: Reference `interfaceppl__Grid__Generator__System__const__iterato +r__tag' on page 16 undefined on input line 20. + + +LaTeX Warning: Reference `interfaceppl__Grid__Generator__System__tag' on page 1 +6 undefined on input line 21. + + +LaTeX Warning: Reference `interfaceppl__Grid__Generator__tag' on page 16 undefi +ned on input line 22. + + +LaTeX Warning: Reference `interfaceppl__Grid__tag' on page 16 undefined on inpu +t line 23. + + +LaTeX Warning: Reference `interfaceppl__Linear__Expression__tag' on page 16 und +efined on input line 24. + + +LaTeX Warning: Reference `interfaceppl__MIP__Problem__tag' on page 16 undefined + on input line 25. + +[16] Underfull \hbox (badness 10000) in paragraph at lines 1368--1369 @@ -5870,6 +6120,71 @@ []\OT1/pcr/m/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] []from[][][][]Octagonal[][][][]Shape[][][]double(+[]Handle[][][]1, -[]Handle[] [54] + +LaTeX Warning: Reference `interfaceppl__Octagonal__Shape__double__tag' on page +17 undefined on input line 26. + + +LaTeX Warning: Reference `interfaceppl__Octagonal__Shape__mpq__class__tag' on p +age 17 undefined on input line 27. + + +LaTeX Warning: Reference `interfaceppl__Octagonal__Shape__mpz__class__tag' on p +age 17 undefined on input line 28. + + +LaTeX Warning: Reference `interfaceppl__PIP__Decision__Node__tag' on page 17 un +defined on input line 29. + + +LaTeX Warning: Reference `interfaceppl__PIP__Problem__tag' on page 17 undefined + on input line 30. + + +LaTeX Warning: Reference `interfaceppl__PIP__Solution__Node__tag' on page 17 un +defined on input line 31. + + +LaTeX Warning: Reference `interfaceppl__PIP__Tree__Node__tag' on page 17 undefi +ned on input line 32. + + +LaTeX Warning: Reference `interfaceppl__Pointset__Powerset__C__Polyhedron__cons +t__iterator__tag' on page 17 undefined on input line 33. + + +LaTeX Warning: Reference `interfaceppl__Pointset__Powerset__C__Polyhedron__iter +ator__tag' on page 17 undefined on input line 34. + + +Overfull \hbox (20.64815pt too wide) in paragraph at lines 34--34 + \OT1/ptm/b/n/10 Types and func-tions for it-er-at-ing on the dis-juncts of a [ +][]ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedron[] + +LaTeX Warning: Reference `interfaceppl__Pointset__Powerset__C__Polyhedron__tag' + on page 17 undefined on input line 35. + + +LaTeX Warning: Reference `interfaceppl__Pointset__Powerset__NNC__Polyhedron__co +nst__iterator__tag' on page 17 undefined on input line 36. + + +LaTeX Warning: Reference `interfaceppl__Pointset__Powerset__NNC__Polyhedron__it +erator__tag' on page 17 undefined on input line 37. + + +LaTeX Warning: Reference `interfaceppl__Pointset__Powerset__NNC__Polyhedron__ta +g' on page 17 undefined on input line 38. + + +LaTeX Warning: Reference `interfaceppl__Polyhedron__tag' on page 17 undefined o +n input line 39. + + +LaTeX Warning: Reference `interfaceppl__Rational__Box__tag' on page 17 undefine +d on input line 40. + +) Overfull \hbox (1.39532pt too wide) in paragraph at lines 1407--1409 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] []from[][][][]C[][][][]Polyhedron[][][]with[][][]complexity(+[]Handle, +[] @@ -5920,7 +6235,9 @@ Overfull \hbox (4.99533pt too wide) in paragraph at lines 1437--1439 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] []from[][][][]Octagonal[][][][]Shape[][][]double[][][]with[][][]complexity(+[] -[55] +[55 (./group__PPL__C__interface.tex) +Underfull \vbox (badness 7740) has occurred while \output is active [17]] +[18] (./group__Init.tex Overfull \hbox (4.99533pt too wide) in paragraph at lines 1480--1482 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]strictl y[][][]contains[][][][]B[]D[][][][]Shape[][][]mpz[][][]class(+[]Handle[][][]1, @@ -5949,6 +6266,12 @@ with the list of re-la-tions the bd shape ref-er-enced by \OT1/pcr/m/sl/10 Han dle \OT1/ptm/m/it/10 has with \OT1/pcr/m/sl/10 Generator\OT1/ptm/m/it/10 . [56] +Underfull \hbox (badness 10000) detected at line 35 +[][][] + +Underfull \hbox (badness 10000) detected at line 48 +[][][] +[19]) [20] (./group__Version.tex Overfull \hbox (56.5953pt too wide) in paragraph at lines 1511--1513 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]relatio n[][][]with[][][]congruence(+[]Handle, +[]Congruence, ?Relation[] @@ -5981,7 +6304,14 @@ Overfull \hbox (0.81381pt too wide) in paragraph at lines 1541--1543 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]minimiz e[][][]with[][][]point(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[][][]1, -[57] +[57]/build/ppl-1.2/src/ppl.hh:44030: warning: no matching class member found for + Parma_Polyhedra_Library::Constraint_System_const_iterator::Constraint_System_const_iterator(const Parma_Polyhedra_Library::Linear_System< Parma_Polyhedra_Library::Constraint >::const_iterator &iter, const Constraint_System &cs) +Possible candidates: + Parma_Polyhedra_Library::Constraint_System_const_iterator::Constraint_System_const_iterator() + Parma_Polyhedra_Library::Constraint_System_const_iterator::Constraint_System_const_iterator(const Constraint_System_const_iterator &y) + Parma_Polyhedra_Library::Constraint_System_const_iterator::Constraint_System_const_iterator(const Linear_System< Constraint > ::const_iterator &iter, const Constraint_System &cs) + + Overfull \hbox (25.80045pt too wide) in paragraph at lines 1577--1579 \OT1/ptm/m/it/10 Updates the bd shape ref-er-enced by \OT1/pcr/m/sl/10 Handle \ OT1/ptm/m/it/10 to one ob-tained by re-fin-ing its con-straint sys-tem with \OT @@ -6002,7 +6332,8 @@ Overfull \hbox (9.2138pt too wide) in paragraph at lines 1602--1604 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]affine[ ][][]image(+[]Handle, +[]P[]P[]L[][][][]Var, +[]Lin[][][][]Expr, +[]Coeff) -[58] +[58] [21]) [22] (./group__Error.tex +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/omsptm.fd) Overfull \hbox (0.19531pt too wide) in paragraph at lines 1605--1607 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]affine[ ][][]preimage(+[]Handle, +[]P[]P[]L[][][][]Var, +[]Lin[][][][]Expr, +[] @@ -6278,7 +6609,23 @@ Overfull \hbox (9.2138pt too wide) in paragraph at lines 2002--2004 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]affine[ ][][]image(+[]Handle, +[]P[]P[]L[][][][]Var, +[]Lin[][][][]Expr, +[]Coeff) -[67] +[67 +Overfull \hbox (1.62299pt too wide) in paragraph at lines 6--20 +[][]\OT1/ptm/m/n/10 P[]P[]L[][][][]E[]R[]R[]O[]R[][][][]O[]U[]T[][][][]O[]F[][] +[][]M[]E[]M[]O[]RY[][], [][]P[]P[]L[][][][]E[]R[]R[]O[]R[][][][]I[]N[]V[]A[]L[] +I[]D[][][][]A[]R[]G[]U[]M[]E[]NT[][], [][]P[]P[]L[][][][]E[]R[]R[]O[]R[][][][]D +[]O[]M[] + +Overfull \hbox (1.35289pt too wide) in paragraph at lines 6--20 +[][]\OT1/ptm/m/n/10 P[]P[]L[][][][]A[]R[]I[]T[]H[]M[]E[]T[]I[]C[][][][]O[]V[]E[ +]R[]F[]L[]OW[][], [][]P[]P[]L[][][][]S[]T[]D[]I[]O[][][][]E[]R[]R[]OR[][], [][] +P[]P[]L[][][][]E[]R[]R[]O[]R[][][][]I[]N[]T[]E[]R[]N[]A[]L[][][][]E[]R[]R[]OR[] +[], [][]P[] + +Package longtable Warning: Column widths have changed +(longtable) in table 1 on input line 88. + +[23]]) [24] (./group__Timeout.tex Overfull \hbox (0.19531pt too wide) in paragraph at lines 2005--2007 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]affine[ ][][]preimage(+[]Handle, +[]P[]P[]L[][][][]Var, +[]Lin[][][][]Expr, +[] @@ -6311,6 +6658,23 @@ []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]wrap[][ ][]assign(+[]Handle, +[]List[][][]of[][][][]P[]P[]L[][][][]Var, +[]Width, +[] [68] + +Package longtable Warning: Column widths have changed +(longtable) in table 2 on input line 36. + + +Underfull \hbox (badness 10000) detected at line 47 +[][][] + +Overfull \hbox (4.67143pt too wide) in paragraph at lines 48--49 +[]\OT1/pcr/m/n/10 P[]P[]L[][][][]E[]R[]R[]O[]R[][][][]I[]N[]V[]A[]L[]I[]D[][][] +[]A[]R[]G[]U[]M[]E[]NT \OT1/ptm/bc/n/10 if \OT1/pcr/m/n/10 unscaled[][][]weight + \OT1/ptm/bc/n/10 is zero or if the com-puted weight thresh- + +Package longtable Warning: Column widths have changed +(longtable) in table 3 on input line 56. + +[25 Overfull \hbox (3.79532pt too wide) in paragraph at lines 2048--2050 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]simplif y[][][]using[][][]context[][][]assign(+[]Handle[][][]1, +[]Handle[] @@ -6336,6 +6700,12 @@ []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]limited [][][][]B[]H[]M[]Z05[][][]extrapolation[][][]assign[][][]with[][][]tokens(+[] [69] +Underfull \hbox (badness 10000) detected at line 59 +[][][] + +Underfull \hbox (badness 10000) detected at line 62 +[][][] +) [26]] (./group__Datatypes.tex Overfull \hbox (25.39532pt too wide) in paragraph at lines 2079--2081 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]limited [][][][]H79[][][]extrapolation[][][]assign[][][]with[][][]tokens(+[]Handle[] @@ -6395,6 +6765,16 @@ []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]mpz[][][]clas s[][][]from[][][]congruences(+[]Congruence[][][][]System, -[] [71] +Overfull \hbox (3.74069pt too wide) in paragraph at lines 43--45 +[][] \OT1/ptm/bc/n/10 type-def struct [][]ppl[][][][]Constraint[][][][]System[] +[][]const[][][]iterator[][][]tag[][] const $\OMS/cmsy/m/n/10 ^^C$ [][]\OT1/ptm/ +bc/n/10 ppl[][][]const[][][][]Constraint[][][][]System[][][]const[] + +Overfull \hbox (0.36111pt too wide) in paragraph at lines 61--63 +[][] \OT1/ptm/bc/n/10 type-def struct [][]ppl[][][][]Generator[][][][]System[][ +][]const[][][]iterator[][][]tag[][] const $\OMS/cmsy/m/n/10 ^^C$ [][]\OT1/ptm/b +c/n/10 ppl[][][]const[][][][]Generator[][][][]System[][][]const[] +[27] Overfull \hbox (0.19531pt too wide) in paragraph at lines 2160--2162 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]mpz[][][]clas s[][][]from[][][]generators(+[]Generator[][][][]System, -[] @@ -6499,6 +6879,18 @@ s[][][]from[][][][]Octagonal[][][][]Shape[][][]double[][][]with[][][]complexity (+[] [73] +Overfull \hbox (1.80132pt too wide) in paragraph at lines 76--78 +[][] \OT1/ptm/bc/n/10 type-def struct [][]ppl[][][][]Congruence[][][][]System[] +[][]const[][][]iterator[][][]tag[][] $\OMS/cmsy/m/n/10 ^^C$ [][]\OT1/ptm/bc/n/1 +0 ppl[][][][]Congruence[][][][]System[][][]const[][][]iterator[] + +Overfull \hbox (16.4409pt too wide) in paragraph at lines 139--141 +[][] \OT1/ptm/bc/n/10 type-def struct ppl[][][][]Artificial[][][][]Parameter[][ +][][]Sequence[][][]tag const $\OMS/cmsy/m/n/10 ^^C$ [][]\OT1/ptm/bc/n/10 ppl[][ +][]const[][][][]Artificial[][][][]Parameter[][][][]Sequence[] +[28GPL:-1: warning: multiple use of section label 'GPL', (first occurrence: /build/ppl-1.2/doc/gpl.dox, line 6) +GFDL:-1: warning: multiple use of section label 'GFDL', (first occurrence: /build/ppl-1.2/doc/fdl.dox, line 6) +] Overfull \hbox (9.79532pt too wide) in paragraph at lines 2277--2279 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]co ntains[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class(+[]Handle[] @@ -6590,14 +6982,18 @@ Overfull \hbox (32.5953pt too wide) in paragraph at lines 2386--2388 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]re fine[][][]with[][][]congruences( +[]Handle, +[]Congruence[] -[76/build/ppl-1.2/src/ppl.hh:44030: warning: no matching class member found for - Parma_Polyhedra_Library::Constraint_System_const_iterator::Constraint_System_const_iterator(const Parma_Polyhedra_Library::Linear_System< Parma_Polyhedra_Library::Constraint >::const_iterator &iter, const Constraint_System &cs) -Possible candidates: - Parma_Polyhedra_Library::Constraint_System_const_iterator::Constraint_System_const_iterator() - Parma_Polyhedra_Library::Constraint_System_const_iterator::Constraint_System_const_iterator(const Constraint_System_const_iterator &y) - Parma_Polyhedra_Library::Constraint_System_const_iterator::Constraint_System_const_iterator(const Linear_System< Constraint > ::const_iterator &iter, const Constraint_System &cs) +[76] +Overfull \hbox (27.11154pt too wide) in paragraph at lines 190--192 +[][] \OT1/ptm/bc/n/10 type-def struct [][]ppl[][][][]Constraints[][][][]Product +[][][][]C[][][][]Polyhedron[][][][]Grid[][][]tag[][] $\OMS/cmsy/m/n/10 ^^C$ [][ +]\OT1/ptm/bc/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhed +ron[] -] +Overfull \hbox (14.85136pt too wide) in paragraph at lines 193--195 +[][] \OT1/ptm/bc/n/10 type-def struct [][]ppl[][][][]Constraints[][][][]Product +[][][][]C[][][][]Polyhedron[][][][]Grid[][][]tag[][] const $\OMS/cmsy/m/n/10 ^^ +C$ [][]\OT1/ptm/bc/n/10 ppl[][][]const[][][][]Constraints[][][][]Product[] +[29] Overfull \hbox (2.5953pt too wide) in paragraph at lines 2396--2398 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]un constrain[][][]space[][][]dimension(+[]Handle, +[]P[]P[] @@ -6663,6 +7059,33 @@ []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][][] B[]H[]M[]Z05[][][]widening[][][]assign[][][]with[][][]tokens(+[]Handle[] [78] +Overfull \hbox (18.00154pt too wide) in paragraph at lines 202--204 +[][] \OT1/ptm/bc/n/10 type-def struct [][]ppl[][][][]Pointset[][][][]Powerset[] +[][][]N[]N[]C[][][][]Polyhedron[][][]tag[][] $\OMS/cmsy/m/n/10 ^^C$ [][]\OT1/pt +m/bc/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Polyhedron[ +] + +Overfull \hbox (21.60114pt too wide) in paragraph at lines 226--228 +[][] \OT1/ptm/bc/n/10 type-def struct [][]ppl[][][][]Pointset[][][][]Powerset[] +[][][]C[][][][]Polyhedron[][][]iterator[][][]tag[][] $\OMS/cmsy/m/n/10 ^^C$ [][ +]\OT1/ptm/bc/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro +n[] + +Overfull \hbox (9.34096pt too wide) in paragraph at lines 229--231 +[][] \OT1/ptm/bc/n/10 type-def struct [][]ppl[][][][]Pointset[][][][]Powerset[] +[][][]C[][][][]Polyhedron[][][]iterator[][][]tag[][] const $\OMS/cmsy/m/n/10 ^^ +C$ [][]\OT1/ptm/bc/n/10 ppl[][][]const[][][][]Pointset[][][][]Powerset[] + +Overfull \hbox (0.77115pt too wide) in paragraph at lines 244--246 +[][] \OT1/ptm/bc/n/10 type-def struct [][]ppl[][][][]Pointset[][][][]Powerset[] +[][][]N[]N[]C[][][][]Polyhedron[][][]const[][][]iterator[][][]tag[][] $\OMS/cms +y/m/n/10 ^^C$ [][]\OT1/ptm/bc/n/10 ppl[][][][]Pointset[][][][]Powerset[] + +Overfull \hbox (8.4811pt too wide) in paragraph at lines 247--249 +[][] \OT1/ptm/bc/n/10 type-def struct [][]ppl[][][][]Pointset[][][][]Powerset[] +[][][]N[]N[]C[][][][]Polyhedron[][][]const[][][]iterator[][][]tag[][] const $\O +MS/cmsy/m/n/10 ^^C$ [][]\OT1/ptm/bc/n/10 ppl[][][]const[][][][]Pointset[] +[30 Overfull \hbox (6.19531pt too wide) in paragraph at lines 2461--2463 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][][] B[]H[]M[]Z05[][][]widening[][][]assign(+[]Handle[][][]1, +[]Handle[] @@ -6699,7 +7122,7 @@ Overfull \hbox (0.19531pt too wide) in paragraph at lines 2482--2484 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][][] C[]C76[][][]narrowing[][][]assign(+[]Handle[][][]1, +[]Handle[] -[79] +[79]] Overfull \hbox (3.79532pt too wide) in paragraph at lines 2498--2500 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]ad d[][][]space[][][]dimensions[][][]and[][][]embed(+[]Handle, +[] @@ -6778,9 +7201,7 @@ Overfull \hbox (7.39532pt too wide) in paragraph at lines 2580--2582 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]mpq[][][]clas s[][][]from[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class(+[]Handle[] -[81GPL:-1: warning: multiple use of section label 'GPL', (first occurrence: /build/ppl-1.2/doc/gpl.dox, line 6) -GFDL:-1: warning: multiple use of section label 'GFDL', (first occurrence: /build/ppl-1.2/doc/fdl.dox, line 6) -] +[81] [31] Overfull \hbox (7.39532pt too wide) in paragraph at lines 2583--2585 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]mpq[][][]clas s[][][]from[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class(+[]Handle[] @@ -6994,9 +7415,21 @@ Overfull \hbox (0.19531pt too wide) in paragraph at lines 2839--2841 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]li near[][][]partition(+[]Handle[][][]1, +[]Handle[][][]2, -[] -[87]TEXINPUTS=/build/ppl-1.2/doc: texmf_casefold_search=0 make -C user-configured-c-interface.latex-dir refman.pdf \ - && mv -f user-configured-c-interface.latex-dir/refman.pdf ppl-user-configured-c-interface-1.2.pdf +[87 +Underfull \hbox (badness 10000) detected at line 351 +[][][] + +Overfull \hbox (27.05392pt too wide) in paragraph at lines 361--362 + []\OT1/ptm/b/n/10 ppl[][][]io[][][]variable[][][]output[][][]function[][][]typ +e[] \OT1/pcr/m/n/8 typedef const char$\OMS/cmsy/m/n/8 ^^C$ \OT1/pcr/m/n/8 ppl[] +[][]io[][][]variable[][][]output[][][]function[][][]type([][]ppl[] + +Package longtable Warning: Column widths have changed +(longtable) in table 4 on input line 401. + +Overfull \vbox (4.91087pt too high) has occurred while \output is active +[32]] Overfull \hbox (9.79532pt too wide) in paragraph at lines 2846--2848 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][][] B[]H[]M[]Z05[][][]widening[][][]assign[][][]with[][][]tokens(+[]Handle[] @@ -7037,22 +7470,7 @@ Overfull \hbox (0.19531pt too wide) in paragraph at lines 2870--2872 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][][] C[]C76[][][]narrowing[][][]assign(+[]Handle[][][]1, +[]Handle[] -[88make[3]: Entering directory '/build/ppl-1.2/doc' -make[3]: warning: jobserver unavailable: using -j1. Add '+' to parent make rule. -rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl refman.pdf -pdflatex refman -This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2019/dev/Debian) (preloaded format=pdflatex) - restricted \write18 enabled. -]entering extended mode -(./refman.tex -LaTeX2e <2018-12-01> -(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls -Document Class: article 2018/09/03 v1.4i Standard LaTeX document class -(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo)) -(/usr/share/texlive/texmf-dist/tex/latex/a4wide/a4wide.sty -(/usr/share/texlive/texmf-dist/tex/latex/ntgclass/a4.sty)) -(/usr/share/texlive/texmf-dist/tex/latex/base/makeidx.sty) -(/usr/share/texlive/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +[88] Overfull \hbox (3.79532pt too wide) in paragraph at lines 2886--2888 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]ad d[][][]space[][][]dimensions[][][]and[][][]embed(+[]Handle, +[] @@ -7076,16 +7494,7 @@ Overfull \hbox (3.79532pt too wide) in paragraph at lines 2901--2903 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]fo ld[][][]space[][][]dimensions(+[]Handle, +[]List[][][]of[][][][]P[] -[89) -(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty -(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty) -(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty -(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty)] -(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg) -(/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def))) -(/usr/share/texlive/texmf-dist/tex/latex/tools/multicol.sty) -(/usr/share/texlive/texmf-dist/tex/latex/float/float.sty) -(/usr/share/texlive/texmf-dist/tex/latex/base/textcomp.sty +[89] Overfull \hbox (39.79532pt too wide) in paragraph at lines 2923--2925 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][] []Polyhedron[][][][]Grid[][][]from[][][]space[][][]dimension(+[]Dimension[] @@ -7114,14 +7523,6 @@ []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][] []Polyhedron[][][][]Grid[][][]from[][][][]Grid(+[]Handle[][][]1, -[]Handle[] [90] -(/usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.def -(/usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.dfu))) -(/usr/share/texlive/texmf-dist/tex/latex/base/alltt.sty) -(/usr/share/texlive/texmf-dist/tex/latex/psnfss/times.sty) -(/usr/share/texlive/texmf-dist/tex/latex/tocloft/tocloft.sty) -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty) -(/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty -(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg) Overfull \hbox (3.79532pt too wide) in paragraph at lines 2956--2958 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][] []Polyhedron[][][][]Grid[][][]from[][][][]Rational[][][][]Box(+[]Handle[] @@ -7193,12 +7594,7 @@ []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][] []Polyhedron[][][][]Grid[][][]from[][][][]Rational[][][][]Box[][][]with[][][]co mplexity(+[] -[91 -(/usr/share/texlive/texmf-dist/tex/latex/colortbl/colortbl.sty -(/usr/share/texlive/texmf-dist/tex/latex/tools/array.sty)])) -(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty +[91] Overfull \hbox (14.59534pt too wide) in paragraph at lines 2995--2997 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][] []Polyhedron[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]class @@ -7241,11 +7637,7 @@ Overfull \hbox (1.39532pt too wide) in paragraph at lines 3016--3018 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][] []Polyhedron[][][][]Grid[][][]from[][][][]Constraints[][][][]Product[][][] -[92])) -(/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty) -(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/auxhook.sty) -(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty) -(/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def +[92] Overfull \hbox (15.2138pt too wide) in paragraph at lines 3041--3043 []\OT1/pcr/m/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhed ron[][][][]Grid[][][]is[][][]topologically[][][]closed(+[]Handle) @@ -7289,9 +7681,7 @@ Overfull \hbox (15.2138pt too wide) in paragraph at lines 3084--3086 []\OT1/pcr/m/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhed ron[][][][]Grid[][][]relation[][][]with[][][]generator(+[]Handle, -[93)] -(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/hyperref.cfg) -(/usr/share/texlive/texmf-dist/tex/latex/hyperref/puenc.def +[93] Overfull \hbox (21.2138pt too wide) in paragraph at lines 3087--3089 []\OT1/pcr/m/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhed ron[][][][]Grid[][][]relation[][][]with[][][]congruence(+[]Handle, @@ -7407,18 +7797,7 @@ Overfull \hbox (12.19531pt too wide) in paragraph at lines 3200--3202 []\OT1/pcr/m/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhed ron[][][][]Grid[][][]difference[][][]assign(+[]Handle[][][]1, +[] -[96) -(/usr/share/texlive/texmf-dist/tex/latex/hyperref/backref.sty -(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty)) -(/usr/share/texlive/texmf-dist/tex/latex/url/url.sty)) -(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def)] -(/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty) (./doxygen.sty -(/usr/share/texlive/texmf-dist/tex/latex/tools/calc.sty) -(/usr/share/texlive/texmf-dist/tex/latex/base/ifthen.sty) -(/usr/share/texlive/texmf-dist/tex/latex/tools/verbatim.sty) -(/usr/share/texlive/texmf-dist/tex/latex/tools/longtable.sty) -(/usr/share/texlive/texmf-dist/tex/latex/tabu/tabu.sty -(/usr/share/texlive/texmf-dist/tex/latex/varwidth/varwidth.sty) +[96] Overfull \hbox (15.79532pt too wide) in paragraph at lines 3203--3205 []\OT1/pcr/m/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhed ron[][][][]Grid[][][]time[][][]elapse[][][]assign(+[]Handle[][][]1, +[] @@ -7450,16 +7829,30 @@ Overfull \hbox (15.2138pt too wide) in paragraph at lines 3238--3240 []\OT1/pcr/m/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhed ron[][][][]Grid[][][]remove[][][]space[][][]dimensions(+[]Handle, -[97) -(/usr/share/texlive/texmf-dist/tex/latex/tools/tabularx.sty]) -(/usr/share/texlive/texmf-dist/tex/latex/multirow/multirow.sty)) -(/build/ppl-1.2/doc/ppl.sty -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty -For additional information on amsmath, use the `?' option. -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty)) -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty) -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty) +[97] + +Package longtable Warning: Column widths have changed +(longtable) in table 5 on input line 429. + + +Package longtable Warning: Column widths have changed +(longtable) in table 6 on input line 453. + + +Package longtable Warning: Column widths have changed +(longtable) in table 7 on input line 485. + + +Overfull \hbox (19.9918pt too wide) in paragraph at lines 490--491 + []\OT1/ptm/b/n/10 ppl[][][]enum[][][][]Bounded[][][][]Integer[][][][]Type[][][ +][]Representation[] \OT1/pcr/m/n/8 enum [][]ppl[][][]enum[][][][]Bounded[][][][ +]Integer[][][][]Type[][][][]Representation[][] + +Package longtable Warning: Column widths have changed +(longtable) in table 8 on input line 505. + + +Underfull \vbox (badness 3746) has occurred while \output is active [33 Overfull \hbox (21.79532pt too wide) in paragraph at lines 3241--3243 []\OT1/pcr/m/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhed ron[][][][]Grid[][][]remove[][][]higher[][][]space[][][]dimensions(+[] @@ -7487,10 +7880,7 @@ Overfull \hbox (21.2138pt too wide) in paragraph at lines 3279--3281 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Pointset[][][][]Powerset[][][][]C[][][][] Polyhedron[][][]from[][][]congruences(+[]Congruence[][][][]System, -[98]) -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty)) -(/usr/share/texlive/texmf-dist/tex/latex/stmaryrd/stmaryrd.sty +[98]] Underfull \hbox (badness 10000) in paragraph at lines 3287--3288 @@ -7529,16 +7919,7 @@ Overfull \hbox (3.2138pt too wide) in paragraph at lines 3339--3341 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro n[][][]bounds[][][]from[][][]below(+[]Handle, +[]Lin[][][][]Expr) -[99)]) -Writing index file refman.idx -No file refman.aux. -(/usr/share/texlive/texmf-dist/tex/latex/base/ts1cmr.fd) -(/usr/share/texlive/texmf-dist/tex/latex/psnfss/ot1ptm.fd) -(/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii -[Loading MPS to PDF converter (version 2006.09.02).] -) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty -(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty) -(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +[99] Overfull \hbox (33.79532pt too wide) in paragraph at lines 3342--3344 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro n[][][]contains[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedron(+[] @@ -7586,10 +7967,7 @@ Overfull \hbox (4.9953pt too wide) in paragraph at lines 3385--3387 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro n[][][]maximize(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[] -[100)) -(/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/gettitlestring.sty])) -(/usr/share/texlive/texmf-dist/tex/latex/psnfss/ot1phv.fd) +[100] Overfull \hbox (4.9953pt too wide) in paragraph at lines 3390--3392 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro n[][][]minimize(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[] @@ -7613,14 +7991,21 @@ Overfull \hbox (2.0138pt too wide) in paragraph at lines 3427--3429 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro n[][][]add[][][]constraint(+[]Handle, +[]Constraint) -[101 -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd) -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd) -(/usr/share/texlive/texmf-dist/tex/latex/stmaryrd/Ustmry.fd) -(/usr/share/texlive/texmf-dist/tex/latex/psnfss/ts1ptm.fd) [1{/var/lib/texmf/fo -nts/map/pdftex/updmap/pdftex.map}] ] [2] -(/usr/share/texlive/texmf-dist/tex/latex/psnfss/ot1pcr.fd) [3 ] [4] [1] [2] (./index.tex +[101] +Underfull \hbox (badness 10000) detected at line 534 +[][][] + +Package longtable Warning: Column widths have changed +(longtable) in table 9 on input line 534. + + +Package longtable Warning: Column widths have changed +(longtable) in table 10 on input line 558. + + +Underfull \hbox (badness 10000) detected at line 559 +[][][] +) [34 Overfull \hbox (2.0138pt too wide) in paragraph at lines 3430--3432 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro n[][][]add[][][]congruence(+[]Handle, +[]Congruence) @@ -7665,21 +8050,8 @@ \OT1/ptm/m/it/10 Transforms the pointset pow-er-set ref-er-enced by \OT1/pcr/m/ sl/10 Handle \OT1/ptm/m/it/10 as-sign-ing the affine ex-pres-sion for \OT1/pcr/ m/sl/10 Lin[][][][]Expr/Coeff -[102 -Underfull \hbox (badness 10000) detected at line 9 -[][][] -pdfTeX warning (ext4): destination with the same identifier (name{page.1}) has -been already used, duplicate ignored - - \relax -l.25 - [1]]) (./GPL.texpdfTeX warning (ext4): destination with the same identifie -r (name{page.2}) has been already used, duplicate ignored - - \relax -l.37 ` - `Copyright'' also means copyright-\/like laws that apply to other kind... -[2] +[102]] +(./interfaceppl__Artificial__Parameter__Sequence__const__iterator__tag.tex Overfull \hbox (8.5953pt too wide) in paragraph at lines 3473--3475 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro n[][][]affine[][][]preimage(+[]Handle, +[]P[]P[]L[][][][]Var, +[] @@ -7719,17 +8091,32 @@ Overfull \hbox (8.5953pt too wide) in paragraph at lines 3504--3506 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro n[][][]difference[][][]assign(+[]Handle[][][]1, +[]Handle[] -[103]pdfTeX warning (ext4): destination with the same identifier (name{page.3}) h -as been already used, duplicate ignored - - \relax -l.68 - [3]pdfTeX warning (ext4): destination with the same identifier (name{page -.4}) has been already used, duplicate ignored - - \relax -l.104 - [4] +[103] +Overfull \hbox (7.82706pt too wide) in paragraph at lines 22--24 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]assign[][][][]Artificial[][][][]Paramete +r[][][][]Sequence[][][]const[][][]iterator[][][]from[][][][]Artificial[][][][]P +arameter[][][][]Sequence[] + +Overfull \hbox (23.68665pt too wide) in paragraph at lines 22--24 +[][]\OT1/ptm/bc/n/10 const[][][]iterator[][] ([][]ppl[][][][]Artificial[][][][] +Parameter[][][][]Sequence[][][]const[][][]iterator[][][]t[][] dst, [][]ppl[][][ +]const[][][][]Artificial[][][][]Parameter[] + +Overfull \hbox (26.38684pt too wide) in paragraph at lines 25--27 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]delete[][][][]Artificial[][][][]Paramete +r[][][][]Sequence[][][]const[][][]iterator[][] ([][]ppl[][][]const[][][][]Artif +icial[][][][]Parameter[][][][]Sequence[] + +Overfull \hbox (7.21704pt too wide) in paragraph at lines 32--34 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Artificial[][][][]Parameter[][][][]Seq +uence[][][]const[][][]iterator[][][]dereference[][] ([][]ppl[][][]const[][][][] +Artificial[][][][]Parameter[] + +Overfull \hbox (17.78696pt too wide) in paragraph at lines 35--37 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Artificial[][][][]Parameter[][][][]Seq +uence[][][]const[][][]iterator[][][]increment[][] ([][]ppl[][][][]Artificial[][ +][][]Parameter[][][][]Sequence[] +) (./interfaceppl__Artificial__Parameter__tag.tex Overfull \hbox (12.19531pt too wide) in paragraph at lines 3507--3509 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro n[][][]time[][][]elapse[][][]assign(+[]Handle[][][]1, +[]Handle[] @@ -7762,7 +8149,12 @@ Overfull \hbox (14.5953pt too wide) in paragraph at lines 3538--3540 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro n[][][]concatenate[][][]assign(+[]Handle[][][]1, +[]Handle[] -[104 [5]] [6] [7] [8 +[104] +Overfull \hbox (4.9309pt too wide) in paragraph at lines 15--17 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Artificial[][][][]Parameter[][][]get[] +[][][]Linear[][][][]Expression[][] ([][]ppl[][][]const[][][][]Artificial[][][][ +]Parameter[][][]t[][] ap, [][]ppl[][][][]Linear[] +[35] Overfull \hbox (12.81381pt too wide) in paragraph at lines 3545--3547 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro n[][][]add[][][]space[][][]dimensions[][][]and[][][]embed(+[]Handle, @@ -7803,7 +8195,12 @@ Overfull \hbox (0.19531pt too wide) in paragraph at lines 3579--3581 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro n[][][]iterator[][][]equals[][][]iterator(+[]Iterator[][][] -[105]] +[105] +Overfull \hbox (0.85934pt too wide) in paragraph at lines 18--20 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Artificial[][][][]Parameter[][][]coeff +icient[][] ([][]ppl[][][]const[][][][]Artificial[][][][]Parameter[][][]t[][] ap +, [][]ppl[][][]dimension[][][]type[][] var, +) (./interfaceppl__BD__Shape__double__tag.tex Overfull \hbox (29.6138pt too wide) in paragraph at lines 3588--3590 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro n[][][]iterator[][][]get[][][]disjunct(+[]Iterator, -[]Handle) @@ -7823,11 +8220,7 @@ Overfull \hbox (0.19531pt too wide) in paragraph at lines 3629--3631 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[] [][][]Polyhedron[][][]from[][][]congruences(+[]Congruence[][][] -[106] [9]) -Overfull \hbox (10.35326pt too wide) in paragraph at lines 291--187 -\OT1/ptm/m/n/10 stead of this Li-cense. But first, please read [][]\OT1/pcr/m/n -/10 http[]://www.[]gnu.[]org/philosophy/why-not-lgpl.[] -(./GFDL.tex [10 +[106] Underfull \hbox (badness 10000) in paragraph at lines 3637--3638 @@ -7854,7 +8247,37 @@ Overfull \hbox (15.2138pt too wide) in paragraph at lines 3686--3688 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]bounds[][][]from[][][]above(+[]Handle, +[]Lin[][][][]Expr) -[107]] [11] [12] [13] +[107 +Overfull \hbox (10.32233pt too wide) in paragraph at lines 17--19 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][ +][]from[][][]space[][][]dimension[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]do +uble[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][]dimens +ion[] + +Overfull \hbox (28.3727pt too wide) in paragraph at lines 19--21 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][ +][]from[][][][]C[][][][]Polyhedron[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]d +ouble[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][]const +[][][][]Polyhedron[] + +Overfull \hbox (13.9322pt too wide) in paragraph at lines 25--27 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][ +][]from[][][][]Rational[][][][]Box[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]d +ouble[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][]const +[][][][]Rational[] + +Overfull \hbox (8.07243pt too wide) in paragraph at lines 27--29 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][ +][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] ([][]ppl[][][][]B[]D[] +[][][]Shape[][][]double[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, +[][]ppl[][][]const[] + +Overfull \hbox (8.63249pt too wide) in paragraph at lines 29--31 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][ +][]from[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] ([][]ppl[][][][]B[]D[] +[][][]Shape[][][]double[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, +[][]ppl[][][]const[] +[36]] Overfull \hbox (15.2138pt too wide) in paragraph at lines 3689--3691 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]bounds[][][]from[][][]below(+[]Handle, +[]Lin[][][][]Expr) @@ -7904,36 +8327,7 @@ Overfull \hbox (14.5953pt too wide) in paragraph at lines 3732--3734 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]relation[][][]with[][][]congruence(+[]Handle, +[] -[108 -Overfull \hbox (7.49895pt too wide) in paragraph at lines 97--98 -\OT1/ptm/m/n/10 ments, form-ing one sec-tion En-ti-tled "[]History"; like-wise -com-bine any sec-tions En-ti-tled "[]Acknowledgements", - -Underfull \vbox (badness 1377) has occurred while \output is active [14]]) -(./modules.tex - -LaTeX Warning: Reference `group__PPL__C__interface' on page 15 undefined on inp -ut line 3. - - -LaTeX Warning: Reference `group__Init' on page 15 undefined on input line 4. - - -LaTeX Warning: Reference `group__Version' on page 15 undefined on input line 5. - - - -LaTeX Warning: Reference `group__Error' on page 15 undefined on input line 6. - - -LaTeX Warning: Reference `group__Timeout' on page 15 undefined on input line 7. - - - -LaTeX Warning: Reference `group__Datatypes' on page 15 undefined on input line -8. - -) (./annotated.tex +[108] Overfull \hbox (16.9953pt too wide) in paragraph at lines 3735--3737 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]maximize(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[] @@ -7957,24 +8351,7 @@ Overfull \hbox (27.2138pt too wide) in paragraph at lines 3758--3760 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]total[][][]memory[][][]in[][][]bytes(+[]Handle, ?Number) -[109 - -LaTeX Warning: Reference `interfaceppl__Artificial__Parameter__Sequence__const_ -_iterator__tag' on page 15 undefined on input line 3. - - -LaTeX Warning: Reference `interfaceppl__Artificial__Parameter__tag' on page 15 -undefined on input line 4. - - -LaTeX Warning: Reference `interfaceppl__BD__Shape__double__tag' on page 15 unde -fined on input line 5. - - -LaTeX Warning: Reference `interfaceppl__BD__Shape__mpq__class__tag' on page 15 -undefined on input line 6. - -[15]] +[109] Overfull \hbox (14.0138pt too wide) in paragraph at lines 3777--3779 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]add[][][]constraint(+[]Handle, +[]Constraint) @@ -8018,84 +8395,7 @@ Overfull \hbox (17.6138pt too wide) in paragraph at lines 3817--3819 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]unconstrain[][][]space[][][]dimensions(+[]Handle, -[110 - -LaTeX Warning: Reference `interfaceppl__BD__Shape__mpz__class__tag' on page 16 -undefined on input line 7. - - -LaTeX Warning: Reference `interfaceppl__Coefficient__tag' on page 16 undefined -on input line 8. - - -LaTeX Warning: Reference `interfaceppl__Congruence__System__const__iterator__ta -g' on page 16 undefined on input line 9. - - -LaTeX Warning: Reference `interfaceppl__Congruence__System__tag' on page 16 und -efined on input line 10. - - -LaTeX Warning: Reference `interfaceppl__Congruence__tag' on page 16 undefined o -n input line 11. - - -LaTeX Warning: Reference `interfaceppl__Constraint__System__const__iterator__ta -g' on page 16 undefined on input line 12. - - -LaTeX Warning: Reference `interfaceppl__Constraint__System__tag' on page 16 und -efined on input line 13. - - -LaTeX Warning: Reference `interfaceppl__Constraint__tag' on page 16 undefined o -n input line 14. - - -LaTeX Warning: Reference `interfaceppl__Constraints__Product__C__Polyhedron__Gr -id__tag' on page 16 undefined on input line 15. - - -LaTeX Warning: Reference `interfaceppl__Double__Box__tag' on page 16 undefined -on input line 16. - - -LaTeX Warning: Reference `interfaceppl__Generator__System__const__iterator__tag -' on page 16 undefined on input line 17. - - -LaTeX Warning: Reference `interfaceppl__Generator__System__tag' on page 16 unde -fined on input line 18. - - -LaTeX Warning: Reference `interfaceppl__Generator__tag' on page 16 undefined on - input line 19. - - -LaTeX Warning: Reference `interfaceppl__Grid__Generator__System__const__iterato -r__tag' on page 16 undefined on input line 20. - - -LaTeX Warning: Reference `interfaceppl__Grid__Generator__System__tag' on page 1 -6 undefined on input line 21. - - -LaTeX Warning: Reference `interfaceppl__Grid__Generator__tag' on page 16 undefi -ned on input line 22. - - -LaTeX Warning: Reference `interfaceppl__Grid__tag' on page 16 undefined on inpu -t line 23. - - -LaTeX Warning: Reference `interfaceppl__Linear__Expression__tag' on page 16 und -efined on input line 24. - - -LaTeX Warning: Reference `interfaceppl__MIP__Problem__tag' on page 16 undefined - on input line 25. - -[16]] +[110] Overfull \hbox (2.5953pt too wide) in paragraph at lines 3820--3822 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]affine[][][]image(+[]Handle, +[]P[]P[]L[][][][]Var, +[] @@ -8145,73 +8445,61 @@ []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]difference[][][]assign(+[]Handle[][][]1, +[]Handle[] [111 +Overfull \hbox (10.57239pt too wide) in paragraph at lines 31--33 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][ +][]from[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][] ([][]ppl[][][][]B +[]D[][][][]Shape[][][]double[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 +pph, [][]ppl[] -LaTeX Warning: Reference `interfaceppl__Octagonal__Shape__double__tag' on page -17 undefined on input line 26. - - -LaTeX Warning: Reference `interfaceppl__Octagonal__Shape__mpq__class__tag' on p -age 17 undefined on input line 27. - - -LaTeX Warning: Reference `interfaceppl__Octagonal__Shape__mpz__class__tag' on p -age 17 undefined on input line 28. - - -LaTeX Warning: Reference `interfaceppl__PIP__Decision__Node__tag' on page 17 un -defined on input line 29. - - -LaTeX Warning: Reference `interfaceppl__PIP__Problem__tag' on page 17 undefined - on input line 30. - - -LaTeX Warning: Reference `interfaceppl__PIP__Solution__Node__tag' on page 17 un -defined on input line 31. - - -LaTeX Warning: Reference `interfaceppl__PIP__Tree__Node__tag' on page 17 undefi -ned on input line 32. - - -LaTeX Warning: Reference `interfaceppl__Pointset__Powerset__C__Polyhedron__cons -t__iterator__tag' on page 17 undefined on input line 33. - - -LaTeX Warning: Reference `interfaceppl__Pointset__Powerset__C__Polyhedron__iter -ator__tag' on page 17 undefined on input line 34. - - -Overfull \hbox (20.64815pt too wide) in paragraph at lines 34--34 - \OT1/ptm/b/n/10 Types and func-tions for it-er-at-ing on the dis-juncts of a [ -][]ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedron[] - -LaTeX Warning: Reference `interfaceppl__Pointset__Powerset__C__Polyhedron__tag' - on page 17 undefined on input line 35. - - -LaTeX Warning: Reference `interfaceppl__Pointset__Powerset__NNC__Polyhedron__co -nst__iterator__tag' on page 17 undefined on input line 36. - +Overfull \hbox (11.13245pt too wide) in paragraph at lines 33--35 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][ +][]from[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][] ([][]ppl[][][][]B +[]D[][][][]Shape[][][]double[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 +pph, [][]ppl[] -LaTeX Warning: Reference `interfaceppl__Pointset__Powerset__NNC__Polyhedron__it -erator__tag' on page 17 undefined on input line 37. +Overfull \hbox (5.03285pt too wide) in paragraph at lines 35--37 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][ +][]from[][][][]Double[][][][]Box[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]dou +ble[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][]const[] +[][][]Double[] +Overfull \hbox (10.44244pt too wide) in paragraph at lines 45--47 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][ +][]from[][][][]Grid[][][]with[][][]complexity[][] ([][]ppl[][][][]B[]D[][][][]S +hape[][][]double[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl +[][][]const[] -LaTeX Warning: Reference `interfaceppl__Pointset__Powerset__NNC__Polyhedron__ta -g' on page 17 undefined on input line 38. +Overfull \hbox (7.61217pt too wide) in paragraph at lines 49--51 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][ +][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]with[][][]complexity[ +][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]double[] +Overfull \hbox (8.17223pt too wide) in paragraph at lines 51--53 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][ +][]from[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]with[][][]complexity[ +][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]double[] -LaTeX Warning: Reference `interfaceppl__Polyhedron__tag' on page 17 undefined o -n input line 39. +Overfull \hbox (4.00201pt too wide) in paragraph at lines 53--55 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][ +][]from[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]with[][][]comple +xity[][] ([][]ppl[][][][]B[]D[][][][]Shape[] +Overfull \hbox (4.56207pt too wide) in paragraph at lines 55--57 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][ +][]from[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]with[][][]comple +xity[][] ([][]ppl[][][][]B[]D[][][][]Shape[] -LaTeX Warning: Reference `interfaceppl__Rational__Box__tag' on page 17 undefine -d on input line 40. +Overfull \hbox (21.78229pt too wide) in paragraph at lines 61--63 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][ +][]from[][][][]Octagonal[][][][]Shape[][][]double[][][]with[][][]complexity[][] + ([][]ppl[][][][]B[]D[][][][]Shape[][][]double[] -) (./group__PPL__C__interface.tex) -Underfull \vbox (badness 7740) has occurred while \output is active [17] -[18] (./group__Init.tex] +Overfull \hbox (3.65257pt too wide) in paragraph at lines 65--67 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][ +][]from[][][][]Congruence[][][][]System[][] ([][]ppl[][][][]B[]D[][][][]Shape[] +[][]double[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][] +const[] +[37]] Overfull \hbox (24.19531pt too wide) in paragraph at lines 3857--3859 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]time[][][]elapse[][][]assign(+[]Handle[][][]1, +[]Handle[] @@ -8246,13 +8534,7 @@ Overfull \hbox (26.5953pt too wide) in paragraph at lines 3888--3890 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]concatenate[][][]assign(+[]Handle[][][]1, +[]Handle[] -[112 -Underfull \hbox (badness 10000) detected at line 35 -[][][] - -Underfull \hbox (badness 10000) detected at line 48 -[][][] -[19]]) [20 +[112] Overfull \hbox (24.81381pt too wide) in paragraph at lines 3895--3897 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]add[][][]space[][][]dimensions[][][]and[][][]embed(+[]Handle, @@ -8293,7 +8575,7 @@ Overfull \hbox (2.0138pt too wide) in paragraph at lines 3923--3925 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]begin[][][]iterator(+[]Handle, -[]Iterator) -[113] (./group__Version.tex] [21 +[113] Overfull \hbox (8.5953pt too wide) in paragraph at lines 3929--3931 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]iterator[][][]equals[][][]iterator(+[]Iterator[] @@ -8309,8 +8591,82 @@ Overfull \hbox (24.81381pt too wide) in paragraph at lines 3969--3971 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][]space[][ ][]dimension(+[]Dimension[][][][]Type, +[]Universe[][][]or[][][][]Empty, -[114]) [22]] (./group__Error.tex -(/usr/share/texlive/texmf-dist/tex/latex/psnfss/omsptm.fd) +[114] +Overfull \hbox (11.66246pt too wide) in paragraph at lines 81--83 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]get[][ +][]congruences[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]double[][] +[]t[][] ph, [][]ppl[][][]const[][][][]Congruence[] + +Overfull \hbox (6.1221pt too wide) in paragraph at lines 85--87 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]get[][ +][]minimized[][][]congruences[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[ +][][]double[][][]t[][] ph, [][]ppl[][][]const[] + +Overfull \hbox (2.7528pt too wide) in paragraph at lines 101--103 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]bounds +[][][]from[][][]above[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]dou +ble[][][]t[][] ph, [][]ppl[][][]const[][][][]Linear[] + +Overfull \hbox (3.36253pt too wide) in paragraph at lines 103--105 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]bounds +[][][]from[][][]below[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]dou +ble[][][]t[][] ph, [][]ppl[][][]const[][][][]Linear[] + +Overfull \hbox (11.12198pt too wide) in paragraph at lines 105--107 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]maximi +ze[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]double[][][]t[][] ph, +[][]ppl[][][]const[][][][]Linear[][][][]Expression[] + +Overfull \hbox (9.46193pt too wide) in paragraph at lines 107--109 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]minimi +ze[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]double[][][]t[][] ph, +[][]ppl[][][]const[][][][]Linear[][][][]Expression[] + +Overfull \hbox (8.62196pt too wide) in paragraph at lines 109--111 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]maximi +ze[][][]with[][][]point[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]d +ouble[][][]t[][] ph, [][]ppl[][][]const[][][][]Linear[] + +Overfull \hbox (6.96191pt too wide) in paragraph at lines 111--113 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]minimi +ze[][][]with[][][]point[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]d +ouble[][][]t[][] ph, [][]ppl[][][]const[][][][]Linear[] + +Overfull \hbox (11.51242pt too wide) in paragraph at lines 113--115 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]freque +ncy[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]double[][][]t[][] ph, + [][]ppl[][][]const[][][][]Linear[][][][]Expression[] + +Overfull \hbox (5.29205pt too wide) in paragraph at lines 117--119 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]strict +ly[][][]contains[][][][]B[]D[][][][]Shape[][][]double[][] ([][]ppl[][][]const[] +[][][]B[]D[][][][]Shape[][][]double[][][]t[][] x, [][]ppl[] + +Overfull \hbox (3.90219pt too wide) in paragraph at lines 119--121 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]is[][] +[]disjoint[][][]from[][][][]B[]D[][][][]Shape[][][]double[][] ([][]ppl[][][]con +st[][][][]B[]D[][][][]Shape[][][]double[][][]t[][] x, [][]ppl[] + +Overfull \hbox (8.92177pt too wide) in paragraph at lines 129--131 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]add[][ +][]constraints[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]t[][] ph, + [][]ppl[][][]const[][][][]Constraint[][][][]System[] + +Overfull \hbox (1.69191pt too wide) in paragraph at lines 133--135 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]refine +[][][]with[][][]constraint[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]double[][ +][]t[][] ph, [][]ppl[][][]const[][][][]Constraint[] + +Overfull \hbox (14.99254pt too wide) in paragraph at lines 135--137 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]refine +[][][]with[][][]congruence[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]double[][ +][]t[][] ph, [][]ppl[][][]const[][][][]Congruence[] + +Overfull \hbox (5.5818pt too wide) in paragraph at lines 137--139 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]refine +[][][]with[][][]constraints[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]double[] +[][]t[][] ph, [][]ppl[][][]const[][][][]Constraint[] +[38 Underfull \hbox (badness 10000) in paragraph at lines 3990--3991 @@ -8327,7 +8683,7 @@ Overfull \hbox (15.2138pt too wide) in paragraph at lines 4029--4031 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]C[][][ ][]Polyhedron[][][]with[][][]complexity(+[]Handle, +[]Complexity, -[115] +[115]] Overfull \hbox (27.2138pt too wide) in paragraph at lines 4032--4034 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]N[]N[] C[][][][]Polyhedron[][][]with[][][]complexity(+[]Handle, +[]Complexity, @@ -8420,7 +8776,82 @@ Overfull \hbox (8.5953pt too wide) in paragraph at lines 4173--4175 []\OT1/pcr/m/n/10 ppl[][][][]Double[][][][]Box[][][]minimize[][][]with[][][]poi nt(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[][][]1, ?Coeff[] -[118] [119] +[118] [119 +Overfull \hbox (18.88243pt too wide) in paragraph at lines 139--141 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]refine +[][][]with[][][]congruences[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]double[] +[][]t[][] ph, [][]ppl[][][]const[][][][]Congruence[] + +Overfull \hbox (15.842pt too wide) in paragraph at lines 141--143 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]inters +ection[][][]assign[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]t[][] + x, [][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]double[] + +Overfull \hbox (9.46228pt too wide) in paragraph at lines 145--147 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]differ +ence[][][]assign[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]t[][] x +, [][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]double[] + +Overfull \hbox (16.38219pt too wide) in paragraph at lines 147--149 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]concat +enate[][][]assign[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]t[][] +x, [][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]double[] + +Overfull \hbox (15.55199pt too wide) in paragraph at lines 149--151 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]time[] +[][]elapse[][][]assign[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]t +[][] x, [][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]double[] + +Overfull \hbox (7.5321pt too wide) in paragraph at lines 157--159 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]uncons +train[][][]space[][][]dimension[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]doub +le[][][]t[][] ph, [][]ppl[][][]dimension[] + +Overfull \hbox (11.422pt too wide) in paragraph at lines 159--161 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]uncons +train[][][]space[][][]dimensions[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]dou +ble[][][]t[][] ph, [][]ppl[][][]dimension[] + +Overfull \hbox (5.26245pt too wide) in paragraph at lines 163--165 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]affine +[][][]preimage[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]t[][] ph, + [][]ppl[][][]dimension[][][]type[][] var, [][]ppl[] + +Overfull \hbox (4.2718pt too wide) in paragraph at lines 167--169 +\OT1/ptm/bc/n/10 type[][] var, [][]ppl[][][]const[][][][]Linear[][][][]Expressi +on[][][]t[][] lb, [][]ppl[][][]const[][][][]Linear[][][][]Expression[][][]t[][] + ub, [][]ppl[][][]const[][][][]Coefficient[] + +Overfull \hbox (2.81215pt too wide) in paragraph at lines 171--173 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]genera +lized[][][]affine[][][]preimage[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]doub +le[][][]t[][] ph, [][]ppl[][][]dimension[] + +Overfull \hbox (0.57211pt too wide) in paragraph at lines 173--175 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]genera +lized[][][]affine[][][]image[][][]lhs[][][]rhs[][] ([][]ppl[][][][]B[]D[][][][] +Shape[][][]double[][][]t[][] ph, [][]ppl[][][]const[] + +Overfull \hbox (12.92154pt too wide) in paragraph at lines 175--177 +\OT1/ptm/bc/n/10 const[][][][]Linear[][][][]Expression[][][]t[][] lhs, enum [][ +]ppl[][][]enum[][][][]Constraint[][][][]Type[][] rel-sym, [][]ppl[][][]const[][ +][][]Linear[][][][]Expression[] + +Overfull \hbox (27.50215pt too wide) in paragraph at lines 177--179 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]add[][ +][]space[][][]dimensions[][][]and[][][]embed[][] ([][]ppl[][][][]B[]D[][][][]Sh +ape[][][]double[][][]t[][] ph, [][]ppl[][][]dimension[] + +Overfull \hbox (28.612pt too wide) in paragraph at lines 179--181 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]add[][ +][]space[][][]dimensions[][][]and[][][]project[][] ([][]ppl[][][][]B[]D[][][][] +Shape[][][]double[][][]t[][] ph, [][]ppl[][][]dimension[] + +Overfull \hbox (23.6022pt too wide) in paragraph at lines 183--185 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]remove +[][][]higher[][][]space[][]][]dimensions[][] ([][]ppl[][][][]B[]D[][][][]Shape[] +[][]double[][][]t[][] ph, [][]ppl[][][]dimension[] +[39] Overfull \hbox (1.38072pt too wide) in paragraph at lines 4237--4239 \OT1/ptm/m/it/10 Transforms the dou-ble box ref-er-enced by \OT1/pcr/m/sl/10 Ha ndle \OT1/ptm/m/it/10 sub-sti-tut-ing the affine ex-pres-sion for \OT1/pcr/m/sl @@ -8454,23 +8885,7 @@ []\OT1/pcr/m/n/10 ppl[][][][]Double[][][][]Box[][][]wrap[][][]assign(+[]Handle, +[]List[][][]of[][][][]P[]P[]L[][][][]Var, +[]Width, +[]Representation, -Underfull \vbox (badness 3503) has occurred while \output is active [120 -Overfull \hbox (1.62299pt too wide) in paragraph at lines 6--20 -[][]\OT1/ptm/m/n/10 P[]P[]L[][][][]E[]R[]R[]O[]R[][][][]O[]U[]T[][][][]O[]F[][] -[][]M[]E[]M[]O[]RY[][], [][]P[]P[]L[][][][]E[]R[]R[]O[]R[][][][]I[]N[]V[]A[]L[] -I[]D[][][][]A[]R[]G[]U[]M[]E[]NT[][], [][]P[]P[]L[][][][]E[]R[]R[]O[]R[][][][]D -[]O[]M[] - -Overfull \hbox (1.35289pt too wide) in paragraph at lines 6--20 -[][]\OT1/ptm/m/n/10 P[]P[]L[][][][]A[]R[]I[]T[]H[]M[]E[]T[]I[]C[][][][]O[]V[]E[ -]R[]F[]L[]OW[][], [][]P[]P[]L[][][][]S[]T[]D[]I[]O[][][][]E[]R[]R[]OR[][], [][] -P[]P[]L[][][][]E[]R[]R[]O[]R[][][][]I[]N[]T[]E[]R[]N[]A[]L[][][][]E[]R[]R[]OR[] -[], [][]P[] - -Package longtable Warning: Column widths have changed -(longtable) in table 1 on input line 88. - -[23] +Underfull \vbox (badness 3503) has occurred while \output is active [120] Overfull \hbox (27.2138pt too wide) in paragraph at lines 4280--4282 []\OT1/pcr/m/n/10 ppl[][][][]Double[][][][]Box[][][]simplify[][][]using[][][]co ntext[][][]assign(+[]Handle[][][]1, +[]Handle[][][]2, ?Boolean) @@ -8490,7 +8905,7 @@ Overfull \hbox (15.79532pt too wide) in paragraph at lines 4302--4304 []\OT1/pcr/m/n/10 ppl[][][][]Double[][][][]Box[][][]limited[][][][]C[]C76[][][] extrapolation[][][]assign[][][]with[][][]tokens(+[]Handle[][][]1, +[] -[121]]) [24] (./group__Timeout.tex +[121] Overfull \hbox (12.19531pt too wide) in paragraph at lines 4305--4307 []\OT1/pcr/m/n/10 ppl[][][][]Double[][][][]Box[][][]limited[][][][]C[]C76[][][] extrapolation[][][]assign(+[]Handle[][][]1, +[]Handle[][][]2, +[] @@ -8515,29 +8930,48 @@ Underfull \hbox (badness 10000) in paragraph at lines 4382--4383 [123] +Overfull \hbox (19.30246pt too wide) in paragraph at lines 193--195 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]drop[] +[][]some[][][]non[][][]integer[][][]points[][][]2[][] ([][]ppl[][][][]B[]D[][][ +][]Shape[][][]double[][][]t[][] ph, [][]ppl[][][]dimension[] -Package longtable Warning: Column widths have changed -(longtable) in table 2 on input line 36. +Overfull \hbox (1.86237pt too wide) in paragraph at lines 201--203 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][][]H79[ +][][]widening[][][]assign[][][]with[][][]tokens[][] ([][]ppl[][][][]B[]D[][][][ +]Shape[][][]double[][][]t[][] x, [][]ppl[][][]const[] +Overfull \hbox (6.40245pt too wide) in paragraph at lines 209--211 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]wideni +ng[][][]assign[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]t[][] x, +[][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]double[] -Underfull \hbox (badness 10000) detected at line 47 -[][][] +Overfull \hbox (15.58176pt too wide) in paragraph at lines 211--213 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]limite +d[][][][]B[]H[]M[]Z05[][][]extrapolation[][][]assign[][][]with[][][]tokens[][] +([][]ppl[][][][]B[]D[][][][]Shape[][][]double[] -Overfull \hbox (4.67143pt too wide) in paragraph at lines 48--49 -[]\OT1/pcr/m/n/10 P[]P[]L[][][][]E[]R[]R[]O[]R[][][][]I[]N[]V[]A[]L[]I[]D[][][] -[]A[]R[]G[]U[]M[]E[]NT \OT1/ptm/bc/n/10 if \OT1/pcr/m/n/10 unscaled[][][]weight - \OT1/ptm/bc/n/10 is zero or if the com-puted weight thresh- +Overfull \hbox (4.3319pt too wide) in paragraph at lines 221--223 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]limite +d[][][][]C[]C76[][][]extrapolation[][][]assign[][] ([][]ppl[][][][]B[]D[][][][] +Shape[][][]double[][][]t[][] x, [][]ppl[][][]const[] -Package longtable Warning: Column widths have changed -(longtable) in table 3 on input line 56. +Overfull \hbox (6.15248pt too wide) in paragraph at lines 227--229 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][][]C[]C +76[][][]narrowing[][][]assign[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]double +[][][]t[][] x, [][]ppl[][][]const[][][][]B[]D[][][][]Shape[] -[25] -Underfull \hbox (badness 10000) detected at line 59 -[][][] +Overfull \hbox (26.84183pt too wide) in paragraph at lines 233--235 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][ +][]recycle[][][][]Constraint[][][][]System[][] ([][]ppl[][][][]B[]D[][][][]Shap +e[][][]double[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][ +][][]Constraint[] -Underfull \hbox (badness 10000) detected at line 62 -[][][] -) [26] +Overfull \hbox (23.46225pt too wide) in paragraph at lines 237--239 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][ +][]recycle[][][][]Generator[][][][]System[][] ([][]ppl[][][][]B[]D[][][][]Shape +[][][]double[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][] +[][]Generator[] +[40] Overfull \hbox (13.39532pt too wide) in paragraph at lines 4406--4408 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[] [][][]Octagonal[][][][]Shape[][][]mpz[][][]class(+[]Handle[][][]1, -[]Handle[] @@ -8594,7 +9028,7 @@ Overfull \hbox (4.99533pt too wide) in paragraph at lines 4442--4444 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[] [][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]with[][][]complexity(+[] -[124 (./group__Datatypes.tex] +[124] Overfull \hbox (30.81381pt too wide) in paragraph at lines 4445--4447 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[] [][][]Double[][][][]Box[][][]with[][][]complexity(+[]Handle, +[]Complexity, @@ -8662,6 +9096,36 @@ []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]maximize[][][]w ith[][][]point(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[][][]1, ?Coeff[] [126] +Overfull \hbox (1.78282pt too wide) in paragraph at lines 243--245 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]add[][ +][]recycled[][][]congruences[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]double[ +][][]t[][] ph, [][]ppl[][][][]Congruence[] + +Overfull \hbox (5.03233pt too wide) in paragraph at lines 249--251 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]one[][][]affine[][][]ranking[][][]function[ +][][][]M[]S[][][][]B[]D[][][][]Shape[][][]double[][] ([][]ppl[][][]const[][][][ +]B[]D[][][][]Shape[][][]double[][][]t[][] pset, [][]ppl[] + +Overfull \hbox (2.81236pt too wide) in paragraph at lines 251--253 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]one[][][]affine[][][]ranking[][][]function[ +][][][]P[]R[][][][]B[]D[][][][]Shape[][][]double[][] ([][]ppl[][][]const[][][][ +]B[]D[][][][]Shape[][][]double[][][]t[][] pset, [][]ppl[] + +Overfull \hbox (4.48201pt too wide) in paragraph at lines 253--255 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]all[][][]affine[][][]ranking[][][]functions +[][][][]M[]S[][][][]B[]D[][][][]Shape[][][]double[][] ([][]ppl[][][]const[][][] +[]B[]D[][][][]Shape[][][]double[][][]t[][] pset, [][]ppl[] + +Overfull \hbox (2.26204pt too wide) in paragraph at lines 255--257 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]all[][][]affine[][][]ranking[][][]functions +[][][][]P[]R[][][][]B[]D[][][][]Shape[][][]double[][] ([][]ppl[][][]const[][][] +[]B[]D[][][][]Shape[][][]double[][][]t[][] pset, [][]ppl[] + +Overfull \hbox (20.41179pt too wide) in paragraph at lines 295--296 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ +][][]space[][][]dimension()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[]D[][][] +[]Shape[][][]double[][][]from[][][]space[][][]dimension +[41 Overfull \hbox (36.19531pt too wide) in paragraph at lines 4555--4557 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]minimize[][][]w ith[][][]point(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[][][]1, ?Coeff[] @@ -8674,17 +9138,7 @@ Overfull \hbox (11.6138pt too wide) in paragraph at lines 4597--4599 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]refine[][][]wit h[][][]constraints( +[]Handle, +[]Constraint[][][][]System) -[127] -Overfull \hbox (3.74069pt too wide) in paragraph at lines 43--45 -[][] \OT1/ptm/bc/n/10 type-def struct [][]ppl[][][][]Constraint[][][][]System[] -[][]const[][][]iterator[][][]tag[][] const $\OMS/cmsy/m/n/10 ^^C$ [][]\OT1/ptm/ -bc/n/10 ppl[][][]const[][][][]Constraint[][][][]System[][][]const[] - -Overfull \hbox (0.36111pt too wide) in paragraph at lines 61--63 -[][] \OT1/ptm/bc/n/10 type-def struct [][]ppl[][][][]Generator[][][][]System[][ -][]const[][][]iterator[][][]tag[][] const $\OMS/cmsy/m/n/10 ^^C$ [][]\OT1/ptm/b -c/n/10 ppl[][][]const[][][][]Generator[][][][]System[][][]const[] -[27] +[127]] Overfull \hbox (11.6138pt too wide) in paragraph at lines 4600--4602 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]refine[][][]wit h[][][]congruences( +[]Handle, +[]Congruence[][][][]System) @@ -8738,16 +9192,41 @@ []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][][]B[]H[]M[]Z05[ ][][]widening[][][]assign[][][]with[][][]tokens(+[]Handle[][][]1, +[]Handle[] [129 -Overfull \hbox (1.80132pt too wide) in paragraph at lines 76--78 -[][] \OT1/ptm/bc/n/10 type-def struct [][]ppl[][][][]Congruence[][][][]System[] -[][]const[][][]iterator[][][]tag[][] $\OMS/cmsy/m/n/10 ^^C$ [][]\OT1/ptm/bc/n/1 -0 ppl[][][][]Congruence[][][][]System[][][]const[][][]iterator[] +Overfull \hbox (4.67235pt too wide) in paragraph at lines 301--302 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ +][][][]C[][][][]Polyhedron()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[]D[][][ +][]Shape[][][]double[][][]from[][][][]C[][][][]Polyhedron ( -Overfull \hbox (16.4409pt too wide) in paragraph at lines 139--141 -[][] \OT1/ptm/bc/n/10 type-def struct ppl[][][][]Artificial[][][][]Parameter[][ -][][]Sequence[][][]tag const $\OMS/cmsy/m/n/10 ^^C$ [][]\OT1/ptm/bc/n/10 ppl[][ -][]const[][][][]Artificial[][][][]Parameter[][][][]Sequence[] -[28]] +Overfull \hbox (19.11229pt too wide) in paragraph at lines 307--308 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ +][][][]N[]N[]C[][][][]Polyhedron()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[] +D[][][][]Shape[][][]double[][][]from[][][][]N[]N[]C[][][][]Polyhedron + +Overfull \hbox (1.72226pt too wide) in paragraph at lines 319--320 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ +][][][]Rational[][][][]Box()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[]D[][][ +][]Shape[][][]double[][][]from[][][][]Rational[][][][]Box ( + +Overfull \hbox (14.10329pt too wide) in paragraph at lines 325--326 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ +][][][]B[]D[][][][]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 int ppl[][][]ne +w[][][][]B[]D[][][][]Shape[][][]double[][][]from[][][][]B[]D[][][][]Shape[] + +Overfull \hbox (15.22328pt too wide) in paragraph at lines 331--332 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ +][][][]B[]D[][][][]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 int ppl[][][]ne +w[][][][]B[]D[][][][]Shape[][][]double[][][]from[][][][]B[]D[][][][]Shape[] + +Overfull \hbox (4.74298pt too wide) in paragraph at lines 337--338 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ +][][][]Octagonal[][][][]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 int ppl[][ +][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[] + +Overfull \hbox (5.86298pt too wide) in paragraph at lines 343--344 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ +][][][]Octagonal[][][][]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 int ppl[][ +][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[] +[42]] Overfull \hbox (1.39532pt too wide) in paragraph at lines 4675--4677 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][][]H79[][][]wide ning[][][]assign[][][]with[][][]tokens(+[]Handle[][][]1, +[]Handle[][][] @@ -8779,18 +9258,7 @@ Overfull \hbox (12.19531pt too wide) in paragraph at lines 4705--4707 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]limited[][][][] C[]C76[][][]extrapolation[][][]assign(+[]Handle[][][]1, +[]Handle[] -[130 -Overfull \hbox (27.11154pt too wide) in paragraph at lines 190--192 -[][] \OT1/ptm/bc/n/10 type-def struct [][]ppl[][][][]Constraints[][][][]Product -[][][][]C[][][][]Polyhedron[][][][]Grid[][][]tag[][] $\OMS/cmsy/m/n/10 ^^C$ [][ -]\OT1/ptm/bc/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhed -ron[] - -Overfull \hbox (14.85136pt too wide) in paragraph at lines 193--195 -[][] \OT1/ptm/bc/n/10 type-def struct [][]ppl[][][][]Constraints[][][][]Product -[][][][]C[][][][]Polyhedron[][][][]Grid[][][]tag[][] const $\OMS/cmsy/m/n/10 ^^ -C$ [][]\OT1/ptm/bc/n/10 ppl[][][]const[][][][]Constraints[][][][]Product[] -[29]] +[130] Overfull \hbox (0.19531pt too wide) in paragraph at lines 4724--4726 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]add[][][]space[ ][][]dimensions[][][]and[][][]embed(+[]Handle, +[]Dimension[] @@ -8810,34 +9278,47 @@ Overfull \hbox (3.79532pt too wide) in paragraph at lines 4739--4741 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]fold[][][]space [][][]dimensions(+[]Handle, +[]List[][][]of[][][][]P[]P[]L[][][][]Vars, +[] -[131] -Overfull \hbox (18.00154pt too wide) in paragraph at lines 202--204 -[][] \OT1/ptm/bc/n/10 type-def struct [][]ppl[][][][]Pointset[][][][]Powerset[] -[][][]N[]N[]C[][][][]Polyhedron[][][]tag[][] $\OMS/cmsy/m/n/10 ^^C$ [][]\OT1/pt -m/bc/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Polyhedron[ -] +[131 +Overfull \hbox (1.07347pt too wide) in paragraph at lines 355--356 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ +][][][]B[]D[][][][]Shape[][][]double()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][ +]B[]D[][][][]Shape[][][]double[][][]from[][][][]B[]D[][][][]Shape[] -Overfull \hbox (21.60114pt too wide) in paragraph at lines 226--228 -[][] \OT1/ptm/bc/n/10 type-def struct [][]ppl[][][][]Pointset[][][][]Powerset[] -[][][]C[][][][]Polyhedron[][][]iterator[][][]tag[][] $\OMS/cmsy/m/n/10 ^^C$ [][ -]\OT1/ptm/bc/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro -n[] +Overfull \hbox (37.7932pt too wide) in paragraph at lines 361--362 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ +][][][]Octagonal[][][][]Shape[][][]double()[] \OT1/pcr/m/n/8 int ppl[][][]new[] +[][][]B[]D[][][][]Shape[][][]double[][][]from[][][][]Octagonal[] -Overfull \hbox (9.34096pt too wide) in paragraph at lines 229--231 -[][] \OT1/ptm/bc/n/10 type-def struct [][]ppl[][][][]Pointset[][][][]Powerset[] -[][][]C[][][][]Polyhedron[][][]iterator[][][]tag[][] const $\OMS/cmsy/m/n/10 ^^ -C$ [][]\OT1/ptm/bc/n/10 ppl[][][]const[][][][]Pointset[][][][]Powerset[] +Overfull \hbox (18.24309pt too wide) in paragraph at lines 367--368 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ +][][][]C[][][][]Polyhedron[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl +[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[] -Overfull \hbox (0.77115pt too wide) in paragraph at lines 244--246 -[][] \OT1/ptm/bc/n/10 type-def struct [][]ppl[][][][]Pointset[][][][]Powerset[] -[][][]N[]N[]C[][][][]Polyhedron[][][]const[][][]iterator[][][]tag[][] $\OMS/cms -y/m/n/10 ^^C$ [][]\OT1/ptm/bc/n/10 ppl[][][][]Pointset[][][][]Powerset[] +Overfull \hbox (10.60301pt too wide) in paragraph at lines 373--374 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ +][][][]N[]N[]C[][][][]Polyhedron[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 i +nt ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[] -Overfull \hbox (8.4811pt too wide) in paragraph at lines 247--249 -[][] \OT1/ptm/bc/n/10 type-def struct [][]ppl[][][][]Pointset[][][][]Powerset[] -[][][]N[]N[]C[][][][]Polyhedron[][][]const[][][]iterator[][][]tag[][] const $\O -MS/cmsy/m/n/10 ^^C$ [][]\OT1/ptm/bc/n/10 ppl[][][]const[][][][]Pointset[] -[30] +Overfull \hbox (0.9931pt too wide) in paragraph at lines 379--380 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ +][][][]Grid[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][] +[]B[]D[][][][]Shape[][][]double[][][]from[][][][]Grid[] + +Overfull \hbox (15.293pt too wide) in paragraph at lines 385--386 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ +][][][]Rational[][][][]Box[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl +[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[] + +Overfull \hbox (25.41252pt too wide) in paragraph at lines 391--392 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ +][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]with[][][]complexity()[] \OT1 +/pcr/m/n/8 int ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[] + +Overfull \hbox (26.53252pt too wide) in paragraph at lines 397--398 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ +][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]with[][][]complexity()[] \OT1 +/pcr/m/n/8 int ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[] +[43]] Overfull \hbox (0.19531pt too wide) in paragraph at lines 4761--4763 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]double[][][]f rom[][][]space[][][]dimension(+[]Dimension[][][][]Type, +[] @@ -8928,7 +9409,42 @@ []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]double[][][]f rom[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]with[][][]complexity (+[] -[133] [31] +[133 +Overfull \hbox (23.73222pt too wide) in paragraph at lines 403--404 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ +][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]with[][][]complexity()[] + \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[]D[][][][]Shape[] + +Overfull \hbox (0.8522pt too wide) in paragraph at lines 409--410 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ +][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]with[][][]complexity()[] + \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[]D[][][] + +Overfull \hbox (9.18303pt too wide) in paragraph at lines 415--416 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ +][][][]Double[][][][]Box[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[] +[][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[] + +Overfull \hbox (12.3827pt too wide) in paragraph at lines 421--422 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ +][][][]B[]D[][][][]Shape[][][]double[][][]with[][][]complexity()[] \OT1/pcr/m/n +/8 int ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[] + +Overfull \hbox (10.70241pt too wide) in paragraph at lines 427--428 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ +][][][]Octagonal[][][][]Shape[][][]double[][][]with[][][]complexity()[] \OT1/pc +r/m/n/8 int ppl[][][]new[][][][]B[]D[][][][]Shape[] + +Overfull \hbox (16.74335pt too wide) in paragraph at lines 433--434 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ +][][][]Constraint[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[]D +[][][][]Shape[][][]double[][][]from[][][][]Constraint[] + +Overfull \hbox (22.29341pt too wide) in paragraph at lines 439--440 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ +][][][]Congruence[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[]D +[][][][]Shape[][][]double[][][]from[][][][]Congruence[] +[44]] Overfull \hbox (15.79532pt too wide) in paragraph at lines 4845--4847 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]double[][][]f rom[][][][]Double[][][][]Box[][][]with[][][]complexity(+[]Handle, +[] @@ -8993,6 +9509,36 @@ []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]minimize(+ []Handle, +[]Lin[][][][]Expr, ?Coeff[][][]1, ?Coeff[] [135] +Overfull \hbox (10.26341pt too wide) in paragraph at lines 445--446 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ +][][][]Generator[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[]D[ +][][][]Shape[][][]double[][][]from[][][][]Generator[] + +Overfull \hbox (11.51178pt too wide) in paragraph at lines 463--464 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]relation[][][] +with[][][][]Constraint()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][ +]double[][][]relation[][][]with[][][][]Constraint + +Overfull \hbox (5.03185pt too wide) in paragraph at lines 469--470 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]relation[][][] +with[][][][]Generator()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][] +double[][][]relation[][][]with[][][][]Generator + +Overfull \hbox (17.06184pt too wide) in paragraph at lines 475--476 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]relation[][][] +with[][][][]Congruence()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][ +]double[][][]relation[][][]with[][][][]Congruence + +Overfull \hbox (23.1515pt too wide) in paragraph at lines 493--494 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]get[][][]minim +ized[][][]constraints()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][] +double[][][]get[][][]minimized[][][]constraints + +Overfull \hbox (28.70157pt too wide) in paragraph at lines 499--500 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]get[][][]minim +ized[][][]congruences()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][] +double[][][]get[][][]minimized[][][]congruences +[45 Overfull \hbox (20.5953pt too wide) in paragraph at lines 4950--4952 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]maximize[] [][]with[][][]point(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[] @@ -9008,7 +9554,7 @@ Overfull \hbox (8.0138pt too wide) in paragraph at lines 4988--4990 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]add[][][]c ongruences( +[]Handle, +[]Congruence[][][][]System) -[136] +[136]] Overfull \hbox (8.0138pt too wide) in paragraph at lines 4991--4993 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]refine[][] []with[][][]constraint( +[]Handle, +[]Constraint) @@ -9058,20 +9604,6 @@ []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]generalize d[][][]affine[][][]image(+[]Handle, +[]P[]P[]L[][][][]Var, +[] [137] -Underfull \hbox (badness 10000) detected at line 351 -[][][] - -Overfull \hbox (27.05392pt too wide) in paragraph at lines 361--362 - []\OT1/ptm/b/n/10 ppl[][][]io[][][]variable[][][]output[][][]function[][][]typ -e[] \OT1/pcr/m/n/8 typedef const char$\OMS/cmsy/m/n/8 ^^C$ \OT1/pcr/m/n/8 ppl[] -[][]io[][][]variable[][][]output[][][]function[][][]type([][]ppl[] - -Package longtable Warning: Column widths have changed -(longtable) in table 4 on input line 401. - - -Overfull \vbox (4.91087pt too high) has occurred while \output is active -[32 Overfull \hbox (11.6138pt too wide) in paragraph at lines 5031--5033 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]generalize d[][][]affine[][][]preimage(+[]Handle, +[]P[]P[]L[][][][]Var, @@ -9095,7 +9627,22 @@ Overfull \hbox (30.19531pt too wide) in paragraph at lines 5062--5064 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]simplify[] [][]using[][][]context[][][]assign(+[]Handle[][][]1, +[]Handle[] -[138]] +[138 +Overfull \hbox (1.1418pt too wide) in paragraph at lines 523--524 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]contains[][][] +integer[][][]point()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]dou +ble[][][]contains[][][]integer[][][]point ( + +Overfull \hbox (5.39171pt too wide) in paragraph at lines 529--530 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]is[][][]topolo +gically[][][]closed()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]do +uble[][][]is[][][]topologically[][][]closed ( + +Overfull \hbox (3.42314pt too wide) in paragraph at lines 541--542 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]topological[][ +][]closure[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][ +]double[][][]topological[][][]closure[] +[46]] Overfull \hbox (20.5953pt too wide) in paragraph at lines 5065--5067 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]linear[][] []partition(+[]Handle[][][]1, +[]Handle[][][]2, -[]Handle[] @@ -9147,7 +9694,27 @@ Overfull \hbox (0.19531pt too wide) in paragraph at lines 5127--5129 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]fold[][][] space[][][]dimensions(+[]Handle, +[]List[][][]of[][][][]P[]P[]L[] -) (./PI_Compilation.tex [140]) (./PI_SD_Features.tex [141] [142] +) (./PI_Compilation.tex +Overfull \hbox (19.51176pt too wide) in paragraph at lines 589--590 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]contains[][][] +[]B[]D[][][][]Shape[][][]double()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]S +hape[][][]double[][][]contains[][][][]B[]D[][][][]Shape[][][]double + +Overfull \hbox (32.32272pt too wide) in paragraph at lines 595--596 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]strictly[][][] +contains[][][][]B[]D[][][][]Shape[][][]double()[] \OT1/pcr/m/n/8 int ppl[][][][ +]B[]D[][][][]Shape[][][]double[][][]strictly[][][]contains[] + +Overfull \hbox (1.39285pt too wide) in paragraph at lines 601--602 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]is[][][]disjoi +nt[][][]from[][][][]B[]D[][][][]Shape[][][]double()[] \OT1/pcr/m/n/8 int ppl[][ +][][]B[]D[][][][]Shape[][][]double[][][]is[][][]disjoint[] + +Overfull \hbox (1.5818pt too wide) in paragraph at lines 607--608 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]equals[][][][] +B[]D[][][][]Shape[][][]double()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sha +pe[][][]double[][][]equals[][][][]B[]D[][][][]Shape[][][]double +[47 [140]]) (./PI_SD_Features.tex [141] [142] Overfull \hbox (30.3312pt too wide) in paragraph at lines 86--87 []\OT1/ptm/m/n/10 Notice that, for dy-namic link-ing to work, you should have c on-fig-ured the li-brary with the \OT1/pcr/m/n/10 --enable-shared @@ -9164,7 +9731,22 @@ LaTeX Warning: Reference `group__PPL__Prolog__interface' on page 143 undefined on input line 3. -) (./group__PPL__Prolog__interface.tex) [143] [144] +) (./group__PPL__Prolog__interface.tex +Overfull \hbox (5.39195pt too wide) in paragraph at lines 649--650 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]refine[][][]wi +th[][][]congruence()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]dou +ble[][][]refine[][][]with[][][]congruence ( + +Overfull \hbox (8.53178pt too wide) in paragraph at lines 655--656 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]refine[][][]wi +th[][][]constraints()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]do +uble[][][]refine[][][]with[][][]constraints ( + +Overfull \hbox (4.48184pt too wide) in paragraph at lines 661--662 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]refine[][][]wi +th[][][]congruences()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]do +uble[][][]refine[][][]with[][][]congruences +[48) [143]] [144] No file refman.ind. (./refman.aux) @@ -9190,52 +9772,129 @@ e/texlive/texmf-dist/fonts/type1/urw/courier/ucrb8a.pfb>] -Output written on refman.pdf (150 pages, 754169 bytes). +Output written on refman.pdf (150 pages, 754118 bytes). Transcript written on refman.log. makeindex refman.idx +Overfull \hbox (9.50198pt too wide) in paragraph at lines 745--746 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]bounded[][][]a +ffine[][][]preimage()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]do +uble[][][]bounded[][][]affine[][][]preimage -Package longtable Warning: Column widths have changed -(longtable) in table 5 on input line 429. - +Overfull \hbox (11.68184pt too wide) in paragraph at lines 751--752 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]generalized[][ +][]affine[][][]image()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]d +ouble[][][]generalized[][][]affine[][][]image -Package longtable Warning: Column widths have changed -(longtable) in table 6 on input line 453. +Overfull \hbox (8.04321pt too wide) in paragraph at lines 757--758 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]generalized[][ +][]affine[][][]preimage()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][] +[]double[][][]generalized[][][]affine[] +[50]This is makeindex, version 2.15 [TeX Live 2019/dev] (kpathsea + Thai support). +Scanning input file refman.idx....done (1 entries accepted, 0 rejected). +Sorting entries...done (0 comparisons). +Generating output file refman.ind....done (5 lines written, 0 warnings). +Output written in refman.ind. +Transcript written in refman.ilg. +pdflatex refman +Overfull \hbox (27.10283pt too wide) in paragraph at lines 763--764 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]generalized[][ +][]affine[][][]image[][][]lhs[][][]rhs()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[] +[][][]Shape[][][]double[][][]generalized[][][]affine[] -Package longtable Warning: Column widths have changed -(longtable) in table 7 on input line 485. +Overfull \hbox (9.6827pt too wide) in paragraph at lines 769--770 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]generalized[][ +][]affine[][][]preimage[][][]lhs[][][]rhs()[] \OT1/pcr/m/n/8 int ppl[][][][]B[] +D[][][][]Shape[][][]double[][][]generalized[] +Overfull \hbox (42.03287pt too wide) in paragraph at lines 775--776 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]add[][][]space +[][][]dimensions[][][]and[][][]embed()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][] +[][]Shape[][][]double[][][]add[][][]space[][][]dimensions[] -Overfull \hbox (19.9918pt too wide) in paragraph at lines 490--491 - []\OT1/ptm/b/n/10 ppl[][][]enum[][][][]Bounded[][][][]Integer[][][][]Type[][][ -][]Representation[] \OT1/pcr/m/n/8 enum [][]ppl[][][]enum[][][][]Bounded[][][][ -]Integer[][][][]Type[][][][]Representation[][] +Overfull \hbox (44.0629pt too wide) in paragraph at lines 781--782 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]add[][][]space +[][][]dimensions[][][]and[][][]project()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[] +[][][]Shape[][][]double[][][]add[][][]space[][][]dimensions[] -Package longtable Warning: Column widths have changed -(longtable) in table 8 on input line 505. +Overfull \hbox (10.95177pt too wide) in paragraph at lines 787--788 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]remove[][][]sp +ace[][][]dimensions()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]do +uble[][][]remove[][][]space[][][]dimensions +Overfull \hbox (5.2329pt too wide) in paragraph at lines 793--794 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]remove[][][]hi +gher[][][]space[][][]dimensions()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]S +hape[][][]double[][][]remove[][][]higher[] -Underfull \vbox (badness 3746) has occurred while \output is active [33This is makeindex, version 2.15 [TeX Live 2019/dev] (kpathsea + Thai support). -Scanning input file refman.idx....done (1 entries accepted, 0 rejected). -Sorting entries...done (0 comparisons). -Generating output file refman.ind....done (5 lines written, 0 warnings). -Output written in refman.ind. -Transcript written in refman.ilg. -pdflatex refman -This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2019/dev/Debian) (preloaded format=pdflatex) +Overfull \hbox (2.11176pt too wide) in paragraph at lines 799--800 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]expand[][][]sp +ace[][][]dimension()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]dou +ble[][][]expand[][][]space[][][]dimension +[51This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2019/dev/Debian) (preloaded format=pdflatex) restricted \write18 enabled. -entering extended mode +]entering extended mode (./refman.tex LaTeX2e <2018-12-01> (/usr/share/texlive/texmf-dist/tex/latex/base/article.cls Document Class: article 2018/09/03 v1.4i Standard LaTeX document class -(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo)) +(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo) +Overfull \hbox (27.4932pt too wide) in paragraph at lines 817--818 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]drop[][][]some +[][][]non[][][]integer[][][]points()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][] +[]Shape[][][]double[][][]drop[][][]some[][][]non[][][]integer[] + +Overfull \hbox (2.49318pt too wide) in paragraph at lines 823--824 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]drop[][][]some +[][][]non[][][]integer[][][]points[][][]2()[] \OT1/pcr/m/n/8 int ppl[][][][]B[] +D[][][][]Shape[][][]double[][][]drop[][][]some[][][]non[][][] + +Overfull \hbox (0.96347pt too wide) in paragraph at lines 829--830 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]external[][][] +memory[][][]in[][][]bytes()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[] +[][]double[][][]external[][][]memory[][][]in[][][] + +Overfull \hbox (2.0126pt too wide) in paragraph at lines 841--842 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][][]B[]H[]M[]Z05 +[][][]widening[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/m/n/8 int ppl[][] +[][]B[]D[][][][]Shape[][][]double[][][][]B[]H[]M[]Z05[][][] + +Overfull \hbox (3.23283pt too wide) in paragraph at lines 847--848 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][][]H79[][][]wid +ening[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[ +][][][]Shape[][][]double[][][][]H79[][][]widening[] + +Overfull \hbox (9.3417pt too wide) in paragraph at lines 853--854 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][][]B[]H[]M[]Z05 +[][][]widening[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[ +][][]double[][][][]B[]H[]M[]Z05[][][]widening[][][]assign +[52) (/usr/share/texlive/texmf-dist/tex/latex/a4wide/a4wide.sty -(/usr/share/texlive/texmf-dist/tex/latex/ntgclass/a4.sty)) +(/usr/share/texlive/texmf-dist/tex/latex/ntgclass/a4.sty))] (/usr/share/texlive/texmf-dist/tex/latex/base/makeidx.sty) (/usr/share/texlive/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty) (/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty @@ -9246,9 +9905,34 @@ (/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def))) (/usr/share/texlive/texmf-dist/tex/latex/tools/multicol.sty) (/usr/share/texlive/texmf-dist/tex/latex/float/float.sty) -(/usr/share/texlive/texmf-dist/tex/latex/base/textcomp.sty] +(/usr/share/texlive/texmf-dist/tex/latex/base/textcomp.sty +Overfull \hbox (18.33296pt too wide) in paragraph at lines 865--866 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]widening[][][] +assign[][][]with[][][]tokens()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shap +e[][][]double[][][]widening[][][]assign[][][]with[] + +Overfull \hbox (19.372pt too wide) in paragraph at lines 877--878 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]limited[][][][ +]B[]H[]M[]Z05[][][]extrapolation[][][]assign[][][]with[][][]tokens()[] \OT1/pcr +/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]double[] + +Overfull \hbox (33.07224pt too wide) in paragraph at lines 883--884 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]limited[][][][ +]H79[][][]extrapolation[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/m/n/8 in +t ppl[][][][]B[]D[][][][]Shape[][][]double[][][]limited[] + +Overfull \hbox (3.25226pt too wide) in paragraph at lines 889--890 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]limited[][][][ +]C[]C76[][][]extrapolation[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/m/n/8 + int ppl[][][][]B[]D[][][][]Shape[][][]double[] + +Overfull \hbox (2.08258pt too wide) in paragraph at lines 895--896 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]limited[][][][ +]B[]H[]M[]Z05[][][]extrapolation[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][] +B[]D[][][][]Shape[][][]double[][][]limited[] +[53 (/usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.def -(/usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.dfu))) +(/usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.dfu]))) (/usr/share/texlive/texmf-dist/tex/latex/base/alltt.sty) (/usr/share/texlive/texmf-dist/tex/latex/psnfss/times.sty) (/usr/share/texlive/texmf-dist/tex/latex/tocloft/tocloft.sty) @@ -9256,31 +9940,135 @@ (/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty (/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg) (/usr/share/texlive/texmf-dist/tex/latex/colortbl/colortbl.sty -(/usr/share/texlive/texmf-dist/tex/latex/tools/array.sty))) +(/usr/share/texlive/texmf-dist/tex/latex/tools/array.sty) +Overfull \hbox (61.86285pt too wide) in paragraph at lines 901--902 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]limited[][][][ +]H79[][][]extrapolation[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][ +][]Shape[][][]double[][][]limited[][][][]H79[][][]extrapolation[] + +Overfull \hbox (8.04286pt too wide) in paragraph at lines 907--908 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]limited[][][][ +]C[]C76[][][]extrapolation[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[] +[][][]Shape[][][]double[][][]limited[][][][]C[]C76[] + +Overfull \hbox (57.01285pt too wide) in paragraph at lines 913--914 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][][]C[]C76[][][] +extrapolation[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/m/n/8 int ppl[][][ +][]B[]D[][][][]Shape[][][]double[][][][]C[]C76[][][]extrapolation[] + +Overfull \hbox (3.24341pt too wide) in paragraph at lines 919--920 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][][]C[]C76[][][] +extrapolation[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[] +[][]double[][][][]C[]C76[][][]extrapolation[] + +Overfull \hbox (3.84216pt too wide) in paragraph at lines 925--926 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][][]C[]C76[][][] +narrowing[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][] +double[][][][]C[]C76[][][]narrowing[][][]assign ( + +Overfull \hbox (40.0231pt too wide) in paragraph at lines 943--944 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]recyc +le[][][][]Constraint[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B +[]D[][][][]Shape[][][]double[][][]recycle[][][][]Constraint[] +[54)]) (/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty (/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty)) +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty +Overfull \hbox (45.57317pt too wide) in paragraph at lines 949--950 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]recyc +le[][][][]Congruence[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B +[]D[][][][]Shape[][][]double[][][]recycle[][][][]Congruence[] + +Overfull \hbox (33.54317pt too wide) in paragraph at lines 955--956 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]recyc +le[][][][]Generator[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[ +]D[][][][]Shape[][][]double[][][]recycle[][][][]Generator[] + +Overfull \hbox (0.37323pt too wide) in paragraph at lines 961--962 + []\OT1/ptm/b/n/10 ppl[][][]assign[][][][]B[]D[][][][]Shape[][][]double[][][]fr +om[][][][]B[]D[][][][]Shape[][][]double()[] \OT1/pcr/m/n/8 int ppl[][][]assign[ +][][][]B[]D[][][][]Shape[][][]double[][][]from[][][][]B[]D[][][] + +Overfull \hbox (12.06174pt too wide) in paragraph at lines 967--968 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]add[][][]recyc +led[][][]constraints()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]d +ouble[][][]add[][][]recycled[][][]constraints + +Overfull \hbox (17.6118pt too wide) in paragraph at lines 973--974 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]add[][][]recyc +led[][][]congruences()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]d +ouble[][][]add[][][]recycled[][][]congruences + +Overfull \hbox (2.01312pt too wide) in paragraph at lines 991--992 + []\OT1/ptm/b/n/10 ppl[][][]one[][][]affine[][][]ranking[][][]function[][][][]M +[]S[][][][]B[]D[][][][]Shape[][][]double()[] \OT1/pcr/m/n/8 int ppl[][][]one[][ +][]affine[][][]ranking[][][]function[][][][]M[] + +Overfull \hbox (0.3432pt too wide) in paragraph at lines 997--998 + []\OT1/ptm/b/n/10 ppl[][][]one[][][]affine[][][]ranking[][][]function[][][][]P +[]R[][][][]B[]D[][][][]Shape[][][]double()[] \OT1/pcr/m/n/8 int ppl[][][]one[][ +][]affine[][][]ranking[][][]function[][][][]P[] +[55)]) (/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/auxhook.sty) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty) (/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def) -Underfull \hbox (badness 10000) detected at line 534 -[][][] +Overfull \hbox (1.46292pt too wide) in paragraph at lines 1003--1004 + []\OT1/ptm/b/n/10 ppl[][][]all[][][]affine[][][]ranking[][][]functions[][][][] +M[]S[][][][]B[]D[][][][]Shape[][][]double()[] \OT1/pcr/m/n/8 int ppl[][][]all[] +[][]affine[][][]ranking[][][]functions[][][] -Package longtable Warning: Column widths have changed -(longtable) in table 9 on input line 534. +Overfull \hbox (4.593pt too wide) in paragraph at lines 1009--1010 + []\OT1/ptm/b/n/10 ppl[][][]all[][][]affine[][][]ranking[][][]functions[][][][] +P[]R[][][][]B[]D[][][][]Shape[][][]double()[] \OT1/pcr/m/n/8 int ppl[][][]all[] +[][]affine[][][]ranking[][][]functions[][][][]P[] +Overfull \hbox (2.93312pt too wide) in paragraph at lines 1027--1028 + []\OT1/ptm/b/n/10 ppl[][][]one[][][]affine[][][]ranking[][][]function[][][][]M +[]S[][][][]B[]D[][][][]Shape[][][]double[][][]2()[] \OT1/pcr/m/n/8 int ppl[][][ +]one[][][]affine[][][]ranking[][][]function[] -Package longtable Warning: Column widths have changed -(longtable) in table 10 on input line 558. +Overfull \hbox (1.2632pt too wide) in paragraph at lines 1033--1034 + []\OT1/ptm/b/n/10 ppl[][][]one[][][]affine[][][]ranking[][][]function[][][][]P +[]R[][][][]B[]D[][][][]Shape[][][]double[][][]2()[] \OT1/pcr/m/n/8 int ppl[][][ +]one[][][]affine[][][]ranking[][][]function[] +Overfull \hbox (7.18292pt too wide) in paragraph at lines 1039--1040 + []\OT1/ptm/b/n/10 ppl[][][]all[][][]affine[][][]ranking[][][]functions[][][][] +M[]S[][][][]B[]D[][][][]Shape[][][]double[][][]2()[] \OT1/pcr/m/n/8 int ppl[][] +[]all[][][]affine[][][]ranking[][][]functions[] -Underfull \hbox (badness 10000) detected at line 559 -[][][] -) -(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/hyperref.cfg [34) -(/usr/share/texlive/texmf-dist/tex/latex/hyperref/puenc.def] -(./interfaceppl__Artificial__Parameter__Sequence__const__iterator__tag.tex) +Overfull \hbox (5.513pt too wide) in paragraph at lines 1045--1046 + []\OT1/ptm/b/n/10 ppl[][][]all[][][]affine[][][]ranking[][][]functions[][][][] +P[]R[][][][]B[]D[][][][]Shape[][][]double[][][]2()[] \OT1/pcr/m/n/8 int ppl[][] +[]all[][][]affine[][][]ranking[][][]functions[] +[56] +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/hyperref.cfg)) (./interfaceppl__BD__Shape__mpq__class__tag.tex +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/puenc.def +Overfull \hbox (5.86221pt too wide) in paragraph at lines 19--21 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][] +class[][][]from[][][][]C[][][][]Polyhedron[][] ([][]ppl[][][][]B[]D[][][][]Shap +e[][][]mpq[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [] +[]ppl[][][]const[] + +Overfull \hbox (3.64197pt too wide) in paragraph at lines 25--27 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][] +class[][][]from[][][][]Rational[][][][]Box[][] ([][]ppl[][][][]B[]D[][][][]Shap +e[][][]mpq[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [] +[]ppl[][][]const[] + +Overfull \hbox (10.56195pt too wide) in paragraph at lines 27--29 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][] +class[][][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] ([][]ppl[][][] +[]B[]D[][][][]Shape[][][]mpq[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/p +tm/bc/n/10 pph, [][]ppl[] + +Overfull \hbox (11.12201pt too wide) in paragraph at lines 29--31 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][] +class[][][]from[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] ([][]ppl[][][] +[]B[]D[][][][]Shape[][][]mpq[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/p +tm/bc/n/10 pph, [][]ppl[] +[57]) (/usr/share/texlive/texmf-dist/tex/latex/hyperref/backref.sty (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty)) (/usr/share/texlive/texmf-dist/tex/latex/url/url.sty)) @@ -9288,52 +10076,95 @@ (/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty) (./doxygen.sty (/usr/share/texlive/texmf-dist/tex/latex/tools/calc.sty) (/usr/share/texlive/texmf-dist/tex/latex/base/ifthen.sty) -(/usr/share/texlive/texmf-dist/tex/latex/tools/verbatim.sty -Overfull \hbox (7.82706pt too wide) in paragraph at lines 22--24 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]assign[][][][]Artificial[][][][]Paramete -r[][][][]Sequence[][][]const[][][]iterator[][][]from[][][][]Artificial[][][][]P -arameter[][][][]Sequence[] +(/usr/share/texlive/texmf-dist/tex/latex/tools/verbatim.sty) +(/usr/share/texlive/texmf-dist/tex/latex/tools/longtable.sty) +(/usr/share/texlive/texmf-dist/tex/latex/tabu/tabu.sty +(/usr/share/texlive/texmf-dist/tex/latex/varwidth/varwidth.sty) +Overfull \hbox (0.95065pt too wide) in paragraph at lines 39--41 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][] +class[][][]from[][][][]Octagonal[][][][]Shape[][][]double[][] ([][]ppl[][][][]B +[]D[][][][]Shape[][][]mpq[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/ +bc/n/10 pph, -Overfull \hbox (23.68665pt too wide) in paragraph at lines 22--24 -[][]\OT1/ptm/bc/n/10 const[][][]iterator[][] ([][]ppl[][][][]Artificial[][][][] -Parameter[][][][]Sequence[][][]const[][][]iterator[][][]t[][] dst, [][]ppl[][][ -]const[][][][]Artificial[][][][]Parameter[] +Overfull \hbox (5.40195pt too wide) in paragraph at lines 41--43 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][] +class[][][]from[][][][]C[][][][]Polyhedron[][][]with[][][]complexity[][] ([][]p +pl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[] -Overfull \hbox (26.38684pt too wide) in paragraph at lines 25--27 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]delete[][][][]Artificial[][][][]Paramete -r[][][][]Sequence[][][]const[][][]iterator[][] ([][]ppl[][][]const[][][][]Artif -icial[][][][]Parameter[][][][]Sequence[] +Overfull \hbox (12.93196pt too wide) in paragraph at lines 45--47 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][] +class[][][]from[][][][]Grid[][][]with[][][]complexity[][] ([][]ppl[][][][]B[]D[ +][][][]Shape[][][]mpq[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n +/10 pph, [][]ppl[] -Overfull \hbox (7.21704pt too wide) in paragraph at lines 32--34 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Artificial[][][][]Parameter[][][][]Seq -uence[][][]const[][][]iterator[][][]dereference[][] ([][]ppl[][][]const[][][][] -Artificial[][][][]Parameter[] +Overfull \hbox (3.1817pt too wide) in paragraph at lines 47--49 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][] +class[][][]from[][][][]Rational[][][][]Box[][][]with[][][]complexity[][] ([][]p +pl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[] -Overfull \hbox (17.78696pt too wide) in paragraph at lines 35--37 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Artificial[][][][]Parameter[][][][]Seq -uence[][][]const[][][]iterator[][][]increment[][] ([][]ppl[][][][]Artificial[][ -][][]Parameter[][][][]Sequence[] -)) (./interfaceppl__Artificial__Parameter__tag.tex -(/usr/share/texlive/texmf-dist/tex/latex/tools/longtable.sty) -(/usr/share/texlive/texmf-dist/tex/latex/tabu/tabu.sty -(/usr/share/texlive/texmf-dist/tex/latex/varwidth/varwidth.sty)) -(/usr/share/texlive/texmf-dist/tex/latex/tools/tabularx.sty -Overfull \hbox (4.9309pt too wide) in paragraph at lines 15--17 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Artificial[][][][]Parameter[][][]get[] -[][][]Linear[][][][]Expression[][] ([][]ppl[][][]const[][][][]Artificial[][][][ -]Parameter[][][]t[][] ap, [][]ppl[][][][]Linear[] -[35) +Overfull \hbox (11.77185pt too wide) in paragraph at lines 49--51 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][] +class[][][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]with[][][]com +plexity[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[] + +Overfull \hbox (12.33191pt too wide) in paragraph at lines 51--53 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][] +class[][][]from[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]with[][][]com +plexity[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[] + +Overfull \hbox (17.60164pt too wide) in paragraph at lines 53--55 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][] +class[][][]from[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]with[][] +[]complexity[][] ([][]ppl[][][][]B[]D[][][][]Shape[] + +Overfull \hbox (18.1617pt too wide) in paragraph at lines 55--57 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][] +class[][][]from[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]with[][] +[]complexity[][] ([][]ppl[][][][]B[]D[][][][]Shape[] + +Overfull \hbox (4.56207pt too wide) in paragraph at lines 61--63 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][] +class[][][]from[][][][]Octagonal[][][][]Shape[][][]double[][][]with[][][]comple +xity[][] ([][]ppl[][][][]B[]D[][][][]Shape[] + +Overfull \hbox (6.14209pt too wide) in paragraph at lines 65--67 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][] +class[][][]from[][][][]Congruence[][][][]System[][] ([][]ppl[][][][]B[]D[][][][ +]Shape[][][]mpq[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pp +h, [][]ppl[] + +Overfull \hbox (9.18156pt too wide) in paragraph at lines 69--71 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]space[][][]dimension[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]mp +q[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] + +Overfull \hbox (9.49162pt too wide) in paragraph at lines 71--73 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]affine[][][]dimension[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]m +pq[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] + +Overfull \hbox (0.2818pt too wide) in paragraph at lines 77--79 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]relation[][][]with[][][][]Congruence[][] ([][]ppl[][][]const[][][][]B[]D[][][ +][]Shape[][][]mpq[][][]class[][][]t[][] ph, [][]ppl[] + +Overfull \hbox (25.56108pt too wide) in paragraph at lines 79--81 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]get[][][]constraints[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]mp +q[][][]class[][][]t[][] ph, [][]ppl[][][]const[][][][]Constraint[] +[58) +(/usr/share/texlive/texmf-dist/tex/latex/tools/tabularx.sty) (/usr/share/texlive/texmf-dist/tex/latex/multirow/multirow.sty)) (/build/ppl-1.2/doc/ppl.sty (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty For additional information on amsmath, use the `?' option. -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty] (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty)) (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty) (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty)) (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty)) -(/usr/share/texlive/texmf-dist/tex/latex/stmaryrd/stmaryrd.sty])) +(/usr/share/texlive/texmf-dist/tex/latex/stmaryrd/stmaryrd.sty)) Writing index file refman.idx (./refman.aux) (/usr/share/texlive/texmf-dist/tex/latex/base/ts1cmr.fd) (/usr/share/texlive/texmf-dist/tex/latex/psnfss/ot1ptm.fd) @@ -9345,55 +10176,169 @@ (/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty (/usr/share/texlive/texmf-dist/tex/generic/oberdiek/gettitlestring.sty)) (./refman.out) (./refman.out) -(/usr/share/texlive/texmf-dist/tex/latex/psnfss/ot1phv.fd) -Overfull \hbox (0.85934pt too wide) in paragraph at lines 18--20 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Artificial[][][][]Parameter[][][]coeff -icient[][] ([][]ppl[][][]const[][][][]Artificial[][][][]Parameter[][][]t[][] ap -, [][]ppl[][][]dimension[][][]type[][] var, -) (./interfaceppl__BD__Shape__double__tag.tex -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd) -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd) -(/usr/share/texlive/texmf-dist/tex/latex/stmaryrd/Ustmry.fd) -(/usr/share/texlive/texmf-dist/tex/latex/psnfss/ts1ptm.fd) [1{/var/lib/texmf/fo -nts/map/pdftex/updmap/pdftex.map} -Overfull \hbox (10.32233pt too wide) in paragraph at lines 17--19 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][ -][]from[][][]space[][][]dimension[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]do -uble[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][]dimens -ion[] +Overfull \hbox (1.9613pt too wide) in paragraph at lines 83--85 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]get[][][]minimized[][][]constraints[][] ([][]ppl[][][]const[][][][]B[]D[][][] +[]Shape[][][]mpq[][][]class[][][]t[][] ph, [][]ppl[] -Overfull \hbox (28.3727pt too wide) in paragraph at lines 19--21 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][ -][]from[][][][]C[][][][]Polyhedron[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]d -ouble[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][]const -[][][][]Polyhedron[] +Overfull \hbox (8.61162pt too wide) in paragraph at lines 85--87 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]get[][][]minimized[][][]congruences[][] ([][]ppl[][][]const[][][][]B[]D[][][] +[]Shape[][][]mpq[][][]class[][][]t[][] ph, [][]ppl[] -Overfull \hbox (13.9322pt too wide) in paragraph at lines 25--27 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][ -][]from[][][][]Rational[][][][]Box[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]d -ouble[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][]const -[][][][]Rational[] +Overfull \hbox (0.25233pt too wide) in paragraph at lines 101--103 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]bounds[][][]from[][][]above[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[ +][][]mpq[][][]class[][][]t[][] ph, [][]ppl[][][]const[] -Overfull \hbox (8.07243pt too wide) in paragraph at lines 27--29 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][ -][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] ([][]ppl[][][][]B[]D[] -[][][]Shape[][][]double[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, -[][]ppl[][][]const[] +Overfull \hbox (0.86206pt too wide) in paragraph at lines 103--105 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]bounds[][][]from[][][]below[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[ +][][]mpq[][][]class[][][]t[][] ph, [][]ppl[][][]const[] -Overfull \hbox (8.63249pt too wide) in paragraph at lines 29--31 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][ -][]from[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] ([][]ppl[][][][]B[]D[] -[][][]Shape[][][]double[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, -[][]ppl[][][]const[] -[36 ] [2] +Overfull \hbox (6.12149pt too wide) in paragraph at lines 109--111 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]maximize[][][]with[][][]point[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shap +e[][][]mpq[][][]class[][][]t[][] ph, [][]ppl[][][]const[] + +Overfull \hbox (14.09169pt too wide) in paragraph at lines 109--111 +[][][]\OT1/ptm/bc/n/10 Linear[][][][]Expression[][][]t[][] le, [][]ppl[][][][]C +oefficient[][][]t[][] ext[][][]n, [][]ppl[][][][]Coefficient[][][]t[][] ext[][] +[]d, int $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 poptimum, [][]ppl[][][][]Genera +tor[] + +Overfull \hbox (4.46144pt too wide) in paragraph at lines 111--113 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]minimize[][][]with[][][]point[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shap +e[][][]mpq[][][]class[][][]t[][] ph, [][]ppl[][][]const[] + +Overfull \hbox (14.09169pt too wide) in paragraph at lines 111--113 +[][][]\OT1/ptm/bc/n/10 Linear[][][][]Expression[][][]t[][] le, [][]ppl[][][][]C +oefficient[][][]t[][] ext[][][]n, [][]ppl[][][][]Coefficient[][][]t[][] ext[][] +[]d, int $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 poptimum, [][]ppl[][][][]Genera +tor[] + +Overfull \hbox (14.71156pt too wide) in paragraph at lines 115--117 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]contains[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] ([][]ppl[][][]const +[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]t[][] x, [][]ppl[] + +Overfull \hbox (14.12123pt too wide) in paragraph at lines 119--121 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]is[][][]disjoint[][][]from[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] ( +[][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[] + +Overfull \hbox (6.93167pt too wide) in paragraph at lines 121--123 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]equals[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] ([][]ppl[][][]const[] +[][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]t[][] x, [][]ppl[] + +Overfull \hbox (12.4822pt too wide) in paragraph at lines 127--129 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]add[][][]congruence[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class +[][][]t[][] ph, [][]ppl[][][]const[][][][]Congruence[] + +Overfull \hbox (3.07146pt too wide) in paragraph at lines 129--131 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]add[][][]constraints[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]clas +s[][][]t[][] ph, [][]ppl[][][]const[][][][]Constraint[] + +Overfull \hbox (16.37209pt too wide) in paragraph at lines 131--133 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]add[][][]congruences[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]clas +s[][][]t[][] ph, [][]ppl[][][]const[][][][]Congruence[] + +Overfull \hbox (28.89116pt +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/ot1phv.fd) too wide) in paragraph at lines 133--135 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]refine[][][]with[][][]constraint[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]m +pq[][][]class[][][]t[][] ph, [][]ppl[][][]const[][][][]Constraint[] +[59 +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd) +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd) +(/usr/share/texlive/texmf-dist/tex/latex/stmaryrd/Ustmry.fd) +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/ts1ptm.fd)] [1{/var/lib/texmf/fo +nts/map/pdftex/updmap/pdftex.map} ] [2] (/usr/share/texlive/texmf-dist/tex/latex/psnfss/ot1pcr.fd) [3 ] [4]] (./refman.toc) [1 ] [4] (./refman.toc) [1 ] [2] (./index.tex) (./GPL.texpdfTeX warning (ext4): destination with the same identifier (name{page.1}) has been already used, duplicate ignored \relax l.22 - [1]pdfTeX warning (ext4): destination with the same identifier (name{page + [1] +Overfull \hbox (12.2214pt too wide) in paragraph at lines 141--143 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]intersection[][][]assign[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][] +class[][][]t[][] x, [][]ppl[][][]const[][][][]B[]D[][][][]Shape[] + +Overfull \hbox (5.84169pt too wide) in paragraph at lines 145--147 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]difference[][][]assign[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]cl +ass[][][]t[][] x, [][]ppl[][][]const[][][][]B[]D[][][][]Shape[] + +Overfull \hbox (12.7616pt too wide) in paragraph at lines 147--149 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]concatenate[][][]assign[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]c +lass[][][]t[][] x, [][]ppl[][][]const[][][][]B[]D[][][][]Shape[] + +Overfull \hbox (11.9314pt too wide) in paragraph at lines 149--151 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]time[][][]elapse[][][]assign[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[] +[][]class[][][]t[][] x, [][]ppl[][][]const[][][][]B[]D[][][][]Shape[] + +Overfull \hbox (5.66202pt too wide) in paragraph at lines 151--153 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]upper[][][]bound[][][]assign[][][]if[][][]exact[][] ([][]ppl[][][][]B[]D[][][ +][]Shape[][][]mpq[][][]class[][][]t[][] x, [][]ppl[][][]const[] + +Overfull \hbox (5.592pt too wide) in paragraph at lines 165--167 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]bounded[][][]affine[][][]image[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpq +[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] + +Overfull \hbox (7.27184pt too wide) in paragraph at lines 165--167 +[][]\OT1/ptm/bc/n/10 type[][] var, [][]ppl[][][]const[][][][]Linear[][][][]Expr +ession[][][]t[][] lb, [][]ppl[][][]const[][][][]Linear[][][][]Expression[][][]t +[][] ub, [][]ppl[][][]const[][][][]Coefficient[] + +Overfull \hbox (18.3619pt too wide) in paragraph at lines 167--169 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]bounded[][][]affine[][][]preimage[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][] +mpq[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] + +Overfull \hbox (7.27184pt too wide) in paragraph at lines 167--169 +[][]\OT1/ptm/bc/n/10 type[][] var, [][]ppl[][][]const[][][][]Linear[][][][]Expr +ession[][][]t[][] lb, [][]ppl[][][]const[][][][]Linear[][][][]Expression[][][]t +[][] ub, [][]ppl[][][]const[][][][]Coefficient[] + +Overfull \hbox (17.2415pt too wide) in paragraph at lines 169--171 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]generalized[][][]affine[][][]image[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][ +]mpq[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] + +Overfull \hbox (30.0114pt too wide) in paragraph at lines 171--173 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]generalized[][][]affine[][][]preimage[][] ([][]ppl[][][][]B[]D[][][][]Shape[] +[][]mpq[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] + +Overfull \hbox (3.06163pt too wide) in paragraph at lines 173--175 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]generalized[][][]affine[][][]image[][][]lhs[][][]rhs[][] ([][]ppl[][][][]B[]D +[][][][]Shape[][][]mpq[][][]class[][][]t[][] ph, [][]ppl[] + +Overfull \hbox (15.92157pt too wide) in paragraph at lines 173--175 +[][]\OT1/ptm/bc/n/10 const[][][][]Linear[][][][]Expression[][][]t[][] lhs, enum + [][]ppl[][][]enum[][][][]Constraint[][][][]Type[][] rel-sym, [][]ppl[][][]cons +t[][][][]Linear[][][][]Expression[] + +Overfull \hbox (15.83153pt too wide) in paragraph at lines 175--177 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]generalized[][][]affine[][][]preimage[][][]lhs[][][]rhs[][] ([][]ppl[][][][]B +[]D[][][][]Shape[][][]mpq[][][]class[][][]t[][] ph, [][]ppl[] + +Overfull \hbox (15.92157pt too wide) in paragraph at lines 175--177 +[][]\OT1/ptm/bc/n/10 const[][pdfTeX warning (ext4): destination with the same identifier (name{page .2}) has been already used, duplicate ignored \relax @@ -9403,150 +10348,109 @@ \relax l.84 - [3]pdfTeX warning (ext4): destination with the same identifier (name{page + [3][][]Linear[][][][]Expression[][][]t[][] lhs, enum + [][]ppl[][][]enum[][][][]Constraint[][][][]Type[][] rel-sym, [][]ppl[][][]cons +t[][][][]Linear[][][][]Expression[] + +Overfull \hbox (9.43188pt too wide) in paragraph at lines 177--179 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]add[][][]space[][][]dimensions[][][]and[][][]embed[][] ([][]ppl[][][][]B[]D[] +[][][]Shape[][][]mpq[][][]class[][][]t[][] ph, [][]ppl[] + +Overfull \hbox (10.54173pt too wide) in paragraph at lines 179--181 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]add[][][]space[][][]dimensions[][][]and[][][]project[][] ([][]ppl[][][][]B[]D +[][][][]Shape[][][]mpq[][][]class[][][]t[][] ph, [][]ppl[] + +Overfull \hbox (21.65166pt too wide) in paragraph at lines 181--183 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]remove[][][]space[][][]dimensions[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][] +mpq[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] + +Overfull \hbox (5.53194pt too wide) in paragraph at lines 183--185 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]remove[][][]higher[][][]space[][][]dimensions[][] ([][]ppl[][][][]B[]D[][][][ +]Shape[][][]mpq[][][]class[][][]t[][] ph, [][]ppl[] +[60]pdfTeX warning (ext4): destination with the same identifier (name{page .4}) has been already used, duplicate ignored \relax l.121 - [4] [5] [6] [7] -Overfull \hbox (10.57239pt too wide) in paragraph at lines 31--33 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][ -][]from[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][] ([][]ppl[][][][]B -[]D[][][][]Shape[][][]double[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 -pph, [][]ppl[] - -Overfull \hbox (11.13245pt too wide) in paragraph at lines 33--35 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][ -][]from[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][] ([][]ppl[][][][]B -[]D[][][][]Shape[][][]double[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 -pph, [][]ppl[] + [4] [5]] [6] [7] [8]) +Overfull \hbox (10.35326pt too wide) in paragraph at lines 291--187 +\OT1/ptm/m/n/10 stead of this Li-cense. But first, please read [][]\OT1/pcr/m/n +/10 http[]://www.[]gnu.[]org/philosophy/why-not-lgpl.[] +[9] (./GFDL.tex [10] [11] [12] +Overfull \hbox (7.49895pt too wide) in paragraph at lines 97--98 +\OT1/ptm/m/n/10 ments, form-ing one sec-tion En-ti-tled "[]History"; like-wise +com-bine any sec-tions En-ti-tled "[]Acknowledgements", +[13] +Overfull \hbox (16.80182pt too wide) in paragraph at lines 185--187 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]expand[][][]space[][][]dimension[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]m +pq[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] -Overfull \hbox (5.03285pt too wide) in paragraph at lines 35--37 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][ -][]from[][][][]Double[][][][]Box[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]dou -ble[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][]const[] -[][][]Double[] +Overfull \hbox (8.07158pt too wide) in paragraph at lines 187--189 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]fold[][][]space[][][]dimensions[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mp +q[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] -Overfull \hbox (10.44244pt too wide) in paragraph at lines 45--47 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][ -][]from[][][][]Grid[][][]with[][][]complexity[][] ([][]ppl[][][][]B[]D[][][][]S -hape[][][]double[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl -[][][]const[] +Overfull \hbox (9.18156pt too wide) in paragraph at lines 189--191 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]map[][][]space[][][]dimensions[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpq +[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] -Overfull \hbox (7.61217pt too wide) in paragraph at lines 49--51 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][ -][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]with[][][]complexity[ -][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]double[] +Overfull \hbox (3.88039pt too wide) in paragraph at lines 191--193 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]drop[][][]some[][][]non[][][]integer[][][]points[][] ([][]ppl[][][][]B[]D[][] +[][]Shape[][][]mpq[][][]class[][][]t[][] ph, int com- -Overfull \hbox (8.17223pt too wide) in paragraph at lines 51--53 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][ -][]from[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]with[][][]complexity[ -][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]double[] - -Overfull \hbox (4.00201pt too wide) in paragraph at lines 53--55 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][ -][]from[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]with[][][]comple -xity[][] ([][]ppl[][][][]B[]D[][][][]Shape[] - -Overfull \hbox (4.56207pt too wide) in paragraph at lines 55--57 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][ -][]from[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]with[][][]comple -xity[][] ([][]ppl[][][][]B[]D[][][][]Shape[] - -Overfull \hbox (21.78229pt too wide) in paragraph at lines 61--63 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][ -][]from[][][][]Octagonal[][][][]Shape[][][]double[][][]with[][][]complexity[][] - ([][]ppl[][][][]B[]D[][][][]Shape[][][]double[] - -Overfull \hbox (3.65257pt too wide) in paragraph at lines 65--67 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][ -][]from[][][][]Congruence[][][][]System[][] ([][]ppl[][][][]B[]D[][][][]Shape[] -[][]double[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][] -const[] -[37 [8]) -Overfull \hbox (10.35326pt too wide) in paragraph at lines 291--187 -\OT1/ptm/m/n/10 stead of this Li-cense. But first, please read [][]\OT1/pcr/m/n -/10 http[]://www.[]gnu.[]org/philosophy/why-not-lgpl.[] -[9]] (./GFDL.tex [10] [11 -Overfull \hbox (11.66246pt too wide) in paragraph at lines 81--83 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]get[][ -][]congruences[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]double[][] -[]t[][] ph, [][]ppl[][][]const[][][][]Congruence[] - -Overfull \hbox (6.1221pt too wide) in paragraph at lines 85--87 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]get[][ -][]minimized[][][]congruences[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[ -][][]double[][][]t[][] ph, [][]ppl[][][]const[] - -Overfull \hbox (2.7528pt too wide) in paragraph at lines 101--103 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]bounds -[][][]from[][][]above[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]dou -ble[][][]t[][] ph, [][]ppl[][][]const[][][][]Linear[] - -Overfull \hbox (3.36253pt too wide) in paragraph at lines 103--105 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]bounds -[][][]from[][][]below[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]dou -ble[][][]t[][] ph, [][]ppl[][][]const[][][][]Linear[] - -Overfull \hbox (11.12198pt too wide) in paragraph at lines 105--107 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]maximi -ze[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]double[][][]t[][] ph, -[][]ppl[][][]const[][][][]Linear[][][][]Expression[] - -Overfull \hbox (9.46193pt too wide) in paragraph at lines 107--109 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]minimi -ze[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]double[][][]t[][] ph, -[][]ppl[][][]const[][][][]Linear[][][][]Expression[] - -Overfull \hbox (8.62196pt too wide) in paragraph at lines 109--111 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]maximi -ze[][][]with[][][]point[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]d -ouble[][][]t[][] ph, [][]ppl[][][]const[][][][]Linear[] +Overfull \hbox (1.2322pt too wide) in paragraph at lines 193--195 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]drop[][][]some[][][]non[][][]integer[][][]points[][][]2[][] ([][]ppl[][][][]B +[]D[][][][]Shape[][][]mpq[][][]class[][][]t[][] ph, [][]ppl[] -Overfull \hbox (6.96191pt too wide) in paragraph at lines 111--113 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]minimi -ze[][][]with[][][]point[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]d -ouble[][][]t[][] ph, [][]ppl[][][]const[][][][]Linear[] +Overfull \hbox (3.17146pt too wide) in paragraph at lines 195--197 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]external[][][]memory[][][]in[][][]bytes[][] ([][]ppl[][][]const[][][][]B[]D[] +[][][]Shape[][][]mpq[][][]class[][][]t[][] ps, size[] -Overfull \hbox (11.51242pt too wide) in paragraph at lines 113--115 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]freque -ncy[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]double[][][]t[][] ph, - [][]ppl[][][]const[][][][]Linear[][][][]Expression[] +Overfull \hbox (4.35188pt too wide) in paragraph at lines 201--203 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[][]H79[][][]widening[][][]assign[][][]with[][][]tokens[][] ([][]ppl[][][][]B[] +D[][][][]Shape[][][]mpq[][][]class[][][]t[][] x, [][]ppl[] -Overfull \hbox (5.29205pt too wide) in paragraph at lines 117--119 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]strict -ly[][][]contains[][][][]B[]D[][][][]Shape[][][]double[][] ([][]ppl[][][]const[] -[][][]B[]D[][][][]Shape[][][]double[][][]t[][] x, [][]ppl[] +Overfull \hbox (8.24164pt too wide) in paragraph at lines 207--209 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]widening[][][]assign[][][]with[][][]tokens[][] ([][]ppl[][][][]B[]D[][][][]Sh +ape[][][]mpq[][][]class[][][]t[][] x, [][]ppl[][][]const[] -Overfull \hbox (3.90219pt too wide) in paragraph at lines 119--121 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]is[][] -[]disjoint[][][]from[][][][]B[]D[][][][]Shape[][][]double[][] ([][]ppl[][][]con -st[][][][]B[]D[][][][]Shape[][][]double[][][]t[][] x, [][]ppl[] +Overfull \hbox (2.78186pt too wide) in paragraph at lines 209--211 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]widening[][][]assign[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]clas +s[][][]t[][] x, [][]ppl[][][]const[][][][]B[]D[][][][]Shape[] -Overfull \hbox (8.92177pt too wide) in paragraph at lines 129--131 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]add[][ -][]constraints[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]t[][] ph, - [][]ppl[][][]const[][][][]Constraint[][][][]System[] +Overfull \hbox (4.19151pt too wide) in paragraph at lines 215--217 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]limited[][][][]C[]C76[][][]extrapolation[][][]assign[][][]with[][][]tokens[][ +] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[] -Overfull \hbox (1.69191pt too wide) in paragraph at lines 133--135 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]refine -[][][]with[][][]constraint[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]double[][ -][]t[][] ph, [][]ppl[][][]const[][][][]Constraint[] +Overfull \hbox (0.70154pt too wide) in paragraph at lines 219--221 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]limited[][][][]H79[][][]extrapolation[][][]assign[][] ([][]ppl[][][][]B[]D[][ +][][]Shape[][][]mpq[][][]class[][][]t[][] x, [][]ppl[] -Overfull \hbox (14.99254pt too wide) in paragraph at lines 135--137 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]refine -[][][]with[][][]congruence[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]double[][ -][]t[][] ph, [][]ppl[][][]const[][][][]Congruence[] +Overfull \hbox (6.82141pt too wide) in paragraph at lines 221--223 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]limited[][][][]C[]C76[][][]extrapolation[][][]assign[][] ([][]ppl[][][][]B[]D +[][][][]Shape[][][]mpq[][][]class[][][]t[][] x, [][]ppl[] -Overfull \hbox (5.5818pt too wide) in paragraph at lines 137--139 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]refine -[][][]with[][][]constraints[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]double[] -[][]t[][] ph, [][]ppl[][][]const[][][][]Constraint[] -[38] [12] -Overfull \hbox (7.49895pt too wide) in paragraph at lines 97--98 -\OT1/ptm/m/n/10 ments, form-ing one sec-tion En-ti-tled "[]History"; like-wise -com-bine any sec-tions En-ti-tled "[]Acknowledgements", -[13]]) (./PI_SI_Features.tex [14] +Overfull \hbox (9.79172pt too wide) in paragraph at lines 229--231 +\OT1/ptm/bc/n/10 Shape[][][]mpq[][][]class[][][]t[][] y, [][]ppl[][][][]B[]D[][ +][][]Shape[][][]mpq[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/1 +0 p[][][]inters, [][]ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][] +Polyhedron[] +[61) (./PI_SI_Features.tex [14]] Underfull \hbox (badness 10000) in paragraph at lines 19--20 @@ -9559,89 +10463,14 @@ Overfull \hbox (3.40186pt too wide) in paragraph at lines 28--29 []\OT1/ptm/m/n/10 The prod-uct do-mains con-sist of Direct[][][][]Product[][][] []S[][][]T, Smash[][][][]Product[][][][]S[][][]T, Constraints[][][][]Product[] -[15 -Overfull \hbox (18.88243pt too wide) in paragraph at lines 139--141 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]refine -[][][]with[][][]congruences[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]double[] -[][]t[][] ph, [][]ppl[][][]const[][][][]Congruence[] - -Overfull \hbox (15.842pt too wide) in paragraph at lines 141--143 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]inters -ection[][][]assign[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]t[][] - x, [][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]double[] - -Overfull \hbox (9.46228pt too wide) in paragraph at lines 145--147 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]differ -ence[][][]assign[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]t[][] x -, [][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]double[] - -Overfull \hbox (16.38219pt too wide) in paragraph at lines 147--149 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]concat -enate[][][]assign[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]t[][] -x, [][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]double[] - -Overfull \hbox (15.55199pt too wide) in paragraph at lines 149--151 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]time[] -[][]elapse[][][]assign[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]t -[][] x, [][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]double[] - -Overfull \hbox (7.5321pt too wide) in paragraph at lines 157--159 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]uncons -train[][][]space[][][]dimension[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]doub -le[][][]t[][] ph, [][]ppl[][][]dimension[] - -Overfull \hbox (11.422pt too wide) in paragraph at lines 159--161 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]uncons -train[][][]space[][][]dimensions[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]dou -ble[][][]t[][] ph, [][]ppl[][][]dimension[] - -Overfull \hbox (5.26245pt too wide) in paragraph at lines 163--165 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]affine -[][][]preimage[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]t[][] ph, - [][]ppl[][][]dimension[][][]type[][] var, [][]ppl[] - -Overfull \hbox (4.2718pt too wide) in paragraph at lines 167--169 -\OT1/ptm/bc/n/10 type[][] var, [][]ppl[][][]const[][][][]Linear[][][][]Expressi -on[][][]t[][] lb, [][]ppl[][][]const[][][][]Linear[][][][]Expression[][][]t[][] - ub, [][]ppl[][][]const[][][][]Coefficient[] - -Overfull \hbox (2.81215pt too wide) in paragraph at lines 171--173 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]genera -lized[][][]affine[][][]preimage[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]doub -le[][][]t[][] ph, [][]ppl[][][]dimension[] - -Overfull \hbox (0.57211pt too wide) in paragraph at lines 173--175 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]genera -lized[][][]affine[][][]image[][][]lhs[][][]rhs[][] ([][]ppl[][][][]B[]D[][][][] -Shape[][][]double[][][]t[][] ph, [][]ppl[][][]const[] - -Overfull \hbox (12.92154pt too wide) in paragraph at lines 175--177 -\OT1/ptm/bc/n/10 const[][][][]Linear[][][][]Expression[][][]t[][] lhs, enum [][ -]ppl[][][]enum[][][][]Constraint[][][][]Type[][] rel-sym, [][]ppl[][][]const[][ -][][]Linear[][][][]Expression[] - -Overfull \hbox (27.50215pt too wide) in paragraph at lines 177--179 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]add[][ -][]space[][][]dimensions[][][]and[][][]embed[][] ([][]ppl[][][][]B[]D[][][][]Sh -ape[][][]double[][][]t[][] ph, [][]ppl[][][]dimension[] - -Overfull \hbox (28.612pt too wide) in paragraph at lines 179--181 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]add[][ -][]space[][][]dimensions[][][]and[][][]project[][] ([][]ppl[][][][]B[]D[][][][] -Shape[][][]double[][][]t[][] ph, [][]ppl[][][]dimension[] - -Overfull \hbox (23.6022pt too wide) in paragraph at lines 183--185 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]remove -[][][]higher[][][]space[][]][]dimensions[][] ([][]ppl[][][][]B[]D[][][][]Shape[] -[][]double[][][]t[][] ph, [][]ppl[][][]dimension[] -[39 [16] +[15] [16] Underfull \vbox (badness 10000) has occurred while \output is active [17] Underfull \hbox (badness 10000) in paragraph at lines 241--242 Underfull \hbox (badness 10000) in paragraph at lines 246--247 -[18]] +[18] Underfull \hbox (badness 10000) in paragraph at lines 251--252 @@ -9717,49 +10546,60 @@ Underfull \hbox (badness 10000) in paragraph at lines 374--375 -[20 -Overfull \hbox (19.30246pt too wide) in paragraph at lines 193--195 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]drop[] -[][]some[][][]non[][][]integer[][][]points[][][]2[][] ([][]ppl[][][][]B[]D[][][ -][]Shape[][][]double[][][]t[][] ph, [][]ppl[][][]dimension[] +[20] +Overfull \hbox (8.77168pt too wide) in paragraph at lines 233--235 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][] +class[][][]recycle[][][][]Constraint[][][][]System[][] ([][]ppl[][][][]B[]D[][] +[][]Shape[][][]mpq[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 + pph, [][]ppl[] -Overfull \hbox (1.86237pt too wide) in paragraph at lines 201--203 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][][]H79[ -][][]widening[][][]assign[][][]with[][][]tokens[][] ([][]ppl[][][][]B[]D[][][][ -]Shape[][][]double[][][]t[][] x, [][]ppl[][][]const[] +Overfull \hbox (15.422pt too wide) in paragraph at lines 235--237 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][] +class[][][]recycle[][][][]Congruence[][][][]System[][] ([][]ppl[][][][]B[]D[][] +[][]Shape[][][]mpq[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 + pph, [][]ppl[] -Overfull \hbox (6.40245pt too wide) in paragraph at lines 209--211 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]wideni -ng[][][]assign[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]t[][] x, -[][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]double[] +Overfull \hbox (7.0819pt too wide) in paragraph at lines 237--239 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][] +class[][][]recycle[][][][]Generator[][][][]System[][] ([][]ppl[][][][]B[]D[][][ +][]Shape[][][]mpq[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 +pph, [][]ppl[] -Overfull \hbox (15.58176pt too wide) in paragraph at lines 211--213 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]limite -d[][][][]B[]H[]M[]Z05[][][]extrapolation[][][]assign[][][]with[][][]tokens[][] -([][]ppl[][][][]B[]D[][][][]Shape[][][]double[] +Overfull \hbox (11.38148pt too wide) in paragraph at lines 239--241 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]assign[][][][]B[]D[][][][]Shape[][][]mpq[][ +][]class[][][]from[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] ([][]ppl[][ +][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]t[][] dst, [][]ppl[] -Overfull \hbox (4.3319pt too wide) in paragraph at lines 221--223 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]limite -d[][][][]C[]C76[][][]extrapolation[][][]assign[][] ([][]ppl[][][][]B[]D[][][][] -Shape[][][]double[][][]t[][] x, [][]ppl[][][]const[] +Overfull \hbox (15.68144pt too wide) in paragraph at lines 241--243 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]add[][][]recycled[][][]constraints[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][ +]mpq[][][]class[][][]t[][] ph, [][]ppl[][][][]Constraint[] -Overfull \hbox (6.15248pt too wide) in paragraph at lines 227--229 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][][]C[]C -76[][][]narrowing[][][]assign[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]double -[][][]t[][] x, [][]ppl[][][]const[][][][]B[]D[][][][]Shape[] +Overfull \hbox (28.98207pt too wide) in paragraph at lines 243--245 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] +[]add[][][]recycled[][][]congruences[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][ +]mpq[][][]class[][][]t[][] ph, [][]ppl[][][][]Congruence[] -Overfull \hbox (26.84183pt too wide) in paragraph at lines 233--235 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][ -][]recycle[][][][]Constraint[][][][]System[][] ([][]ppl[][][][]B[]D[][][][]Shap -e[][][]double[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][ -][][]Constraint[] +Overfull \hbox (8.45016pt too wide) in paragraph at lines 249--251 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]one[][][]affine[][][]ranking[][][]function[ +][][][]M[]S[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] ([][]ppl[][][]cons +t[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]t[][] pset, -Overfull \hbox (23.46225pt too wide) in paragraph at lines 237--239 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][ -][]recycle[][][][]Generator[][][][]System[][] ([][]ppl[][][][]B[]D[][][][]Shape -[][][]double[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][] -[][]Generator[] -[40] +Overfull \hbox (6.2302pt too wide) in paragraph at lines 251--253 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]one[][][]affine[][][]ranking[][][]function[ +][][][]P[]R[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] ([][]ppl[][][]cons +t[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]t[][] pset, + +Overfull \hbox (7.89984pt too wide) in paragraph at lines 253--255 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]all[][][]affine[][][]ranking[][][]functions +[][][][]M[]S[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] ([][]ppl[][][]con +st[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]t[][] pset, + +Overfull \hbox (5.67987pt too wide) in paragraph at lines 255--257 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]all[][][]affine[][][]ranking[][][]functions +[][][][]P[]R[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] ([][]ppl[][][]con +st[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]t[][] pset, +[62 Underfull \hbox (badness 10000) in paragraph at lines 379--380 @@ -9837,7 +10677,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 439--440 -[21] +[21]] Underfull \hbox (badness 10000) in paragraph at lines 444--445 @@ -9871,7 +10711,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 484--485 -[22]] +[22] Overfull \hbox (62.5953pt too wide) in paragraph at lines 504--505 []\OT1/pcr/m/n/10 ppl[][][][]P[]I[]P[][][][]Problem[][][]get[][][]control[][][] parameter(+[]Handle, +[]Control[][][][]Parameter[][][][]Name, ?Control[] @@ -9900,37 +10740,49 @@ Underfull \hbox (badness 10000) in paragraph at lines 544--545 -[23] -Overfull \hbox (1.78282pt too wide) in paragraph at lines 243--245 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]double[][][]add[][ -][]recycled[][][]congruences[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]double[ -][][]t[][] ph, [][]ppl[][][][]Congruence[] +[23]) (./configured_domains_predicates.texThis is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2019/dev/Debian) (preloaded format=latex) + restricted \write18 enabled. -Overfull \hbox (5.03233pt too wide) in paragraph at lines 249--251 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]one[][][]affine[][][]ranking[][][]function[ -][][][]M[]S[][][][]B[]D[][][][]Shape[][][]double[][] ([][]ppl[][][]const[][][][ -]B[]D[][][][]Shape[][][]double[][][]t[][] pset, [][]ppl[] +Overfull \hbox (9.94308pt too wide) in paragraph at lines 295--296 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ +][]from[][][]space[][][]dimension()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[ +]D[][][][]Shape[][][]mpq[][][]class[][][]from[][][]space[] -Overfull \hbox (2.81236pt too wide) in paragraph at lines 251--253 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]one[][][]affine[][][]ranking[][][]function[ -][][][]P[]R[][][][]B[]D[][][][]Shape[][][]double[][] ([][]ppl[][][]const[][][][ -]B[]D[][][][]Shape[][][]double[][][]t[][] pset, [][]ppl[] +Overfull \hbox (21.70216pt too wide) in paragraph at lines 301--302 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ +][]from[][][][]C[][][][]Polyhedron()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B +[]D[][][][]Shape[][][]mpq[][][]class[][][]from[][][][]C[][][][]Polyhedron -Overfull \hbox (4.48201pt too wide) in paragraph at lines 253--255 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]all[][][]affine[][][]ranking[][][]functions -[][][][]M[]S[][][][]B[]D[][][][]Shape[][][]double[][] ([][]ppl[][][]const[][][] -[]B[]D[][][][]Shape[][][]double[][][]t[][] pset, [][]ppl[] +Overfull \hbox (3.84358pt too wide) in paragraph at lines 307--308 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ +][]from[][][][]N[]N[]C[][][][]Polyhedron()[] \OT1/pcr/m/n/8 int ppl[][][]new[][ +][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]from[][][][]N[]N[]C[] -Overfull \hbox (2.26204pt too wide) in paragraph at lines 255--257 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]all[][][]affine[][][]ranking[][][]functions -[][][][]P[]R[][][][]B[]D[][][][]Shape[][][]double[][] ([][]ppl[][][]const[][][] -[]B[]D[][][][]Shape[][][]double[][][]t[][] pset, [][]ppl[] +Overfull \hbox (10.45357pt too wide) in paragraph at lines 319--320 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ +][]from[][][][]Rational[][][][]Box()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B +[]D[][][][]Shape[][][]mpq[][][]class[][][]from[][][][]Rational[] -Overfull \hbox (20.41179pt too wide) in paragraph at lines 295--296 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ -][][]space[][][]dimension()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[]D[][][] -[]Shape[][][]double[][][]from[][][]space[][][]dimension -[41) (./configured_domains_predicates.tex [24]] +Overfull \hbox (1.37308pt too wide) in paragraph at lines 325--326 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ +][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 int ppl +[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]from[] + +Overfull \hbox (2.49307pt too wide) in paragraph at lines 331--332 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ +][]from[][][][]B[]D[][][][]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 int ppl +[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]from[] + +Overfull \hbox (9.29279pt too wide) in paragraph at lines 337--338 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ +][]from[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 in +t ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[] + +Overfull \hbox (10.41278pt too wide) in paragraph at lines 343--344 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ +][]from[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 in +t ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[] +[63 [24]] Overfull \hbox (6.19531pt too wide) in paragraph at lines 34--36 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]C[][][][]Polyhedron[][][]from[][][]space[ ][][]dimension(+[]Dimension[][][][]Type, +[]Universe[][][]or[] @@ -9941,42 +10793,11 @@ Underfull \hbox (badness 10000) in paragraph at lines 71--72 -[25] -Overfull \hbox (4.67235pt too wide) in paragraph at lines 301--302 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ -][][][]C[][][][]Polyhedron()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[]D[][][ -][]Shape[][][]double[][][]from[][][][]C[][][][]Polyhedron ( - -Overfull \hbox (19.11229pt too wide) in paragraph at lines 307--308 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ -][][][]N[]N[]C[][][][]Polyhedron()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[] -D[][][][]Shape[][][]double[][][]from[][][][]N[]N[]C[][][][]Polyhedron - -Overfull \hbox (1.72226pt too wide) in paragraph at lines 319--320 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ -][][][]Rational[][][][]Box()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[]D[][][ -][]Shape[][][]double[][][]from[][][][]Rational[][][][]Box ( - -Overfull \hbox (14.10329pt too wide) in paragraph at lines 325--326 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ -][][][]B[]D[][][][]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 int ppl[][][]ne -w[][][][]B[]D[][][][]Shape[][][]double[][][]from[][][][]B[]D[][][][]Shape[] - -Overfull \hbox (15.22328pt too wide) in paragraph at lines 331--332 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ -][][][]B[]D[][][][]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 int ppl[][][]ne -w[][][][]B[]D[][][][]Shape[][][]double[][][]from[][][][]B[]D[][][][]Shape[] +[25]entering extended mode +(./_formulas.tex +LaTeX2e <2018-12-01> -Overfull \hbox (4.74298pt too wide) in paragraph at lines 337--338 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ -][][][]Octagonal[][][][]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 int ppl[][ -][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[] -Overfull \hbox (5.86298pt too wide) in paragraph at lines 343--344 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ -][][][]Octagonal[][][][]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 int ppl[][ -][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[] -[42 Overfull \hbox (11.00215pt too wide) in paragraph at lines 104--106 \OT1/ptm/m/it/10 Builds a new N[]NC poly-he-dron \OT1/pcr/m/sl/10 P[][][]1 \OT1 /ptm/m/it/10 from the bd[][][]shape[][][]mpz[][][]class ref-er-enced by han-dle @@ -10002,7 +10823,47 @@ Overfull \hbox (9.79532pt too wide) in paragraph at lines 122--124 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]N[]N[]C[][][][]Polyhedron[][][]from[][][] []Octagonal[][][][]Shape[][][]mpq[][][]class(+[]Handle[][][]1, -[]Handle[] -[26] +[26 +Overfull \hbox (3.0421pt too wide) in paragraph at lines 349--350 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ +][]from[][][][]Double[][][][]Box()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[] +D[][][][]Shape[][][]mpq[][][]class[][][]from[][][][]Double[][][][]Box + +Overfull \hbox (0.82327pt too wide) in paragraph at lines 355--356 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ +][]from[][][][]B[]D[][][][]Shape[][][]double()[] \OT1/pcr/m/n/8 int ppl[][][]ne +w[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]from[][][][]B[]D[] + +Overfull \hbox (18.34299pt too wide) in paragraph at lines 361--362 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ +][]from[][][][]Octagonal[][][][]Shape[][][]double()[] \OT1/pcr/m/n/8 int ppl[][ +][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]from[] + +Overfull \hbox (22.7929pt too wide) in paragraph at lines 367--368 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ +][]from[][][][]C[][][][]Polyhedron[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 + int ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[] + +Overfull \hbox (10.35281pt too wide) in paragraph at lines 373--374 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ +][]from[][][][]N[]N[]C[][][][]Polyhedron[][][]with[][][]complexity()[] \OT1/pcr +/m/n/8 int ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[] + +Overfull \hbox (5.54291pt too wide) in paragraph at lines 379--380 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ +][]from[][][][]Grid[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[][][]n +ew[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]from[] + +Overfull \hbox (19.8428pt too wide) in paragraph at lines 385--386 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ +][]from[][][][]Rational[][][][]Box[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 + int ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[] + +Overfull \hbox (7.88231pt too wide) in paragraph at lines 391--392 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ +][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]with[][][]complexity( +)[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[]D[][][][]Shape[] +[64]] Overfull \hbox (15.07239pt too wide) in paragraph at lines 137--139 \OT1/ptm/m/it/10 Builds a new C poly-he-dron \OT1/pcr/m/sl/10 P[][][]1 \OT1/ptm /m/it/10 from the octagonal[][][]shape[][][]double ref-er-enced by han-dle \OT1 @@ -10048,7 +10909,7 @@ Overfull \hbox (1.39532pt too wide) in paragraph at lines 167--169 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]C[][][][]Polyhedron[][][]from[][][][]B[]D [][][][]Shape[][][]mpz[][][]class[][][]with[][][]complexity(+[]Handle, +[] -[27]] +[27] Overfull \hbox (13.39532pt too wide) in paragraph at lines 170--172 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]N[]N[]C[][][][]Polyhedron[][][]from[][][] []B[]D[][][][]Shape[][][]mpz[][][]class[][][]with[][][]complexity(+[]Handle, +[ @@ -10099,51 +10960,46 @@ Overfull \hbox (6.81381pt too wide) in paragraph at lines 203--205 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]C[][][][]Polyhedron[][][]from[][][][]Octa gonal[][][][]Shape[][][]double[][][]with[][][]complexity(+[]Handle, -[28] -Overfull \hbox (18.81381pt too wide) in paragraph at lines 206--208 -[]\OT1/pcr/m/n/10 ppl[][][]new[][][][]N[]N[]C[][][][]Polyhedron[][][]from[][][] -[]Octagonal[][][][]Shape[][][]double[][][]with[][][]complexity(+[]Handle, -[29 -Overfull \hbox (1.07347pt too wide) in paragraph at lines 355--356 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ -][][][]B[]D[][][][]Shape[][][]double()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][ -]B[]D[][][][]Shape[][][]double[][][]from[][][][]B[]D[][][][]Shape[] - -Overfull \hbox (37.7932pt too wide) in paragraph at lines 361--362 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ -][][][]Octagonal[][][][]Shape[][][]double()[] \OT1/pcr/m/n/8 int ppl[][][]new[] -[][][]B[]D[][][][]Shape[][][]double[][][]from[][][][]Octagonal[] +[28 +Overfull \hbox (9.0023pt too wide) in paragraph at lines 397--398 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ +][]from[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]with[][][]complexity( +)[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[]D[][][][]Shape[] -Overfull \hbox (18.24309pt too wide) in paragraph at lines 367--368 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ -][][][]C[][][][]Polyhedron[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl -[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[] +Overfull \hbox (1.40201pt too wide) in paragraph at lines 403--404 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ +][]from[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]with[][][]comple +xity()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][] -Overfull \hbox (10.60301pt too wide) in paragraph at lines 373--374 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ -][][][]N[]N[]C[][][][]Polyhedron[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 i -nt ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[] +Overfull \hbox (2.522pt too wide) in paragraph at lines 409--410 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ +][]from[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]with[][][]comple +xity()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][] -Overfull \hbox (0.9931pt too wide) in paragraph at lines 379--380 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ -][][][]Grid[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][] -[]B[]D[][][][]Shape[][][]double[][][]from[][][][]Grid[] +Overfull \hbox (13.73283pt too wide) in paragraph at lines 415--416 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ +][]from[][][][]Double[][][][]Box[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 i +nt ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[] -Overfull \hbox (15.293pt too wide) in paragraph at lines 385--386 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ -][][][]Rational[][][][]Box[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl -[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[] +Overfull \hbox (12.1325pt too wide) in paragraph at lines 421--422 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ +][]from[][][][]B[]D[][][][]Shape[][][]double[][][]with[][][]complexity()[] \OT1 +/pcr/m/n/8 int ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[] -Overfull \hbox (25.41252pt too wide) in paragraph at lines 391--392 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ -][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]with[][][]complexity()[] \OT1 -/pcr/m/n/8 int ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[] +Overfull \hbox (0.8522pt too wide) in paragraph at lines 427--428 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ +][]from[][][][]Octagonal[][][][]Shape[][][]double[][][]with[][][]complexity()[] + \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[]D[][][] -Overfull \hbox (26.53252pt too wide) in paragraph at lines 397--398 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ -][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]with[][][]complexity()[] \OT1 -/pcr/m/n/8 int ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[] -[43]] +Overfull \hbox (43.37317pt too wide) in paragraph at lines 433--434 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ +][]from[][][][]Constraint[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][] +[][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]from[][][][]Constraint[] +[65]] +Overfull \hbox (18.81381pt too wide) in paragraph at lines 206--208 +[]\OT1/pcr/m/n/10 ppl[][][]new[][][][]N[]N[]C[][][][]Polyhedron[][][]from[][][] +[]Octagonal[][][][]Shape[][][]double[][][]with[][][]complexity(+[]Handle, +[29] Overfull \hbox (15.79529pt too wide) in paragraph at lines 274--276 []\OT1/pcr/m/n/10 ppl[][][][]Polyhedron[][][]relation[][][]with[][][]constraint (+[]Handle, +[]Constraint, ?Relation[] @@ -10188,42 +11044,32 @@ Overfull \hbox (10.9953pt too wide) in paragraph at lines 316--318 []\OT1/pcr/m/n/10 ppl[][][][]Polyhedron[][][]minimize[][][]with[][][]point(+[]H andle, +[]Lin[][][][]Expr, ?Coeff[][][]1, ?Coeff[] -[31 -Overfull \hbox (23.73222pt too wide) in paragraph at lines 403--404 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ -][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]with[][][]complexity()[] - \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[]D[][][][]Shape[] - -Overfull \hbox (0.8522pt too wide) in paragraph at lines 409--410 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ -][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]with[][][]complexity()[] - \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[]D[][][] - -Overfull \hbox (9.18303pt too wide) in paragraph at lines 415--416 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ -][][][]Double[][][][]Box[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[] -[][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[] +[31] +Overfull \hbox (0.9232pt too wide) in paragraph at lines 439--440 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ +][]from[][][][]Congruence[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][] +[][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]from[][][] -Overfull \hbox (12.3827pt too wide) in paragraph at lines 421--422 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ -][][][]B[]D[][][][]Shape[][][]double[][][]with[][][]complexity()[] \OT1/pcr/m/n -/8 int ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[] +Overfull \hbox (36.89323pt too wide) in paragraph at lines 445--446 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ +][]from[][][][]Generator[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][ +][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]from[][][][]Generator[] -Overfull \hbox (10.70241pt too wide) in paragraph at lines 427--428 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ -][][][]Octagonal[][][][]Shape[][][]double[][][]with[][][]complexity()[] \OT1/pc -r/m/n/8 int ppl[][][]new[][][][]B[]D[][][][]Shape[] +Overfull \hbox (38.1416pt too wide) in paragraph at lines 463--464 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]relati +on[][][]with[][][][]Constraint()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sh +ape[][][]mpq[][][]class[][][]relation[][][]with[][][][]Constraint -Overfull \hbox (16.74335pt too wide) in paragraph at lines 433--434 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ -][][][]Constraint[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[]D -[][][][]Shape[][][]double[][][]from[][][][]Constraint[] +Overfull \hbox (31.66167pt too wide) in paragraph at lines 469--470 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]relati +on[][][]with[][][][]Generator()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sha +pe[][][]mpq[][][]class[][][]relation[][][]with[][][][]Generator -Overfull \hbox (22.29341pt too wide) in paragraph at lines 439--440 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ -][][][]Congruence[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[]D -[][][][]Shape[][][]double[][][]from[][][][]Congruence[] -[44]] +Overfull \hbox (1.79314pt too wide) in paragraph at lines 475--476 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]relati +on[][][]with[][][][]Congruence()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sh +ape[][][]mpq[][][]class[][][]relation[][][]with[] +[66] Overfull \hbox (2.92062pt too wide) in paragraph at lines 386--388 \OT1/ptm/m/it/10 Transforms the poly-he-dron ref-er-enced by \OT1/pcr/m/sl/10 H andle \OT1/ptm/m/it/10 sub-sti-tut-ing the affine ex-pres-sion for \OT1/pcr/m/s @@ -10265,36 +11111,31 @@ []\OT1/pcr/m/n/10 ppl[][][][]Polyhedron[][][]linear[][][]partition(+[]Handle[][ ][]1, +[]Handle[][][]2, -[]Handle[][][]3, -[]Handle[] [33] -Overfull \hbox (10.26341pt too wide) in paragraph at lines 445--446 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[ -][][][]Generator[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[]D[ -][][][]Shape[][][]double[][][]from[][][][]Generator[] - -Overfull \hbox (11.51178pt too wide) in paragraph at lines 463--464 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]relation[][][] -with[][][][]Constraint()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][ -]double[][][]relation[][][]with[][][][]Constraint +Overfull \hbox (3.0828pt too wide) in paragraph at lines 493--494 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]get[][ +][]minimized[][][]constraints()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sha +pe[][][]mpq[][][]class[][][]get[][][]minimized[] -Overfull \hbox (5.03185pt too wide) in paragraph at lines 469--470 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]relation[][][] -with[][][][]Generator()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][] -double[][][]relation[][][]with[][][][]Generator +Overfull \hbox (8.63286pt too wide) in paragraph at lines 499--500 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]get[][ +][]minimized[][][]congruences()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sha +pe[][][]mpq[][][]class[][][]get[][][]minimized[] -Overfull \hbox (17.06184pt too wide) in paragraph at lines 475--476 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]relation[][][] -with[][][][]Congruence()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][ -]double[][][]relation[][][]with[][][][]Congruence +Overfull \hbox (0.2731pt too wide) in paragraph at lines 523--524 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]contai +ns[][][]integer[][][]point()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[ +][][]mpq[][][]class[][][]contains[][][]integer[] -Overfull \hbox (23.1515pt too wide) in paragraph at lines 493--494 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]get[][][]minim -ized[][][]constraints()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][] -double[][][]get[][][]minimized[][][]constraints +Overfull \hbox (2.60301pt too wide) in paragraph at lines 529--530 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]is[][] +[]topologically[][][]closed()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape +[][][]mpq[][][]class[][][]is[][][]topologically[][][] -Overfull \hbox (28.70157pt too wide) in paragraph at lines 499--500 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]get[][][]minim -ized[][][]congruences()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][] -double[][][]get[][][]minimized[][][]congruences -[45] +Overfull \hbox (30.05296pt too wide) in paragraph at lines 541--542 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]topolo +gical[][][]closure[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sh +ape[][][]mpq[][][]class[][][]topological[][][]closure[] +[67] Overfull \hbox (18.19531pt too wide) in paragraph at lines 448--450 []\OT1/pcr/m/n/10 ppl[][][][]Polyhedron[][][][]B[]H[]R[]Z03[][][]widening[][][] assign[][][]with[][][]tokens(+[]Handle[][][]1, +[]Handle[][][]2, +[] @@ -10362,21 +11203,26 @@ Underfull \hbox (badness 10000) in paragraph at lines 561--562 [36 -Overfull \hbox (1.1418pt too wide) in paragraph at lines 523--524 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]contains[][][] -integer[][][]point()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]dou -ble[][][]contains[][][]integer[][][]point ( +Overfull \hbox (7.81178pt too wide) in paragraph at lines 571--572 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]maximi +ze[][][]with[][][]point()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][] +[]mpq[][][]class[][][]maximize[][][]with[][][]point ( -Overfull \hbox (5.39171pt too wide) in paragraph at lines 529--530 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]is[][][]topolo -gically[][][]closed()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]do -uble[][][]is[][][]topologically[][][]closed ( +Overfull \hbox (6.15161pt too wide) in paragraph at lines 577--578 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]minimi +ze[][][]with[][][]point()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][] +[]mpq[][][]class[][][]minimize[][][]with[][][]point ( -Overfull \hbox (3.42314pt too wide) in paragraph at lines 541--542 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]topological[][ -][]closure[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][ -]double[][][]topological[][][]closure[] -[46]] +Overfull \hbox (1.11285pt too wide) in paragraph at lines 589--590 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]contai +ns[][][][]B[]D[][][][]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 int ppl[][][ +][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]contains[][][] + +Overfull \hbox (31.82233pt too wide) in paragraph at lines 595--596 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]strict +ly[][][]contains[][][][]B[]D[][][][]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/ +8 int ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]strictly[] +[68]] Overfull \hbox (2.5953pt too wide) in paragraph at lines 600--602 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]C[][][][]Polyhedron [][][]with[][][]complexity(+[]Handle, +[]Complexity, -[] @@ -10393,26 +11239,6 @@ []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[] [][]mpz[][][]class[][][]with[][][]complexity(+[]Handle, +[]Complexity, [37] -Overfull \hbox (19.51176pt too wide) in paragraph at lines 589--590 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]contains[][][] -[]B[]D[][][][]Shape[][][]double()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]S -hape[][][]double[][][]contains[][][][]B[]D[][][][]Shape[][][]double - -Overfull \hbox (32.32272pt too wide) in paragraph at lines 595--596 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]strictly[][][] -contains[][][][]B[]D[][][][]Shape[][][]double()[] \OT1/pcr/m/n/8 int ppl[][][][ -]B[]D[][][][]Shape[][][]double[][][]strictly[][][]contains[] - -Overfull \hbox (1.39285pt too wide) in paragraph at lines 601--602 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]is[][][]disjoi -nt[][][]from[][][][]B[]D[][][][]Shape[][][]double()[] \OT1/pcr/m/n/8 int ppl[][ -][][]B[]D[][][][]Shape[][][]double[][][]is[][][]disjoint[] - -Overfull \hbox (1.5818pt too wide) in paragraph at lines 607--608 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]equals[][][][] -B[]D[][][][]Shape[][][]double()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sha -pe[][][]double[][][]equals[][][][]B[]D[][][][]Shape[][][]double -[47] Overfull \hbox (12.81381pt too wide) in paragraph at lines 615--617 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[] [][]mpq[][][]class[][][]with[][][]complexity(+[]Handle, +[]Complexity, @@ -10436,7 +11262,27 @@ Overfull \hbox (39.2138pt too wide) in paragraph at lines 630--632 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]Octagonal[][][][]Sh ape[][][]double[][][]with[][][]complexity(+[]Handle, +[]Complexity, -[38] +[38 +Overfull \hbox (0.89246pt too wide) in paragraph at lines 601--602 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]is[][] +[]disjoint[][][]from[][][][]B[]D[][][][]Shape[][][]mpq[][][]class()[] \OT1/pcr/ +m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]is[] + +Overfull \hbox (19.66292pt too wide) in paragraph at lines 607--608 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]equals +[][][][]B[]D[][][][]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 int ppl[][][][ +]B[]D[][][][]Shape[][][]mpq[][][]class[][][]equals[][][][]B[]D[][][][]Shape[] + +Overfull \hbox (16.8717pt too wide) in paragraph at lines 643--644 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]refine +[][][]with[][][]constraint()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[ +][][]mpq[][][]class[][][]refine[][][]with[][][]constraint + +Overfull \hbox (22.42177pt too wide) in paragraph at lines 649--650 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]refine +[][][]with[][][]congruence()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[ +][][]mpq[][][]class[][][]refine[][][]with[][][]congruence +[69]] Overfull \hbox (7.44052pt too wide) in paragraph at lines 692--694 \OT1/ptm/m/it/10 Unifies \OT1/pcr/m/sl/10 Dimension[][][][]Type \OT1/ptm/m/it/1 0 with the di-men-sion of the vec-tor space en-clos-ing the grid ref-er-enced b @@ -10464,21 +11310,6 @@ []\OT1/pcr/m/n/10 ppl[][][][]Grid[][][]relation[][][]with[][][]grid[][][]genera tor(+[]Handle, +[]Grid[][][][]Generator, ?Relation[] [39] -Overfull \hbox (5.39195pt too wide) in paragraph at lines 649--650 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]refine[][][]wi -th[][][]congruence()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]dou -ble[][][]refine[][][]with[][][]congruence ( - -Overfull \hbox (8.53178pt too wide) in paragraph at lines 655--656 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]refine[][][]wi -th[][][]constraints()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]do -uble[][][]refine[][][]with[][][]constraints ( - -Overfull \hbox (4.48184pt too wide) in paragraph at lines 661--662 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]refine[][][]wi -th[][][]congruences()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]do -uble[][][]refine[][][]with[][][]congruences -[48 Overfull \hbox (41.6138pt too wide) in paragraph at lines 738--740 []\OT1/pcr/m/n/10 ppl[][][][]Grid[][][]maximize[][][]with[][][]point(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[][][]1, ?Coeff[][][]2, ?Boolean, @@ -10487,6 +11318,26 @@ []\OT1/pcr/m/n/10 ppl[][][][]Grid[][][]minimize[][][]with[][][]point(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[][][]1, ?Coeff[][][]2, ?Boolean, [40] +Overfull \hbox (25.5616pt too wide) in paragraph at lines 655--656 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]refine +[][][]with[][][]constraints()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape +[][][]mpq[][][]class[][][]refine[][][]with[][][]constraints + +Overfull \hbox (31.11166pt too wide) in paragraph at lines 661--662 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]refine +[][][]with[][][]congruences()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape +[][][]mpq[][][]class[][][]refine[][][]with[][][]congruences + +Overfull \hbox (2.93295pt too wide) in paragraph at lines 697--698 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]upper[ +][][]bound[][][]assign[][][]if[][][]exact()[] \OT1/pcr/m/n/8 int ppl[][][][]B[] +D[][][][]Shape[][][]mpq[][][]class[][][]upper[][][]bound[] + +Overfull \hbox (20.95264pt too wide) in paragraph at lines 703--704 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]simpli +fy[][][]using[][][]context[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[] +[][][]Shape[][][]mpq[][][]class[][][]simplify[][][]using[] +[70 Overfull \hbox (7.24037pt too wide) in paragraph at lines 785--787 \OT1/ptm/m/it/10 Updates the grid ref-er-enced by \OT1/pcr/m/sl/10 Handle \OT1/ ptm/m/it/10 to one ob-tained by re-fin-ing its con-straint sys-tem with \OT1/pc @@ -10509,26 +11360,6 @@ []\OT1/pcr/m/n/10 ppl[][][][]Grid[][][]generalized[][][]affine[][][]image(+[]Ha ndle, +[]P[]P[]L[][][][]Var, +[]Relation[][][][]Symbol, +[] [41]] -Overfull \hbox (7.98315pt too wide) in paragraph at lines 697--698 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]upper[][][]bou -nd[][][]assign[][][]if[][][]exact()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][ -]Shape[][][]double[][][]upper[][][]bound[][][]assign[] - -Overfull \hbox (30.80284pt too wide) in paragraph at lines 703--704 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]simplify[][][] -using[][][]context[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sh -ape[][][]double[][][]simplify[][][]using[][][]context[] - -Overfull \hbox (9.01286pt too wide) in paragraph at lines 715--716 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]unconstrain[][ -][]space[][][]dimension()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][] -[]double[][][]unconstrain[][][]space[] - -Overfull \hbox (12.90276pt too wide) in paragraph at lines 721--722 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]unconstrain[][ -][]space[][][]dimensions()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][ -][]double[][][]unconstrain[][][]space[] -[49 Overfull \hbox (14.0138pt too wide) in paragraph at lines 825--827 []\OT1/pcr/m/n/10 ppl[][][][]Grid[][][]generalized[][][]affine[][][]preimage(+[ ]Handle, +[]P[]P[]L[][][][]Var, +[]Relation[][][][]Symbol, @@ -10560,7 +11391,27 @@ Overfull \hbox (8.0138pt too wide) in paragraph at lines 846--848 []\OT1/pcr/m/n/10 ppl[][][][]Grid[][][]wrap[][][]assign(+[]Handle, +[]List[][][ ]of[][][][]P[]P[]L[][][][]Var, +[]Width, +[]Representation, -[42]] +[42] +Overfull \hbox (8.76266pt too wide) in paragraph at lines 715--716 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]uncons +train[][][]space[][][]dimension()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]S +hape[][][]mpq[][][]class[][][]unconstrain[] + +Overfull \hbox (12.65256pt too wide) in paragraph at lines 721--722 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]uncons +train[][][]space[][][]dimensions()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][] +Shape[][][]mpq[][][]class[][][]unconstrain[] + +Overfull \hbox (7.47191pt too wide) in paragraph at lines 739--740 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]bounde +d[][][]affine[][][]image()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][ +][]mpq[][][]class[][][]bounded[][][]affine[][][]image + +Overfull \hbox (3.83328pt too wide) in paragraph at lines 745--746 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]bounde +d[][][]affine[][][]preimage()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape +[][][]mpq[][][]class[][][]bounded[][][]affine[] +[71] Overfull \hbox (6.19531pt too wide) in paragraph at lines 875--877 []\OT1/pcr/m/n/10 ppl[][][][]Grid[][][]congruence[][][]widening[][][]assign[][] []with[][][]tokens(+[]Handle[][][]1, +[]Handle[][][]2, +[] @@ -10589,62 +11440,47 @@ []\OT1/pcr/m/n/10 ppl[][][][]Grid[][][]limited[][][]generator[][][]extrapolatio n[][][]assign(+[]Handle[][][]1, +[]Handle[][][]2, +[] [43] -Overfull \hbox (9.50198pt too wide) in paragraph at lines 745--746 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]bounded[][][]a -ffine[][][]preimage()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]do -uble[][][]bounded[][][]affine[][][]preimage - -Overfull \hbox (11.68184pt too wide) in paragraph at lines 751--752 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]generalized[][ -][]affine[][][]image()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]d -ouble[][][]generalized[][][]affine[][][]image - -Overfull \hbox (8.04321pt too wide) in paragraph at lines 757--758 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]generalized[][ -][]affine[][][]preimage()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][] -[]double[][][]generalized[][][]affine[] -[50] Overfull \hbox (0.99101pt too wide) in paragraph at lines 911--913 \OT1/ptm/m/it/10 Assigns to the grid \OT1/pcr/m/sl/10 P \OT1/ptm/m/it/10 ref-er -enced by \OT1/pcr/m/sl/10 Handle[][][]1 \OT1/ptm/m/it/10 the con-cate-na-tion of \OT1/pcr/m/sl/10 P \OT1/ptm/m/it/10 and the grid ref-er-enced by \OT1/pcr/m/ sl/10 Handle[] [44] -Overfull \hbox (27.10283pt too wide) in paragraph at lines 763--764 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]generalized[][ -][]affine[][][]image[][][]lhs[][][]rhs()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[] -[][][]Shape[][][]double[][][]generalized[][][]affine[] +Overfull \hbox (20.41315pt too wide) in paragraph at lines 751--752 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]genera +lized[][][]affine[][][]image()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shap +e[][][]mpq[][][]class[][][]generalized[][][]affine[] -Overfull \hbox (9.6827pt too wide) in paragraph at lines 769--770 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]generalized[][ -][]affine[][][]preimage[][][]lhs[][][]rhs()[] \OT1/pcr/m/n/8 int ppl[][][][]B[] -D[][][][]Shape[][][]double[][][]generalized[] +Overfull \hbox (2.99301pt too wide) in paragraph at lines 757--758 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]genera +lized[][][]affine[][][]preimage()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]S +hape[][][]mpq[][][]class[][][]generalized[] -Overfull \hbox (42.03287pt too wide) in paragraph at lines 775--776 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]add[][][]space -[][][]dimensions[][][]and[][][]embed()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][] -[][]Shape[][][]double[][][]add[][][]space[][][]dimensions[] +Overfull \hbox (22.05263pt too wide) in paragraph at lines 763--764 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]genera +lized[][][]affine[][][]image[][][]lhs[][][]rhs()[] \OT1/pcr/m/n/8 int ppl[][][] +[]B[]D[][][][]Shape[][][]mpq[][][]class[][][]generalized[] -Overfull \hbox (44.0629pt too wide) in paragraph at lines 781--782 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]add[][][]space -[][][]dimensions[][][]and[][][]project()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[] -[][][]Shape[][][]double[][][]add[][][]space[][][]dimensions[] +Overfull \hbox (36.31252pt too wide) in paragraph at lines 769--770 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]genera +lized[][][]affine[][][]preimage[][][]lhs[][][]rhs()[] \OT1/pcr/m/n/8 int ppl[][ +][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]generalized[] -Overfull \hbox (10.95177pt too wide) in paragraph at lines 787--788 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]remove[][][]sp -ace[][][]dimensions()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]do -uble[][][]remove[][][]space[][][]dimensions +Overfull \hbox (17.78265pt too wide) in paragraph at lines 775--776 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]add[][ +][]space[][][]dimensions[][][]and[][][]embed()[] \OT1/pcr/m/n/8 int ppl[][][][] +B[]D[][][][]Shape[][][]mpq[][][]class[][][]add[][][]space[] -Overfull \hbox (5.2329pt too wide) in paragraph at lines 793--794 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]remove[][][]hi -gher[][][]space[][][]dimensions()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]S -hape[][][]double[][][]remove[][][]higher[] +Overfull \hbox (19.81268pt too wide) in paragraph at lines 781--782 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]add[][ +][]space[][][]dimensions[][][]and[][][]project()[] \OT1/pcr/m/n/8 int ppl[][][] +[]B[]D[][][][]Shape[][][]mpq[][][]class[][][]add[][][]space[] -Overfull \hbox (2.11176pt too wide) in paragraph at lines 799--800 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]expand[][][]sp -ace[][][]dimension()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]dou -ble[][][]expand[][][]space[][][]dimension -[51 +Overfull \hbox (37.58159pt too wide) in paragraph at lines 787--788 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]remove +[][][]space[][][]dimensions()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape +[][][]mpq[][][]class[][][]remove[][][]space[][][]dimensions +[72] Overfull \hbox (6.19531pt too wide) in paragraph at lines 955--957 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Rational[][][][]Box[][][]from[][][]space[ ][][]dimension(+[]Dimension[][][][]Type, +[]Universe[][][]or[] @@ -10696,37 +11532,42 @@ Overfull \hbox (22.41382pt too wide) in paragraph at lines 1036--1038 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Rational[][][][]Box[][][]from[][][][]Octa gonal[][][][]Shape[][][]mpq[][][]class[][][]with[][][]complexity(+[]Handle, -[46]] -Overfull \hbox (27.4932pt too wide) in paragraph at lines 817--818 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]drop[][][]some -[][][]non[][][]integer[][][]points()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][] -[]Shape[][][]double[][][]drop[][][]some[][][]non[][][]integer[] +[46] +Overfull \hbox (0.1827pt too wide) in paragraph at lines 793--794 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]remove +[][][]higher[][][]space[][][]dimensions()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[ +][][][]Shape[][][]mpq[][][]class[][][]remove[] -Overfull \hbox (2.49318pt too wide) in paragraph at lines 823--824 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]drop[][][]some -[][][]non[][][]integer[][][]points[][][]2()[] \OT1/pcr/m/n/8 int ppl[][][][]B[] -D[][][][]Shape[][][]double[][][]drop[][][]some[][][]non[][][] +Overfull \hbox (28.74158pt too wide) in paragraph at lines 799--800 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]expand +[][][]space[][][]dimension()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[ +][][]mpq[][][]class[][][]expand[][][]space[][][]dimension -Overfull \hbox (0.96347pt too wide) in paragraph at lines 829--830 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]external[][][] -memory[][][]in[][][]bytes()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[] -[][]double[][][]external[][][]memory[][][]in[][][] +Overfull \hbox (13.1315pt too wide) in paragraph at lines 805--806 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]fold[] +[][]space[][][]dimensions()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[] +[][]mpq[][][]class[][][]fold[][][]space[][][]dimensions -Overfull \hbox (2.0126pt too wide) in paragraph at lines 841--842 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][][]B[]H[]M[]Z05 -[][][]widening[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/m/n/8 int ppl[][] -[][]B[]D[][][][]Shape[][][]double[][][][]B[]H[]M[]Z05[][][] +Overfull \hbox (10.8016pt too wide) in paragraph at lines 811--812 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]map[][ +][]space[][][]dimensions()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][ +][]mpq[][][]class[][][]map[][][]space[][][]dimensions -Overfull \hbox (3.23283pt too wide) in paragraph at lines 847--848 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][][]H79[][][]wid -ening[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[ -][][][]Shape[][][]double[][][][]H79[][][]widening[] +Overfull \hbox (0.36298pt too wide) in paragraph at lines 817--818 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]drop[] +[][]some[][][]non[][][]integer[][][]points()[] \OT1/pcr/m/n/8 int ppl[][][][]B[ +]D[][][][]Shape[][][]mpq[][][]class[][][]drop[][][]some[] -Overfull \hbox (9.3417pt too wide) in paragraph at lines 853--854 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][][]B[]H[]M[]Z05 -[][][]widening[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[ -][][]double[][][][]B[]H[]M[]Z05[][][]widening[][][]assign -[52 +Overfull \hbox (8.96298pt too wide) in paragraph at lines 823--824 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]drop[] +[][]some[][][]non[][][]integer[][][]points[][][]2()[] \OT1/pcr/m/n/8 int ppl[][ +][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]drop[][][]some[] + +Overfull \hbox (12.23328pt too wide) in paragraph at lines 829--830 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]extern +al[][][]memory[][][]in[][][]bytes()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][ +]Shape[][][]mpq[][][]class[][][]external[][][]memory[] +[73] Overfull \hbox (15.2138pt too wide) in paragraph at lines 1039--1041 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Rational[][][][]Box[][][]from[][][][]Doub le[][][][]Box[][][]with[][][]complexity(+[]Handle, +[]Complexity, @@ -10770,7 +11611,7 @@ Overfull \hbox (26.0138pt too wide) in paragraph at lines 1144--1146 []\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][]maximize(+[]Handle, +[]Li n[][][][]Expr, ?Coeff[][][]1, ?Coeff[][][]2, ?Boolean) -[48]] +[48] Overfull \hbox (26.0138pt too wide) in paragraph at lines 1149--1151 []\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][]minimize(+[]Handle, +[]Li n[][][][]Expr, ?Coeff[][][]1, ?Coeff[][][]2, ?Boolean) @@ -10783,31 +11624,41 @@ []\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][]minimize[][][]with[][][]p oint(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[][][]1, ?Coeff[] [49] -Overfull \hbox (18.33296pt too wide) in paragraph at lines 865--866 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]widening[][][] -assign[][][]with[][][]tokens()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shap -e[][][]double[][][]widening[][][]assign[][][]with[] +Overfull \hbox (12.81189pt too wide) in paragraph at lines 835--836 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]total[ +][][]memory[][][]in[][][]bytes()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sh +ape[][][]mpq[][][]class[][][]total[][][]memory[][][]in[][][]bytes -Overfull \hbox (19.372pt too wide) in paragraph at lines 877--878 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]limited[][][][ -]B[]H[]M[]Z05[][][]extrapolation[][][]assign[][][]with[][][]tokens()[] \OT1/pcr -/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]double[] +Overfull \hbox (1.7624pt too wide) in paragraph at lines 841--842 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][][]B[]H +[]M[]Z05[][][]widening[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/m/n/8 int + ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][][]B[] -Overfull \hbox (33.07224pt too wide) in paragraph at lines 883--884 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]limited[][][][ -]H79[][][]extrapolation[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/m/n/8 in -t ppl[][][][]B[]D[][][][]Shape[][][]double[][][]limited[] +Overfull \hbox (29.86266pt too wide) in paragraph at lines 847--848 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][][]H79[ +][][]widening[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/m/n/8 int ppl[][][ +][]B[]D[][][][]Shape[][][]mpq[][][]class[][][][]H79[][][]widening[] -Overfull \hbox (3.25226pt too wide) in paragraph at lines 889--890 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]limited[][][][ -]C[]C76[][][]extrapolation[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/m/n/8 - int ppl[][][][]B[]D[][][][]Shape[][][]double[] +Overfull \hbox (13.27301pt too wide) in paragraph at lines 853--854 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][][]B[]H +[]M[]Z05[][][]widening[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][] +[]Shape[][][]mpq[][][]class[][][][]B[]H[]M[]Z05[][][]widening[] -Overfull \hbox (2.08258pt too wide) in paragraph at lines 895--896 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]limited[][][][ -]B[]H[]M[]Z05[][][]extrapolation[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][] -B[]D[][][][]Shape[][][]double[][][]limited[] -[53 +Overfull \hbox (8.39174pt too wide) in paragraph at lines 859--860 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][][]H79[ +][][]widening[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[] +[][]mpq[][][]class[][][][]H79[][][]widening[][][]assign ( + +Overfull \hbox (22.88277pt too wide) in paragraph at lines 865--866 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]wideni +ng[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][] +[][]Shape[][][]mpq[][][]class[][][]widening[][][]assign[] + +Overfull \hbox (1.84178pt too wide) in paragraph at lines 877--878 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]limite +d[][][][]B[]H[]M[]Z05[][][]extrapolation[][][]assign[][][]with[][][]tokens()[] +\OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[] +[74] Overfull \hbox (3.2138pt too wide) in paragraph at lines 1217--1219 []\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][]unconstrain[][][]space[][ ][]dimensions(+[]Handle, +[]List[][][]of[][][][]P[]P[]L[][][][]Var) @@ -10832,7 +11683,42 @@ Overfull \hbox (22.9953pt too wide) in paragraph at lines 1235--1237 []\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][]generalized[][][]affine[] [][]preimage(+[]Handle, +[]P[]P[]L[][][][]Var, +[]Relation[] -[50]] +[50 +Overfull \hbox (23.22203pt too wide) in paragraph at lines 883--884 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]limite +d[][][][]H79[][][]extrapolation[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/ +m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[] + +Overfull \hbox (3.00206pt too wide) in paragraph at lines 889--890 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]limite +d[][][][]C[]C76[][][]extrapolation[][][]assign[][][]with[][][]tokens()[] \OT1/p +cr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]mpq[] + +Overfull \hbox (28.7124pt too wide) in paragraph at lines 895--896 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]limite +d[][][][]B[]H[]M[]Z05[][][]extrapolation[][][]assign()[] \OT1/pcr/m/n/8 int ppl +[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]limited[] + +Overfull \hbox (5.93262pt too wide) in paragraph at lines 901--902 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]limite +d[][][][]H79[][][]extrapolation[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B +[]D[][][][]Shape[][][]mpq[][][]class[][][]limited[] + +Overfull \hbox (12.59267pt too wide) in paragraph at lines 907--908 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]limite +d[][][][]C[]C76[][][]extrapolation[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][] +[]B[]D[][][][]Shape[][][]mpq[][][]class[][][]limited[] + +Overfull \hbox (3.96262pt too wide) in paragraph at lines 913--914 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][][]C[]C +76[][][]extrapolation[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/m/n/8 int +ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][][]C[] + +Overfull \hbox (29.87323pt too wide) in paragraph at lines 919--920 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][][]C[]C +76[][][]extrapolation[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][ +]Shape[][][]mpq[][][]class[][][][]C[]C76[][][]extrapolation[] +[75]] Overfull \hbox (15.79532pt too wide) in paragraph at lines 1238--1240 []\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][]generalized[][][]affine[] [][]image[][][]lhs[][][]rhs(+[]Handle, +[]Lin[][][][]Expr[][][]1, +[] @@ -10853,36 +11739,6 @@ []\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][]linear[][][]partition(+[] Handle[][][]1, +[]Handle[][][]2, -[]Handle[][][]3, -[]Handle[] [51] -Overfull \hbox (61.86285pt too wide) in paragraph at lines 901--902 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]limited[][][][ -]H79[][][]extrapolation[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][ -][]Shape[][][]double[][][]limited[][][][]H79[][][]extrapolation[] - -Overfull \hbox (8.04286pt too wide) in paragraph at lines 907--908 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]limited[][][][ -]C[]C76[][][]extrapolation[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[] -[][][]Shape[][][]double[][][]limited[][][][]C[]C76[] - -Overfull \hbox (57.01285pt too wide) in paragraph at lines 913--914 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][][]C[]C76[][][] -extrapolation[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/m/n/8 int ppl[][][ -][]B[]D[][][][]Shape[][][]double[][][][]C[]C76[][][]extrapolation[] - -Overfull \hbox (3.24341pt too wide) in paragraph at lines 919--920 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][][]C[]C76[][][] -extrapolation[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[] -[][]double[][][][]C[]C76[][][]extrapolation[] - -Overfull \hbox (3.84216pt too wide) in paragraph at lines 925--926 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][][]C[]C76[][][] -narrowing[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][] -double[][][][]C[]C76[][][]narrowing[][][]assign ( - -Overfull \hbox (40.0231pt too wide) in paragraph at lines 943--944 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]recyc -le[][][][]Constraint[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B -[]D[][][][]Shape[][][]double[][][]recycle[][][][]Constraint[] -[54] Overfull \hbox (15.79532pt too wide) in paragraph at lines 1276--1278 []\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][][]C[]C76[][][]widening[][ ][]assign[][][]with[][][]tokens(+[]Handle[][][]1, +[]Handle[][][]2, +[] @@ -10898,42 +11754,32 @@ Overfull \hbox (0.19531pt too wide) in paragraph at lines 1291--1293 []\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][]limited[][][][]C[]C76[][] []extrapolation[][][]assign(+[]Handle[][][]1, +[]Handle[][][] -[52 -Overfull \hbox (45.57317pt too wide) in paragraph at lines 949--950 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]recyc -le[][][][]Congruence[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B -[]D[][][][]Shape[][][]double[][][]recycle[][][][]Congruence[] - -Overfull \hbox (33.54317pt too wide) in paragraph at lines 955--956 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]recyc -le[][][][]Generator[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[ -]D[][][][]Shape[][][]double[][][]recycle[][][][]Generator[] - -Overfull \hbox (0.37323pt too wide) in paragraph at lines 961--962 - []\OT1/ptm/b/n/10 ppl[][][]assign[][][][]B[]D[][][][]Shape[][][]double[][][]fr -om[][][][]B[]D[][][][]Shape[][][]double()[] \OT1/pcr/m/n/8 int ppl[][][]assign[ -][][][]B[]D[][][][]Shape[][][]double[][][]from[][][][]B[]D[][][] +[52] +Overfull \hbox (1.05347pt too wide) in paragraph at lines 925--926 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][][]C[]C +76[][][]narrowing[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sha +pe[][][]mpq[][][]class[][][][]C[]C76[][][]narrowing[][][] -Overfull \hbox (12.06174pt too wide) in paragraph at lines 967--968 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]add[][][]recyc -led[][][]constraints()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]d -ouble[][][]add[][][]recycled[][][]constraints +Overfull \hbox (15.77289pt too wide) in paragraph at lines 943--944 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ +][]recycle[][][][]Constraint[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[ +][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]recycle[] -Overfull \hbox (17.6118pt too wide) in paragraph at lines 973--974 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]add[][][]recyc -led[][][]congruences()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]d -ouble[][][]add[][][]recycled[][][]congruences +Overfull \hbox (21.32295pt too wide) in paragraph at lines 949--950 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ +][]recycle[][][][]Congruence[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[ +][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]recycle[] -Overfull \hbox (2.01312pt too wide) in paragraph at lines 991--992 - []\OT1/ptm/b/n/10 ppl[][][]one[][][]affine[][][]ranking[][][]function[][][][]M -[]S[][][][]B[]D[][][][]Shape[][][]double()[] \OT1/pcr/m/n/8 int ppl[][][]one[][ -][]affine[][][]ranking[][][]function[][][][]M[] +Overfull \hbox (14.09296pt too wide) in paragraph at lines 955--956 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ +][]recycle[][][][]Generator[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[] +[][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]recycle[] -Overfull \hbox (0.3432pt too wide) in paragraph at lines 997--998 - []\OT1/ptm/b/n/10 ppl[][][]one[][][]affine[][][]ranking[][][]function[][][][]P -[]R[][][][]B[]D[][][][]Shape[][][]double()[] \OT1/pcr/m/n/8 int ppl[][][]one[][ -][]affine[][][]ranking[][][]function[][][][]P[] -[55] +Overfull \hbox (3.71283pt too wide) in paragraph at lines 961--962 + []\OT1/ptm/b/n/10 ppl[][][]assign[][][][]B[]D[][][][]Shape[][][]mpq[][][]class +[][][]from[][][][]B[]D[][][][]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 int +ppl[][][]assign[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[] +[76] Overfull \hbox (9.2138pt too wide) in paragraph at lines 1310--1312 []\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][]add[][][]space[][][]dimen sions[][][]and[][][]embed(+[]Handle, +[]Dimension[][][][]Type) @@ -10965,7 +11811,7 @@ Overfull \hbox (3.2138pt too wide) in paragraph at lines 1357--1359 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] []from[][][]congruences(+[]Congruence[][][][]System, -[]Handle) -[53]] +[53] Underfull \hbox (badness 10000) in paragraph at lines 1368--1369 @@ -10993,6 +11839,51 @@ []\OT1/pcr/m/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] []from[][][][]Octagonal[][][][]Shape[][][]double(+[]Handle[][][]1, -[]Handle[] [54] +Overfull \hbox (38.69156pt too wide) in paragraph at lines 967--968 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]add[][ +][]recycled[][][]constraints()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shap +e[][][]mpq[][][]class[][][]add[][][]recycled[][][]constraints + +Overfull \hbox (0.4231pt too wide) in paragraph at lines 973--974 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]add[][ +][]recycled[][][]congruences()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shap +e[][][]mpq[][][]class[][][]add[][][]recycled[][][] + +Overfull \hbox (6.13176pt too wide) in paragraph at lines 979--980 + []\OT1/ptm/b/n/10 ppl[][][]termination[][][]test[][][][]M[]S[][][][]B[]D[][][] +[]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 int ppl[][][]termination[][][]te +st[][][][]M[]S[][][][]B[]D[][][][]Shape[][][]mpq[][][]class ( + +Overfull \hbox (4.46184pt too wide) in paragraph at lines 985--986 + []\OT1/ptm/b/n/10 ppl[][][]termination[][][]test[][][][]P[]R[][][][]B[]D[][][] +[]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 int ppl[][][]termination[][][]te +st[][][][]P[]R[][][][]B[]D[][][][]Shape[][][]mpq[][][]class ( + +Overfull \hbox (8.48293pt too wide) in paragraph at lines 991--992 + []\OT1/ptm/b/n/10 ppl[][][]one[][][]affine[][][]ranking[][][]function[][][][]M +[]S[][][][]B[]D[][][][]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 int ppl[][] +[]one[][][]affine[][][]ranking[][][]function[] + +Overfull \hbox (6.813pt too wide) in paragraph at lines 997--998 + []\OT1/ptm/b/n/10 ppl[][][]one[][][]affine[][][]ranking[][][]function[][][][]P +[]R[][][][]B[]D[][][][]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 int ppl[][] +[]one[][][]affine[][][]ranking[][][]function[] + +Overfull \hbox (12.73273pt too wide) in paragraph at lines 1003--1004 + []\OT1/ptm/b/n/10 ppl[][][]all[][][]affine[][][]ranking[][][]functions[][][][] +M[]S[][][][]B[]D[][][][]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 int ppl[][ +][]all[][][]affine[][][]ranking[][][]functions[] + +Overfull \hbox (11.0628pt too wide) in paragraph at lines 1009--1010 + []\OT1/ptm/b/n/10 ppl[][][]all[][][]affine[][][]ranking[][][]functions[][][][] +P[]R[][][][]B[]D[][][][]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 int ppl[][ +][]all[][][]affine[][][]ranking[][][]functions[] + +Overfull \hbox (14.11327pt too wide) in paragraph at lines 1015--1016 + []\OT1/ptm/b/n/10 ppl[][][]termination[][][]test[][][][]M[]S[][][][]B[]D[][][] +[]Shape[][][]mpq[][][]class[][][]2()[] \OT1/pcr/m/n/8 int ppl[][][]termination[ +][][]test[][][][]M[]S[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[] +[77] Overfull \hbox (1.39532pt too wide) in paragraph at lines 1407--1409 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] []from[][][][]C[][][][]Polyhedron[][][]with[][][]complexity(+[]Handle, +[] @@ -11043,37 +11934,7 @@ Overfull \hbox (4.99533pt too wide) in paragraph at lines 1437--1439 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] []from[][][][]Octagonal[][][][]Shape[][][]double[][][]with[][][]complexity(+[] -[55 -Overfull \hbox (1.46292pt too wide) in paragraph at lines 1003--1004 - []\OT1/ptm/b/n/10 ppl[][][]all[][][]affine[][][]ranking[][][]functions[][][][] -M[]S[][][][]B[]D[][][][]Shape[][][]double()[] \OT1/pcr/m/n/8 int ppl[][][]all[] -[][]affine[][][]ranking[][][]functions[][][] - -Overfull \hbox (4.593pt too wide) in paragraph at lines 1009--1010 - []\OT1/ptm/b/n/10 ppl[][][]all[][][]affine[][][]ranking[][][]functions[][][][] -P[]R[][][][]B[]D[][][][]Shape[][][]double()[] \OT1/pcr/m/n/8 int ppl[][][]all[] -[][]affine[][][]ranking[][][]functions[][][][]P[] - -Overfull \hbox (2.93312pt too wide) in paragraph at lines 1027--1028 - []\OT1/ptm/b/n/10 ppl[][][]one[][][]affine[][][]ranking[][][]function[][][][]M -[]S[][][][]B[]D[][][][]Shape[][][]double[][][]2()[] \OT1/pcr/m/n/8 int ppl[][][ -]one[][][]affine[][][]ranking[][][]function[] - -Overfull \hbox (1.2632pt too wide) in paragraph at lines 1033--1034 - []\OT1/ptm/b/n/10 ppl[][][]one[][][]affine[][][]ranking[][][]function[][][][]P -[]R[][][][]B[]D[][][][]Shape[][][]double[][][]2()[] \OT1/pcr/m/n/8 int ppl[][][ -]one[][][]affine[][][]ranking[][][]function[] - -Overfull \hbox (7.18292pt too wide) in paragraph at lines 1039--1040 - []\OT1/ptm/b/n/10 ppl[][][]all[][][]affine[][][]ranking[][][]functions[][][][] -M[]S[][][][]B[]D[][][][]Shape[][][]double[][][]2()[] \OT1/pcr/m/n/8 int ppl[][] -[]all[][][]affine[][][]ranking[][][]functions[] - -Overfull \hbox (5.513pt too wide) in paragraph at lines 1045--1046 - []\OT1/ptm/b/n/10 ppl[][][]all[][][]affine[][][]ranking[][][]functions[][][][] -P[]R[][][][]B[]D[][][][]Shape[][][]double[][][]2()[] \OT1/pcr/m/n/8 int ppl[][] -[]all[][][]affine[][][]ranking[][][]functions[] -[56] +[55] Overfull \hbox (4.99533pt too wide) in paragraph at lines 1480--1482 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]strictl y[][][]contains[][][][]B[]D[][][][]Shape[][][]mpz[][][]class(+[]Handle[][][]1, @@ -11101,7 +11962,32 @@ \OT1/ptm/m/it/10 Unifies \OT1/pcr/m/sl/10 Relation[][][][]List \OT1/ptm/m/it/10 with the list of re-la-tions the bd shape ref-er-enced by \OT1/pcr/m/sl/10 Han dle \OT1/ptm/m/it/10 has with \OT1/pcr/m/sl/10 Generator\OT1/ptm/m/it/10 . -[56]]) (./interfaceppl__BD__Shape__mpq__class__tag.tex +[56] +Overfull \hbox (12.44334pt too wide) in paragraph at lines 1021--1022 + []\OT1/ptm/b/n/10 ppl[][][]termination[][][]test[][][][]P[]R[][][][]B[]D[][][] +[]Shape[][][]mpq[][][]class[][][]2()[] \OT1/pcr/m/n/8 int ppl[][][]termination[ +][][]test[][][][]P[]R[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[] + +Overfull \hbox (17.08293pt too wide) in paragraph at lines 1027--1028 + []\OT1/ptm/b/n/10 ppl[][][]one[][][]affine[][][]ranking[][][]function[][][][]M +[]S[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]2()[] \OT1/pcr/m/n/8 int +ppl[][][]one[][][]affine[][][]ranking[][][]function[] + +Overfull \hbox (15.41301pt too wide) in paragraph at lines 1033--1034 + []\OT1/ptm/b/n/10 ppl[][][]one[][][]affine[][][]ranking[][][]function[][][][]P +[]R[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]2()[] \OT1/pcr/m/n/8 int +ppl[][][]one[][][]affine[][][]ranking[][][]function[] + +Overfull \hbox (21.33273pt too wide) in paragraph at lines 1039--1040 + []\OT1/ptm/b/n/10 ppl[][][]all[][][]affine[][][]ranking[][][]functions[][][][] +M[]S[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]2()[] \OT1/pcr/m/n/8 int + ppl[][][]all[][][]affine[][][]ranking[][][]functions[] + +Overfull \hbox (19.66281pt too wide) in paragraph at lines 1045--1046 + []\OT1/ptm/b/n/10 ppl[][][]all[][][]affine[][][]ranking[][][]functions[][][][] +P[]R[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]2()[] \OT1/pcr/m/n/8 int + ppl[][][]all[][][]affine[][][]ranking[][][]functions[] +[78 Overfull \hbox (56.5953pt too wide) in paragraph at lines 1511--1513 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]relatio n[][][]with[][][]congruence(+[]Handle, +[]Congruence, ?Relation[] @@ -11134,31 +12020,7 @@ Overfull \hbox (0.81381pt too wide) in paragraph at lines 1541--1543 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]minimiz e[][][]with[][][]point(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[][][]1, -[57] -Overfull \hbox (5.86221pt too wide) in paragraph at lines 19--21 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][] -class[][][]from[][][][]C[][][][]Polyhedron[][] ([][]ppl[][][][]B[]D[][][][]Shap -e[][][]mpq[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [] -[]ppl[][][]const[] - -Overfull \hbox (3.64197pt too wide) in paragraph at lines 25--27 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][] -class[][][]from[][][][]Rational[][][][]Box[][] ([][]ppl[][][][]B[]D[][][][]Shap -e[][][]mpq[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [] -[]ppl[][][]const[] - -Overfull \hbox (10.56195pt too wide) in paragraph at lines 27--29 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][] -class[][][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] ([][]ppl[][][] -[]B[]D[][][][]Shape[][][]mpq[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/p -tm/bc/n/10 pph, [][]ppl[] - -Overfull \hbox (11.12201pt too wide) in paragraph at lines 29--31 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][] -class[][][]from[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] ([][]ppl[][][] -[]B[]D[][][][]Shape[][][]mpq[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/p -tm/bc/n/10 pph, [][]ppl[] -[57 +[57]]) (./interfaceppl__BD__Shape__mpz__class__tag.tex Overfull \hbox (25.80045pt too wide) in paragraph at lines 1577--1579 \OT1/ptm/m/it/10 Updates the bd shape ref-er-enced by \OT1/pcr/m/sl/10 Handle \ OT1/ptm/m/it/10 to one ob-tained by re-fin-ing its con-straint sys-tem with \OT @@ -11211,7 +12073,48 @@ Overfull \hbox (3.79532pt too wide) in paragraph at lines 1626--1628 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]wrap[][ ][]assign(+[]Handle, +[]List[][][]of[][][][]P[]P[]L[][][][]Var, +[]Width, +[] -[59]] +[59] +Overfull \hbox (4.7421pt too wide) in paragraph at lines 19--21 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][] +class[][][]from[][][][]C[][][][]Polyhedron[][] ([][]ppl[][][][]B[]D[][][][]Shap +e[][][]mpz[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [] +[]ppl[][][]const[] + +Overfull \hbox (2.52185pt too wide) in paragraph at lines 25--27 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][] +class[][][]from[][][][]Rational[][][][]Box[][] ([][]ppl[][][][]B[]D[][][][]Shap +e[][][]mpz[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [] +[]ppl[][][]const[] + +Overfull \hbox (9.44183pt too wide) in paragraph at lines 27--29 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][] +class[][][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] ([][]ppl[][][] +[]B[]D[][][][]Shape[][][]mpz[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/p +tm/bc/n/10 pph, [][]ppl[] + +Overfull \hbox (10.00189pt too wide) in paragraph at lines 29--31 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][] +class[][][]from[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] ([][]ppl[][][] +[]B[]D[][][][]Shape[][][]mpz[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/p +tm/bc/n/10 pph, [][]ppl[] + +Overfull \hbox (12.8701pt too wide) in paragraph at lines 31--33 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][] +class[][][]from[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][] ([][]ppl[ +][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\ +OT1/ptm/bc/n/10 pph, + +Overfull \hbox (4.28183pt too wide) in paragraph at lines 41--43 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][] +class[][][]from[][][][]C[][][][]Polyhedron[][][]with[][][]complexity[][] ([][]p +pl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[] + +Overfull \hbox (11.81184pt too wide) in paragraph at lines 45--47 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][] +class[][][]from[][][][]Grid[][][]with[][][]complexity[][] ([][]ppl[][][][]B[]D[ +][][][]Shape[][][]mpz[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n +/10 pph, [][]ppl[] +[79] Overfull \hbox (3.79532pt too wide) in paragraph at lines 1648--1650 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]simplif y[][][]using[][][]context[][][]assign(+[]Handle[][][]1, +[]Handle[] @@ -11236,80 +12139,7 @@ Overfull \hbox (7.39532pt too wide) in paragraph at lines 1676--1678 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]limited [][][][]B[]H[]M[]Z05[][][]extrapolation[][][]assign[][][]with[][][]tokens(+[] -[60 -Overfull \hbox (0.95065pt too wide) in paragraph at lines 39--41 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][] -class[][][]from[][][][]Octagonal[][][][]Shape[][][]double[][] ([][]ppl[][][][]B -[]D[][][][]Shape[][][]mpq[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/ -bc/n/10 pph, - -Overfull \hbox (5.40195pt too wide) in paragraph at lines 41--43 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][] -class[][][]from[][][][]C[][][][]Polyhedron[][][]with[][][]complexity[][] ([][]p -pl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[] - -Overfull \hbox (12.93196pt too wide) in paragraph at lines 45--47 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][] -class[][][]from[][][][]Grid[][][]with[][][]complexity[][] ([][]ppl[][][][]B[]D[ -][][][]Shape[][][]mpq[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n -/10 pph, [][]ppl[] - -Overfull \hbox (3.1817pt too wide) in paragraph at lines 47--49 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][] -class[][][]from[][][][]Rational[][][][]Box[][][]with[][][]complexity[][] ([][]p -pl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[] - -Overfull \hbox (11.77185pt too wide) in paragraph at lines 49--51 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][] -class[][][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]with[][][]com -plexity[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[] - -Overfull \hbox (12.33191pt too wide) in paragraph at lines 51--53 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][] -class[][][]from[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]with[][][]com -plexity[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[] - -Overfull \hbox (17.60164pt too wide) in paragraph at lines 53--55 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][] -class[][][]from[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]with[][] -[]complexity[][] ([][]ppl[][][][]B[]D[][][][]Shape[] - -Overfull \hbox (18.1617pt too wide) in paragraph at lines 55--57 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][] -class[][][]from[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]with[][] -[]complexity[][] ([][]ppl[][][][]B[]D[][][][]Shape[] - -Overfull \hbox (4.56207pt too wide) in paragraph at lines 61--63 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][] -class[][][]from[][][][]Octagonal[][][][]Shape[][][]double[][][]with[][][]comple -xity[][] ([][]ppl[][][][]B[]D[][][][]Shape[] - -Overfull \hbox (6.14209pt too wide) in paragraph at lines 65--67 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][] -class[][][]from[][][][]Congruence[][][][]System[][] ([][]ppl[][][][]B[]D[][][][ -]Shape[][][]mpq[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pp -h, [][]ppl[] - -Overfull \hbox (9.18156pt too wide) in paragraph at lines 69--71 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]space[][][]dimension[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]mp -q[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] - -Overfull \hbox (9.49162pt too wide) in paragraph at lines 71--73 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]affine[][][]dimension[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]m -pq[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] - -Overfull \hbox (0.2818pt too wide) in paragraph at lines 77--79 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]relation[][][]with[][][][]Congruence[][] ([][]ppl[][][]const[][][][]B[]D[][][ -][]Shape[][][]mpq[][][]class[][][]t[][] ph, [][]ppl[] - -Overfull \hbox (25.56108pt too wide) in paragraph at lines 79--81 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]get[][][]constraints[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]mp -q[][][]class[][][]t[][] ph, [][]ppl[][][]const[][][][]Constraint[] -[58] +[60] Overfull \hbox (25.39532pt too wide) in paragraph at lines 1679--1681 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]limited [][][][]H79[][][]extrapolation[][][]assign[][][]with[][][]tokens(+[]Handle[] @@ -11334,7 +12164,7 @@ Overfull \hbox (15.79532pt too wide) in paragraph at lines 1710--1712 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]add[][] []space[][][]dimensions[][][]and[][][]embed(+[]Handle, +[]Dimension[] -[61]] +[61] Overfull \hbox (27.79532pt too wide) in paragraph at lines 1713--1715 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]add[][] []space[][][]dimensions[][][]and[][][]project(+[]Handle, +[]Dimension[] @@ -11369,83 +12199,6 @@ []\OT1/pcr/m/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] []from[][][]congruences(+[]Congruence[][][][]System, -[]Handle) [62] -Overfull \hbox (1.9613pt too wide) in paragraph at lines 83--85 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]get[][][]minimized[][][]constraints[][] ([][]ppl[][][]const[][][][]B[]D[][][] -[]Shape[][][]mpq[][][]class[][][]t[][] ph, [][]ppl[] - -Overfull \hbox (8.61162pt too wide) in paragraph at lines 85--87 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]get[][][]minimized[][][]congruences[][] ([][]ppl[][][]const[][][][]B[]D[][][] -[]Shape[][][]mpq[][][]class[][][]t[][] ph, [][]ppl[] - -Overfull \hbox (0.25233pt too wide) in paragraph at lines 101--103 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]bounds[][][]from[][][]above[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[ -][][]mpq[][][]class[][][]t[][] ph, [][]ppl[][][]const[] - -Overfull \hbox (0.86206pt too wide) in paragraph at lines 103--105 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]bounds[][][]from[][][]below[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[ -][][]mpq[][][]class[][][]t[][] ph, [][]ppl[][][]const[] - -Overfull \hbox (6.12149pt too wide) in paragraph at lines 109--111 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]maximize[][][]with[][][]point[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shap -e[][][]mpq[][][]class[][][]t[][] ph, [][]ppl[][][]const[] - -Overfull \hbox (14.09169pt too wide) in paragraph at lines 109--111 -[][][]\OT1/ptm/bc/n/10 Linear[][][][]Expression[][][]t[][] le, [][]ppl[][][][]C -oefficient[][][]t[][] ext[][][]n, [][]ppl[][][][]Coefficient[][][]t[][] ext[][] -[]d, int $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 poptimum, [][]ppl[][][][]Genera -tor[] - -Overfull \hbox (4.46144pt too wide) in paragraph at lines 111--113 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]minimize[][][]with[][][]point[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shap -e[][][]mpq[][][]class[][][]t[][] ph, [][]ppl[][][]const[] - -Overfull \hbox (14.09169pt too wide) in paragraph at lines 111--113 -[][][]\OT1/ptm/bc/n/10 Linear[][][][]Expression[][][]t[][] le, [][]ppl[][][][]C -oefficient[][][]t[][] ext[][][]n, [][]ppl[][][][]Coefficient[][][]t[][] ext[][] -[]d, int $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 poptimum, [][]ppl[][][][]Genera -tor[] - -Overfull \hbox (14.71156pt too wide) in paragraph at lines 115--117 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]contains[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] ([][]ppl[][][]const -[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]t[][] x, [][]ppl[] - -Overfull \hbox (14.12123pt too wide) in paragraph at lines 119--121 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]is[][][]disjoint[][][]from[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] ( -[][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[] - -Overfull \hbox (6.93167pt too wide) in paragraph at lines 121--123 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]equals[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] ([][]ppl[][][]const[] -[][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]t[][] x, [][]ppl[] - -Overfull \hbox (12.4822pt too wide) in paragraph at lines 127--129 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]add[][][]congruence[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class -[][][]t[][] ph, [][]ppl[][][]const[][][][]Congruence[] - -Overfull \hbox (3.07146pt too wide) in paragraph at lines 129--131 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]add[][][]constraints[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]clas -s[][][]t[][] ph, [][]ppl[][][]const[][][][]Constraint[] - -Overfull \hbox (16.37209pt too wide) in paragraph at lines 131--133 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]add[][][]congruences[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]clas -s[][][]t[][] ph, [][]ppl[][][]const[][][][]Congruence[] - -Overfull \hbox (28.89116pt too wide) in paragraph at lines 133--135 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]refine[][][]with[][][]constraint[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]m -pq[][][]class[][][]t[][] ph, [][]ppl[][][]const[][][][]Constraint[] -[59 Underfull \hbox (badness 10000) in paragraph at lines 1768--1769 @@ -11477,6 +12230,72 @@ []\OT1/pcr/m/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] []from[][][][]C[][][][]Polyhedron[][][]with[][][]complexity(+[]Handle, +[] [63] +Overfull \hbox (2.06158pt too wide) in paragraph at lines 47--49 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][] +class[][][]from[][][][]Rational[][][][]Box[][][]with[][][]complexity[][] ([][]p +pl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[] + +Overfull \hbox (10.65173pt too wide) in paragraph at lines 49--51 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][] +class[][][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]with[][][]com +plexity[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[] + +Overfull \hbox (11.21179pt too wide) in paragraph at lines 51--53 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][] +class[][][]from[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]with[][][]com +plexity[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[] + +Overfull \hbox (17.04158pt too wide) in paragraph at lines 53--55 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][] +class[][][]from[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]with[][] +[]complexity[][] ([][]ppl[][][][]B[]D[][][][]Shape[] + +Overfull \hbox (17.60164pt too wide) in paragraph at lines 55--57 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][] +class[][][]from[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]with[][] +[]complexity[][] ([][]ppl[][][][]B[]D[][][][]Shape[] + +Overfull \hbox (4.00201pt too wide) in paragraph at lines 61--63 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][] +class[][][]from[][][][]Octagonal[][][][]Shape[][][]double[][][]with[][][]comple +xity[][] ([][]ppl[][][][]B[]D[][][][]Shape[] + +Overfull \hbox (5.02197pt too wide) in paragraph at lines 65--67 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][] +class[][][]from[][][][]Congruence[][][][]System[][] ([][]ppl[][][][]B[]D[][][][ +]Shape[][][]mpz[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pp +h, [][]ppl[] + +Overfull \hbox (8.06145pt too wide) in paragraph at lines 69--71 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]space[][][]dimension[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]mp +z[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] + +Overfull \hbox (8.3715pt too wide) in paragraph at lines 71--73 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]affine[][][]dimension[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]m +pz[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] + +Overfull \hbox (24.44096pt too wide) in paragraph at lines 79--81 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]get[][][]constraints[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]mp +z[][][]class[][][]t[][] ph, [][]ppl[][][]const[][][][]Constraint[] + +Overfull \hbox (37.7416pt too wide) in paragraph at lines 81--83 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]get[][][]congruences[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]mp +z[][][]class[][][]t[][] ph, [][]ppl[][][]const[][][][]Congruence[] + +Overfull \hbox (0.84119pt too wide) in paragraph at lines 83--85 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]get[][][]minimized[][][]constraints[][] ([][]ppl[][][]const[][][][]B[]D[][][] +[]Shape[][][]mpz[][][]class[][][]t[][] ph, [][]ppl[] + +Overfull \hbox (7.4915pt too wide) in paragraph at lines 85--87 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]get[][][]minimized[][][]congruences[][] ([][]ppl[][][]const[][][][]B[]D[][][] +[]Shape[][][]mpz[][][]class[][][]t[][] ph, [][]ppl[] +[80 Overfull \hbox (13.39532pt too wide) in paragraph at lines 1810--1812 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] []from[][][][]N[]N[]C[][][][]Polyhedron[][][]with[][][]complexity(+[]Handle, +[ @@ -11552,101 +12371,6 @@ with the list of re-la-tions the bd shape ref-er-enced by \OT1/pcr/m/sl/10 Han dle \OT1/ptm/m/it/10 has with \OT1/pcr/m/sl/10 Generator\OT1/ptm/m/it/10 . [65] -Overfull \hbox (12.2214pt too wide) in paragraph at lines 141--143 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]intersection[][][]assign[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][] -class[][][]t[][] x, [][]ppl[][][]const[][][][]B[]D[][][][]Shape[] - -Overfull \hbox (5.84169pt too wide) in paragraph at lines 145--147 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]difference[][][]assign[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]cl -ass[][][]t[][] x, [][]ppl[][][]const[][][][]B[]D[][][][]Shape[] - -Overfull \hbox (12.7616pt too wide) in paragraph at lines 147--149 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]concatenate[][][]assign[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]c -lass[][][]t[][] x, [][]ppl[][][]const[][][][]B[]D[][][][]Shape[] - -Overfull \hbox (11.9314pt too wide) in paragraph at lines 149--151 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]time[][][]elapse[][][]assign[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[] -[][]class[][][]t[][] x, [][]ppl[][][]const[][][][]B[]D[][][][]Shape[] - -Overfull \hbox (5.66202pt too wide) in paragraph at lines 151--153 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]upper[][][]bound[][][]assign[][][]if[][][]exact[][] ([][]ppl[][][][]B[]D[][][ -][]Shape[][][]mpq[][][]class[][][]t[][] x, [][]ppl[][][]const[] - -Overfull \hbox (5.592pt too wide) in paragraph at lines 165--167 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]bounded[][][]affine[][][]image[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpq -[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] - -Overfull \hbox (7.27184pt too wide) in paragraph at lines 165--167 -[][]\OT1/ptm/bc/n/10 type[][] var, [][]ppl[][][]const[][][][]Linear[][][][]Expr -ession[][][]t[][] lb, [][]ppl[][][]const[][][][]Linear[][][][]Expression[][][]t -[][] ub, [][]ppl[][][]const[][][][]Coefficient[] - -Overfull \hbox (18.3619pt too wide) in paragraph at lines 167--169 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]bounded[][][]affine[][][]preimage[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][] -mpq[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] - -Overfull \hbox (7.27184pt too wide) in paragraph at lines 167--169 -[][]\OT1/ptm/bc/n/10 type[][] var, [][]ppl[][][]const[][][][]Linear[][][][]Expr -ession[][][]t[][] lb, [][]ppl[][][]const[][][][]Linear[][][][]Expression[][][]t -[][] ub, [][]ppl[][][]const[][][][]Coefficient[] - -Overfull \hbox (17.2415pt too wide) in paragraph at lines 169--171 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]generalized[][][]affine[][][]image[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][ -]mpq[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] - -Overfull \hbox (30.0114pt too wide) in paragraph at lines 171--173 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]generalized[][][]affine[][][]preimage[][] ([][]ppl[][][][]B[]D[][][][]Shape[] -[][]mpq[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] - -Overfull \hbox (3.06163pt too wide) in paragraph at lines 173--175 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]generalized[][][]affine[][][]image[][][]lhs[][][]rhs[][] ([][]ppl[][][][]B[]D -[][][][]Shape[][][]mpq[][][]class[][][]t[][] ph, [][]ppl[] - -Overfull \hbox (15.92157pt too wide) in paragraph at lines 173--175 -[][]\OT1/ptm/bc/n/10 const[][][][]Linear[][][][]Expression[][][]t[][] lhs, enum - [][]ppl[][][]enum[][][][]Constraint[][][][]Type[][] rel-sym, [][]ppl[][][]cons -t[][][][]Linear[][][][]Expression[] - -Overfull \hbox (15.83153pt too wide) in paragraph at lines 175--177 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]generalized[][][]affine[][][]preimage[][][]lhs[][][]rhs[][] ([][]ppl[][][][]B -[]D[][][][]Shape[][][]mpq[][][]class[][][]t[][] ph, [][]ppl[] - -Overfull \hbox (15.92157pt too wide) in paragraph at lines 175--177 -[][]\OT1/ptm/bc/n/10 const[][][][]Linear[][][][]Expression[][][]t[][] lhs, enum - [][]ppl[][][]enum[][][][]Constraint[][][][]Type[][] rel-sym, [][]ppl[][][]cons -t[][][][]Linear[][][][]Expression[] - -Overfull \hbox (9.43188pt too wide) in paragraph at lines 177--179 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]add[][][]space[][][]dimensions[][][]and[][][]embed[][] ([][]ppl[][][][]B[]D[] -[][][]Shape[][][]mpq[][][]class[][][]t[][] ph, [][]ppl[] - -Overfull \hbox (10.54173pt too wide) in paragraph at lines 179--181 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]add[][][]space[][][]dimensions[][][]and[][][]project[][] ([][]ppl[][][][]B[]D -[][][][]Shape[][][]mpq[][][]class[][][]t[][] ph, [][]ppl[] - -Overfull \hbox (21.65166pt too wide) in paragraph at lines 181--183 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]remove[][][]space[][][]dimensions[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][] -mpq[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] - -Overfull \hbox (5.53194pt too wide) in paragraph at lines 183--185 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]remove[][][]higher[][][]space[][][]dimensions[][] ([][]ppl[][][][]B[]D[][][][ -]Shape[][][]mpq[][][]class[][][]t[][] ph, [][]ppl[] -[60 Overfull \hbox (56.5953pt too wide) in paragraph at lines 1911--1913 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]relatio n[][][]with[][][]congruence(+[]Handle, +[]Congruence, ?Relation[] @@ -11680,6 +12404,77 @@ []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]minimiz e[][][]with[][][]point(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[][][]1, [66] +Overfull \hbox (5.00137pt too wide) in paragraph at lines 109--111 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]maximize[][][]with[][][]point[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shap +e[][][]mpz[][][]class[][][]t[][] ph, [][]ppl[][][]const[] + +Overfull \hbox (14.09169pt too wide) in paragraph at lines 109--111 +[][][]\OT1/ptm/bc/n/10 Linear[][][][]Expression[][][]t[][] le, [][]ppl[][][][]C +oefficient[][][]t[][] ext[][][]n, [][]ppl[][][][]Coefficient[][][]t[][] ext[][] +[]d, int $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 poptimum, [][]ppl[][][][]Genera +tor[] + +Overfull \hbox (3.34132pt too wide) in paragraph at lines 111--113 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]minimize[][][]with[][][]point[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shap +e[][][]mpz[][][]class[][][]t[][] ph, [][]ppl[][][]const[] + +Overfull \hbox (14.09169pt too wide) in paragraph at lines 111--113 +[][][]\OT1/ptm/bc/n/10 Linear[][][][]Expression[][][]t[][] le, [][]ppl[][][][]C +oefficient[][][]t[][] ext[][][]n, [][]ppl[][][][]Coefficient[][][]t[][] ext[][] +[]d, int $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 poptimum, [][]ppl[][][][]Genera +tor[] + +Overfull \hbox (13.03139pt too wide) in paragraph at lines 115--117 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]contains[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] ([][]ppl[][][]const +[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]t[][] x, [][]ppl[] + +Overfull \hbox (13.83092pt too wide) in paragraph at lines 117--119 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]strictly[][][]contains[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] ([][] +ppl[][][]const[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[] + +Overfull \hbox (12.44106pt too wide) in paragraph at lines 119--121 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]is[][][]disjoint[][][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] ( +[][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[] + +Overfull \hbox (5.2515pt too wide) in paragraph at lines 121--123 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]equals[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] ([][]ppl[][][]const[] +[][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]t[][] x, [][]ppl[] + +Overfull \hbox (11.36208pt too wide) in paragraph at lines 127--129 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]add[][][]congruence[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class +[][][]t[][] ph, [][]ppl[][][]const[][][][]Congruence[] + +Overfull \hbox (1.95134pt too wide) in paragraph at lines 129--131 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]add[][][]constraints[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]clas +s[][][]t[][] ph, [][]ppl[][][]const[][][][]Constraint[] + +Overfull \hbox (15.25197pt too wide) in paragraph at lines 131--133 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]add[][][]congruences[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]clas +s[][][]t[][] ph, [][]ppl[][][]const[][][][]Congruence[] + +Overfull \hbox (27.77104pt too wide) in paragraph at lines 133--135 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]refine[][][]with[][][]constraint[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]m +pz[][][]class[][][]t[][] ph, [][]ppl[][][]const[][][][]Constraint[] + +Overfull \hbox (11.10129pt too wide) in paragraph at lines 141--143 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]intersection[][][]assign[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][] +class[][][]t[][] x, [][]ppl[][][]const[][][][]B[]D[][][][]Shape[] + +Overfull \hbox (4.72157pt too wide) in paragraph at lines 145--147 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]difference[][][]assign[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]cl +ass[][][]t[][] x, [][]ppl[][][]const[][][ Overfull \hbox (25.80045pt too wide) in paragraph at lines 1977--1979 \OT1/ptm/m/it/10 Updates the bd shape ref-er-enced by \OT1/pcr/m/sl/10 Handle \ OT1/ptm/m/it/10 to one ob-tained by re-fin-ing its con-straint sys-tem with \OT @@ -11700,7 +12495,28 @@ Overfull \hbox (9.2138pt too wide) in paragraph at lines 2002--2004 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]affine[ ][][]image(+[]Handle, +[]P[]P[]L[][][][]Var, +[]Lin[][][][]Expr, +[]Coeff) -[67]] +[67]][]B[]D[][][][]Shape[] + +Overfull \hbox (11.64148pt too wide) in paragraph at lines 147--149 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]concatenate[][][]assign[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]c +lass[][][]t[][] x, [][]ppl[][][]const[][][][]B[]D[][][][]Shape[] + +Overfull \hbox (10.81128pt too wide) in paragraph at lines 149--151 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]time[][][]elapse[][][]assign[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[] +[][]class[][][]t[][] x, [][]ppl[][][]const[][][][]B[]D[][][][]Shape[] + +Overfull \hbox (4.5419pt too wide) in paragraph at lines 151--153 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]upper[][][]bound[][][]assign[][][]if[][][]exact[][] ([][]ppl[][][][]B[]D[][][ +][]Shape[][][]mpz[][][]class[][][]t[][] x, [][]ppl[][][]const[] + +Overfull \hbox (10.4113pt too wide) in paragraph at lines 153--155 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]simplify[][][]using[][][]context[][][]assign[][] ([][]ppl[][][][]B[]D[][][][] +Shape[][][]mpz[][][]class[][][]t[][] x, [][]ppl[][][]const[] +[81 Overfull \hbox (0.19531pt too wide) in paragraph at lines 2005--2007 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]affine[ ][][]preimage(+[]Handle, +[]P[]P[]L[][][][]Var, +[]Lin[][][][]Expr, +[] @@ -11732,7 +12548,7 @@ Overfull \hbox (3.79532pt too wide) in paragraph at lines 2026--2028 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]wrap[][ ][]assign(+[]Handle, +[]List[][][]of[][][][]P[]P[]L[][][][]Var, +[]Width, +[] -[68] +[68]] Overfull \hbox (3.79532pt too wide) in paragraph at lines 2048--2050 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]simplif y[][][]using[][][]context[][][]assign(+[]Handle[][][]1, +[]Handle[] @@ -11757,73 +12573,80 @@ Overfull \hbox (7.39532pt too wide) in paragraph at lines 2076--2078 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]limited [][][][]B[]H[]M[]Z05[][][]extrapolation[][][]assign[][][]with[][][]tokens(+[] -[69 -Overfull \hbox (16.80182pt too wide) in paragraph at lines 185--187 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]expand[][][]space[][][]dimension[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]m -pq[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] +[69] +Overfull \hbox (4.47188pt too wide) in paragraph at lines 165--167 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]bounded[][][]affine[][][]image[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpz +[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] -Overfull \hbox (8.07158pt too wide) in paragraph at lines 187--189 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]fold[][][]space[][][]dimensions[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mp -q[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] +Overfull \hbox (7.27184pt too wide) in paragraph at lines 165--167 +[][]\OT1/ptm/bc/n/10 type[][] var, [][]ppl[][][]const[][][][]Linear[][][][]Expr +ession[][][]t[][] lb, [][]ppl[][][]const[][][][]Linear[][][][]Expression[][][]t +[][] ub, [][]ppl[][][]const[][][][]Coefficient[] -Overfull \hbox (9.18156pt too wide) in paragraph at lines 189--191 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]map[][][]space[][][]dimensions[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpq -[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] +Overfull \hbox (17.24178pt too wide) in paragraph at lines 167--169 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]bounded[][][]affine[][][]preimage[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][] +mpz[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] -Overfull \hbox (3.88039pt too wide) in paragraph at lines 191--193 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]drop[][][]some[][][]non[][][]integer[][][]points[][] ([][]ppl[][][][]B[]D[][] -[][]Shape[][][]mpq[][][]class[][][]t[][] ph, int com- +Overfull \hbox (7.27184pt too wide) in paragraph at lines 167--169 +[][]\OT1/ptm/bc/n/10 type[][] var, [][]ppl[][][]const[][][][]Linear[][][][]Expr +ession[][][]t[][] lb, [][]ppl[][][]const[][][][]Linear[][][][]Expression[][][]t +[][] ub, [][]ppl[][][]const[][][][]Coefficient[] -Overfull \hbox (1.2322pt too wide) in paragraph at lines 193--195 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]drop[][][]some[][][]non[][][]integer[][][]points[][][]2[][] ([][]ppl[][][][]B -[]D[][][][]Shape[][][]mpq[][][]class[][][]t[][] ph, [][]ppl[] +Overfull \hbox (16.12138pt too wide) in paragraph at lines 169--171 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]generalized[][][]affine[][][]image[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][ +]mpz[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] -Overfull \hbox (3.17146pt too wide) in paragraph at lines 195--197 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]external[][][]memory[][][]in[][][]bytes[][] ([][]ppl[][][]const[][][][]B[]D[] -[][][]Shape[][][]mpq[][][]class[][][]t[][] ps, size[] +Overfull \hbox (28.89128pt too wide) in paragraph at lines 171--173 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]generalized[][][]affine[][][]preimage[][] ([][]ppl[][][][]B[]D[][][][]Shape[] +[][]mpz[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] -Overfull \hbox (4.35188pt too wide) in paragraph at lines 201--203 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[][]H79[][][]widening[][][]assign[][][]with[][][]tokens[][] ([][]ppl[][][][]B[] -D[][][][]Shape[][][]mpq[][][]class[][][]t[][] x, [][]ppl[] +Overfull \hbox (1.94151pt too wide) in paragraph at lines 173--175 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]generalized[][][]affine[][][]image[][][]lhs[][][]rhs[][] ([][]ppl[][][][]B[]D +[][][][]Shape[][][]mpz[][][]class[][][]t[][] ph, [][]ppl[] -Overfull \hbox (8.24164pt too wide) in paragraph at lines 207--209 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]widening[][][]assign[][][]with[][][]tokens[][] ([][]ppl[][][][]B[]D[][][][]Sh -ape[][][]mpq[][][]class[][][]t[][] x, [][]ppl[][][]const[] +Overfull \hbox (15.92157pt too wide) in paragraph at lines 173--175 +[][]\OT1/ptm/bc/n/10 const[][][][]Linear[][][][]Expression[][][]t[][] lhs, enum + [][]ppl[][][]enum[][][][]Constraint[][][][]Type[][] rel-sym, [][]ppl[][][]cons +t[][][][]Linear[][][][]Expression[] -Overfull \hbox (2.78186pt too wide) in paragraph at lines 209--211 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]widening[][][]assign[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]clas -s[][][]t[][] x, [][]ppl[][][]const[][][][]B[]D[][][][]Shape[] +Overfull \hbox (14.71141pt too wide) in paragraph at lines 175--177 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]generalized[][][]affine[][][]preimage[][][]lhs[][][]rhs[][] ([][]ppl[][][][]B +[]D[][][][]Shape[][][]mpz[][][]class[][][]t[][] ph, [][]ppl[] -Overfull \hbox (4.19151pt too wide) in paragraph at lines 215--217 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]limited[][][][]C[]C76[][][]extrapolation[][][]assign[][][]with[][][]tokens[][ -] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[] +Overfull \hbox (15.92157pt too wide) in paragraph at lines 175--177 +[][]\OT1/ptm/bc/n/10 const[][][][]Linear[][][][]Expression[][][]t[][] lhs, enum + [][]ppl[][][]enum[][][][]Constraint[][][][]Type[][] rel-sym, [][]ppl[][][]cons +t[][][][]Linear[][][][]Expression[] -Overfull \hbox (0.70154pt too wide) in paragraph at lines 219--221 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]limited[][][][]H79[][][]extrapolation[][][]assign[][] ([][]ppl[][][][]B[]D[][ -][][]Shape[][][]mpq[][][]class[][][]t[][] x, [][]ppl[] +Overfull \hbox (8.31177pt too wide) in paragraph at lines 177--179 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]add[][][]space[][][]dimensions[][][]and[][][]embed[][] ([][]ppl[][][][]B[]D[] +[][][]Shape[][][]mpz[][][]class[][][]t[][] ph, [][]ppl[] -Overfull \hbox (6.82141pt too wide) in paragraph at lines 221--223 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]limited[][][][]C[]C76[][][]extrapolation[][][]assign[][] ([][]ppl[][][][]B[]D -[][][][]Shape[][][]mpq[][][]class[][][]t[][] x, [][]ppl[] +Overfull \hbox (9.42162pt too wide) in paragraph at lines 179--181 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]add[][][]space[][][]dimensions[][][]and[][][]project[][] ([][]ppl[][][][]B[]D +[][][][]Shape[][][]mpz[][][]class[][][]t[][] ph, [][]ppl[] -Overfull \hbox (9.79172pt too wide) in paragraph at lines 229--231 -\OT1/ptm/bc/n/10 Shape[][][]mpq[][][]class[][][]t[][] y, [][]ppl[][][][]B[]D[][ -][][]Shape[][][]mpq[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/1 -0 p[][][]inters, [][]ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][] -Polyhedron[] -[61] +Overfull \hbox (20.53154pt too wide) in paragraph at lines 181--183 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]remove[][][]space[][][]dimensions[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][] +mpz[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] + +Overfull \hbox (4.41182pt too wide) in paragraph at lines 183--185 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]remove[][][]higher[][][]space[][][]dimensions[][] ([][]ppl[][][][]B[]D[][][][ +]Shape[][][]mpz[][][]class[][][]t[][] ph, [][]ppl[] + +Overfull \hbox (15.6817pt too wide) in paragraph at lines 185--187 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]expand[][][ Overfull \hbox (25.39532pt too wide) in paragraph at lines 2079--2081 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]limited [][][][]H79[][][]extrapolation[][][]assign[][][]with[][][]tokens(+[]Handle[] @@ -11848,7 +12671,34 @@ Overfull \hbox (15.79532pt too wide) in paragraph at lines 2110--2112 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]add[][] []space[][][]dimensions[][][]and[][][]embed(+[]Handle, +[]Dimension[] -[70]] +[70]]space[][][]dimension[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]m +pz[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] + +Overfull \hbox (6.95146pt too wide) in paragraph at lines 187--189 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]fold[][][]space[][][]dimensions[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mp +z[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] + +Overfull \hbox (8.06145pt too wide) in paragraph at lines 189--191 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]map[][][]space[][][]dimensions[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpz +[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] + +Overfull \hbox (2.76027pt too wide) in paragraph at lines 191--193 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]drop[][][]some[][][]non[][][]integer[][][]points[][] ([][]ppl[][][][]B[]D[][] +[][]Shape[][][]mpz[][][]class[][][]t[][] ph, int com- + +Overfull \hbox (0.11208pt too wide) in paragraph at lines 193--195 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]drop[][][]some[][][]non[][][]integer[][][]points[][][]2[][] ([][]ppl[][][][]B +[]D[][][][]Shape[][][]mpz[][][]class[][][]t[][] ph, [][]ppl[] + +Overfull \hbox (2.05135pt too wide) in paragraph at lines 195--197 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]external[][][]memory[][][]in[][][]bytes[][] ([][]ppl[][][]const[][][][]B[]D[] +[][][]Shape[][][]mpz[][][]class[][][]t[][] ps, size[] +[82 Overfull \hbox (27.79532pt too wide) in paragraph at lines 2113--2115 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]add[][] []space[][][]dimensions[][][]and[][][]project(+[]Handle, +[]Dimension[] @@ -11882,60 +12732,7 @@ Overfull \hbox (12.19531pt too wide) in paragraph at lines 2157--2159 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]mpz[][][]clas s[][][]from[][][]congruences(+[]Congruence[][][][]System, -[] -[71] -Overfull \hbox (8.77168pt too wide) in paragraph at lines 233--235 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][] -class[][][]recycle[][][][]Constraint[][][][]System[][] ([][]ppl[][][][]B[]D[][] -[][]Shape[][][]mpq[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 - pph, [][]ppl[] - -Overfull \hbox (15.422pt too wide) in paragraph at lines 235--237 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][] -class[][][]recycle[][][][]Congruence[][][][]System[][] ([][]ppl[][][][]B[]D[][] -[][]Shape[][][]mpq[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 - pph, [][]ppl[] - -Overfull \hbox (7.0819pt too wide) in paragraph at lines 237--239 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][] -class[][][]recycle[][][][]Generator[][][][]System[][] ([][]ppl[][][][]B[]D[][][ -][]Shape[][][]mpq[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 -pph, [][]ppl[] - -Overfull \hbox (11.38148pt too wide) in paragraph at lines 239--241 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]assign[][][][]B[]D[][][][]Shape[][][]mpq[][ -][]class[][][]from[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] ([][]ppl[][ -][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]t[][] dst, [][]ppl[] - -Overfull \hbox (15.68144pt too wide) in paragraph at lines 241--243 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]add[][][]recycled[][][]constraints[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][ -]mpq[][][]class[][][]t[][] ph, [][]ppl[][][][]Constraint[] - -Overfull \hbox (28.98207pt too wide) in paragraph at lines 243--245 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] -[]add[][][]recycled[][][]congruences[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][ -]mpq[][][]class[][][]t[][] ph, [][]ppl[][][][]Congruence[] - -Overfull \hbox (8.45016pt too wide) in paragraph at lines 249--251 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]one[][][]affine[][][]ranking[][][]function[ -][][][]M[]S[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] ([][]ppl[][][]cons -t[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]t[][] pset, - -Overfull \hbox (6.2302pt too wide) in paragraph at lines 251--253 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]one[][][]affine[][][]ranking[][][]function[ -][][][]P[]R[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] ([][]ppl[][][]cons -t[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]t[][] pset, - -Overfull \hbox (7.89984pt too wide) in paragraph at lines 253--255 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]all[][][]affine[][][]ranking[][][]functions -[][][][]M[]S[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] ([][]ppl[][][]con -st[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]t[][] pset, - -Overfull \hbox (5.67987pt too wide) in paragraph at lines 255--257 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]all[][][]affine[][][]ranking[][][]functions -[][][][]P[]R[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] ([][]ppl[][][]con -st[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]t[][] pset, -[62 +[71]] Overfull \hbox (0.19531pt too wide) in paragraph at lines 2160--2162 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]mpz[][][]clas s[][][]from[][][]generators(+[]Generator[][][][]System, -[] @@ -12039,47 +12836,7 @@ []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]mpz[][][]clas s[][][]from[][][][]Octagonal[][][][]Shape[][][]double[][][]with[][][]complexity (+[] -[73]] -Overfull \hbox (9.94308pt too wide) in paragraph at lines 295--296 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ -][]from[][][]space[][][]dimension()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[ -]D[][][][]Shape[][][]mpq[][][]class[][][]from[][][]space[] - -Overfull \hbox (21.70216pt too wide) in paragraph at lines 301--302 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ -][]from[][][][]C[][][][]Polyhedron()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B -[]D[][][][]Shape[][][]mpq[][][]class[][][]from[][][][]C[][][][]Polyhedron - -Overfull \hbox (3.84358pt too wide) in paragraph at lines 307--308 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ -][]from[][][][]N[]N[]C[][][][]Polyhedron()[] \OT1/pcr/m/n/8 int ppl[][][]new[][ -][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]from[][][][]N[]N[]C[] - -Overfull \hbox (10.45357pt too wide) in paragraph at lines 319--320 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ -][]from[][][][]Rational[][][][]Box()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B -[]D[][][][]Shape[][][]mpq[][][]class[][][]from[][][][]Rational[] - -Overfull \hbox (1.37308pt too wide) in paragraph at lines 325--326 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ -][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 int ppl -[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]from[] - -Overfull \hbox (2.49307pt too wide) in paragraph at lines 331--332 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ -][]from[][][][]B[]D[][][][]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 int ppl -[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]from[] - -Overfull \hbox (9.29279pt too wide) in paragraph at lines 337--338 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ -][]from[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 in -t ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[] - -Overfull \hbox (10.41278pt too wide) in paragraph at lines 343--344 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ -][]from[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 in -t ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[] -[63 +[73] Overfull \hbox (9.79532pt too wide) in paragraph at lines 2277--2279 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]co ntains[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class(+[]Handle[] @@ -12143,7 +12900,76 @@ Overfull \hbox (36.19531pt too wide) in paragraph at lines 2341--2343 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]mi nimize[][][]with[][][]point(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[] -[75]] +[75] +Overfull \hbox (3.23177pt too wide) in paragraph at lines 201--203 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[][]H79[][][]widening[][][]assign[][][]with[][][]tokens[][] ([][]ppl[][][][]B[] +D[][][][]Shape[][][]mpz[][][]class[][][]t[][] x, [][]ppl[] + +Overfull \hbox (7.12152pt too wide) in paragraph at lines 207--209 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]widening[][][]assign[][][]with[][][]tokens[][] ([][]ppl[][][][]B[]D[][][][]Sh +ape[][][]mpz[][][]class[][][]t[][] x, [][]ppl[][][]const[] + +Overfull \hbox (1.66174pt too wide) in paragraph at lines 209--211 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]widening[][][]assign[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]clas +s[][][]t[][] x, [][]ppl[][][]const[][][][]B[]D[][][][]Shape[] + +Overfull \hbox (3.0714pt too wide) in paragraph at lines 215--217 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]limited[][][][]C[]C76[][][]extrapolation[][][]assign[][][]with[][][]tokens[][ +] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[] + +Overfull \hbox (5.7013pt too wide) in paragraph at lines 221--223 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]limited[][][][]C[]C76[][][]extrapolation[][][]assign[][] ([][]ppl[][][][]B[]D +[][][][]Shape[][][]mpz[][][]class[][][]t[][] x, [][]ppl[] + +Overfull \hbox (8.6716pt too wide) in paragraph at lines 229--231 +\OT1/ptm/bc/n/10 Shape[][][]mpz[][][]class[][][]t[][] y, [][]ppl[][][][]B[]D[][ +][][]Shape[][][]mpz[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/1 +0 p[][][]inters, [][]ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][] +Polyhedron[] + +Overfull \hbox (7.65157pt too wide) in paragraph at lines 233--235 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][] +class[][][]recycle[][][][]Constraint[][][][]System[][] ([][]ppl[][][][]B[]D[][] +[][]Shape[][][]mpz[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 + pph, [][]ppl[] + +Overfull \hbox (14.30188pt too wide) in paragraph at lines 235--237 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][] +class[][][]recycle[][][][]Congruence[][][][]System[][] ([][]ppl[][][][]B[]D[][] +[][]Shape[][][]mpz[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 + pph, [][]ppl[] + +Overfull \hbox (5.96178pt too wide) in paragraph at lines 237--239 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][] +class[][][]recycle[][][][]Generator[][][][]System[][] ([][]ppl[][][][]B[]D[][][ +][]Shape[][][]mpz[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 +pph, [][]ppl[] + +Overfull \hbox (9.70131pt too wide) in paragraph at lines 239--241 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]assign[][][][]B[]D[][][][]Shape[][][]mpz[][ +][]class[][][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] ([][]ppl[][ +][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]t[][] dst, [][]ppl[] + +Overfull \hbox (14.56133pt too wide) in paragraph at lines 241--243 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]add[][][]recycled[][][]constraints[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][ +]mpz[][][]class[][][]t[][] ph, [][]ppl[][][][]Constraint[] + +Overfull \hbox (27.86195pt too wide) in paragraph at lines 243--245 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] +[]add[][][]recycled[][][]congruences[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][ +]mpz[][][]class[][][]t[][] ph, [][]ppl[][][][]Congruence[] + +Overfull \hbox (7.33005pt too wide) in paragraph at lines 249--251 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]one[][][]affine[][][]ranking[][][]function[ +][][][]M[]S[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] ([][]ppl[][][]cons +t[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]t[][] pset, +[83 Overfull \hbox (3.2138pt too wide) in paragraph at lines 2346--2348 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]ex ternal[][][]memory[][][]in[][][]bytes(+[]Handle, ?Number) @@ -12171,47 +12997,7 @@ Overfull \hbox (32.5953pt too wide) in paragraph at lines 2386--2388 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]re fine[][][]with[][][]congruences( +[]Handle, +[]Congruence[] -[76 -Overfull \hbox (3.0421pt too wide) in paragraph at lines 349--350 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ -][]from[][][][]Double[][][][]Box()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[] -D[][][][]Shape[][][]mpq[][][]class[][][]from[][][][]Double[][][][]Box - -Overfull \hbox (0.82327pt too wide) in paragraph at lines 355--356 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ -][]from[][][][]B[]D[][][][]Shape[][][]double()[] \OT1/pcr/m/n/8 int ppl[][][]ne -w[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]from[][][][]B[]D[] - -Overfull \hbox (18.34299pt too wide) in paragraph at lines 361--362 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ -][]from[][][][]Octagonal[][][][]Shape[][][]double()[] \OT1/pcr/m/n/8 int ppl[][ -][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]from[] - -Overfull \hbox (22.7929pt too wide) in paragraph at lines 367--368 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ -][]from[][][][]C[][][][]Polyhedron[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 - int ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[] - -Overfull \hbox (10.35281pt too wide) in paragraph at lines 373--374 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ -][]from[][][][]N[]N[]C[][][][]Polyhedron[][][]with[][][]complexity()[] \OT1/pcr -/m/n/8 int ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[] - -Overfull \hbox (5.54291pt too wide) in paragraph at lines 379--380 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ -][]from[][][][]Grid[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[][][]n -ew[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]from[] - -Overfull \hbox (19.8428pt too wide) in paragraph at lines 385--386 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ -][]from[][][][]Rational[][][][]Box[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 - int ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[] - -Overfull \hbox (7.88231pt too wide) in paragraph at lines 391--392 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ -][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]with[][][]complexity( -)[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[]D[][][][]Shape[] -[64] +[76]] Overfull \hbox (2.5953pt too wide) in paragraph at lines 2396--2398 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]un constrain[][][]space[][][]dimension(+[]Handle, +[]P[]P[] @@ -12256,7 +13042,7 @@ Overfull \hbox (12.81381pt too wide) in paragraph at lines 2423--2425 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]ge neralized[][][]affine[][][]preimage[][][]lhs[][][]rhs(+[]Handle, -[77]] +[77] Overfull \hbox (24.81381pt too wide) in paragraph at lines 2426--2428 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]wr ap[][][]assign(+[]Handle, +[]List[][][]of[][][][]P[]P[]L[][][][]Var, +[]Width, @@ -12276,42 +13062,37 @@ Overfull \hbox (9.79532pt too wide) in paragraph at lines 2458--2460 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][][] B[]H[]M[]Z05[][][]widening[][][]assign[][][]with[][][]tokens(+[]Handle[] -[78 -Overfull \hbox (9.0023pt too wide) in paragraph at lines 397--398 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ -][]from[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]with[][][]complexity( -)[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[]D[][][][]Shape[] - -Overfull \hbox (1.40201pt too wide) in paragraph at lines 403--404 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ -][]from[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]with[][][]comple -xity()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][] +[78] +Overfull \hbox (5.11008pt too wide) in paragraph at lines 251--253 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]one[][][]affine[][][]ranking[][][]function[ +][][][]P[]R[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] ([][]ppl[][][]cons +t[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]t[][] pset, -Overfull \hbox (2.522pt too wide) in paragraph at lines 409--410 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ -][]from[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]with[][][]comple -xity()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][] +Overfull \hbox (6.77972pt too wide) in paragraph at lines 253--255 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]all[][][]affine[][][]ranking[][][]functions +[][][][]M[]S[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] ([][]ppl[][][]con +st[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]t[][] pset, -Overfull \hbox (13.73283pt too wide) in paragraph at lines 415--416 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ -][]from[][][][]Double[][][][]Box[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 i -nt ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[] +Overfull \hbox (4.55975pt too wide) in paragraph at lines 255--257 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]all[][][]affine[][][]ranking[][][]functions +[][][][]P[]R[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] ([][]ppl[][][]con +st[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]t[][] pset, -Overfull \hbox (12.1325pt too wide) in paragraph at lines 421--422 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ -][]from[][][][]B[]D[][][][]Shape[][][]double[][][]with[][][]complexity()[] \OT1 -/pcr/m/n/8 int ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[] +Overfull \hbox (8.82309pt too wide) in paragraph at lines 295--296 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ +][]from[][][]space[][][]dimension()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[ +]D[][][][]Shape[][][]mpz[][][]class[][][]from[][][]space[] -Overfull \hbox (0.8522pt too wide) in paragraph at lines 427--428 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ -][]from[][][][]Octagonal[][][][]Shape[][][]double[][][]with[][][]complexity()[] - \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[]D[][][] +Overfull \hbox (20.58217pt too wide) in paragraph at lines 301--302 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ +][]from[][][][]C[][][][]Polyhedron()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B +[]D[][][][]Shape[][][]mpz[][][]class[][][]from[][][][]C[][][][]Polyhedron -Overfull \hbox (43.37317pt too wide) in paragraph at lines 433--434 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ -][]from[][][][]Constraint[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][] -[][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]from[][][][]Constraint[] -[65]] +Overfull \hbox (2.72359pt too wide) in paragraph at lines 307--308 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ +][]from[][][][]N[]N[]C[][][][]Polyhedron()[] \OT1/pcr/m/n/8 int ppl[][][]new[][ +][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]from[][][][]N[]N[]C[] +[84 Overfull \hbox (6.19531pt too wide) in paragraph at lines 2461--2463 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][][] B[]H[]M[]Z05[][][]widening[][][]assign(+[]Handle[][][]1, +[]Handle[] @@ -12348,32 +13129,7 @@ Overfull \hbox (0.19531pt too wide) in paragraph at lines 2482--2484 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][][] C[]C76[][][]narrowing[][][]assign(+[]Handle[][][]1, +[]Handle[] -[79] -Overfull \hbox (0.9232pt too wide) in paragraph at lines 439--440 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ -][]from[][][][]Congruence[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][] -[][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]from[][][] - -Overfull \hbox (36.89323pt too wide) in paragraph at lines 445--446 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ -][]from[][][][]Generator[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][ -][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]from[][][][]Generator[] - -Overfull \hbox (38.1416pt too wide) in paragraph at lines 463--464 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]relati -on[][][]with[][][][]Constraint()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sh -ape[][][]mpq[][][]class[][][]relation[][][]with[][][][]Constraint - -Overfull \hbox (31.66167pt too wide) in paragraph at lines 469--470 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]relati -on[][][]with[][][][]Generator()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sha -pe[][][]mpq[][][]class[][][]relation[][][]with[][][][]Generator - -Overfull \hbox (1.79314pt too wide) in paragraph at lines 475--476 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]relati -on[][][]with[][][][]Congruence()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sh -ape[][][]mpq[][][]class[][][]relation[][][]with[] -[66 +[79]] Overfull \hbox (3.79532pt too wide) in paragraph at lines 2498--2500 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]ad d[][][]space[][][]dimensions[][][]and[][][]embed(+[]Handle, +[] @@ -12401,7 +13157,7 @@ Overfull \hbox (15.79532pt too wide) in paragraph at lines 2535--2537 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]mpq[][][]clas s[][][]from[][][]space[][][]dimension(+[]Dimension[][][][]Type, +[] -[80]] +[80] Overfull \hbox (12.19531pt too wide) in paragraph at lines 2542--2544 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]mpq[][][]clas s[][][]from[][][]constraints(+[]Constraint[][][][]System, -[] @@ -12453,31 +13209,46 @@ []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]mpq[][][]clas s[][][]from[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class(+[]Handle[] [81] -Overfull \hbox (3.0828pt too wide) in paragraph at lines 493--494 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]get[][ -][]minimized[][][]constraints()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sha -pe[][][]mpq[][][]class[][][]get[][][]minimized[] +Overfull \hbox (9.33357pt too wide) in paragraph at lines 319--320 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ +][]from[][][][]Rational[][][][]Box()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B +[]D[][][][]Shape[][][]mpz[][][]class[][][]from[][][][]Rational[] -Overfull \hbox (8.63286pt too wide) in paragraph at lines 499--500 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]get[][ -][]minimized[][][]congruences()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sha -pe[][][]mpq[][][]class[][][]get[][][]minimized[] +Overfull \hbox (0.25308pt too wide) in paragraph at lines 325--326 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ +][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 int ppl +[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]from[] -Overfull \hbox (0.2731pt too wide) in paragraph at lines 523--524 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]contai -ns[][][]integer[][][]point()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[ -][][]mpq[][][]class[][][]contains[][][]integer[] +Overfull \hbox (1.37308pt too wide) in paragraph at lines 331--332 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ +][]from[][][][]B[]D[][][][]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 int ppl +[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]from[] -Overfull \hbox (2.60301pt too wide) in paragraph at lines 529--530 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]is[][] -[]topologically[][][]closed()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape -[][][]mpq[][][]class[][][]is[][][]topologically[][][] +Overfull \hbox (8.17279pt too wide) in paragraph at lines 337--338 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ +][]from[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 in +t ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[] -Overfull \hbox (30.05296pt too wide) in paragraph at lines 541--542 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]topolo -gical[][][]closure[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sh -ape[][][]mpq[][][]class[][][]topological[][][]closure[] -[67 +Overfull \hbox (9.29279pt too wide) in paragraph at lines 343--344 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ +][]from[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 in +t ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[] + +Overfull \hbox (1.9221pt too wide) in paragraph at lines 349--350 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ +][]from[][][][]Double[][][][]Box()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[] +D[][][][]Shape[][][]mpz[][][]class[][][]from[][][][]Double[][][][]Box + +Overfull \hbox (2.58328pt too wide) in paragraph at lines 355--356 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ +][]from[][][][]B[]D[][][][]Shape[][][]double()[] \OT1/pcr/m/n/8 int ppl[][][]ne +w[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]from[][][][]B[]D[][][] + +Overfull \hbox (17.22299pt too wide) in paragraph at lines 361--362 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ +][]from[][][][]Octagonal[][][][]Shape[][][]double()[] \OT1/pcr/m/n/8 int ppl[][ +][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]from[] +[85] Overfull \hbox (7.39532pt too wide) in paragraph at lines 2583--2585 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]mpq[][][]clas s[][][]from[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class(+[]Handle[] @@ -12525,7 +13296,7 @@ []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]mpq[][][]clas s[][][]from[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]with[][][]co mplexity(+[] -[82]] +[82] Overfull \hbox (10.41382pt too wide) in paragraph at lines 2619--2621 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]mpq[][][]clas s[][][]from[][][][]Double[][][][]Box[][][]with[][][]complexity(+[]Handle, @@ -12554,27 +13325,42 @@ Overfull \hbox (1.39532pt too wide) in paragraph at lines 2674--2676 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]eq uals[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class(+[]Handle[][][] -[83 -Overfull \hbox (7.81178pt too wide) in paragraph at lines 571--572 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]maximi -ze[][][]with[][][]point()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][] -[]mpq[][][]class[][][]maximize[][][]with[][][]point ( +[83] +Overfull \hbox (21.6729pt too wide) in paragraph at lines 367--368 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ +][]from[][][][]C[][][][]Polyhedron[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 + int ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[] -Overfull \hbox (6.15161pt too wide) in paragraph at lines 577--578 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]minimi -ze[][][]with[][][]point()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][] -[]mpq[][][]class[][][]minimize[][][]with[][][]point ( +Overfull \hbox (9.23282pt too wide) in paragraph at lines 373--374 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ +][]from[][][][]N[]N[]C[][][][]Polyhedron[][][]with[][][]complexity()[] \OT1/pcr +/m/n/8 int ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[] -Overfull \hbox (1.11285pt too wide) in paragraph at lines 589--590 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]contai -ns[][][][]B[]D[][][][]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 int ppl[][][ -][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]contains[][][] +Overfull \hbox (4.42291pt too wide) in paragraph at lines 379--380 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ +][]from[][][][]Grid[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[][][]n +ew[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]from[] -Overfull \hbox (31.82233pt too wide) in paragraph at lines 595--596 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]strict -ly[][][]contains[][][][]B[]D[][][][]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/ -8 int ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]strictly[] -[68]] +Overfull \hbox (18.72281pt too wide) in paragraph at lines 385--386 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ +][]from[][][][]Rational[][][][]Box[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 + int ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[] + +Overfull \hbox (6.76231pt too wide) in paragraph at lines 391--392 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ +][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]with[][][]complexity( +)[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[]D[][][][]Shape[] + +Overfull \hbox (7.88231pt too wide) in paragraph at lines 397--398 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ +][]from[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]with[][][]complexity( +)[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[]D[][][][]Shape[] + +Overfull \hbox (0.28201pt too wide) in paragraph at lines 403--404 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ +][]from[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]with[][][]comple +xity()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][] +[86 Overfull \hbox (5.6138pt too wide) in paragraph at lines 2690--2692 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]af fine[][][]dimension(+[]Handle, ?Dimension[][][][]Type) @@ -12614,27 +13400,7 @@ Overfull \hbox (32.5953pt too wide) in paragraph at lines 2719--2721 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]mi nimize(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[][][]1, ?Coeff[] -[84] -Overfull \hbox (0.89246pt too wide) in paragraph at lines 601--602 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]is[][] -[]disjoint[][][]from[][][][]B[]D[][][][]Shape[][][]mpq[][][]class()[] \OT1/pcr/ -m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]is[] - -Overfull \hbox (19.66292pt too wide) in paragraph at lines 607--608 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]equals -[][][][]B[]D[][][][]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 int ppl[][][][ -]B[]D[][][][]Shape[][][]mpq[][][]class[][][]equals[][][][]B[]D[][][][]Shape[] - -Overfull \hbox (16.8717pt too wide) in paragraph at lines 643--644 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]refine -[][][]with[][][]constraint()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[ -][][]mpq[][][]class[][][]refine[][][]with[][][]constraint - -Overfull \hbox (22.42177pt too wide) in paragraph at lines 649--650 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]refine -[][][]with[][][]congruence()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[ -][][]mpq[][][]class[][][]refine[][][]with[][][]congruence -[69] +[84]] Overfull \hbox (36.19531pt too wide) in paragraph at lines 2724--2726 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]ma ximize[][][]with[][][]point(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[] @@ -12659,26 +13425,6 @@ []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]re fine[][][]with[][][]constraint( +[]Handle, +[]Constraint) [85] -Overfull \hbox (25.5616pt too wide) in paragraph at lines 655--656 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]refine -[][][]with[][][]constraints()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape -[][][]mpq[][][]class[][][]refine[][][]with[][][]constraints - -Overfull \hbox (31.11166pt too wide) in paragraph at lines 661--662 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]refine -[][][]with[][][]congruences()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape -[][][]mpq[][][]class[][][]refine[][][]with[][][]congruences - -Overfull \hbox (2.93295pt too wide) in paragraph at lines 697--698 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]upper[ -][][]bound[][][]assign[][][]if[][][]exact()[] \OT1/pcr/m/n/8 int ppl[][][][]B[] -D[][][][]Shape[][][]mpq[][][]class[][][]upper[][][]bound[] - -Overfull \hbox (20.95264pt too wide) in paragraph at lines 703--704 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]simpli -fy[][][]using[][][]context[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[] -[][][]Shape[][][]mpq[][][]class[][][]simplify[][][]using[] -[70 Overfull \hbox (23.6138pt too wide) in paragraph at lines 2768--2770 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]re fine[][][]with[][][]congruence( +[]Handle, +[]Congruence) @@ -12727,7 +13473,42 @@ Overfull \hbox (2.5953pt too wide) in paragraph at lines 2805--2807 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]ge neralized[][][]affine[][][]preimage(+[]Handle, +[]P[]P[] -[86]] +[86] +Overfull \hbox (1.40201pt too wide) in paragraph at lines 409--410 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ +][]from[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]with[][][]comple +xity()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][] + +Overfull \hbox (12.61284pt too wide) in paragraph at lines 415--416 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ +][]from[][][][]Double[][][][]Box[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 i +nt ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[] + +Overfull \hbox (11.01251pt too wide) in paragraph at lines 421--422 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ +][]from[][][][]B[]D[][][][]Shape[][][]double[][][]with[][][]complexity()[] \OT1 +/pcr/m/n/8 int ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[] + +Overfull \hbox (23.73222pt too wide) in paragraph at lines 427--428 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ +][]from[][][][]Octagonal[][][][]Shape[][][]double[][][]with[][][]complexity()[] + \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[]D[][][][]Shape[] + +Overfull \hbox (42.25317pt too wide) in paragraph at lines 433--434 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ +][]from[][][][]Constraint[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][] +[][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]from[][][][]Constraint[] + +Overfull \hbox (47.80324pt too wide) in paragraph at lines 439--440 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ +][]from[][][][]Congruence[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][] +[][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]from[][][][]Congruence[] + +Overfull \hbox (35.77324pt too wide) in paragraph at lines 445--446 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ +][]from[][][][]Generator[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][ +][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]from[][][][]Generator[] +[87] Overfull \hbox (15.79532pt too wide) in paragraph at lines 2808--2810 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]ge neralized[][][]affine[][][]image[][][]lhs[][][]rhs(+[]Handle, +[] @@ -12751,27 +13532,7 @@ Overfull \hbox (0.19531pt too wide) in paragraph at lines 2839--2841 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]li near[][][]partition(+[]Handle[][][]1, +[]Handle[][][]2, -[] -[87 -Overfull \hbox (8.76266pt too wide) in paragraph at lines 715--716 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]uncons -train[][][]space[][][]dimension()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]S -hape[][][]mpq[][][]class[][][]unconstrain[] - -Overfull \hbox (12.65256pt too wide) in paragraph at lines 721--722 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]uncons -train[][][]space[][][]dimensions()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][] -Shape[][][]mpq[][][]class[][][]unconstrain[] - -Overfull \hbox (7.47191pt too wide) in paragraph at lines 739--740 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]bounde -d[][][]affine[][][]image()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][ -][]mpq[][][]class[][][]bounded[][][]affine[][][]image - -Overfull \hbox (3.83328pt too wide) in paragraph at lines 745--746 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]bounde -d[][][]affine[][][]preimage()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape -[][][]mpq[][][]class[][][]bounded[][][]affine[] -[71]] +[87] Overfull \hbox (9.79532pt too wide) in paragraph at lines 2846--2848 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][][] B[]H[]M[]Z05[][][]widening[][][]assign[][][]with[][][]tokens(+[]Handle[] @@ -12813,6 +13574,31 @@ []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][][] C[]C76[][][]narrowing[][][]assign(+[]Handle[][][]1, +[]Handle[] [88] +Overfull \hbox (37.0216pt too wide) in paragraph at lines 463--464 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]relati +on[][][]with[][][][]Constraint()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sh +ape[][][]mpz[][][]class[][][]relation[][][]with[][][][]Constraint + +Overfull \hbox (30.54167pt too wide) in paragraph at lines 469--470 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]relati +on[][][]with[][][][]Generator()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sha +pe[][][]mpz[][][]class[][][]relation[][][]with[][][][]Generator + +Overfull \hbox (0.67314pt too wide) in paragraph at lines 475--476 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]relati +on[][][]with[][][][]Congruence()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sh +ape[][][]mpz[][][]class[][][]relation[][][]with[] + +Overfull \hbox (1.9628pt too wide) in paragraph at lines 493--494 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]get[][ +][]minimized[][][]constraints()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sha +pe[][][]mpz[][][]class[][][]get[][][]minimized[] + +Overfull \hbox (7.51286pt too wide) in paragraph at lines 499--500 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]get[][ +][]minimized[][][]congruences()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sha +pe[][][]mpz[][][]class[][][]get[][][]minimized[] +[88] Overfull \hbox (3.79532pt too wide) in paragraph at lines 2886--2888 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]ad d[][][]space[][][]dimensions[][][]and[][][]embed(+[]Handle, +[] @@ -12837,41 +13623,6 @@ []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]fo ld[][][]space[][][]dimensions(+[]Handle, +[]List[][][]of[][][][]P[] [89] -Overfull \hbox (20.41315pt too wide) in paragraph at lines 751--752 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]genera -lized[][][]affine[][][]image()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shap -e[][][]mpq[][][]class[][][]generalized[][][]affine[] - -Overfull \hbox (2.99301pt too wide) in paragraph at lines 757--758 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]genera -lized[][][]affine[][][]preimage()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]S -hape[][][]mpq[][][]class[][][]generalized[] - -Overfull \hbox (22.05263pt too wide) in paragraph at lines 763--764 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]genera -lized[][][]affine[][][]image[][][]lhs[][][]rhs()[] \OT1/pcr/m/n/8 int ppl[][][] -[]B[]D[][][][]Shape[][][]mpq[][][]class[][][]generalized[] - -Overfull \hbox (36.31252pt too wide) in paragraph at lines 769--770 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]genera -lized[][][]affine[][][]preimage[][][]lhs[][][]rhs()[] \OT1/pcr/m/n/8 int ppl[][ -][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]generalized[] - -Overfull \hbox (17.78265pt too wide) in paragraph at lines 775--776 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]add[][ -][]space[][][]dimensions[][][]and[][][]embed()[] \OT1/pcr/m/n/8 int ppl[][][][] -B[]D[][][][]Shape[][][]mpq[][][]class[][][]add[][][]space[] - -Overfull \hbox (19.81268pt too wide) in paragraph at lines 781--782 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]add[][ -][]space[][][]dimensions[][][]and[][][]project()[] \OT1/pcr/m/n/8 int ppl[][][] -[]B[]D[][][][]Shape[][][]mpq[][][]class[][][]add[][][]space[] - -Overfull \hbox (37.58159pt too wide) in paragraph at lines 787--788 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]remove -[][][]space[][][]dimensions()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape -[][][]mpq[][][]class[][][]remove[][][]space[][][]dimensions -[72 Overfull \hbox (39.79532pt too wide) in paragraph at lines 2923--2925 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][] []Polyhedron[][][][]Grid[][][]from[][][]space[][][]dimension(+[]Dimension[] @@ -12899,7 +13650,22 @@ Overfull \hbox (21.79532pt too wide) in paragraph at lines 2953--2955 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][] []Polyhedron[][][][]Grid[][][]from[][][][]Grid(+[]Handle[][][]1, -[]Handle[] -[90]] +[90] +Overfull \hbox (2.03311pt too wide) in paragraph at lines 523--524 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]contai +ns[][][]integer[][][]point()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[ +][][]mpz[][][]class[][][]contains[][][]integer[][][] + +Overfull \hbox (1.48302pt too wide) in paragraph at lines 529--530 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]is[][] +[]topologically[][][]closed()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape +[][][]mpz[][][]class[][][]is[][][]topologically[][][] + +Overfull \hbox (28.93297pt too wide) in paragraph at lines 541--542 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]topolo +gical[][][]closure[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sh +ape[][][]mpz[][][]class[][][]topological[][][]closure[] +[89] Overfull \hbox (3.79532pt too wide) in paragraph at lines 2956--2958 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][] []Polyhedron[][][][]Grid[][][]from[][][][]Rational[][][][]Box(+[]Handle[] @@ -12972,41 +13738,6 @@ []Polyhedron[][][][]Grid[][][]from[][][][]Rational[][][][]Box[][][]with[][][]co mplexity(+[] [91] -Overfull \hbox (0.1827pt too wide) in paragraph at lines 793--794 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]remove -[][][]higher[][][]space[][][]dimensions()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[ -][][][]Shape[][][]mpq[][][]class[][][]remove[] - -Overfull \hbox (28.74158pt too wide) in paragraph at lines 799--800 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]expand -[][][]space[][][]dimension()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[ -][][]mpq[][][]class[][][]expand[][][]space[][][]dimension - -Overfull \hbox (13.1315pt too wide) in paragraph at lines 805--806 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]fold[] -[][]space[][][]dimensions()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[] -[][]mpq[][][]class[][][]fold[][][]space[][][]dimensions - -Overfull \hbox (10.8016pt too wide) in paragraph at lines 811--812 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]map[][ -][]space[][][]dimensions()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][ -][]mpq[][][]class[][][]map[][][]space[][][]dimensions - -Overfull \hbox (0.36298pt too wide) in paragraph at lines 817--818 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]drop[] -[][]some[][][]non[][][]integer[][][]points()[] \OT1/pcr/m/n/8 int ppl[][][][]B[ -]D[][][][]Shape[][][]mpq[][][]class[][][]drop[][][]some[] - -Overfull \hbox (8.96298pt too wide) in paragraph at lines 823--824 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]drop[] -[][]some[][][]non[][][]integer[][][]points[][][]2()[] \OT1/pcr/m/n/8 int ppl[][ -][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]drop[][][]some[] - -Overfull \hbox (12.23328pt too wide) in paragraph at lines 829--830 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]extern -al[][][]memory[][][]in[][][]bytes()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][ -]Shape[][][]mpq[][][]class[][][]external[][][]memory[] -[73] Overfull \hbox (14.59534pt too wide) in paragraph at lines 2995--2997 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][] []Polyhedron[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]class @@ -13050,41 +13781,36 @@ []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][] []Polyhedron[][][][]Grid[][][]from[][][][]Constraints[][][][]Product[][][] [92] -Overfull \hbox (12.81189pt too wide) in paragraph at lines 835--836 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]total[ -][][]memory[][][]in[][][]bytes()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sh -ape[][][]mpq[][][]class[][][]total[][][]memory[][][]in[][][]bytes - -Overfull \hbox (1.7624pt too wide) in paragraph at lines 841--842 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][][]B[]H -[]M[]Z05[][][]widening[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/m/n/8 int - ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][][]B[] +Overfull \hbox (6.69179pt too wide) in paragraph at lines 571--572 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]maximi +ze[][][]with[][][]point()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][] +[]mpz[][][]class[][][]maximize[][][]with[][][]point ( -Overfull \hbox (29.86266pt too wide) in paragraph at lines 847--848 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][][]H79[ -][][]widening[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/m/n/8 int ppl[][][ -][]B[]D[][][][]Shape[][][]mpq[][][]class[][][][]H79[][][]widening[] +Overfull \hbox (5.03162pt too wide) in paragraph at lines 577--578 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]minimi +ze[][][]with[][][]point()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][] +[]mpz[][][]class[][][]minimize[][][]with[][][]point ( -Overfull \hbox (13.27301pt too wide) in paragraph at lines 853--854 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][][]B[]H -[]M[]Z05[][][]widening[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][] -[]Shape[][][]mpq[][][]class[][][][]B[]H[]M[]Z05[][][]widening[] +Overfull \hbox (3.67287pt too wide) in paragraph at lines 589--590 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]contai +ns[][][][]B[]D[][][][]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 int ppl[][][ +][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]contains[][][][]B[] -Overfull \hbox (8.39174pt too wide) in paragraph at lines 859--860 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][][]H79[ -][][]widening[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[] -[][]mpq[][][]class[][][][]H79[][][]widening[][][]assign ( +Overfull \hbox (29.58234pt too wide) in paragraph at lines 595--596 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]strict +ly[][][]contains[][][][]B[]D[][][][]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/ +8 int ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]strictly[] -Overfull \hbox (22.88277pt too wide) in paragraph at lines 865--866 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]wideni -ng[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][] -[][]Shape[][][]mpq[][][]class[][][]widening[][][]assign[] +Overfull \hbox (1.53247pt too wide) in paragraph at lines 601--602 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]is[][] +[]disjoint[][][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]class()[] \OT1/pcr/ +m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]is[][][] -Overfull \hbox (1.84178pt too wide) in paragraph at lines 877--878 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]limite -d[][][][]B[]H[]M[]Z05[][][]extrapolation[][][]assign[][][]with[][][]tokens()[] -\OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[] -[74 +Overfull \hbox (17.42293pt too wide) in paragraph at lines 607--608 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]equals +[][][][]B[]D[][][][]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 int ppl[][][][ +]B[]D[][][][]Shape[][][]mpz[][][]class[][][]equals[][][][]B[]D[][][][]Shape[] +[90] Overfull \hbox (15.2138pt too wide) in paragraph at lines 3041--3043 []\OT1/pcr/m/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhed ron[][][][]Grid[][][]is[][][]topologically[][][]closed(+[]Handle) @@ -13128,7 +13854,7 @@ Overfull \hbox (15.2138pt too wide) in paragraph at lines 3084--3086 []\OT1/pcr/m/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhed ron[][][][]Grid[][][]relation[][][]with[][][]generator(+[]Handle, -[93]] +[93] Overfull \hbox (21.2138pt too wide) in paragraph at lines 3087--3089 []\OT1/pcr/m/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhed ron[][][][]Grid[][][]relation[][][]with[][][]congruence(+[]Handle, @@ -13157,41 +13883,6 @@ []\OT1/pcr/m/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhed ron[][][][]Grid[][][]total[][][]memory[][][]in[][][]bytes(+[]Handle, [94] -Overfull \hbox (23.22203pt too wide) in paragraph at lines 883--884 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]limite -d[][][][]H79[][][]extrapolation[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/ -m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[] - -Overfull \hbox (3.00206pt too wide) in paragraph at lines 889--890 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]limite -d[][][][]C[]C76[][][]extrapolation[][][]assign[][][]with[][][]tokens()[] \OT1/p -cr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]mpq[] - -Overfull \hbox (28.7124pt too wide) in paragraph at lines 895--896 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]limite -d[][][][]B[]H[]M[]Z05[][][]extrapolation[][][]assign()[] \OT1/pcr/m/n/8 int ppl -[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]limited[] - -Overfull \hbox (5.93262pt too wide) in paragraph at lines 901--902 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]limite -d[][][][]H79[][][]extrapolation[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B -[]D[][][][]Shape[][][]mpq[][][]class[][][]limited[] - -Overfull \hbox (12.59267pt too wide) in paragraph at lines 907--908 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]limite -d[][][][]C[]C76[][][]extrapolation[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][] -[]B[]D[][][][]Shape[][][]mpq[][][]class[][][]limited[] - -Overfull \hbox (3.96262pt too wide) in paragraph at lines 913--914 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][][]C[]C -76[][][]extrapolation[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/m/n/8 int -ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][][]C[] - -Overfull \hbox (29.87323pt too wide) in paragraph at lines 919--920 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][][]C[]C -76[][][]extrapolation[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][ -]Shape[][][]mpq[][][]class[][][][]C[]C76[][][]extrapolation[] -[75 Overfull \hbox (41.6138pt too wide) in paragraph at lines 3129--3131 []\OT1/pcr/m/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhed ron[][][][]Grid[][][]add[][][]constraint(+[]Handle, +[]Constraint) @@ -13235,7 +13926,27 @@ Overfull \hbox (12.19531pt too wide) in paragraph at lines 3163--3165 []\OT1/pcr/m/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhed ron[][][][]Grid[][][]unconstrain[][][]space[][][]dimensions(+[] -[95] +[95 +Overfull \hbox (15.75171pt too wide) in paragraph at lines 643--644 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]refine +[][][]with[][][]constraint()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[ +][][]mpz[][][]class[][][]refine[][][]with[][][]constraint + +Overfull \hbox (21.30177pt too wide) in paragraph at lines 649--650 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]refine +[][][]with[][][]congruence()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[ +][][]mpz[][][]class[][][]refine[][][]with[][][]congruence + +Overfull \hbox (24.4416pt too wide) in paragraph at lines 655--656 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]refine +[][][]with[][][]constraints()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape +[][][]mpz[][][]class[][][]refine[][][]with[][][]constraints + +Overfull \hbox (29.99167pt too wide) in paragraph at lines 661--662 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]refine +[][][]with[][][]congruences()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape +[][][]mpz[][][]class[][][]refine[][][]with[][][]congruences +[91]] Overfull \hbox (9.2138pt too wide) in paragraph at lines 3166--3168 []\OT1/pcr/m/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhed ron[][][][]Grid[][][]affine[][][]image(+[]Handle, +[]P[]P[]L[][][][]Var, @@ -13279,32 +13990,7 @@ Overfull \hbox (12.19531pt too wide) in paragraph at lines 3200--3202 []\OT1/pcr/m/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhed ron[][][][]Grid[][][]difference[][][]assign(+[]Handle[][][]1, +[] -[96]] -Overfull \hbox (1.05347pt too wide) in paragraph at lines 925--926 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][][]C[]C -76[][][]narrowing[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sha -pe[][][]mpq[][][]class[][][][]C[]C76[][][]narrowing[][][] - -Overfull \hbox (15.77289pt too wide) in paragraph at lines 943--944 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ -][]recycle[][][][]Constraint[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[ -][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]recycle[] - -Overfull \hbox (21.32295pt too wide) in paragraph at lines 949--950 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ -][]recycle[][][][]Congruence[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[ -][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]recycle[] - -Overfull \hbox (14.09296pt too wide) in paragraph at lines 955--956 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][ -][]recycle[][][][]Generator[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[] -[][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]recycle[] - -Overfull \hbox (3.71283pt too wide) in paragraph at lines 961--962 - []\OT1/ptm/b/n/10 ppl[][][]assign[][][][]B[]D[][][][]Shape[][][]mpq[][][]class -[][][]from[][][][]B[]D[][][][]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 int -ppl[][][]assign[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[] -[76 +[96] Overfull \hbox (15.79532pt too wide) in paragraph at lines 3203--3205 []\OT1/pcr/m/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhed ron[][][][]Grid[][][]time[][][]elapse[][][]assign(+[]Handle[][][]1, +[] @@ -13336,7 +14022,22 @@ Overfull \hbox (15.2138pt too wide) in paragraph at lines 3238--3240 []\OT1/pcr/m/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhed ron[][][][]Grid[][][]remove[][][]space[][][]dimensions(+[]Handle, -[97]] +[97 +Overfull \hbox (1.81296pt too wide) in paragraph at lines 697--698 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]upper[ +][][]bound[][][]assign[][][]if[][][]exact()[] \OT1/pcr/m/n/8 int ppl[][][][]B[] +D[][][][]Shape[][][]mpz[][][]class[][][]upper[][][]bound[] + +Overfull \hbox (19.83264pt too wide) in paragraph at lines 703--704 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]simpli +fy[][][]using[][][]context[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[] +[][][]Shape[][][]mpz[][][]class[][][]simplify[][][]using[] + +Overfull \hbox (7.64267pt too wide) in paragraph at lines 715--716 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]uncons +train[][][]space[][][]dimension()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]S +hape[][][]mpz[][][]class[][][]unconstrain[] +[92]] Overfull \hbox (21.79532pt too wide) in paragraph at lines 3241--3243 []\OT1/pcr/m/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhed ron[][][][]Grid[][][]remove[][][]higher[][][]space[][][]dimensions(+[] @@ -13365,51 +14066,6 @@ []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Pointset[][][][]Powerset[][][][]C[][][][] Polyhedron[][][]from[][][]congruences(+[]Congruence[][][][]System, [98] -Overfull \hbox (38.69156pt too wide) in paragraph at lines 967--968 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]add[][ -][]recycled[][][]constraints()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shap -e[][][]mpq[][][]class[][][]add[][][]recycled[][][]constraints - -Overfull \hbox (0.4231pt too wide) in paragraph at lines 973--974 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]add[][ -][]recycled[][][]congruences()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shap -e[][][]mpq[][][]class[][][]add[][][]recycled[][][] - -Overfull \hbox (6.13176pt too wide) in paragraph at lines 979--980 - []\OT1/ptm/b/n/10 ppl[][][]termination[][][]test[][][][]M[]S[][][][]B[]D[][][] -[]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 int ppl[][][]termination[][][]te -st[][][][]M[]S[][][][]B[]D[][][][]Shape[][][]mpq[][][]class ( - -Overfull \hbox (4.46184pt too wide) in paragraph at lines 985--986 - []\OT1/ptm/b/n/10 ppl[][][]termination[][][]test[][][][]P[]R[][][][]B[]D[][][] -[]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 int ppl[][][]termination[][][]te -st[][][][]P[]R[][][][]B[]D[][][][]Shape[][][]mpq[][][]class ( - -Overfull \hbox (8.48293pt too wide) in paragraph at lines 991--992 - []\OT1/ptm/b/n/10 ppl[][][]one[][][]affine[][][]ranking[][][]function[][][][]M -[]S[][][][]B[]D[][][][]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 int ppl[][] -[]one[][][]affine[][][]ranking[][][]function[] - -Overfull \hbox (6.813pt too wide) in paragraph at lines 997--998 - []\OT1/ptm/b/n/10 ppl[][][]one[][][]affine[][][]ranking[][][]function[][][][]P -[]R[][][][]B[]D[][][][]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 int ppl[][] -[]one[][][]affine[][][]ranking[][][]function[] - -Overfull \hbox (12.73273pt too wide) in paragraph at lines 1003--1004 - []\OT1/ptm/b/n/10 ppl[][][]all[][][]affine[][][]ranking[][][]functions[][][][] -M[]S[][][][]B[]D[][][][]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 int ppl[][ -][]all[][][]affine[][][]ranking[][][]functions[] - -Overfull \hbox (11.0628pt too wide) in paragraph at lines 1009--1010 - []\OT1/ptm/b/n/10 ppl[][][]all[][][]affine[][][]ranking[][][]functions[][][][] -P[]R[][][][]B[]D[][][][]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 int ppl[][ -][]all[][][]affine[][][]ranking[][][]functions[] - -Overfull \hbox (14.11327pt too wide) in paragraph at lines 1015--1016 - []\OT1/ptm/b/n/10 ppl[][][]termination[][][]test[][][][]M[]S[][][][]B[]D[][][] -[]Shape[][][]mpq[][][]class[][][]2()[] \OT1/pcr/m/n/8 int ppl[][][]termination[ -][][]test[][][][]M[]S[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[] -[77 Underfull \hbox (badness 10000) in paragraph at lines 3287--3288 @@ -13448,7 +14104,32 @@ Overfull \hbox (3.2138pt too wide) in paragraph at lines 3339--3341 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro n[][][]bounds[][][]from[][][]below(+[]Handle, +[]Lin[][][][]Expr) -[99]] +[99] +Overfull \hbox (11.53256pt too wide) in paragraph at lines 721--722 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]uncons +train[][][]space[][][]dimensions()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][] +Shape[][][]mpz[][][]class[][][]unconstrain[] + +Overfull \hbox (6.35191pt too wide) in paragraph at lines 739--740 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]bounde +d[][][]affine[][][]image()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][ +][]mpz[][][]class[][][]bounded[][][]affine[][][]image + +Overfull \hbox (2.71329pt too wide) in paragraph at lines 745--746 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]bounde +d[][][]affine[][][]preimage()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape +[][][]mpz[][][]class[][][]bounded[][][]affine[] + +Overfull \hbox (19.29315pt too wide) in paragraph at lines 751--752 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]genera +lized[][][]affine[][][]image()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shap +e[][][]mpz[][][]class[][][]generalized[][][]affine[] + +Overfull \hbox (1.87302pt too wide) in paragraph at lines 757--758 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]genera +lized[][][]affine[][][]preimage()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]S +hape[][][]mpz[][][]class[][][]generalized[] +[93] Overfull \hbox (33.79532pt too wide) in paragraph at lines 3342--3344 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro n[][][]contains[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedron(+[] @@ -13497,31 +14178,6 @@ []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro n[][][]maximize(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[] [100] -Overfull \hbox (12.44334pt too wide) in paragraph at lines 1021--1022 - []\OT1/ptm/b/n/10 ppl[][][]termination[][][]test[][][][]P[]R[][][][]B[]D[][][] -[]Shape[][][]mpq[][][]class[][][]2()[] \OT1/pcr/m/n/8 int ppl[][][]termination[ -][][]test[][][][]P[]R[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[] - -Overfull \hbox (17.08293pt too wide) in paragraph at lines 1027--1028 - []\OT1/ptm/b/n/10 ppl[][][]one[][][]affine[][][]ranking[][][]function[][][][]M -[]S[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]2()[] \OT1/pcr/m/n/8 int -ppl[][][]one[][][]affine[][][]ranking[][][]function[] - -Overfull \hbox (15.41301pt too wide) in paragraph at lines 1033--1034 - []\OT1/ptm/b/n/10 ppl[][][]one[][][]affine[][][]ranking[][][]function[][][][]P -[]R[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]2()[] \OT1/pcr/m/n/8 int -ppl[][][]one[][][]affine[][][]ranking[][][]function[] - -Overfull \hbox (21.33273pt too wide) in paragraph at lines 1039--1040 - []\OT1/ptm/b/n/10 ppl[][][]all[][][]affine[][][]ranking[][][]functions[][][][] -M[]S[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]2()[] \OT1/pcr/m/n/8 int - ppl[][][]all[][][]affine[][][]ranking[][][]functions[] - -Overfull \hbox (19.66281pt too wide) in paragraph at lines 1045--1046 - []\OT1/ptm/b/n/10 ppl[][][]all[][][]affine[][][]ranking[][][]functions[][][][] -P[]R[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]2()[] \OT1/pcr/m/n/8 int - ppl[][][]all[][][]affine[][][]ranking[][][]functions[] -[78 Overfull \hbox (4.9953pt too wide) in paragraph at lines 3390--3392 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro n[][][]minimize(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[] @@ -13545,7 +14201,42 @@ Overfull \hbox (2.0138pt too wide) in paragraph at lines 3427--3429 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro n[][][]add[][][]constraint(+[]Handle, +[]Constraint) -[101]]) (./interfaceppl__BD__Shape__mpz__class__tag.tex +[101] +Overfull \hbox (20.93263pt too wide) in paragraph at lines 763--764 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]genera +lized[][][]affine[][][]image[][][]lhs[][][]rhs()[] \OT1/pcr/m/n/8 int ppl[][][] +[]B[]D[][][][]Shape[][][]mpz[][][]class[][][]generalized[] + +Overfull \hbox (35.19252pt too wide) in paragraph at lines 769--770 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]genera +lized[][][]affine[][][]preimage[][][]lhs[][][]rhs()[] \OT1/pcr/m/n/8 int ppl[][ +][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]generalized[] + +Overfull \hbox (16.66266pt too wide) in paragraph at lines 775--776 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]add[][ +][]space[][][]dimensions[][][]and[][][]embed()[] \OT1/pcr/m/n/8 int ppl[][][][] +B[]D[][][][]Shape[][][]mpz[][][]class[][][]add[][][]space[] + +Overfull \hbox (18.69269pt too wide) in paragraph at lines 781--782 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]add[][ +][]space[][][]dimensions[][][]and[][][]project()[] \OT1/pcr/m/n/8 int ppl[][][] +[]B[]D[][][][]Shape[][][]mpz[][][]class[][][]add[][][]space[] + +Overfull \hbox (36.4616pt too wide) in paragraph at lines 787--788 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]remove +[][][]space[][][]dimensions()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape +[][][]mpz[][][]class[][][]remove[][][]space[][][]dimensions + +Overfull \hbox (1.9427pt too wide) in paragraph at lines 793--794 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]remove +[][][]higher[][][]space[][][]dimensions()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[ +][][][]Shape[][][]mpz[][][]class[][][]remove[][][] + +Overfull \hbox (27.62158pt too wide) in paragraph at lines 799--800 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]expand +[][][]space[][][]dimension()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[ +][][]mpz[][][]class[][][]expand[][][]space[][][]dimension +[94] Overfull \hbox (2.0138pt too wide) in paragraph at lines 3430--3432 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro n[][][]add[][][]congruence(+[]Handle, +[]Congruence) @@ -13591,47 +14282,6 @@ sl/10 Handle \OT1/ptm/m/it/10 as-sign-ing the affine ex-pres-sion for \OT1/pcr/ m/sl/10 Lin[][][][]Expr/Coeff [102] -Overfull \hbox (4.7421pt too wide) in paragraph at lines 19--21 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][] -class[][][]from[][][][]C[][][][]Polyhedron[][] ([][]ppl[][][][]B[]D[][][][]Shap -e[][][]mpz[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [] -[]ppl[][][]const[] - -Overfull \hbox (2.52185pt too wide) in paragraph at lines 25--27 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][] -class[][][]from[][][][]Rational[][][][]Box[][] ([][]ppl[][][][]B[]D[][][][]Shap -e[][][]mpz[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [] -[]ppl[][][]const[] - -Overfull \hbox (9.44183pt too wide) in paragraph at lines 27--29 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][] -class[][][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] ([][]ppl[][][] -[]B[]D[][][][]Shape[][][]mpz[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/p -tm/bc/n/10 pph, [][]ppl[] - -Overfull \hbox (10.00189pt too wide) in paragraph at lines 29--31 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][] -class[][][]from[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] ([][]ppl[][][] -[]B[]D[][][][]Shape[][][]mpz[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/p -tm/bc/n/10 pph, [][]ppl[] - -Overfull \hbox (12.8701pt too wide) in paragraph at lines 31--33 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][] -class[][][]from[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][] ([][]ppl[ -][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\ -OT1/ptm/bc/n/10 pph, - -Overfull \hbox (4.28183pt too wide) in paragraph at lines 41--43 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][] -class[][][]from[][][][]C[][][][]Polyhedron[][][]with[][][]complexity[][] ([][]p -pl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[] - -Overfull \hbox (11.81184pt too wide) in paragraph at lines 45--47 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][] -class[][][]from[][][][]Grid[][][]with[][][]complexity[][] ([][]ppl[][][][]B[]D[ -][][][]Shape[][][]mpz[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n -/10 pph, [][]ppl[] -[79 Overfull \hbox (8.5953pt too wide) in paragraph at lines 3473--3475 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro n[][][]affine[][][]preimage(+[]Handle, +[]P[]P[]L[][][][]Var, +[] @@ -13672,6 +14322,41 @@ []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro n[][][]difference[][][]assign(+[]Handle[][][]1, +[]Handle[] [103] +Overfull \hbox (12.0115pt too wide) in paragraph at lines 805--806 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]fold[] +[][]space[][][]dimensions()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[] +[][]mpz[][][]class[][][]fold[][][]space[][][]dimensions + +Overfull \hbox (9.68161pt too wide) in paragraph at lines 811--812 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]map[][ +][]space[][][]dimensions()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][ +][]mpz[][][]class[][][]map[][][]space[][][]dimensions + +Overfull \hbox (2.12299pt too wide) in paragraph at lines 817--818 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]drop[] +[][]some[][][]non[][][]integer[][][]points()[] \OT1/pcr/m/n/8 int ppl[][][][]B[ +]D[][][][]Shape[][][]mpz[][][]class[][][]drop[][][]some[][][] + +Overfull \hbox (7.84299pt too wide) in paragraph at lines 823--824 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]drop[] +[][]some[][][]non[][][]integer[][][]points[][][]2()[] \OT1/pcr/m/n/8 int ppl[][ +][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]drop[][][]some[] + +Overfull \hbox (11.11328pt too wide) in paragraph at lines 829--830 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]extern +al[][][]memory[][][]in[][][]bytes()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][ +]Shape[][][]mpz[][][]class[][][]external[][][]memory[] + +Overfull \hbox (11.6919pt too wide) in paragraph at lines 835--836 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]total[ +][][]memory[][][]in[][][]bytes()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sh +ape[][][]mpz[][][]class[][][]total[][][]memory[][][]in[][][]bytes + +Overfull \hbox (0.64241pt too wide) in paragraph at lines 841--842 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][][]B[]H +[]M[]Z05[][][]widening[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/m/n/8 int + ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][][]B[] +[95] Overfull \hbox (12.19531pt too wide) in paragraph at lines 3507--3509 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro n[][][]time[][][]elapse[][][]assign(+[]Handle[][][]1, +[]Handle[] @@ -13704,7 +14389,7 @@ Overfull \hbox (14.5953pt too wide) in paragraph at lines 3538--3540 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro n[][][]concatenate[][][]assign(+[]Handle[][][]1, +[]Handle[] -[104]] +[104] Overfull \hbox (12.81381pt too wide) in paragraph at lines 3545--3547 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro n[][][]add[][][]space[][][]dimensions[][][]and[][][]embed(+[]Handle, @@ -13746,6 +14431,41 @@ []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro n[][][]iterator[][][]equals[][][]iterator(+[]Iterator[][][] [105] +Overfull \hbox (28.74266pt too wide) in paragraph at lines 847--848 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][][]H79[ +][][]widening[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/m/n/8 int ppl[][][ +][]B[]D[][][][]Shape[][][]mpz[][][]class[][][][]H79[][][]widening[] + +Overfull \hbox (12.15302pt too wide) in paragraph at lines 853--854 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][][]B[]H +[]M[]Z05[][][]widening[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][] +[]Shape[][][]mpz[][][]class[][][][]B[]H[]M[]Z05[][][]widening[] + +Overfull \hbox (7.27174pt too wide) in paragraph at lines 859--860 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][][]H79[ +][][]widening[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[] +[][]mpz[][][]class[][][][]H79[][][]widening[][][]assign ( + +Overfull \hbox (21.76277pt too wide) in paragraph at lines 865--866 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]wideni +ng[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][] +[][]Shape[][][]mpz[][][]class[][][]widening[][][]assign[] + +Overfull \hbox (0.72179pt too wide) in paragraph at lines 877--878 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]limite +d[][][][]B[]H[]M[]Z05[][][]extrapolation[][][]assign[][][]with[][][]tokens()[] +\OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[] + +Overfull \hbox (22.10204pt too wide) in paragraph at lines 883--884 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]limite +d[][][][]H79[][][]extrapolation[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/ +m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[] + +Overfull \hbox (1.88206pt too wide) in paragraph at lines 889--890 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]limite +d[][][][]C[]C76[][][]extrapolation[][][]assign[][][]with[][][]tokens()[] \OT1/p +cr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]mpz[] +[96 Overfull \hbox (29.6138pt too wide) in paragraph at lines 3588--3590 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro n[][][]iterator[][][]get[][][]disjunct(+[]Iterator, -[]Handle) @@ -13765,73 +14485,7 @@ Overfull \hbox (0.19531pt too wide) in paragraph at lines 3629--3631 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[] [][][]Polyhedron[][][]from[][][]congruences(+[]Congruence[][][] -[106] -Overfull \hbox (2.06158pt too wide) in paragraph at lines 47--49 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][] -class[][][]from[][][][]Rational[][][][]Box[][][]with[][][]complexity[][] ([][]p -pl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[] - -Overfull \hbox (10.65173pt too wide) in paragraph at lines 49--51 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][] -class[][][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]with[][][]com -plexity[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[] - -Overfull \hbox (11.21179pt too wide) in paragraph at lines 51--53 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][] -class[][][]from[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]with[][][]com -plexity[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[] - -Overfull \hbox (17.04158pt too wide) in paragraph at lines 53--55 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][] -class[][][]from[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]with[][] -[]complexity[][] ([][]ppl[][][][]B[]D[][][][]Shape[] - -Overfull \hbox (17.60164pt too wide) in paragraph at lines 55--57 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][] -class[][][]from[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]with[][] -[]complexity[][] ([][]ppl[][][][]B[]D[][][][]Shape[] - -Overfull \hbox (4.00201pt too wide) in paragraph at lines 61--63 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][] -class[][][]from[][][][]Octagonal[][][][]Shape[][][]double[][][]with[][][]comple -xity[][] ([][]ppl[][][][]B[]D[][][][]Shape[] - -Overfull \hbox (5.02197pt too wide) in paragraph at lines 65--67 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][] -class[][][]from[][][][]Congruence[][][][]System[][] ([][]ppl[][][][]B[]D[][][][ -]Shape[][][]mpz[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pp -h, [][]ppl[] - -Overfull \hbox (8.06145pt too wide) in paragraph at lines 69--71 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]space[][][]dimension[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]mp -z[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] - -Overfull \hbox (8.3715pt too wide) in paragraph at lines 71--73 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]affine[][][]dimension[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]m -pz[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] - -Overfull \hbox (24.44096pt too wide) in paragraph at lines 79--81 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]get[][][]constraints[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]mp -z[][][]class[][][]t[][] ph, [][]ppl[][][]const[][][][]Constraint[] - -Overfull \hbox (37.7416pt too wide) in paragraph at lines 81--83 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]get[][][]congruences[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]mp -z[][][]class[][][]t[][] ph, [][]ppl[][][]const[][][][]Congruence[] - -Overfull \hbox (0.84119pt too wide) in paragraph at lines 83--85 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]get[][][]minimized[][][]constraints[][] ([][]ppl[][][]const[][][][]B[]D[][][] -[]Shape[][][]mpz[][][]class[][][]t[][] ph, [][]ppl[] - -Overfull \hbox (7.4915pt too wide) in paragraph at lines 85--87 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]get[][][]minimized[][][]congruences[][] ([][]ppl[][][]const[][][][]B[]D[][][] -[]Shape[][][]mpz[][][]class[][][]t[][] ph, [][]ppl[] -[80 +[106]] Underfull \hbox (badness 10000) in paragraph at lines 3637--3638 @@ -13858,7 +14512,7 @@ Overfull \hbox (15.2138pt too wide) in paragraph at lines 3686--3688 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]bounds[][][]from[][][]above(+[]Handle, +[]Lin[][][][]Expr) -[107]] +[107] Overfull \hbox (15.2138pt too wide) in paragraph at lines 3689--3691 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]bounds[][][]from[][][]below(+[]Handle, +[]Lin[][][][]Expr) @@ -13908,7 +14562,37 @@ Overfull \hbox (14.5953pt too wide) in paragraph at lines 3732--3734 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]relation[][][]with[][][]congruence(+[]Handle, +[] -[108] +[108 +Overfull \hbox (27.5924pt too wide) in paragraph at lines 895--896 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]limite +d[][][][]B[]H[]M[]Z05[][][]extrapolation[][][]assign()[] \OT1/pcr/m/n/8 int ppl +[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]limited[] + +Overfull \hbox (4.81262pt too wide) in paragraph at lines 901--902 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]limite +d[][][][]H79[][][]extrapolation[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B +[]D[][][][]Shape[][][]mpz[][][]class[][][]limited[] + +Overfull \hbox (11.47267pt too wide) in paragraph at lines 907--908 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]limite +d[][][][]C[]C76[][][]extrapolation[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][] +[]B[]D[][][][]Shape[][][]mpz[][][]class[][][]limited[] + +Overfull \hbox (2.84262pt too wide) in paragraph at lines 913--914 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][][]C[]C +76[][][]extrapolation[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/m/n/8 int +ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][][]C[] + +Overfull \hbox (28.75323pt too wide) in paragraph at lines 919--920 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][][]C[]C +76[][][]extrapolation[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][ +]Shape[][][]mpz[][][]class[][][][]C[]C76[][][]extrapolation[] + +Overfull \hbox (19.75198pt too wide) in paragraph at lines 925--926 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][][]C[]C +76[][][]narrowing[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sha +pe[][][]mpz[][][]class[][][][]C[]C76[][][]narrowing[][][]assign +[97]] Overfull \hbox (16.9953pt too wide) in paragraph at lines 3735--3737 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]maximize(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[] @@ -13933,98 +14617,6 @@ []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]total[][][]memory[][][]in[][][]bytes(+[]Handle, ?Number) [109] -Overfull \hbox (5.00137pt too wide) in paragraph at lines 109--111 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]maximize[][][]with[][][]point[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shap -e[][][]mpz[][][]class[][][]t[][] ph, [][]ppl[][][]const[] - -Overfull \hbox (14.09169pt too wide) in paragraph at lines 109--111 -[][][]\OT1/ptm/bc/n/10 Linear[][][][]Expression[][][]t[][] le, [][]ppl[][][][]C -oefficient[][][]t[][] ext[][][]n, [][]ppl[][][][]Coefficient[][][]t[][] ext[][] -[]d, int $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 poptimum, [][]ppl[][][][]Genera -tor[] - -Overfull \hbox (3.34132pt too wide) in paragraph at lines 111--113 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]minimize[][][]with[][][]point[][] ([][]ppl[][][]const[][][][]B[]D[][][][]Shap -e[][][]mpz[][][]class[][][]t[][] ph, [][]ppl[][][]const[] - -Overfull \hbox (14.09169pt too wide) in paragraph at lines 111--113 -[][][]\OT1/ptm/bc/n/10 Linear[][][][]Expression[][][]t[][] le, [][]ppl[][][][]C -oefficient[][][]t[][] ext[][][]n, [][]ppl[][][][]Coefficient[][][]t[][] ext[][] -[]d, int $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 poptimum, [][]ppl[][][][]Genera -tor[] - -Overfull \hbox (13.03139pt too wide) in paragraph at lines 115--117 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]contains[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] ([][]ppl[][][]const -[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]t[][] x, [][]ppl[] - -Overfull \hbox (13.83092pt too wide) in paragraph at lines 117--119 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]strictly[][][]contains[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] ([][] -ppl[][][]const[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[] - -Overfull \hbox (12.44106pt too wide) in paragraph at lines 119--121 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]is[][][]disjoint[][][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] ( -[][]ppl[][][]const[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[] - -Overfull \hbox (5.2515pt too wide) in paragraph at lines 121--123 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]equals[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] ([][]ppl[][][]const[] -[][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]t[][] x, [][]ppl[] - -Overfull \hbox (11.36208pt too wide) in paragraph at lines 127--129 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]add[][][]congruence[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class -[][][]t[][] ph, [][]ppl[][][]const[][][][]Congruence[] - -Overfull \hbox (1.95134pt too wide) in paragraph at lines 129--131 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]add[][][]constraints[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]clas -s[][][]t[][] ph, [][]ppl[][][]const[][][][]Constraint[] - -Overfull \hbox (15.25197pt too wide) in paragraph at lines 131--133 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]add[][][]congruences[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]clas -s[][][]t[][] ph, [][]ppl[][][]const[][][][]Congruence[] - -Overfull \hbox (27.77104pt too wide) in paragraph at lines 133--135 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]refine[][][]with[][][]constraint[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]m -pz[][][]class[][][]t[][] ph, [][]ppl[][][]const[][][][]Constraint[] - -Overfull \hbox (11.10129pt too wide) in paragraph at lines 141--143 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]intersection[][][]assign[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][] -class[][][]t[][] x, [][]ppl[][][]const[][][][]B[]D[][][][]Shape[] - -Overfull \hbox (4.72157pt too wide) in paragraph at lines 145--147 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]difference[][][]assign[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]cl -ass[][][]t[][] x, [][]ppl[][][]const[][][][]B[]D[][][][]Shape[] - -Overfull \hbox (11.64148pt too wide) in paragraph at lines 147--149 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]concatenate[][][]assign[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]c -lass[][][]t[][] x, [][]ppl[][][]const[][][][]B[]D[][][][]Shape[] - -Overfull \hbox (10.81128pt too wide) in paragraph at lines 149--151 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]time[][][]elapse[][][]assign[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[] -[][]class[][][]t[][] x, [][]ppl[][][]const[][][][]B[]D[][][][]Shape[] - -Overfull \hbox (4.5419pt too wide) in paragraph at lines 151--153 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]upper[][][]bound[][][]assign[][][]if[][][]exact[][] ([][]ppl[][][][]B[]D[][][ -][]Shape[][][]mpz[][][]class[][][]t[][] x, [][]ppl[][][]const[] - -Overfull \hbox (10.4113pt too wide) in paragraph at lines 153--155 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]simplify[][][]using[][][]context[][][]assign[][] ([][]ppl[][][][]B[]D[][][][] -Shape[][][]mpz[][][]class[][][]t[][] x, [][]ppl[][][]const[] -[81 Overfull \hbox (14.0138pt too wide) in paragraph at lines 3777--3779 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]add[][][]constraint(+[]Handle, +[]Constraint) @@ -14068,7 +14660,42 @@ Overfull \hbox (17.6138pt too wide) in paragraph at lines 3817--3819 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]unconstrain[][][]space[][][]dimensions(+[]Handle, -[110]] +[110] +Overfull \hbox (14.6529pt too wide) in paragraph at lines 943--944 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ +][]recycle[][][][]Constraint[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[ +][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]recycle[] + +Overfull \hbox (20.20296pt too wide) in paragraph at lines 949--950 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ +][]recycle[][][][]Congruence[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[ +][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]recycle[] + +Overfull \hbox (12.97296pt too wide) in paragraph at lines 955--956 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ +][]recycle[][][][]Generator[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[] +[][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]recycle[] + +Overfull \hbox (1.47284pt too wide) in paragraph at lines 961--962 + []\OT1/ptm/b/n/10 ppl[][][]assign[][][][]B[]D[][][][]Shape[][][]mpz[][][]class +[][][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 int +ppl[][][]assign[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[] + +Overfull \hbox (37.57156pt too wide) in paragraph at lines 967--968 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]add[][ +][]recycled[][][]constraints()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shap +e[][][]mpz[][][]class[][][]add[][][]recycled[][][]constraints + +Overfull \hbox (43.12163pt too wide) in paragraph at lines 973--974 + []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]add[][ +][]recycled[][][]congruences()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shap +e[][][]mpz[][][]class[][][]add[][][]recycled[][][]congruences + +Overfull \hbox (5.01176pt too wide) in paragraph at lines 979--980 + []\OT1/ptm/b/n/10 ppl[][][]termination[][][]test[][][][]M[]S[][][][]B[]D[][][] +[]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 int ppl[][][]termination[][][]te +st[][][][]M[]S[][][][]B[]D[][][][]Shape[][][]mpz[][][]class ( +[98] Overfull \hbox (2.5953pt too wide) in paragraph at lines 3820--3822 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]affine[][][]image(+[]Handle, +[]P[]P[]L[][][][]Var, +[] @@ -14117,107 +14744,7 @@ Overfull \hbox (20.5953pt too wide) in paragraph at lines 3854--3856 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]difference[][][]assign(+[]Handle[][][]1, +[]Handle[] -[111 -Overfull \hbox (4.47188pt too wide) in paragraph at lines 165--167 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]bounded[][][]affine[][][]image[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpz -[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] - -Overfull \hbox (7.27184pt too wide) in paragraph at lines 165--167 -[][]\OT1/ptm/bc/n/10 type[][] var, [][]ppl[][][]const[][][][]Linear[][][][]Expr -ession[][][]t[][] lb, [][]ppl[][][]const[][][][]Linear[][][][]Expression[][][]t -[][] ub, [][]ppl[][][]const[][][][]Coefficient[] - -Overfull \hbox (17.24178pt too wide) in paragraph at lines 167--169 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]bounded[][][]affine[][][]preimage[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][] -mpz[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] - -Overfull \hbox (7.27184pt too wide) in paragraph at lines 167--169 -[][]\OT1/ptm/bc/n/10 type[][] var, [][]ppl[][][]const[][][][]Linear[][][][]Expr -ession[][][]t[][] lb, [][]ppl[][][]const[][][][]Linear[][][][]Expression[][][]t -[][] ub, [][]ppl[][][]const[][][][]Coefficient[] - -Overfull \hbox (16.12138pt too wide) in paragraph at lines 169--171 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]generalized[][][]affine[][][]image[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][ -]mpz[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] - -Overfull \hbox (28.89128pt too wide) in paragraph at lines 171--173 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]generalized[][][]affine[][][]preimage[][] ([][]ppl[][][][]B[]D[][][][]Shape[] -[][]mpz[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] - -Overfull \hbox (1.94151pt too wide) in paragraph at lines 173--175 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]generalized[][][]affine[][][]image[][][]lhs[][][]rhs[][] ([][]ppl[][][][]B[]D -[][][][]Shape[][][]mpz[][][]class[][][]t[][] ph, [][]ppl[] - -Overfull \hbox (15.92157pt too wide) in paragraph at lines 173--175 -[][]\OT1/ptm/bc/n/10 const[][][][]Linear[][][][]Expression[][][]t[][] lhs, enum - [][]ppl[][][]enum[][][][]Constraint[][][][]Type[][] rel-sym, [][]ppl[][][]cons -t[][][][]Linear[][][][]Expression[] - -Overfull \hbox (14.71141pt too wide) in paragraph at lines 175--177 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]generalized[][][]affine[][][]preimage[][][]lhs[][][]rhs[][] ([][]ppl[][][][]B -[]D[][][][]Shape[][][]mpz[][][]class[][][]t[][] ph, [][]ppl[] - -Overfull \hbox (15.92157pt too wide) in paragraph at lines 175--177 -[][]\OT1/ptm/bc/n/10 const[][][][]Linear[][][][]Expression[][][]t[][] lhs, enum - [][]ppl[][][]enum[][][][]Constraint[][][][]Type[][] rel-sym, [][]ppl[][][]cons -t[][][][]Linear[][][][]Expression[] - -Overfull \hbox (8.31177pt too wide) in paragraph at lines 177--179 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]add[][][]space[][][]dimensions[][][]and[][][]embed[][] ([][]ppl[][][][]B[]D[] -[][][]Shape[][][]mpz[][][]class[][][]t[][] ph, [][]ppl[] - -Overfull \hbox (9.42162pt too wide) in paragraph at lines 179--181 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]add[][][]space[][][]dimensions[][][]and[][][]project[][] ([][]ppl[][][][]B[]D -[][][][]Shape[][][]mpz[][][]class[][][]t[][] ph, [][]ppl[] - -Overfull \hbox (20.53154pt too wide) in paragraph at lines 181--183 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]remove[][][]space[][][]dimensions[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][] -mpz[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] - -Overfull \hbox (4.41182pt too wide) in paragraph at lines 183--185 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]remove[][][]higher[][][]space[][][]dimensions[][] ([][]ppl[][][][]B[]D[][][][ -]Shape[][][]mpz[][][]class[][][]t[][] ph, [][]ppl[] - -Overfull \hbox (15.6817pt too wide) in paragraph at lines 185--187 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]expand[][][]]space[][][]dimension[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]m -pz[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] - -Overfull \hbox (6.95146pt too wide) in paragraph at lines 187--189 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]fold[][][]space[][][]dimensions[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mp -z[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] - -Overfull \hbox (8.06145pt too wide) in paragraph at lines 189--191 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]map[][][]space[][][]dimensions[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpz -[][][]class[][][]t[][] ph, [][]ppl[][][]dimension[] - -Overfull \hbox (2.76027pt too wide) in paragraph at lines 191--193 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]drop[][][]some[][][]non[][][]integer[][][]points[][] ([][]ppl[][][][]B[]D[][] -[][]Shape[][][]mpz[][][]class[][][]t[][] ph, int com- - -Overfull \hbox (0.11208pt too wide) in paragraph at lines 193--195 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]drop[][][]some[][][]non[][][]integer[][][]points[][][]2[][] ([][]ppl[][][][]B -[]D[][][][]Shape[][][]mpz[][][]class[][][]t[][] ph, [][]ppl[] - -Overfull \hbox (2.05135pt too wide) in paragraph at lines 195--197 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]external[][][]memory[][][]in[][][]bytes[][] ([][]ppl[][][]const[][][][]B[]D[] -[][][]Shape[][][]mpz[][][]class[][][]t[][] ps, size[] -[82 +[111] Overfull \hbox (24.19531pt too wide) in paragraph at lines 3857--3859 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]time[][][]elapse[][][]assign(+[]Handle[][][]1, +[]Handle[] @@ -14293,7 +14820,52 @@ Overfull \hbox (2.0138pt too wide) in paragraph at lines 3923--3925 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]begin[][][]iterator(+[]Handle, -[]Iterator) -[113]] +[113 +Overfull \hbox (3.34184pt too wide) in paragraph at lines 985--986 + []\OT1/ptm/b/n/10 ppl[][][]termination[][][]test[][][][]P[]R[][][][]B[]D[][][] +[]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 int ppl[][][]termination[][][]te +st[][][][]P[]R[][][][]B[]D[][][][]Shape[][][]mpz[][][]class ( + +Overfull \hbox (7.36293pt too wide) in paragraph at lines 991--992 + []\OT1/ptm/b/n/10 ppl[][][]one[][][]affine[][][]ranking[][][]function[][][][]M +[]S[][][][]B[]D[][][][]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 int ppl[][] +[]one[][][]affine[][][]ranking[][][]function[] + +Overfull \hbox (5.69301pt too wide) in paragraph at lines 997--998 + []\OT1/ptm/b/n/10 ppl[][][]one[][][]affine[][][]ranking[][][]function[][][][]P +[]R[][][][]B[]D[][][][]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 int ppl[][] +[]one[][][]affine[][][]ranking[][][]function[] + +Overfull \hbox (11.61273pt too wide) in paragraph at lines 1003--1004 + []\OT1/ptm/b/n/10 ppl[][][]all[][][]affine[][][]ranking[][][]functions[][][][] +M[]S[][][][]B[]D[][][][]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 int ppl[][ +][]all[][][]affine[][][]ranking[][][]functions[] + +Overfull \hbox (9.94281pt too wide) in paragraph at lines 1009--1010 + []\OT1/ptm/b/n/10 ppl[][][]all[][][]affine[][][]ranking[][][]functions[][][][] +P[]R[][][][]B[]D[][][][]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 int ppl[][ +][]all[][][]affine[][][]ranking[][][]functions[] + +Overfull \hbox (12.99327pt too wide) in paragraph at lines 1015--1016 + []\OT1/ptm/b/n/10 ppl[][][]termination[][][]test[][][][]M[]S[][][][]B[]D[][][] +[]Shape[][][]mpz[][][]class[][][]2()[] \OT1/pcr/m/n/8 int ppl[][][]termination[ +][][]test[][][][]M[]S[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[] + +Overfull \hbox (11.32335pt too wide) in paragraph at lines 1021--1022 + []\OT1/ptm/b/n/10 ppl[][][]termination[][][]test[][][][]P[]R[][][][]B[]D[][][] +[]Shape[][][]mpz[][][]class[][][]2()[] \OT1/pcr/m/n/8 int ppl[][][]termination[ +][][]test[][][][]P[]R[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[] + +Overfull \hbox (15.96294pt too wide) in paragraph at lines 1027--1028 + []\OT1/ptm/b/n/10 ppl[][][]one[][][]affine[][][]ranking[][][]function[][][][]M +[]S[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]2()[] \OT1/pcr/m/n/8 int +ppl[][][]one[][][]affine[][][]ranking[][][]function[] + +Overfull \hbox (14.29301pt too wide) in paragraph at lines 1033--1034 + []\OT1/ptm/b/n/10 ppl[][][]one[][][]affine[][][]ranking[][][]function[][][][]P +[]R[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]2()[] \OT1/pcr/m/n/8 int +ppl[][][]one[][][]affine[][][]ranking[][][]function[] +[99]] Overfull \hbox (8.5953pt too wide) in paragraph at lines 3929--3931 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]iterator[][][]equals[][][]iterator(+[]Iterator[] @@ -14310,6 +14882,16 @@ []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][]space[][ ][]dimension(+[]Dimension[][][][]Type, +[]Universe[][][]or[][][][]Empty, [114] +Overfull \hbox (20.21274pt too wide) in paragraph at lines 1039--1040 + []\OT1/ptm/b/n/10 ppl[][][]all[][][]affine[][][]ranking[][][]functions[][][][] +M[]S[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]2()[] \OT1/pcr/m/n/8 int + ppl[][][]all[][][]affine[][][]ranking[][][]functions[] + +Overfull \hbox (18.54282pt too wide) in paragraph at lines 1045--1046 + []\OT1/ptm/b/n/10 ppl[][][]all[][][]affine[][][]ranking[][][]functions[][][][] +P[]R[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]2()[] \OT1/pcr/m/n/8 int + ppl[][][]all[][][]affine[][][]ranking[][][]functions[] +) (./interfaceppl__Coefficient__tag.tex Underfull \hbox (badness 10000) in paragraph at lines 3990--3991 @@ -14326,76 +14908,7 @@ Overfull \hbox (15.2138pt too wide) in paragraph at lines 4029--4031 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]C[][][ ][]Polyhedron[][][]with[][][]complexity(+[]Handle, +[]Complexity, -[115] -Overfull \hbox (3.23177pt too wide) in paragraph at lines 201--203 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[][]H79[][][]widening[][][]assign[][][]with[][][]tokens[][] ([][]ppl[][][][]B[] -D[][][][]Shape[][][]mpz[][][]class[][][]t[][] x, [][]ppl[] - -Overfull \hbox (7.12152pt too wide) in paragraph at lines 207--209 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]widening[][][]assign[][][]with[][][]tokens[][] ([][]ppl[][][][]B[]D[][][][]Sh -ape[][][]mpz[][][]class[][][]t[][] x, [][]ppl[][][]const[] - -Overfull \hbox (1.66174pt too wide) in paragraph at lines 209--211 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]widening[][][]assign[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]clas -s[][][]t[][] x, [][]ppl[][][]const[][][][]B[]D[][][][]Shape[] - -Overfull \hbox (3.0714pt too wide) in paragraph at lines 215--217 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]limited[][][][]C[]C76[][][]extrapolation[][][]assign[][][]with[][][]tokens[][ -] ([][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[] - -Overfull \hbox (5.7013pt too wide) in paragraph at lines 221--223 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]limited[][][][]C[]C76[][][]extrapolation[][][]assign[][] ([][]ppl[][][][]B[]D -[][][][]Shape[][][]mpz[][][]class[][][]t[][] x, [][]ppl[] - -Overfull \hbox (8.6716pt too wide) in paragraph at lines 229--231 -\OT1/ptm/bc/n/10 Shape[][][]mpz[][][]class[][][]t[][] y, [][]ppl[][][][]B[]D[][ -][][]Shape[][][]mpz[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/1 -0 p[][][]inters, [][]ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][] -Polyhedron[] - -Overfull \hbox (7.65157pt too wide) in paragraph at lines 233--235 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][] -class[][][]recycle[][][][]Constraint[][][][]System[][] ([][]ppl[][][][]B[]D[][] -[][]Shape[][][]mpz[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 - pph, [][]ppl[] - -Overfull \hbox (14.30188pt too wide) in paragraph at lines 235--237 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][] -class[][][]recycle[][][][]Congruence[][][][]System[][] ([][]ppl[][][][]B[]D[][] -[][]Shape[][][]mpz[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 - pph, [][]ppl[] - -Overfull \hbox (5.96178pt too wide) in paragraph at lines 237--239 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][] -class[][][]recycle[][][][]Generator[][][][]System[][] ([][]ppl[][][][]B[]D[][][ -][]Shape[][][]mpz[][][]class[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 -pph, [][]ppl[] - -Overfull \hbox (9.70131pt too wide) in paragraph at lines 239--241 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]assign[][][][]B[]D[][][][]Shape[][][]mpz[][ -][]class[][][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] ([][]ppl[][ -][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]t[][] dst, [][]ppl[] - -Overfull \hbox (14.56133pt too wide) in paragraph at lines 241--243 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]add[][][]recycled[][][]constraints[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][ -]mpz[][][]class[][][]t[][] ph, [][]ppl[][][][]Constraint[] - -Overfull \hbox (27.86195pt too wide) in paragraph at lines 243--245 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] -[]add[][][]recycled[][][]congruences[][] ([][]ppl[][][][]B[]D[][][][]Shape[][][ -]mpz[][][]class[][][]t[][] ph, [][]ppl[][][][]Congruence[] - -Overfull \hbox (7.33005pt too wide) in paragraph at lines 249--251 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]one[][][]affine[][][]ranking[][][]function[ -][][][]M[]S[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] ([][]ppl[][][]cons -t[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]t[][] pset, -[83 +[115] [100] Overfull \hbox (27.2138pt too wide) in paragraph at lines 4032--4034 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]N[]N[] C[][][][]Polyhedron[][][]with[][][]complexity(+[]Handle, +[]Complexity, @@ -14437,7 +14950,8 @@ Overfull \hbox (15.79532pt too wide) in paragraph at lines 4059--4061 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]Octago nal[][][][]Shape[][][]double[][][]with[][][]complexity(+[]Handle, +[] -[116]] +[116]) +(./interfaceppl__Congruence__System__const__iterator__tag.tex Overfull \hbox (13.3953pt too wide) in paragraph at lines 4127--4129 []\OT1/pcr/m/n/10 ppl[][][][]Double[][][][]Box[][][]relation[][][]with[][][]con straint(+[]Handle, +[]Constraint, ?Relation[] @@ -14464,7 +14978,7 @@ \OT1/ptm/m/it/10 Unifies \OT1/pcr/m/sl/10 Relation[][][][]List \OT1/ptm/m/it/10 with the list of re-la-tions the dou-ble box ref-er-enced by \OT1/pcr/m/sl/10 Handle \OT1/ptm/m/it/10 has with \OT1/pcr/m/sl/10 Congruence\OT1/ptm/m/it/10 . -[117] +[117] [101] Overfull \hbox (23.6138pt too wide) in paragraph at lines 4148--4150 []\OT1/pcr/m/n/10 ppl[][][][]Double[][][][]Box[][][]has[][][]upper[][][]bound(+ []Handle, +[]Var, ?Coeff[][][]1, ?Coeff[][][]2, ?Boolean) @@ -14488,37 +15002,22 @@ Overfull \hbox (8.5953pt too wide) in paragraph at lines 4173--4175 []\OT1/pcr/m/n/10 ppl[][][][]Double[][][][]Box[][][]minimize[][][]with[][][]poi nt(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[][][]1, ?Coeff[] -[118] -Overfull \hbox (5.11008pt too wide) in paragraph at lines 251--253 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]one[][][]affine[][][]ranking[][][]function[ -][][][]P[]R[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] ([][]ppl[][][]cons -t[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]t[][] pset, - -Overfull \hbox (6.77972pt too wide) in paragraph at lines 253--255 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]all[][][]affine[][][]ranking[][][]functions -[][][][]M[]S[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] ([][]ppl[][][]con -st[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]t[][] pset, - -Overfull \hbox (4.55975pt too wide) in paragraph at lines 255--257 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]all[][][]affine[][][]ranking[][][]functions -[][][][]P[]R[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] ([][]ppl[][][]con -st[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]t[][] pset, - -Overfull \hbox (8.82309pt too wide) in paragraph at lines 295--296 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ -][]from[][][]space[][][]dimension()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[ -]D[][][][]Shape[][][]mpz[][][]class[][][]from[][][]space[] +[118] [119] +Overfull \hbox (1.72762pt too wide) in paragraph at lines 22--24 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]assign[][][][]Congruence[][][][]System[] +[][]const[][][]iterator[][][]from[][][][]Congruence[][][][]System[][][]const[][ +][]iterator[][] ([][]ppl[] -Overfull \hbox (20.58217pt too wide) in paragraph at lines 301--302 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ -][]from[][][][]C[][][][]Polyhedron()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B -[]D[][][][]Shape[][][]mpz[][][]class[][][]from[][][][]C[][][][]Polyhedron +Overfull \hbox (2.27753pt too wide) in paragraph at lines 25--27 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]delete[][][][]Congruence[][][][]System[] +[][]const[][][]iterator[][] ([][]ppl[][][]const[][][][]Congruence[][][][]System +[][][]const[][][]iterator[] -Overfull \hbox (2.72359pt too wide) in paragraph at lines 307--308 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ -][]from[][][][]N[]N[]C[][][][]Polyhedron()[] \OT1/pcr/m/n/8 int ppl[][][]new[][ -][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]from[][][][]N[]N[]C[] -[84 [119] +Overfull \hbox (17.54732pt too wide) in paragraph at lines 38--40 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Congruence[][][][]System[][][]const[][ +][]iterator[][][]equal[][][]test[][] ([][]ppl[][][]const[][][][]Congruence[][][ +][]System[][][]const[][][]iterator[] +) (./interfaceppl__Congruence__System__tag.tex [102] Overfull \hbox (1.38072pt too wide) in paragraph at lines 4237--4239 \OT1/ptm/m/it/10 Transforms the dou-ble box ref-er-enced by \OT1/pcr/m/sl/10 Ha ndle \OT1/ptm/m/it/10 sub-sti-tut-ing the affine ex-pres-sion for \OT1/pcr/m/sl @@ -14552,7 +15051,7 @@ []\OT1/pcr/m/n/10 ppl[][][][]Double[][][][]Box[][][]wrap[][][]assign(+[]Handle, +[]List[][][]of[][][][]P[]P[]L[][][][]Var, +[]Width, +[]Representation, -Underfull \vbox (badness 3503) has occurred while \output is active [120]] +Underfull \vbox (badness 3503) has occurred while \output is active [120] Overfull \hbox (27.2138pt too wide) in paragraph at lines 4280--4282 []\OT1/pcr/m/n/10 ppl[][][][]Double[][][][]Box[][][]simplify[][][]using[][][]co ntext[][][]assign(+[]Handle[][][]1, +[]Handle[][][]2, ?Boolean) @@ -14572,47 +15071,32 @@ Overfull \hbox (15.79532pt too wide) in paragraph at lines 4302--4304 []\OT1/pcr/m/n/10 ppl[][][][]Double[][][][]Box[][][]limited[][][][]C[]C76[][][] extrapolation[][][]assign[][][]with[][][]tokens(+[]Handle[][][]1, +[] -[121 -Overfull \hbox (9.33357pt too wide) in paragraph at lines 319--320 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ -][]from[][][][]Rational[][][][]Box()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B -[]D[][][][]Shape[][][]mpz[][][]class[][][]from[][][][]Rational[] - -Overfull \hbox (0.25308pt too wide) in paragraph at lines 325--326 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ -][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 int ppl -[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]from[] - -Overfull \hbox (1.37308pt too wide) in paragraph at lines 331--332 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ -][]from[][][][]B[]D[][][][]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 int ppl -[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]from[] - -Overfull \hbox (8.17279pt too wide) in paragraph at lines 337--338 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ -][]from[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 in -t ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[] +[121] +Overfull \hbox (7.63844pt too wide) in paragraph at lines 25--27 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Congruence[][][][]System[][][ +]from[][][][]Congruence[][][][]System[][] ([][]ppl[][][][]Congruence[][][][]Sys +tem[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pcs, [][]ppl[] -Overfull \hbox (9.29279pt too wide) in paragraph at lines 343--344 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ -][]from[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 in -t ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[] +Overfull \hbox (9.56808pt too wide) in paragraph at lines 28--30 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]assign[][][][]Congruence[][][][]System[] +[][]from[][][][]Congruence[][][][]System[][] ([][]ppl[][][][]Congruence[][][][] +System[][][]t[][] dst, [][]ppl[] -Overfull \hbox (1.9221pt too wide) in paragraph at lines 349--350 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ -][]from[][][][]Double[][][][]Box()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[] -D[][][][]Shape[][][]mpz[][][]class[][][]from[][][][]Double[][][][]Box +Overfull \hbox (10.67792pt too wide) in paragraph at lines 38--40 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Congruence[][][][]System[][][]space[][ +][]dimension[][] ([][]ppl[][][]const[][][][]Congruence[][][][]System[][][]t[][] + cs, [][]ppl[][][]dimension[] -Overfull \hbox (2.58328pt too wide) in paragraph at lines 355--356 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ -][]from[][][][]B[]D[][][][]Shape[][][]double()[] \OT1/pcr/m/n/8 int ppl[][][]ne -w[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]from[][][][]B[]D[][][] +Overfull \hbox (4.96837pt too wide) in paragraph at lines 44--46 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Congruence[][][][]System[][][]begin[][ +] ([][]ppl[][][]const[][][][]Congruence[][][][]System[][][]t[][] cs, [][]ppl[][ +][][]Congruence[][][][]System[] -Overfull \hbox (17.22299pt too wide) in paragraph at lines 361--362 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ -][]from[][][][]Octagonal[][][][]Shape[][][]double()[] \OT1/pcr/m/n/8 int ppl[][ -][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]from[] -[85] +Overfull \hbox (23.98816pt too wide) in paragraph at lines 60--62 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Congruence[][][][]System[][][]insert[] +[][][]Congruence[][] ([][]ppl[][][][]Congruence[][][][]System[][][]t[][] cs, [] +[]ppl[][][]const[][][][]Congruence[] +[103]) (./interfaceppl__Congruence__tag.tex Overfull \hbox (12.19531pt too wide) in paragraph at lines 4305--4307 []\OT1/pcr/m/n/10 ppl[][][][]Double[][][][]Box[][][]limited[][][][]C[]C76[][][] extrapolation[][][]assign(+[]Handle[][][]1, +[]Handle[][][]2, +[] @@ -14629,7 +15113,7 @@ []\OT1/pcr/m/n/10 ppl[][][][]Double[][][][]Box[][][]fold[][][]space[][][]dimens ions(+[]Handle, +[]List[][][]of[][][][]P[]P[]L[][][][]Vars, +[]P[]P[]L[][][][]V ar) -[122]] +[122] Overfull \hbox (6.19531pt too wide) in paragraph at lines 4361--4363 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[] [][]space[][][]dimension(+[]Dimension[][][][]Type, +[]Universe[] @@ -14637,6 +15121,11 @@ Underfull \hbox (badness 10000) in paragraph at lines 4382--4383 [123] +Overfull \hbox (15.0983pt too wide) in paragraph at lines 41--43 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Congruence[][][]coefficient[][] ([][]p +pl[][][]const[][][][]Congruence[][][]t[][] c, [][]ppl[][][]dimension[][][]type[ +][] var, [][]ppl[][][][]Coefficient[] +[104] Overfull \hbox (13.39532pt too wide) in paragraph at lines 4406--4408 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[] [][][]Octagonal[][][][]Shape[][][]mpz[][][]class(+[]Handle[][][]1, -[]Handle[] @@ -14693,42 +15182,7 @@ Overfull \hbox (4.99533pt too wide) in paragraph at lines 4442--4444 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[] [][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]with[][][]complexity(+[] -[124] -Overfull \hbox (21.6729pt too wide) in paragraph at lines 367--368 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ -][]from[][][][]C[][][][]Polyhedron[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 - int ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[] - -Overfull \hbox (9.23282pt too wide) in paragraph at lines 373--374 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ -][]from[][][][]N[]N[]C[][][][]Polyhedron[][][]with[][][]complexity()[] \OT1/pcr -/m/n/8 int ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[] - -Overfull \hbox (4.42291pt too wide) in paragraph at lines 379--380 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ -][]from[][][][]Grid[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[][][]n -ew[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]from[] - -Overfull \hbox (18.72281pt too wide) in paragraph at lines 385--386 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ -][]from[][][][]Rational[][][][]Box[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 - int ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[] - -Overfull \hbox (6.76231pt too wide) in paragraph at lines 391--392 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ -][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]with[][][]complexity( -)[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[]D[][][][]Shape[] - -Overfull \hbox (7.88231pt too wide) in paragraph at lines 397--398 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ -][]from[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]with[][][]complexity( -)[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[]D[][][][]Shape[] - -Overfull \hbox (0.28201pt too wide) in paragraph at lines 403--404 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ -][]from[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]with[][][]comple -xity()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][] -[86] +[124) (./interfaceppl__Constraint__System__const__iterator__tag.tex] Overfull \hbox (30.81381pt too wide) in paragraph at lines 4445--4447 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[] [][][]Double[][][][]Box[][][]with[][][]complexity(+[]Handle, +[]Complexity, @@ -14749,41 +15203,26 @@ []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]is[][][]disjoin t[][][]from[][][][]B[]D[][][][]Shape[][][]double(+[]Handle[][][]1, +[]Handle[] [125] -Overfull \hbox (1.40201pt too wide) in paragraph at lines 409--410 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ -][]from[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]with[][][]comple -xity()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][] - -Overfull \hbox (12.61284pt too wide) in paragraph at lines 415--416 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ -][]from[][][][]Double[][][][]Box[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 i -nt ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[] - -Overfull \hbox (11.01251pt too wide) in paragraph at lines 421--422 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ -][]from[][][][]B[]D[][][][]Shape[][][]double[][][]with[][][]complexity()[] \OT1 -/pcr/m/n/8 int ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[] - -Overfull \hbox (23.73222pt too wide) in paragraph at lines 427--428 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ -][]from[][][][]Octagonal[][][][]Shape[][][]double[][][]with[][][]complexity()[] - \OT1/pcr/m/n/8 int ppl[][][]new[][][][]B[]D[][][][]Shape[] +Overfull \hbox (25.10667pt too wide) in paragraph at lines 19--21 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraint[][][][]System[][][ +]const[][][]iterator[][][]from[][][][]Constraint[][][][]System[][][]const[][][] +iterator[][] ([][]ppl[][][][]Constraint[] -Overfull \hbox (42.25317pt too wide) in paragraph at lines 433--434 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ -][]from[][][][]Constraint[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][] -[][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]from[][][][]Constraint[] +Overfull \hbox (33.69638pt too wide) in paragraph at lines 22--24 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]assign[][][][]Constraint[][][][]System[] +[][]const[][][]iterator[][][]from[][][][]Constraint[][][][]System[][][]const[][ +][]iterator[][] ([][]ppl[][][][]Constraint[] -Overfull \hbox (47.80324pt too wide) in paragraph at lines 439--440 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ -][]from[][][][]Congruence[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][] -[][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]from[][][][]Congruence[] +Overfull \hbox (11.7268pt too wide) in paragraph at lines 32--34 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraint[][][][]System[][][]const[][ +][]iterator[][][]dereference[][] ([][]ppl[][][]const[][][][]Constraint[][][][]S +ystem[][][]const[][][]iterator[] -Overfull \hbox (35.77324pt too wide) in paragraph at lines 445--446 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ -][]from[][][][]Generator[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][ -][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]from[][][][]Generator[] -[87 +Overfull \hbox (4.24669pt too wide) in paragraph at lines 38--40 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraint[][][][]System[][][]const[][ +][]iterator[][][]equal[][][]test[][] ([][]ppl[][][]const[][][][]Constraint[][][ +][]System[][][]const[][][]iterator[] +[105]) (./interfaceppl__Constraint__System__tag.tex Overfull \hbox (40.9953pt too wide) in paragraph at lines 4519--4521 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]relation[][][]w ith[][][]constraint(+[]Handle, +[]Constraint, ?Relation[] @@ -14830,7 +15269,7 @@ Overfull \hbox (36.19531pt too wide) in paragraph at lines 4550--4552 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]maximize[][][]w ith[][][]point(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[][][]1, ?Coeff[] -[126]] +[126] Overfull \hbox (36.19531pt too wide) in paragraph at lines 4555--4557 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]minimize[][][]w ith[][][]point(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[][][]1, ?Coeff[] @@ -14844,31 +15283,17 @@ []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]refine[][][]wit h[][][]constraints( +[]Handle, +[]Constraint[][][][]System) [127] -Overfull \hbox (37.0216pt too wide) in paragraph at lines 463--464 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]relati -on[][][]with[][][][]Constraint()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sh -ape[][][]mpz[][][]class[][][]relation[][][]with[][][][]Constraint - -Overfull \hbox (30.54167pt too wide) in paragraph at lines 469--470 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]relati -on[][][]with[][][][]Generator()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sha -pe[][][]mpz[][][]class[][][]relation[][][]with[][][][]Generator - -Overfull \hbox (0.67314pt too wide) in paragraph at lines 475--476 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]relati -on[][][]with[][][][]Congruence()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sh -ape[][][]mpz[][][]class[][][]relation[][][]with[] - -Overfull \hbox (1.9628pt too wide) in paragraph at lines 493--494 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]get[][ -][]minimized[][][]constraints()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sha -pe[][][]mpz[][][]class[][][]get[][][]minimized[] +Overfull \hbox (24.61707pt too wide) in paragraph at lines 22--24 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraint[][][][]System[][][ +]from[][][][]Constraint[][] ([][]ppl[][][][]Constraint[][][][]System[][][]t[][] + $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pcs, [][]ppl[][][]const[][][][]Constrai +nt[] -Overfull \hbox (7.51286pt too wide) in paragraph at lines 499--500 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]get[][ -][]minimized[][][]congruences()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sha -pe[][][]mpz[][][]class[][][]get[][][]minimized[] -[88 +Overfull \hbox (2.09717pt too wide) in paragraph at lines 50--52 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraint[][][][]System[][][]end[][] +([][]ppl[][][]const[][][][]Constraint[][][][]System[][][]t[][] cs, [][]ppl[][][ +][]Constraint[][][][]System[][][]const[] +[106] Overfull \hbox (11.6138pt too wide) in paragraph at lines 4600--4602 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]refine[][][]wit h[][][]congruences( +[]Handle, +[]Congruence[][][][]System) @@ -14904,7 +15329,7 @@ Overfull \hbox (21.79532pt too wide) in paragraph at lines 4637--4639 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]generalized[][] []affine[][][]preimage[][][]lhs[][][]rhs(+[]Handle, +[]Lin[][][][]Expr[] -[128]] +[128]) (./interfaceppl__Constraint__tag.tex Overfull \hbox (69.2138pt too wide) in paragraph at lines 4640--4642 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]wrap[][][]assig n(+[]Handle, +[]List[][][]of[][][][]P[]P[]L[][][][]Var, +[]Width, +[]Representa @@ -14922,21 +15347,11 @@ []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][][]B[]H[]M[]Z05[ ][][]widening[][][]assign[][][]with[][][]tokens(+[]Handle[][][]1, +[]Handle[] [129] -Overfull \hbox (2.03311pt too wide) in paragraph at lines 523--524 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]contai -ns[][][]integer[][][]point()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[ -][][]mpz[][][]class[][][]contains[][][]integer[][][] - -Overfull \hbox (1.48302pt too wide) in paragraph at lines 529--530 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]is[][] -[]topologically[][][]closed()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape -[][][]mpz[][][]class[][][]is[][][]topologically[][][] - -Overfull \hbox (28.93297pt too wide) in paragraph at lines 541--542 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]topolo -gical[][][]closure[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sh -ape[][][]mpz[][][]class[][][]topological[][][]closure[] -[89 +Overfull \hbox (1.5281pt too wide) in paragraph at lines 16--18 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraint[][] ([][]ppl[][][] +[]Constraint[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pc, [][]ppl[][][ +]const[][][][]Linear[][][][]Expression[][][]t[][] le, enum [][]ppl[][][]enum[] +[107] Overfull \hbox (1.39532pt too wide) in paragraph at lines 4675--4677 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][][]H79[][][]wide ning[][][]assign[][][]with[][][]tokens(+[]Handle[][][]1, +[]Handle[][][] @@ -14968,7 +15383,12 @@ Overfull \hbox (12.19531pt too wide) in paragraph at lines 4705--4707 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]limited[][][][] C[]C76[][][]extrapolation[][][]assign(+[]Handle[][][]1, +[]Handle[] -[130]] +[130] +Overfull \hbox (1.79767pt too wide) in paragraph at lines 44--46 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraint[][][]coefficient[][] ([][]p +pl[][][]const[][][][]Constraint[][][]t[][] c, [][]ppl[][][]dimension[][][]type[ +][] var, [][]ppl[][][][]Coefficient[] +) (./interfaceppl__Constraints__Product__C__Polyhedron__Grid__tag.tex Overfull \hbox (0.19531pt too wide) in paragraph at lines 4724--4726 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]add[][][]space[ ][][]dimensions[][][]and[][][]embed(+[]Handle, +[]Dimension[] @@ -14989,36 +15409,6 @@ []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]fold[][][]space [][][]dimensions(+[]Handle, +[]List[][][]of[][][][]P[]P[]L[][][][]Vars, +[] [131] -Overfull \hbox (6.69179pt too wide) in paragraph at lines 571--572 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]maximi -ze[][][]with[][][]point()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][] -[]mpz[][][]class[][][]maximize[][][]with[][][]point ( - -Overfull \hbox (5.03162pt too wide) in paragraph at lines 577--578 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]minimi -ze[][][]with[][][]point()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][] -[]mpz[][][]class[][][]minimize[][][]with[][][]point ( - -Overfull \hbox (3.67287pt too wide) in paragraph at lines 589--590 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]contai -ns[][][][]B[]D[][][][]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 int ppl[][][ -][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]contains[][][][]B[] - -Overfull \hbox (29.58234pt too wide) in paragraph at lines 595--596 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]strict -ly[][][]contains[][][][]B[]D[][][][]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/ -8 int ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]strictly[] - -Overfull \hbox (1.53247pt too wide) in paragraph at lines 601--602 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]is[][] -[]disjoint[][][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]class()[] \OT1/pcr/ -m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]is[][][] - -Overfull \hbox (17.42293pt too wide) in paragraph at lines 607--608 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]equals -[][][][]B[]D[][][][]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 int ppl[][][][ -]B[]D[][][][]Shape[][][]mpz[][][]class[][][]equals[][][][]B[]D[][][][]Shape[] -[90 Overfull \hbox (0.19531pt too wide) in paragraph at lines 4761--4763 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]double[][][]f rom[][][]space[][][]dimension(+[]Dimension[][][][]Type, +[] @@ -15060,6 +15450,36 @@ /ptm/m/it/10 from the bd[][][]shape[][][]mpq[][][]class ref-er-enced by han-dle \OT1/pcr/m/sl/10 Handle[][][]1\OT1/ptm/m/it/10 . \OT1/pcr/m/sl/10 Handle[] [132] +Overfull \hbox (14.4614pt too wide) in paragraph at lines 15--17 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]delete[][][][]Constraints[][][][]Product[][ +][][]C[][][][]Polyhedron[][][][]Grid[][] ([][]ppl[][][]const[][][][]Constraints +[][][][]Product[][][][]C[][][][]Polyhedron[] + +Overfull \hbox (16.42136pt too wide) in paragraph at lines 17--19 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] +[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][]space[][][]dimension[][] ([][] +ppl[][][][]Constraints[][][][]Product[] + +Overfull \hbox (5.32178pt too wide) in paragraph at lines 19--21 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] +[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]C[][][][]Polyhedron[][] ([][ +]ppl[][][][]Constraints[][][][]Product[] + +Overfull \hbox (19.76172pt too wide) in paragraph at lines 21--23 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] +[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]N[]N[]C[][][][]Polyhedron[][ +] ([][]ppl[][][][]Constraints[][][][]Product[] + +Overfull \hbox (27.2516pt too wide) in paragraph at lines 23--25 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] +[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]Grid[][] ([][]ppl[][][][]Con +straints[][][][]Product[][][][]C[][][][]Polyhedron[] + +Overfull \hbox (3.10153pt too wide) in paragraph at lines 25--27 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] +[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]Rational[][][][]Box[][] ([][ +]ppl[][][][]Constraints[][][][]Product[] +[108] Overfull \hbox (19.39532pt too wide) in paragraph at lines 4806--4808 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]double[][][]f rom[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class(+[]Handle[][][]1, -[] @@ -15109,27 +15529,7 @@ []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]double[][][]f rom[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]with[][][]complexity (+[] -[133]] -Overfull \hbox (15.75171pt too wide) in paragraph at lines 643--644 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]refine -[][][]with[][][]constraint()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[ -][][]mpz[][][]class[][][]refine[][][]with[][][]constraint - -Overfull \hbox (21.30177pt too wide) in paragraph at lines 649--650 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]refine -[][][]with[][][]congruence()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[ -][][]mpz[][][]class[][][]refine[][][]with[][][]congruence - -Overfull \hbox (24.4416pt too wide) in paragraph at lines 655--656 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]refine -[][][]with[][][]constraints()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape -[][][]mpz[][][]class[][][]refine[][][]with[][][]constraints - -Overfull \hbox (29.99167pt too wide) in paragraph at lines 661--662 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]refine -[][][]with[][][]congruences()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape -[][][]mpz[][][]class[][][]refine[][][]with[][][]congruences -[91 +[133] Overfull \hbox (15.79532pt too wide) in paragraph at lines 4845--4847 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]double[][][]f rom[][][][]Double[][][][]Box[][][]with[][][]complexity(+[]Handle, +[] @@ -15154,6 +15554,80 @@ []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]is[][][]di sjoint[][][]from[][][][]Octagonal[][][][]Shape[][][]double(+[]Handle[] [134] +Overfull \hbox (0.58157pt too wide) in paragraph at lines 29--31 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] +[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[][][]mpq[] +[][]class[][] ([][]ppl[][][][]Constraints[] + +Overfull \hbox (27.2312pt too wide) in paragraph at lines 31--33 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] +[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]Octagonal[][][][]Shape[][][] +mpz[][][]class[][] ([][]ppl[][][][]Constraints[] + +Overfull \hbox (27.79126pt too wide) in paragraph at lines 33--35 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] +[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]Octagonal[][][][]Shape[][][] +mpq[][][]class[][] ([][]ppl[][][][]Constraints[] + +Overfull \hbox (21.69168pt too wide) in paragraph at lines 37--39 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] +[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[][][]doubl +e[][] ([][]ppl[][][][]Constraints[][][][]Product[] + +Overfull \hbox (14.19164pt too wide) in paragraph at lines 39--41 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] +[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]Octagonal[][][][]Shape[][][] +double[][] ([][]ppl[][][][]Constraints[] + +Overfull \hbox (0.26022pt too wide) in paragraph at lines 41--43 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] +[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]Constraints[][][][]Product[] +[][][]C[][][][]Polyhedron[][][][]Grid[][] + +Overfull \hbox (5.4219pt too wide) in paragraph at lines 41--43 +\OT1/ptm/bc/n/10 ([][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Pol +yhedron[][][][]Grid[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][] +ppl[][][]const[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhedron[] + +Overfull \hbox (40.44136pt too wide) in paragraph at lines 43--45 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] +[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]C[][][][]Polyhedron[][][]wit +h[][][]complexity[][] ([][]ppl[][][][]Constraints[] + +Overfull \hbox (5.72202pt too wide) in paragraph at lines 45--47 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] +[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]N[]N[]C[][][][]Polyhedron[][ +][]with[][][]complexity[][] ([][]ppl[] + +Overfull \hbox (2.39153pt too wide) in paragraph at lines 47--49 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] +[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]Grid[][][]with[][][]complexi +ty[][] ([][]ppl[][][][]Constraints[] + +Overfull \hbox (38.22112pt too wide) in paragraph at lines 49--51 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] +[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]Rational[][][][]Box[][][]wit +h[][][]complexity[][] ([][]ppl[][][][]Constraints[] + +Overfull \hbox (20.69154pt too wide) in paragraph at lines 51--53 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] +[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[][][]mpz[] +[][]class[][][]with[][][]complexity[][] ([][]ppl[] + +Overfull \hbox (21.2516pt too wide) in paragraph at lines 53--55 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] +[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[][][]mpq[] +[][]class[][][]with[][][]complexity[][] ([][]ppl[] + +Overfull \hbox (20.90985pt too wide) in paragraph at lines 55--57 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] +[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]Octagonal[][][][]Shape[][][] +mpz[][][]class[][][]with[][][]complexity[][] + +Overfull \hbox (2.55026pt too wide) in paragraph at lines 55--57 +\OT1/ptm/bc/n/10 ([][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Pol +yhedron[][][][]Grid[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][] +ppl[][][]const[][][ Overfull \hbox (30.19531pt too wide) in paragraph at lines 4900--4902 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]equals[][] [][]Octagonal[][][][]Shape[][][]double(+[]Handle[][][]1, +[]Handle[] @@ -15193,7 +15667,7 @@ Overfull \hbox (16.9953pt too wide) in paragraph at lines 4945--4947 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]minimize(+ []Handle, +[]Lin[][][][]Expr, ?Coeff[][][]1, ?Coeff[] -[135]] +[135] Overfull \hbox (20.5953pt too wide) in paragraph at lines 4950--4952 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]maximize[] [][]with[][][]point(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[] @@ -15210,21 +15684,6 @@ []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]add[][][]c ongruences( +[]Handle, +[]Congruence[][][][]System) [136] -Overfull \hbox (1.81296pt too wide) in paragraph at lines 697--698 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]upper[ -][][]bound[][][]assign[][][]if[][][]exact()[] \OT1/pcr/m/n/8 int ppl[][][][]B[] -D[][][][]Shape[][][]mpz[][][]class[][][]upper[][][]bound[] - -Overfull \hbox (19.83264pt too wide) in paragraph at lines 703--704 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]simpli -fy[][][]using[][][]context[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[] -[][][]Shape[][][]mpz[][][]class[][][]simplify[][][]using[] - -Overfull \hbox (7.64267pt too wide) in paragraph at lines 715--716 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]uncons -train[][][]space[][][]dimension()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]S -hape[][][]mpz[][][]class[][][]unconstrain[] -[92 Overfull \hbox (8.0138pt too wide) in paragraph at lines 4991--4993 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]refine[][] []with[][][]constraint( +[]Handle, +[]Constraint) @@ -15273,7 +15732,51 @@ Overfull \hbox (14.5953pt too wide) in paragraph at lines 5028--5030 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]generalize d[][][]affine[][][]image(+[]Handle, +[]P[]P[]L[][][][]Var, +[] -[137] +[137][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]t[][] ph, + int + +Overfull \hbox (21.46991pt too wide) in paragraph at lines 57--59 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] +[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]Octagonal[][][][]Shape[][][] +mpq[][][]class[][][]with[][][]complexity[][] + +Overfull \hbox (3.11032pt too wide) in paragraph at lines 57--59 +\OT1/ptm/bc/n/10 ([][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Pol +yhedron[][][][]Grid[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][] +ppl[][][]const[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]t[][] ph, + int + +Overfull \hbox (33.77144pt too wide) in paragraph at lines 59--61 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] +[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]Double[][][][]Box[][][]with[ +][][]complexity[][] ([][]ppl[][][][]Constraints[] + +Overfull \hbox (7.65198pt too wide) in paragraph at lines 61--63 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] +[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[][][]doubl +e[][][]with[][][]complexity[][] ([][]ppl[] + +Overfull \hbox (7.87029pt too wide) in paragraph at lines 63--65 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] +[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]Octagonal[][][][]Shape[][][] +double[][][]with[][][]complexity[][] + +Overfull \hbox (9.24173pt too wide) in paragraph at lines 65--67 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] +[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]Constraints[][][][]Product[] +[][][]C[][][][]Polyhedron[][][][]Grid[] + +Overfull \hbox (16.57161pt too wide) in paragraph at lines 65--67 +[][]\OT1/ptm/bc/n/10 with[][][]complexity[][] ([][]ppl[][][][]Constraints[][][] +[]Product[][][][]C[][][][]Polyhedron[][][][]Grid[][][]t[][] $\OMS/cmsy/m/n/10 ^ +^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][]const[][][][]Constraints[][][][]Product[] + + +Overfull \hbox (23.66107pt too wide) in paragraph at lines 67--69 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] +[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]Constraint[][][][]System[][] + ([][]ppl[][][][]Constraints[][][][]Product[] +[109]] Overfull \hbox (11.6138pt too wide) in paragraph at lines 5031--5033 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]generalize d[][][]affine[][][]preimage(+[]Handle, +[]P[]P[]L[][][][]Var, @@ -15297,32 +15800,7 @@ Overfull \hbox (30.19531pt too wide) in paragraph at lines 5062--5064 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]simplify[] [][]using[][][]context[][][]assign(+[]Handle[][][]1, +[]Handle[] -[138]] -Overfull \hbox (11.53256pt too wide) in paragraph at lines 721--722 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]uncons -train[][][]space[][][]dimensions()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][] -Shape[][][]mpz[][][]class[][][]unconstrain[] - -Overfull \hbox (6.35191pt too wide) in paragraph at lines 739--740 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]bounde -d[][][]affine[][][]image()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][ -][]mpz[][][]class[][][]bounded[][][]affine[][][]image - -Overfull \hbox (2.71329pt too wide) in paragraph at lines 745--746 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]bounde -d[][][]affine[][][]preimage()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape -[][][]mpz[][][]class[][][]bounded[][][]affine[] - -Overfull \hbox (19.29315pt too wide) in paragraph at lines 751--752 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]genera -lized[][][]affine[][][]image()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shap -e[][][]mpz[][][]class[][][]generalized[][][]affine[] - -Overfull \hbox (1.87302pt too wide) in paragraph at lines 757--758 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]genera -lized[][][]affine[][][]preimage()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]S -hape[][][]mpz[][][]class[][][]generalized[] -[93 +[138] Overfull \hbox (20.5953pt too wide) in paragraph at lines 5065--5067 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]linear[][] []partition(+[]Handle[][][]1, +[]Handle[][][]2, -[]Handle[] @@ -15350,7 +15828,82 @@ Overfull \hbox (18.19531pt too wide) in paragraph at lines 5093--5095 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]limited[][ ][][]C[]C76[][][]extrapolation[][][]assign(+[]Handle[][][]1, +[] -[139]] +[139] +Overfull \hbox (26.11101pt too wide) in paragraph at lines 77--79 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]relation[][][]with[][][][]Generator[][] ([][]ppl[ +][][]const[][][][]Constraints[][][][]Product[] + +Overfull \hbox (25.8513pt too wide) in paragraph at lines 81--83 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]is[][][]empty[][] ([][]ppl[][][]const[][][][]Cons +traints[][][][]Product[][][][]C[][][][]Polyhedron[] + +Overfull \hbox (34.3313pt too wide) in paragraph at lines 83--85 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]is[][][]universe[][] ([][]ppl[][][]const[][][][]C +onstraints[][][][]Product[][][][]C[][][][]Polyhedron[] + +Overfull \hbox (35.29152pt too wide) in paragraph at lines 85--87 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]is[][][]bounded[][] ([][]ppl[][][]const[][][][]Co +nstraints[][][][]Product[][][][]C[][][][]Polyhedron[] + +Overfull \hbox (22.80093pt too wide) in paragraph at lines 87--89 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]is[][][]topologically[][][]closed[][] ([][]ppl[][ +][]const[][][][]Constraints[][][][]Product[] + +Overfull \hbox (31.95103pt too wide) in paragraph at lines 89--91 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]is[][][]discrete[][] ([][]ppl[][][]const[][][][]C +onstraints[][][][]Product[][][][]C[][][][]Polyhedron[] + +Overfull \hbox (11.9711pt too wide) in paragraph at lines 91--93 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]topological[][][]closure[][][]assign[][] ([][]ppl +[][][][]Constraints[][][][]Product[] + +Overfull \hbox (9.71191pt too wide) in paragraph at lines 93--95 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]bounds[][][]from[][][]above[][] ([][]ppl[][][]con +st[][][][]Constraints[][][][]Product[] + +Overfull \hbox (10.32164pt too wide) in paragraph at lines 95--97 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]bounds[][][]from[][][]below[][] ([][]ppl[][][]con +st[][][][]Constraints[][][][]Product[] + +Overfull \hbox (30.02118pt too wide) in paragraph at lines 97--99 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]maximize[][] ([][]ppl[][][]const[][][][]Constrain +ts[][][][]Product[][][][]C[][][][]Polyhedron[] + +Overfull \hbox (29.78001pt too wide) in paragraph at lines 97--99 +[][][]\OT1/ptm/bc/n/10 Grid[][][]t[][] ph, [][]ppl[][][]const[][][][]Linear[][] +[][]Expression[][][]t[][] le, [][]ppl[][][][]Coefficient[][][]t[][] ext[][][]n, + [][]ppl[][][][]Coefficient[][][]t[][] ext[][][]d, int $\OMS/cmsy/m/n/10 ^^C$\O +T1/ptm/bc/n/10 poptimum) + +Overfull \hbox (28.36113pt too wide) in paragraph at lines 99--101 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]minimize[][] ([][]ppl[][][]const[][][][]Constrain +ts[][][][]Product[][][][]C[][][][]Polyhedron[] + +Overfull \hbox (29.78001pt too wide) in paragraph at lines 99--101 +[][][]\OT1/ptm/bc/n/10 Grid[][][]t[][] ph, [][]ppl[][][]const[][][][]Linear[][] +[][]Expression[][][]t[][] le, [][]ppl[][][][]Coefficient[][][]t[][] ext[][][]n, + [][]ppl[][][][]Coefficient[][][]t[][] ext[][][]d, int $\OMS/cmsy/m/n/10 ^^C$\O +T1/ptm/bc/n/10 poptimum) + +Overfull \hbox (15.58107pt too wide) in paragraph at lines 101--103 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]maximize[][][]with[][][]point[][] ([][]ppl[][][]c +onst[][][][]Constraints[][][][]Product[] + +Overfull \hbox (3.36195pt too wide) in paragraph at lines 101--103 +[][][]\OT1/ptm/bc/n/10 C[][][][]Polyhedron[][][][]Grid[][][]t[][] ph, [][]ppl[] + Overfull \hbox (42.19531pt too wide) in paragraph at lines 5112--5114 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]add[][][]s pace[][][]dimensions[][][]and[][][]embed(+[]Handle, +[]Dimension[] @@ -15374,42 +15927,54 @@ Overfull \hbox (0.19531pt too wide) in paragraph at lines 5127--5129 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]fold[][][] space[][][]dimensions(+[]Handle, +[]List[][][]of[][][][]P[]P[]L[] -) (./PI_Compilation.tex [140 -Overfull \hbox (20.93263pt too wide) in paragraph at lines 763--764 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]genera -lized[][][]affine[][][]image[][][]lhs[][][]rhs()[] \OT1/pcr/m/n/8 int ppl[][][] -[]B[]D[][][][]Shape[][][]mpz[][][]class[][][]generalized[] +) (./PI_Compilation.tex [140]) (./PI_SD_Features.tex [141[][]const[][][][]Linear[][][][]Expression[][][]t[][] le, [][]ppl[][][][]Coeffic +ient[][][]t[][] ext[][][]n, [][]ppl[][][][]Coefficient[] -Overfull \hbox (35.19252pt too wide) in paragraph at lines 769--770 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]genera -lized[][][]affine[][][]preimage[][][]lhs[][][]rhs()[] \OT1/pcr/m/n/8 int ppl[][ -][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]generalized[] +Overfull \hbox (13.92102pt too wide) in paragraph at lines 103--105 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]minimize[][][]with[][][]point[][] ([][]ppl[][][]c +onst[][][][]Constraints[][][][]Product[] -Overfull \hbox (16.66266pt too wide) in paragraph at lines 775--776 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]add[][ -][]space[][][]dimensions[][][]and[][][]embed()[] \OT1/pcr/m/n/8 int ppl[][][][] -B[]D[][][][]Shape[][][]mpz[][][]class[][][]add[][][]space[] +Overfull \hbox (3.36195pt too wide) in paragraph at lines 103--105 +[][][]\OT1/ptm/bc/n/10 C[][][][]Polyhedron[][][][]Grid[][][]t[][] ph, [][]ppl[] +[][]const[][][][]Linear[][][][]Expression[][][]t[][] le, [][]ppl[][][][]Coeffic +ient[][][]t[][] ext[][][]n, [][]ppl[][][][]Coefficient[] -Overfull \hbox (18.69269pt too wide) in paragraph at lines 781--782 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]add[][ -][]space[][][]dimensions[][][]and[][][]project()[] \OT1/pcr/m/n/8 int ppl[][][] -[]B[]D[][][][]Shape[][][]mpz[][][]class[][][]add[][][]space[] +Overfull \hbox (21.13144pt too wide) in paragraph at lines 105--107 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]contains[][][][]Constraints[][][][]Product[][][][ +]C[][][][]Polyhedron[][][][]Grid[][] ([][]ppl[] -Overfull \hbox (36.4616pt too wide) in paragraph at lines 787--788 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]remove -[][][]space[][][]dimensions()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape -[][][]mpz[][][]class[][][]remove[][][]space[][][]dimensions +Overfull \hbox (12.5711pt too wide) in paragraph at lines 107--109 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]strictly[][][]contains[][][][]Constraints[][][][] +Product[][][][]C[][][][]Polyhedron[] -Overfull \hbox (1.9427pt too wide) in paragraph at lines 793--794 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]remove -[][][]higher[][][]space[][][]dimensions()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[ -][][][]Shape[][][]mpz[][][]class[][][]remove[][][] +Overfull \hbox (11.18124pt too wide) in paragraph at lines 109--111 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]is[][][]disjoint[][][]from[][][][]Constraints[][] +[][]Product[][][][]C[][][][]Polyhedron[] -Overfull \hbox (27.62158pt too wide) in paragraph at lines 799--800 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]expand -[][][]space[][][]dimension()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[ -][][]mpz[][][]class[][][]expand[][][]space[][][]dimension -[94]) (./PI_SD_Features.tex [141] [142]] +Overfull \hbox (13.35155pt too wide) in paragraph at lines 111--113 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]equals[][][][]Constraints[][][][]Product[][][][]C +[][][][]Polyhedron[][][][]Grid[][] ([][]ppl[] + +Overfull \hbox (5.02113pt too wide) in paragraph at lines 113--115 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][][]OK[][] ([][]ppl[][][]const[][][][]Constraints[] +[][][]Product[][][][]C[][][][]Polyhedron[] + +Overfull \hbox (23.35141pt too wide) in paragraph at lines 115--117 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]add[][][]constraint[][] ([][]ppl[][][][]Constrain +ts[][][][]Product[][][][]C[][][][]Polyhedron[] + +Overfull \hbox (30.00172pt too wide) in paragraph at lines 117--119 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]add[][][]congruence[][] ([][]ppl[][][][]Constrain +ts[][][][]Product[][][][]C[][][][]Polyhedron[] +[110] [142]] Overfull \hbox (30.3312pt too wide) in paragraph at lines 86--87 []\OT1/ptm/m/n/10 Notice that, for dy-namic link-ing to work, you should have c on-fig-ured the li-brary with the \OT1/pcr/m/n/10 --enable-shared @@ -15421,43 +15986,8 @@ Overfull \hbox (0.40225pt too wide) in paragraph at lines 102--207 []\OT1/ptm/m/n/10 In or-der to dy-nam-i-cally load the li-brary from Y[]AP you should sim-ply load \OT1/pcr/m/n/10 prefix/lib/ppl/ppl[] -(./modules.tex) (./group__PPL__Prolog__interface.tex) [143 -Overfull \hbox (12.0115pt too wide) in paragraph at lines 805--806 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]fold[] -[][]space[][][]dimensions()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[] -[][]mpz[][][]class[][][]fold[][][]space[][][]dimensions - -Overfull \hbox (9.68161pt too wide) in paragraph at lines 811--812 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]map[][ -][]space[][][]dimensions()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][ -][]mpz[][][]class[][][]map[][][]space[][][]dimensions - -Overfull \hbox (2.12299pt too wide) in paragraph at lines 817--818 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]drop[] -[][]some[][][]non[][][]integer[][][]points()[] \OT1/pcr/m/n/8 int ppl[][][][]B[ -]D[][][][]Shape[][][]mpz[][][]class[][][]drop[][][]some[][][] - -Overfull \hbox (7.84299pt too wide) in paragraph at lines 823--824 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]drop[] -[][]some[][][]non[][][]integer[][][]points[][][]2()[] \OT1/pcr/m/n/8 int ppl[][ -][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]drop[][][]some[] - -Overfull \hbox (11.11328pt too wide) in paragraph at lines 829--830 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]extern -al[][][]memory[][][]in[][][]bytes()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][ -]Shape[][][]mpz[][][]class[][][]external[][][]memory[] - -Overfull \hbox (11.6919pt too wide) in paragraph at lines 835--836 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]total[ -][][]memory[][][]in[][][]bytes()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sh -ape[][][]mpz[][][]class[][][]total[][][]memory[][][]in[][][]bytes - -Overfull \hbox (0.64241pt too wide) in paragraph at lines 841--842 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][][]B[]H -[]M[]Z05[][][]widening[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/m/n/8 int - ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][][]B[] -[95] [144] (./refman.ind - [145]) (./refman.aux)] +(./modules.tex) (./group__PPL__Prolog__interface.tex) [143] [144] (./refman.ind + [145]) (./refman.aux) Package rerunfilecheck Warning: File `refman.out' has changed. (rerunfilecheck) Rerun to get outlines right @@ -15466,184 +15996,104 @@ ) (see the transcript file for additional information){/usr/share/texlive/texmf-d ist/fonts/enc/dvips/base/8r.enc} -Overfull \hbox (28.74266pt too wide) in paragraph at lines 847--848 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][][]H79[ -][][]widening[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/m/n/8 int ppl[][][ -][]B[]D[][][][]Shape[][][]mpz[][][]class[][][][]H79[][][]widening[] - -Overfull \hbox (12.15302pt too wide) in paragraph at lines 853--854 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][][]B[]H -[]M[]Z05[][][]widening[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][] -[]Shape[][][]mpz[][][]class[][][][]B[]H[]M[]Z05[][][]widening[] - -Overfull \hbox (7.27174pt too wide) in paragraph at lines 859--860 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][][]H79[ -][][]widening[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[] -[][]mpz[][][]class[][][][]H79[][][]widening[][][]assign ( - -Overfull \hbox (21.76277pt too wide) in paragraph at lines 865--866 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]wideni -ng[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][] -[][]Shape[][][]mpz[][][]class[][][]widening[][][]assign[] - -Overfull \hbox (0.72179pt too wide) in paragraph at lines 877--878 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]limite -d[][][][]B[]H[]M[]Z05[][][]extrapolation[][][]assign[][][]with[][][]tokens()[] -\OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[] - -Overfull \hbox (22.10204pt too wide) in paragraph at lines 883--884 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]limite -d[][][][]H79[][][]extrapolation[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/ -m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[] - -Overfull \hbox (1.88206pt too wide) in paragraph at lines 889--890 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]limite -d[][][][]C[]C76[][][]extrapolation[][][]assign[][][]with[][][]tokens()[] \OT1/p -cr/m/n/8 int ppl[][][][]B[]D[][][][]Shape[][][]mpz[] -[96 -Overfull \hbox (27.5924pt too wide) in paragraph at lines 895--896 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]limite -d[][][][]B[]H[]M[]Z05[][][]extrapolation[][][]assign()[] \OT1/pcr/m/n/8 int ppl -[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]limited[] - -Overfull \hbox (4.81262pt too wide) in paragraph at lines 901--902 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]limite -d[][][][]H79[][][]extrapolation[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B -[]D[][][][]Shape[][][]mpz[][][]class[][][]limited[] - -Overfull \hbox (11.47267pt too wide) in paragraph at lines 907--908 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]limite -d[][][][]C[]C76[][][]extrapolation[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][] -[]B[]D[][][][]Shape[][][]mpz[][][]class[][][]limited[] - -Overfull \hbox (2.84262pt too wide) in paragraph at lines 913--914 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][][]C[]C -76[][][]extrapolation[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/m/n/8 int -ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][][]C[] - -Overfull \hbox (28.75323pt too wide) in paragraph at lines 919--920 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][][]C[]C -76[][][]extrapolation[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][ -]Shape[][][]mpz[][][]class[][][][]C[]C76[][][]extrapolation[] - -Overfull \hbox (19.75198pt too wide) in paragraph at lines 925--926 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][][]C[]C -76[][][]narrowing[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Sha -pe[][][]mpz[][][]class[][][][]C[]C76[][][]narrowing[][][]assign -[97] -Overfull \hbox (14.6529pt too wide) in paragraph at lines 943--944 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ -][]recycle[][][][]Constraint[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[ -][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]recycle[] - -Overfull \hbox (20.20296pt too wide) in paragraph at lines 949--950 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ -][]recycle[][][][]Congruence[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[ -][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]recycle[] +re/texlive/texmf-dist/fonts/type1/public/amsfonts/symbols/msbm10.pfb> +Output written on refman.pdf (151 pages, 758917 bytes). +Transcript written on refman.log. +latex_count=8 ; \ +while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $latex_count -gt 0 ] ;\ + do \ + echo "Rerunning latex...." ;\ + pdflatex refman ;\ + latex_count=`expr $latex_count - 1` ;\ + done -Overfull \hbox (12.97296pt too wide) in paragraph at lines 955--956 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][ -][]recycle[][][][]Generator[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[] -[][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]recycle[] +Overfull \hbox (27.2413pt too wide) in paragraph at lines 119--121 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]add[][][]constraints[][] ([][]ppl[][][][]Constrai +nts[][][][]Product[][][][]C[][][][]Polyhedron[] -Overfull \hbox (1.47284pt too wide) in paragraph at lines 961--962 - []\OT1/ptm/b/n/10 ppl[][][]assign[][][][]B[]D[][][][]Shape[][][]mpz[][][]class -[][][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 int -ppl[][][]assign[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[] +Overfull \hbox (33.89162pt too wide) in paragraph at lines 121--123 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]add[][][]congruences[][] ([][]ppl[][][][]Constrai +nts[][][][]Product[][][][]C[][][][]Polyhedron[] -Overfull \hbox (37.57156pt too wide) in paragraph at lines 967--968 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]add[][ -][]recycled[][][]constraints()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shap -e[][][]mpz[][][]class[][][]add[][][]recycled[][][]constraints +Overfull \hbox (3.62155pt too wide) in paragraph at lines 129--131 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]refine[][][]with[][][]congruences[][] ([][]ppl[][ +][][]Constraints[][][][]Product[] -Overfull \hbox (43.12163pt too wide) in paragraph at lines 973--974 - []\OT1/ptm/b/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]add[][ -][]recycled[][][]congruences()[] \OT1/pcr/m/n/8 int ppl[][][][]B[]D[][][][]Shap -e[][][]mpz[][][]class[][][]add[][][]recycled[][][]congruences +Overfull \hbox (34.7512pt too wide) in paragraph at lines 135--137 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]difference[][][]assign[][] ([][]ppl[][][][]Constr +aints[][][][]Product[][][][]C[][][][]Polyhedron[] -Overfull \hbox (5.01176pt too wide) in paragraph at lines 979--980 - []\OT1/ptm/b/n/10 ppl[][][]termination[][][]test[][][][]M[]S[][][][]B[]D[][][] -[]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 int ppl[][][]termination[][][]te -st[][][][]M[]S[][][][]B[]D[][][][]Shape[][][]mpz[][][]class ( -[98] -Overfull \hbox (3.34184pt too wide) in paragraph at lines 985--986 - []\OT1/ptm/b/n/10 ppl[][][]termination[][][]test[][][][]P[]R[][][][]B[]D[][][] -[]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 int ppl[][][]termination[][][]te -st[][][][]P[]R[][][][]B[]D[][][][]Shape[][][]mpz[][][]class ( +Overfull \hbox (40.84091pt too wide) in paragraph at lines 139--141 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]time[][][]elapse[][][]assign[][] ([][]ppl[][][][] +Constraints[][][][]Product[][][][]C[][][][]Polyhedron[] -Overfull \hbox (7.36293pt too wide) in paragraph at lines 991--992 - []\OT1/ptm/b/n/10 ppl[][][]one[][][]affine[][][]ranking[][][]function[][][][]M -[]S[][][][]B[]D[][][][]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 int ppl[][] -[]one[][][]affine[][][]ranking[][][]function[] +Overfull \hbox (20.1216pt too wide) in paragraph at lines 141--143 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]upper[][][]bound[][][]assign[][][]if[][][]exact[] +[] ([][]ppl[][][][]Constraints[][][][]Product[] -Overfull \hbox (5.69301pt too wide) in paragraph at lines 997--998 - []\OT1/ptm/b/n/10 ppl[][][]one[][][]affine[][][]ranking[][][]function[][][][]P -[]R[][][][]B[]D[][][][]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 int ppl[][] -[]one[][][]affine[][][]ranking[][][]function[] +Overfull \hbox (6.42146pt too wide) in paragraph at lines 143--145 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]constrains[][] ([][]ppl[][][][]Constraints[][][][ +]Product[][][][]C[][][][]Polyhedron[] -Overfull \hbox (11.61273pt too wide) in paragraph at lines 1003--1004 - []\OT1/ptm/b/n/10 ppl[][][]all[][][]affine[][][]ranking[][][]functions[][][][] -M[]S[][][][]B[]D[][][][]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 int ppl[][ -][]all[][][]affine[][][]ranking[][][]functions[] +Overfull \hbox (23.63115pt too wide) in paragraph at lines 145--147 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]unconstrain[][][]space[][][]dimension[][] ([][]pp +l[][][][]Constraints[][][][]Product[] -Overfull \hbox (9.94281pt too wide) in paragraph at lines 1009--1010 - []\OT1/ptm/b/n/10 ppl[][][]all[][][]affine[][][]ranking[][][]functions[][][][] -P[]R[][][][]B[]D[][][][]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 int ppl[][ -][]all[][][]affine[][][]ranking[][][]functions[] +Overfull \hbox (16.4315pt too wide) in paragraph at lines 149--151 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]affine[][][]image[][] ([][]ppl[][][][]Constraints +[][][][]Product[][][][]C[][][][]Polyhedron[] -Overfull \hbox (12.99327pt too wide) in paragraph at lines 1015--1016 - []\OT1/ptm/b/n/10 ppl[][][]termination[][][]test[][][][]M[]S[][][][]B[]D[][][] -[]Shape[][][]mpz[][][]class[][][]2()[] \OT1/pcr/m/n/8 int ppl[][][]termination[ -][][]test[][][][]M[]S[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[] +Overfull \hbox (29.2014pt too wide) in paragraph at lines 151--153 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]affine[][][]preimage[][] ([][]ppl[][][][]Constrai +nts[][][][]Product[][][][]C[][][][]Polyhedron[] -Overfull \hbox (11.32335pt too wide) in paragraph at lines 1021--1022 - []\OT1/ptm/b/n/10 ppl[][][]termination[][][]test[][][][]P[]R[][][][]B[]D[][][] -[]Shape[][][]mpz[][][]class[][][]2()[] \OT1/pcr/m/n/8 int ppl[][][]termination[ -][][]test[][][][]P[]R[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[] +Overfull \hbox (7.26169pt too wide) in paragraph at lines 155--157 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]bounded[][][]affine[][][]preimage[][] ([][]ppl[][ +][][]Constraints[][][][]Product[] -Overfull \hbox (15.96294pt too wide) in paragraph at lines 1027--1028 - []\OT1/ptm/b/n/10 ppl[][][]one[][][]affine[][][]ranking[][][]function[][][][]M -[]S[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]2()[] \OT1/pcr/m/n/8 int -ppl[][][]one[][][]affine[][][]ranking[][][]function[] +Overfull \hbox (6.1413pt too wide) in paragraph at lines 157--159 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]generalized[][][]affine[][][]image[][] ([][]ppl[] +[][][]Constraints[][][][]Product[] -Overfull \hbox (14.29301pt too wide) in paragraph at lines 1033--1034 - []\OT1/ptm/b/n/10 ppl[][][]one[][][]affine[][][]ranking[][][]function[][][][]P -[]R[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]2()[] \OT1/pcr/m/n/8 int -ppl[][][]one[][][]affine[][][]ranking[][][]function[] -[99] -Output written on refman.pdf (151 pages, 758968 bytes). -Transcript written on refman.log. -latex_count=8 ; \ -while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $latex_count -gt 0 ] ;\ - do \ - echo "Rerunning latex...." ;\ - pdflatex refman ;\ - latex_count=`expr $latex_count - 1` ;\ - done -makeindex refman.idx +Overfull \hbox (18.9112pt too wide) in paragraph at lines 159--161 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]generalized[][][]affine[][][]preimage[][] ([][]pp +l[][][][]Constraints[][][][]Product[] -Overfull \hbox (20.21274pt too wide) in paragraph at lines 1039--1040 - []\OT1/ptm/b/n/10 ppl[][][]all[][][]affine[][][]ranking[][][]functions[][][][] -M[]S[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]2()[] \OT1/pcr/m/n/8 int - ppl[][][]all[][][]affine[][][]ranking[][][]functions[] +Overfull \hbox (2.52121pt too wide) in paragraph at lines 161--163 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]generalized[][][]affine[][][]image[][][]lhs[][][] +rhs[][] ([][]ppl[][][][]Constraints[] -Overfull \hbox (18.54282pt too wide) in paragraph at lines 1045--1046 - []\OT1/ptm/b/n/10 ppl[][][]all[][][]affine[][][]ranking[][][]functions[][][][] -P[]R[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]2()[] \OT1/pcr/m/n/8 int - ppl[][][]all[][][]affine[][][]ranking[][][]functions[] -) (./interfaceppl__Coefficient__tag.tex [100This is makeindex, version 2.15 [TeX Live 2019/dev] (kpathsea + Thai support). +Overfull \hbox (15.2911pt too wide) in paragraph at lines 163--165 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]generalized[][][]affine[][][]preimage[][][]lhs[][ +][]rhs[][] ([][]ppl[][][][]Constraints[] +[111makeindex refman.idx +]This is makeindex, version 2.15 [TeX Live 2019/dev] (kpathsea + Thai support). Scanning input file refman.idx....done (1 entries accepted, 0 rejected). Sorting entries...done (0 comparisons). Generating output file refman.ind....done (5 lines written, 0 warnings). @@ -15652,107 +16102,311 @@ pdflatex refman This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2019/dev/Debian) (preloaded format=pdflatex) restricted \write18 enabled. -]entering extended mode +entering extended mode (./refman.tex LaTeX2e <2018-12-01> (/usr/share/texlive/texmf-dist/tex/latex/base/article.cls Document Class: article 2018/09/03 v1.4i Standard LaTeX document class -(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo)) +(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo) +Overfull \hbox (8.89146pt too wide) in paragraph at lines 165--167 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]add[][][]space[][][]dimensions[][][]and[][][]embe +d[][] ([][]ppl[][][][]Constraints[] + +Overfull \hbox (10.00131pt too wide) in paragraph at lines 167--169 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]add[][][]space[][][]dimensions[][][]and[][][]proj +ect[][] ([][]ppl[][][][]Constraints[] + +Overfull \hbox (10.55145pt too wide) in paragraph at lines 169--171 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]remove[][][]space[][][]dimensions[][] ([][]ppl[][ +][][]Constraints[][][][]Product[] + +Overfull \hbox (4.99152pt too wide) in paragraph at lines 171--173 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]remove[][][]higher[][][]space[][][]dimensions[][] + ([][]ppl[][][][]Constraints[] + +Overfull \hbox (5.70161pt too wide) in paragraph at lines 173--175 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]expand[][][]space[][][]dimension[][] ([][]ppl[][] +[][]Constraints[][][][]Product[] + +Overfull \hbox (0.69177pt too wide) in paragraph at lines 181--183 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]drop[][][]some[][][]non[][][]integer[][][]points[ +][][]2[][] ([][]ppl[][][][]Constraints[] + +Overfull \hbox (0.97137pt too wide) in paragraph at lines 183--185 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]external[][][]memory[][][]in[][][]bytes[][] ([][] +ppl[][][]const[][][][]Constraints[] + +Overfull \hbox (21.40106pt too wide) in paragraph at lines 185--187 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]total[][][]memory[][][]in[][][]bytes[][] ([][]ppl +[][][]const[][][][]Constraints[][][][]Product[] + +Overfull \hbox (22.70122pt too wide) in paragraph at lines 187--189 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]widening[][][]assign[][][]with[][][]tokens[][] ([ +][]ppl[][][][]Constraints[][][][]Product[] + +Overfull \hbox (31.69138pt too wide) in paragraph at lines 189--191 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]widening[][][]assign[][] ([][]ppl[][][][]Constrai +nts[][][][]Product[][][][]C[][][][]Polyhedron[] + +Overfull \hbox (20.85143pt too wide) in paragraph at lines 191--193 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]io[][][]print[][][][]Constraints[][][][]Pro +duct[][][][]C[][][][]Polyhedron[][][][]Grid[][] ([][]ppl[][][]const[][][][]Cons +traints[][][][]Product[][][][]C[][][][]Polyhedron[] + +Overfull \hbox (17.83125pt too wide) in paragraph at lines 195--197 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]io[][][]asprint[][][][]Constraints[][][][]P +roduct[][][][]C[][][][]Polyhedron[][][][]Grid[][] (char $\OMS/cmsy/m/n/10 ^^C$$ +^^C$\OT1/ptm/bc/n/10 strp, [][]ppl[][][]const[][][][]Constraints[][][][]Product +[] + +Overfull \hbox (35.29124pt too wide) in paragraph at lines 197--199 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]ascii[][][]dump[][] ([][]ppl[][][]const[][][][]Co +nstraints[][][][]Product[][][][]C[][][][]Polyhedron[] + +Overfull \hbox (5.02145pt too wide) in paragraph at lines 199--200 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid[][][]ascii[][][]load[][] ([][]ppl[][][][]Constraints[] +[][][]Product[][][][]C[][][][]Polyhedron[] + +Overfull \hbox (36.6532pt too wide) in paragraph at lines 211--212 + []\OT1/ptm/b/n/10 ppl[][][]delete[][][][]Constraints[][][][]Product[][][][]C[] +[][][]Polyhedron[][][][]Grid()[] \OT1/pcr/m/n/8 int ppl[][][]delete[][][][]Cons +traints[][][][]Product[][][][]C[][][][]Polyhedro) (/usr/share/texlive/texmf-dist/tex/latex/a4wide/a4wide.sty -(/usr/share/texlive/texmf-dist/tex/latex/ntgclass/a4.sty)) +(/usr/share/texlive/texmf-dist/tex/latex/ntgclass/a4.styn[] + +Overfull \hbox (18.3924pt too wide) in paragraph at lines 217--218 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ +][]Polyhedron[][][][]Grid[][][]from[][][]space[][][]dimension()[] \OT1/pcr/m/n/ +8 int ppl[][][]new[][][][]Constraints[] +[112)) (/usr/share/texlive/texmf-dist/tex/latex/base/makeidx.sty) (/usr/share/texlive/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty) (/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty (/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty) (/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty (/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty) -(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg) +(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg]) (/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def))) (/usr/share/texlive/texmf-dist/tex/latex/tools/multicol.sty) -(./interfaceppl__Congruence__System__const__iterator__tag.tex) (/usr/share/texlive/texmf-dist/tex/latex/float/float.sty) (/usr/share/texlive/texmf-dist/tex/latex/base/textcomp.sty (/usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.def -(/usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.dfu [101))) +(/usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.dfu))) (/usr/share/texlive/texmf-dist/tex/latex/base/alltt.sty) (/usr/share/texlive/texmf-dist/tex/latex/psnfss/times.sty) (/usr/share/texlive/texmf-dist/tex/latex/tocloft/tocloft.sty) (/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty) -(/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty] +(/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty (/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg) (/usr/share/texlive/texmf-dist/tex/latex/colortbl/colortbl.sty -(/usr/share/texlive/texmf-dist/tex/latex/tools/array.sty))) -(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty -Overfull \hbox (1.72762pt too wide) in paragraph at lines 22--24 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]assign[][][][]Congruence[][][][]System[] -[][]const[][][]iterator[][][]from[][][][]Congruence[][][][]System[][][]const[][ -][]iterator[][] ([][]ppl[] +(/usr/share/texlive/texmf-dist/tex/latex/tools/array.sty)) +Overfull \hbox (7.45296pt too wide) in paragraph at lines 223--224 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ +][]Polyhedron[][][][]Grid[][][]from[][][][]C[][][][]Polyhedron()[] \OT1/pcr/m/n +/8 int ppl[][][]new[][][][]Constraints[] -Overfull \hbox (2.27753pt too wide) in paragraph at lines 25--27 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]delete[][][][]Congruence[][][][]System[] -[][]const[][][]iterator[][] ([][]ppl[][][]const[][][][]Congruence[][][][]System -[][][]const[][][]iterator[] +Overfull \hbox (21.8929pt too wide) in paragraph at lines 229--230 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ +][]Polyhedron[][][][]Grid[][][]from[][][][]N[]N[]C[][][][]Polyhedron()[] \OT1/p +cr/m/n/8 int ppl[][][]new[][][][]Constraints[] -Overfull \hbox (17.54732pt too wide) in paragraph at lines 38--40 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Congruence[][][][]System[][][]const[][ -][]iterator[][][]equal[][][]test[][] ([][]ppl[][][]const[][][][]Congruence[][][ -][]System[][][]const[][][]iterator[] -) (./interfaceppl__Congruence__System__tag.tex)) [102 +Overfull \hbox (4.60298pt too wide) in paragraph at lines 235--236 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ +][]Polyhedron[][][][]Grid[][][]from[][][][]Grid()[] \OT1/pcr/m/n/8 int ppl[][][ +]new[][][][]Constraints[][][][]Product[] + +Overfull \hbox (4.50287pt too wide) in paragraph at lines 241--242 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ +][]Polyhedron[][][][]Grid[][][]from[][][][]Rational[][][][]Box()[] \OT1/pcr/m/n +/8 int ppl[][][]new[][][][]Constraints[] + +Overfull \hbox (36.70241pt too wide) in paragraph at lines 247--248 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ +][]Polyhedron[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]clas +s()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Constraints[] + +Overfull \hbox (37.8224pt too wide) in paragraph at lines 253--254 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ +][]Polyhedron[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[][][]mpq[][][]clas +s()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Constraints[] + +Overfull \hbox (11.0221pt too wide) in paragraph at lines 259--260 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ +][]Polyhedron[][][][]Grid[][][]from[][][][]Octagonal[][][][]Shape[][][]mpz[][][ +]class()[] \OT1/pcr/m/n/8 int ppl[][][]new[] + +Overfull \hbox (12.14209pt too wide) in paragraph at lines 265--266 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ +][]Polyhedron[][][][]Grid[][][]from[][][][]Octagonal[][][][]Shape[][][]mpq[][][ +]class()[] \OT1/pcr/m/n/8 int ppl[][][]new[] +[113) +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty] +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty)) (/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/auxhook.sty) -(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty]) +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty) (/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def) +Overfull \hbox (1.2729pt too wide) in paragraph at lines 271--272 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ +][]Polyhedron[][][][]Grid[][][]from[][][][]Double[][][][]Box()[] \OT1/pcr/m/n/8 + int ppl[][][]new[][][][]Constraints[][][] + +Overfull \hbox (23.67259pt too wide) in paragraph at lines 277--278 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ +][]Polyhedron[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[][][]double()[] \O +T1/pcr/m/n/8 int ppl[][][]new[][][][]Constraints[] + +Overfull \hbox (0.87228pt too wide) in paragraph at lines 283--284 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ +][]Polyhedron[][][][]Grid[][][]from[][][][]Octagonal[][][][]Shape[][][]double() +[] \OT1/pcr/m/n/8 int ppl[][][]new[][][] + +Overfull \hbox (21.9302pt too wide) in paragraph at lines 289--290 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ +][]Polyhedron[][][][]Grid[][][]from[][][][]Constraints[][][][]Product[][][][]C[ +][][][]Polyhedron[][][][]Grid()[] \OT1/pcr/m/n/8 int + +Overfull \hbox (7.24219pt too wide) in paragraph at lines 295--296 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ +][]Polyhedron[][][][]Grid[][][]from[][][][]C[][][][]Polyhedron[][][]with[][][]c +omplexity()[] \OT1/pcr/m/n/8 int ppl[] + +Overfull \hbox (21.68213pt too wide) in paragraph at lines 301--302 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ +][]Polyhedron[][][][]Grid[][][]from[][][][]N[]N[]C[][][][]Polyhedron[][][]with[ +][][]complexity()[] \OT1/pcr/m/n/8 int ppl[] + +Overfull \hbox (40.87224pt too wide) in paragraph at lines 307--308 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ +][]Polyhedron[][][][]Grid[][][]from[][][][]Grid[][][]with[][][]complexity()[] \ +OT1/pcr/m/n/8 int ppl[][][]new[][][][]Constraints[] + +Overfull \hbox (4.2921pt too wide) in paragraph at lines 313--314 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ +][]Polyhedron[][][][]Grid[][][]from[][][][]Rational[][][][]Box[][][]with[][][]c +omplexity()[] \OT1/pcr/m/n/8 int ppl[] +[114] (/usr/share/texlive/texmf-dist/tex/latex/latexconfig/hyperref.cfg) (/usr/share/texlive/texmf-dist/tex/latex/hyperref/puenc.def -Overfull \hbox (7.63844pt too wide) in paragraph at lines 25--27 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Congruence[][][][]System[][][ -]from[][][][]Congruence[][][][]System[][] ([][]ppl[][][][]Congruence[][][][]Sys -tem[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pcs, [][]ppl[] +Overfull \hbox (8.31012pt too wide) in paragraph at lines 319--320 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ +][]Polyhedron[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]clas +s[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int -Overfull \hbox (9.56808pt too wide) in paragraph at lines 28--30 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]assign[][][][]Congruence[][][][]System[] -[][]from[][][][]Congruence[][][][]System[][] ([][]ppl[][][][]Congruence[][][][] -System[][][]t[][] dst, [][]ppl[] +Overfull \hbox (9.43011pt too wide) in paragraph at lines 325--326 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ +][]Polyhedron[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[][][]mpq[][][]clas +s[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int -Overfull \hbox (10.67792pt too wide) in paragraph at lines 38--40 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Congruence[][][][]System[][][]space[][ -][]dimension[][] ([][]ppl[][][]const[][][][]Congruence[][][][]System[][][]t[][] - cs, [][]ppl[][][]dimension[] +Overfull \hbox (15.90984pt too wide) in paragraph at lines 331--332 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ +][]Polyhedron[][][][]Grid[][][]from[][][][]Octagonal[][][][]Shape[][][]mpz[][][ +]class[][][]with[][][]complexity()[] -Overfull \hbox (4.96837pt too wide) in paragraph at lines 44--46 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Congruence[][][][]System[][][]begin[][ -] ([][]ppl[][][]const[][][][]Congruence[][][][]System[][][]t[][] cs, [][]ppl[][ -][][]Congruence[][][][]System[] +Overfull \hbox (11.25407pt too wide) in paragraph at lines 331--332 +\OT1/pcr/m/n/8 int ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ +][]Polyhedron[][][][]Grid[][][]from[][][][]Octagonal[][][][]Shape[][][]mpz[][][ +]class[][][]with[][][]complexity -Overfull \hbox (23.98816pt too wide) in paragraph at lines 60--62 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Congruence[][][][]System[][][]insert[] -[][][]Congruence[][] ([][]ppl[][][][]Congruence[][][][]System[][][]t[][] cs, [] -[]ppl[][][]const[][][][]Congruence[] -[103This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2019/dev/Debian) (preloaded format=latex) - restricted \write18 enabled. -]) (./interfaceppl__Congruence__tag.texentering extended mode -(./_formulas.tex -LaTeX2e <2018-12-01> +Overfull \hbox (17.02983pt too wide) in paragraph at lines 337--338 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ +][]Polyhedron[][][][]Grid[][][]from[][][][]Octagonal[][][][]Shape[][][]mpq[][][ +]class[][][]with[][][]complexity()[] -) +Overfull \hbox (11.25407pt too wide) in paragraph at lines 337--338 +\OT1/pcr/m/n/8 int ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ +][]Polyhedron[][][][]Grid[][][]from[][][][]Octagonal[][][][]Shape[][][]mpq[][][ +]class[][][]with[][][]complexity + +Overfull \hbox (1.06213pt too wide) in paragraph at lines 343--344 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ +][]Polyhedron[][][][]Grid[][][]from[][][][]Double[][][][]Box[][][]with[][][]com +plexity()[] \OT1/pcr/m/n/8 int ppl[][][] + +Overfull \hbox (23.46182pt too wide) in paragraph at lines 349--350 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ +][]Polyhedron[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[][][]double[][][]w +ith[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[] + +Overfull \hbox (2.88002pt too wide) in paragraph at lines 355--356 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ +][]Polyhedron[][][][]Grid[][][]from[][][][]Octagonal[][][][]Shape[][][]double[] +[][]with[][][]complexity()[] + +Overfull \hbox (8.37407pt too wide) in paragraph at lines 355--356 +\OT1/pcr/m/n/8 int ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ +][]Polyhedron[][][][]Grid[][][]from[][][][]Octagonal[][][][]Shape[][][]double[] +[][]with[][][]complexity ( +[115]) (/usr/share/texlive/texmf-dist/tex/latex/hyperref/backref.sty (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty)) (/usr/share/texlive/texmf-dist/tex/latex/url/url.sty)) -Overfull \hbox (15.0983pt too wide) in paragraph at lines 41--43 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Congruence[][][]coefficient[][] ([][]p -pl[][][]const[][][][]Congruence[][][]t[][] c, [][]ppl[][][]dimension[][][]type[ -][] var, [][]ppl[][][][]Coefficient[] -[104 -(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def)] +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def) (/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty) (./doxygen.sty (/usr/share/texlive/texmf-dist/tex/latex/tools/calc.sty) (/usr/share/texlive/texmf-dist/tex/latex/base/ifthen.sty) +Overfull \hbox (1.85179pt too wide) in paragraph at lines 361--362 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ +][]Polyhedron[][][][]Grid[][][]from[][][][]Constraints[][][][]Product[][][][]C[ +][][][]Polyhedron[][][][]Grid[] + +Overfull \hbox (9.12473pt too wide) in paragraph at lines 361--362 +[][]\OT1/ptm/b/n/10 with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[][][]new[][ +][][]Constraints[][][][]Product[][][][]C[][][][]Polyhedron[][][][]Grid[][][]fro +m[][][][]Constraints[][][][]Product[] + +Overfull \hbox (27.82246pt too wide) in paragraph at lines 367--368 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ +][]Polyhedron[][][][]Grid[][][]from[][][][]Constraint[][][][]System()[] \OT1/pc +r/m/n/8 int ppl[][][]new[][][][]Constraints[] + +Overfull \hbox (33.37253pt too wide) in paragraph at lines 373--374 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ +][]Polyhedron[][][][]Grid[][][]from[][][][]Congruence[][][][]System()[] \OT1/pc +r/m/n/8 int ppl[][][]new[][][][]Constraints[] + +Overfull \hbox (2.81264pt too wide) in paragraph at lines 379--380 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]space[][][]dimension()[] \OT1/pcr/m/n/8 int ppl[][][][]Co +nstraints[][][][]Product[][][][]C[][][] + +Overfull \hbox (0.49269pt too wide) in paragraph at lines 385--386 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]affine[][][]dimension()[] \OT1/pcr/m/n/8 int ppl[][][][]C +onstraints[][][][]Product[][][][]C[] + +Overfull \hbox (26.7724pt too wide) in paragraph at lines 391--392 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]relation[][][]with[][][][]Constraint()[] \OT1/pcr/m/n/8 i +nt ppl[][][][]Constraints[][][][]Product[] + +Overfull \hbox (25.09247pt too wide) in paragraph at lines 397--398 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]relation[][][]with[][][][]Generator()[] \OT1/pcr/m/n/8 in +t ppl[][][][]Constraints[][][][]Product[] + +Overfull \hbox (32.32246pt too wide) in paragraph at lines 403--404 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]relation[][][]with[][][][]Congruence()[] \OT1/pcr/m/n/8 i +nt ppl[][][][]Constraints[][][][]Product[] +[116 (/usr/share/texlive/texmf-dist/tex/latex/tools/verbatim.sty) (/usr/share/texlive/texmf-dist/tex/latex/tools/longtable.sty) (/usr/share/texlive/texmf-dist/tex/latex/tabu/tabu.sty -(/usr/share/texlive/texmf-dist/tex/latex/varwidth/varwidth.sty) (./interfaceppl__Constraint__System__const__iterator__tag.tex)) +(/usr/share/texlive/texmf-dist/tex/latex/varwidth/varwidth.sty)]) (/usr/share/texlive/texmf-dist/tex/latex/tools/tabularx.sty) (/usr/share/texlive/texmf-dist/tex/latex/multirow/multirow.sty)) (/build/ppl-1.2/doc/ppl.sty @@ -15761,29 +16415,54 @@ (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty)) (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty) -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty) -Overfull \hbox (25.10667pt too wide) in paragraph at lines 19--21 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraint[][][][]System[][][ -]const[][][]iterator[][][]from[][][][]Constraint[][][][]System[][][]const[][][] -iterator[][] ([][]ppl[][][][]Constraint[] +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty)) +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty) +Overfull \hbox (16.91315pt too wide) in paragraph at lines 409--410 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]is[][][]empty()[] \OT1/pcr/m/n/8 int ppl[][][][]Constrain +ts[][][][]Product[][][][]C[][][][]Polyhedron[] -Overfull \hbox (33.69638pt too wide) in paragraph at lines 22--24 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]assign[][][][]Constraint[][][][]System[] -[][]const[][][]iterator[][][]from[][][][]Constraint[][][][]System[][][]const[][ -][]iterator[][] ([][]ppl[][][][]Constraint[] +Overfull \hbox (26.16286pt too wide) in paragraph at lines 415--416 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]is[][][]universe()[] \OT1/pcr/m/n/8 int ppl[][][][]Constr +aints[][][][]Product[][][][]C[][][][]Polyhedron[] -Overfull \hbox (11.7268pt too wide) in paragraph at lines 32--34 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraint[][][][]System[][][]const[][ -][]iterator[][][]dereference[][] ([][]ppl[][][]const[][][][]Constraint[][][][]S -ystem[][][]const[][][]iterator[] +Overfull \hbox (27.49298pt too wide) in paragraph at lines 421--422 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]is[][][]bounded()[] \OT1/pcr/m/n/8 int ppl[][][][]Constra +ints[][][][]Product[][][][]C[][][][]Polyhedron[] -Overfull \hbox (4.24669pt too wide) in paragraph at lines 38--40 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraint[][][][]System[][][]const[][ -][]iterator[][][]equal[][][]test[][] ([][]ppl[][][]const[][][][]Constraint[][][ -][]System[][][]const[][][]iterator[] -[105) -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty)]) (./interfaceppl__Constraint__System__tag.tex) +Overfull \hbox (15.85233pt too wide) in paragraph at lines 427--428 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]is[][][]topologically[][][]closed()[] \OT1/pcr/m/n/8 int +ppl[][][][]Constraints[][][][]Product[] + +Overfull \hbox (23.39287pt too wide) in paragraph at lines 433--434 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]is[][][]discrete()[] \OT1/pcr/m/n/8 int ppl[][][][]Constr +aints[][][][]Product[][][][]C[][][][]Polyhedron[] + +Overfull \hbox (31.78227pt too wide) in paragraph at lines 439--440 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]topological[][][]closure[][][]assign()[] \OT1/pcr/m/n/8 i +nt ppl[][][][]Constraints[][][][]Product[] + +Overfull \hbox (5.47299pt too wide) in paragraph at lines 445--446 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]bounds[][][]from[][][]above()[] \OT1/pcr/m/n/8 int ppl[][ +][][]Constraints[][][][]Product[] + +Overfull \hbox (5.57285pt too wide) in paragraph at lines 451--452 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]bounds[][][]from[][][]below()[] \OT1/pcr/m/n/8 int ppl[][ +][][]Constraints[][][][]Product[] + +Overfull \hbox (21.08315pt too wide) in paragraph at lines 457--458 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]maximize()[] \OT1/pcr/m/n/8 int ppl[][][][]Constraints[][ +][][]Product[][][][]C[][][][]Polyhedron[] +[117)] (/usr/share/texlive/texmf-dist/tex/latex/stmaryrd/stmaryrd.sty)) Writing index file refman.idx (./refman.aux) (/usr/share/texlive/texmf-dist/tex/latex/base/ts1cmr.fd) @@ -15793,74 +16472,103 @@ ) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty) (/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg)) -Overfull \hbox (24.61707pt too wide) in paragraph at lines 22--24 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraint[][][][]System[][][ -]from[][][][]Constraint[][] ([][]ppl[][][][]Constraint[][][][]System[][][]t[][] - $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pcs, [][]ppl[][][]const[][][][]Constrai -nt[] - -Overfull \hbox (2.09717pt too wide) in paragraph at lines 50--52 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraint[][][][]System[][][]end[][] -([][]ppl[][][]const[][][][]Constraint[][][][]System[][][]t[][] cs, [][]ppl[][][ -][]Constraint[][][][]System[][][]const[] -[106 (/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/gettitlestring.sty)]) +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/gettitlestring.sty)) (./refman.out) (./refman.out) (/usr/share/texlive/texmf-dist/tex/latex/psnfss/ot1phv.fd) +Overfull \hbox (19.42297pt too wide) in paragraph at lines 463--464 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]minimize()[] \OT1/pcr/m/n/8 int ppl[][][][]Constraints[][ +][][]Product[][][][]C[][][][]Polyhedron[] + +Overfull \hbox (10.84259pt too wide) in paragraph at lines 469--470 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]maximize[][][]with[][][]point()[] \OT1/pcr/m/n/8 int ppl[ +][][][]Constraints[][][][]Product[] + +Overfull \hbox (9.18242pt too wide) in paragraph at lines 475--476 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]minimize[][][]with[][][]point()[] \OT1/pcr/m/n/8 int ppl[ +][][][]Constraints[][][][]Product[] + +Overfull \hbox (15.74998pt too wide) in paragraph at lines 481--482 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]contains[][][][]Constraints[][][][]Product[][][][]C[][][] +[]Polyhedron[][][][]Grid()[] \OT1/pcr/m/n/8 int + +Overfull \hbox (5.10138pt too wide) in paragraph at lines 487--488 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]strictly[][][]contains[][][][]Constraints[][][][]Product[ +][][][]C[][][][]Polyhedron[] + +Overfull \hbox (3.73514pt too wide) in paragraph at lines 487--488 +[][][]\OT1/ptm/b/n/10 Grid()[] \OT1/pcr/m/n/8 int ppl[][][][]Constraints[][][][ +]Product[][][][]C[][][][]Polyhedron[][][][]Grid[][][]strictly[][][]contains[][] +[][]Constraints[][][][]Product[] + +Overfull \hbox (2.97153pt too wide) in paragraph at lines 493--494 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]is[][][]disjoint[][][]from[][][][]Constraints[][][][]Prod +uct[][][][]C[][][][]Polyhedron[] + +Overfull \hbox (4.69514pt too wide) in paragraph at lines 493--494 +[][][]\OT1/ptm/b/n/10 Grid()[] \OT1/pcr/m/n/8 int ppl[][][][]Constraints[][][][ +]Product[][][][]C[][][][]Polyhedron[][][][]Grid[][][]is[][][]disjoint[][][]from +[][][][]Constraints[][][][]Product[][][][]C[] +[118 (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd) -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd) -(/usr/share/texlive/texmf-dist/tex/latex/stmaryrd/Ustmry.fd)) (./interfaceppl__Constraint__tag.tex +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd)] +(/usr/share/texlive/texmf-dist/tex/latex/stmaryrd/Ustmry.fd) (/usr/share/texlive/texmf-dist/tex/latex/psnfss/ts1ptm.fd) [1{/var/lib/texmf/fo -nts/map/pdftex/updmap/pdftex.map} ] [2] -(/usr/share/texlive/texmf-dist/tex/latex/psnfss/ot1pcr.fd) [3] ] [4] (./refman.toc) [1 -Overfull \hbox (1.79767pt too wide) in paragraph at lines 44--46 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraint[][][]coefficient[][] ([][]p -pl[][][]const[][][][]Constraint[][][]t[][] c, [][]ppl[][][]dimension[][][]type[ -][] var, [][]ppl[][][][]Coefficient[] -) (./interfaceppl__Constraints__Product__C__Polyhedron__Grid__tag.tex ] [2] (./index.tex) (./GPL.tex -Overfull \hbox (14.4614pt too wide) in paragraph at lines 15--17 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]delete[][][][]Constraints[][][][]Product[][ -][][]C[][][][]Polyhedron[][][][]Grid[][] ([][]ppl[][][]const[][][][]Constraints -[][][][]Product[][][][]C[][][][]Polyhedron[] +nts/map/pdftex/updmap/pdftex.map} ] [2] +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/ot1pcr.fd) [3 ] [4] (./refman.toc) +Overfull \hbox (7.42003pt too wide) in paragraph at lines 499--500 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]equals[][][][]Constraints[][][][]Product[][][][]C[][][][] +Polyhedron[][][][]Grid()[] \OT1/pcr/m/n/8 int -Overfull \hbox (16.42136pt too wide) in paragraph at lines 17--19 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] -[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][]space[][][]dimension[][] ([][] -ppl[][][][]Constraints[][][][]Product[] +Overfull \hbox (17.62337pt too wide) in paragraph at lines 505--506 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][][]O[]K()[] \OT1/pcr/m/n/8 int ppl[][][][]Constraints[][][ +][]Product[][][][]C[][][][]Polyhedron[][][][]Grid[] -Overfull \hbox (5.32178pt too wide) in paragraph at lines 19--21 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] -[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]C[][][][]Polyhedron[][] ([][ -]ppl[][][][]Constraints[][][][]Product[] +Overfull \hbox (43.0329pt too wide) in paragraph at lines 511--512 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]add[][][]constraint()[] \OT1/pcr/m/n/8 int ppl[][][][]Con +straints[][][][]Product[][][][]C[][][][]Polyhedron[] -Overfull \hbox (19.76172pt too wide) in paragraph at lines 21--23 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] -[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]N[]N[]C[][][][]Polyhedron[][ -] ([][]ppl[][][][]Constraints[][][][]Product[] +Overfull \hbox (0.58293pt too wide) in paragraph at lines 517--518 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]add[][][]congruence()[] \OT1/pcr/m/n/8 int ppl[][][][]Con +straints[][][][]Product[][][][]C[][][] -Overfull \hbox (27.2516pt too wide) in paragraph at lines 23--25 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] -[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]Grid[][] ([][]ppl[][][][]Con -straints[][][][]Product[][][][]C[][][][]Polyhedron[] +Overfull \hbox (46.92279pt too wide) in paragraph at lines 523--524 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]add[][][]constraints()[] \OT1/pcr/m/n/8 int ppl[][][][]Co +nstraints[][][][]Product[][][][]C[][][][]Polyhedron[] -Overfull \hbox (3.10153pt too wide) in paragraph at lines 25--27 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] -[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]Rational[][][][]Box[][] ([][ -]ppl[][][][]Constraints[][][][]Product[] -[108pdfTeX warning (ext4): destination with the +Overfull \hbox (1.59282pt too wide) in paragraph at lines 529--530 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]add[][][]congruences()[] \OT1/pcr/m/n/8 int ppl[][][][]Co +nstraints[][][][]Product[][][][]C[] + +Overfull \hbox (15.10251pt too wide) in paragraph at lines 535--536 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]refine[][][]with[][][]constraint()[] \OT1/pcr/m/n/8 int p +pl[][][][]Constraints[][][][]Product[] + +Overfull \hbox (20.65257pt too wide) in paragraph at lines 541--542 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]refine[][][]with[][][]congruence()[] \OT1/pcr/m/n/8 int p +pl[][][][]Constraints[][][][]Product[] +[119 [1 ] [2] (./index.tex]) (./GPL.texpdfTeX warning (ext4): destination with the same identifier (name{page.1}) has been already used, duplicate ignored \relax l.22 - [1]]pdfTeX warning (ext4): destination with the same identifier (name{page + [1]pdfTeX warning (ext4): destination with the same identifier (name{page .2}) has been already used, duplicate ignored \relax @@ -15875,255 +16583,120 @@ \relax l.121 - [4] -Overfull \hbox (0.58157pt too wide) in paragraph at lines 29--31 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] -[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[][][]mpq[] -[][]class[][] ([][]ppl[][][][]Constraints[] - -Overfull \hbox (27.2312pt too wide) in paragraph at lines 31--33 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] -[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]Octagonal[][][][]Shape[][][] -mpz[][][]class[][] ([][]ppl[][][][]Constraints[] - -Overfull \hbox (27.79126pt too wide) in paragraph at lines 33--35 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] -[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]Octagonal[][][][]Shape[][][] -mpq[][][]class[][] ([][]ppl[][][][]Constraints[] - -Overfull \hbox (21.69168pt too wide) in paragraph at lines 37--39 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] -[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[][][]doubl -e[][] ([][]ppl[][][][]Constraints[][][][]Product[] - -Overfull \hbox (14.19164pt too wide) in paragraph at lines 39--41 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] -[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]Octagonal[][][][]Shape[][][] -double[][] ([][]ppl[][][][]Constraints[] - -Overfull \hbox (0.26022pt too wide) in paragraph at lines 41--43 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] -[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]Constraints[][][][]Product[] -[][][]C[][][][]Polyhedron[][][][]Grid[][] - -Overfull \hbox (5.4219pt too wide) in paragraph at lines 41--43 -\OT1/ptm/bc/n/10 ([][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Pol -yhedron[][][][]Grid[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][] -ppl[][][]const[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhedron[] - -Overfull \hbox (40.44136pt too wide) in paragraph at lines 43--45 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] -[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]C[][][][]Polyhedron[][][]wit -h[][][]complexity[][] ([][]ppl[][][][]Constraints[] - -Overfull \hbox (5.72202pt too wide) in paragraph at lines 45--47 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] -[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]N[]N[]C[][][][]Polyhedron[][ -][]with[][][]complexity[][] ([][]ppl[] - -Overfull \hbox (2.39153pt too wide) in paragraph at lines 47--49 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] -[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]Grid[][][]with[][][]complexi -ty[][] ([][]ppl[][][][]Constraints[] - -Overfull \hbox (38.22112pt too wide) in paragraph at lines 49--51 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] -[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]Rational[][][][]Box[][][]wit -h[][][]complexity[][] ([][]ppl[][][][]Constraints[] - -Overfull \hbox (20.69154pt too wide) in paragraph at lines 51--53 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] -[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[][][]mpz[] -[][]class[][][]with[][][]complexity[][] ([][]ppl[] - -Overfull \hbox (21.2516pt too wide) in paragraph at lines 53--55 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] -[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[][][]mpq[] -[][]class[][][]with[][][]complexity[][] ([][]ppl[] - -Overfull \hbox (20.90985pt too wide) in paragraph at lines 55--57 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] -[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]Octagonal[][][][]Shape[][][] -mpz[][][]class[][][]with[][][]complexity[][] - -Overfull \hbox (2.55026pt too wide) in paragraph at lines 55--57 -\OT1/ptm/bc/n/10 ([][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Pol -yhedron[][][][]Grid[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][] -ppl[][][]const[][][ [5][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]t[][] ph, - int - -Overfull \hbox (21.46991pt too wide) in paragraph at lines 57--59 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] -[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]Octagonal[][][][]Shape[][][] -mpq[][][]class[][][]with[][][]complexity[][] - -Overfull \hbox (3.11032pt too wide) in paragraph at lines 57--59 -\OT1/ptm/bc/n/10 ([][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Pol -yhedron[][][][]Grid[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][] -ppl[][][]const[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]t[][] ph, - int + [4] [5] [6 +Overfull \hbox (18.9924pt too wide) in paragraph at lines 547--548 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]refine[][][]with[][][]constraints()[] \OT1/pcr/m/n/8 int +ppl[][][][]Constraints[][][][]Product[] -Overfull \hbox (33.77144pt too wide) in paragraph at lines 59--61 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] -[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]Double[][][][]Box[][][]with[ -][][]complexity[][] ([][]ppl[][][][]Constraints[] +Overfull \hbox (24.54247pt too wide) in paragraph at lines 553--554 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]refine[][][]with[][][]congruences()[] \OT1/pcr/m/n/8 int +ppl[][][][]Constraints[][][][]Product[] -Overfull \hbox (7.65198pt too wide) in paragraph at lines 61--63 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] -[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[][][]doubl -e[][][]with[][][]complexity[][] ([][]ppl[] +Overfull \hbox (1.13237pt too wide) in paragraph at lines 559--560 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]intersection[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][] +[]Constraints[][][][]Product[] -Overfull \hbox (7.87029pt too wide) in paragraph at lines 63--65 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] -[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]Octagonal[][][][]Shape[][][] -double[][][]with[][][]complexity[][] +Overfull \hbox (7.54259pt too wide) in paragraph at lines 565--566 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]upper[][][]bound[][][]assign()[] \OT1/pcr/m/n/8 int ppl[] +[][][]Constraints[][][][]Product[] -Overfull \hbox (9.24173pt too wide) in paragraph at lines 65--67 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] -[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]Constraints[][][][]Product[] -[][][]C[][][][]Polyhedron[][][][]Grid[] +Overfull \hbox (1.40259pt too wide) in paragraph at lines 571--572 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]difference[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][] +Constraints[][][][]Product[][][][]C[] -Overfull \hbox (16.57161pt too wide) in paragraph at lines 65--67 -[][]\OT1/ptm/bc/n/10 with[][][]complexity[][] ([][]ppl[][][][]Constraints[][][] -[]Product[][][][]C[][][][]Polyhedron[][][][]Grid[][][]t[][] $\OMS/cmsy/m/n/10 ^ -^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][]const[][][][]Constraints[][][][]Product[] +Overfull \hbox (1.6827pt too wide) in paragraph at lines 577--578 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]concatenate[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][ +]Constraints[][][][]Product[] +Overfull \hbox (2.6125pt too wide) in paragraph at lines 583--584 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]time[][][]elapse[][][]assign()[] \OT1/pcr/m/n/8 int ppl[] +[][][]Constraints[][][][]Product[][][] -Overfull \hbox (23.66107pt too wide) in paragraph at lines 67--69 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Constraints[][][][]Product[][][] -[]C[][][][]Polyhedron[][][][]Grid[][][]from[][][][]Constraint[][][][]System[][] - ([][]ppl[][][][]Constraints[][][][]Product[] -[109] [6] [7]] [8]) +Overfull \hbox (6.58226pt too wide) in paragraph at lines 589--590 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]upper[][][]bound[][][]assign[][][]if[][][]exact()[] \OT1/ +pcr/m/n/8 int ppl[][][][]Constraints[] +[120] [7]] [8]) Overfull \hbox (10.35326pt too wide) in paragraph at lines 291--187 \OT1/ptm/m/n/10 stead of this Li-cense. But first, please read [][]\OT1/pcr/m/n /10 http[]://www.[]gnu.[]org/philosophy/why-not-lgpl.[] -[9] (./GFDL.tex -Overfull \hbox (26.11101pt too wide) in paragraph at lines 77--79 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]relation[][][]with[][][][]Generator[][] ([][]ppl[ -][][]const[][][][]Constraints[][][][]Product[] - -Overfull \hbox (25.8513pt too wide) in paragraph at lines 81--83 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]is[][][]empty[][] ([][]ppl[][][]const[][][][]Cons -traints[][][][]Product[][][][]C[][][][]Polyhedron[] +[9] +Overfull \hbox (23.87296pt too wide) in paragraph at lines 595--596 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]constrains()[] \OT1/pcr/m/n/8 int ppl[][][][]Constraints[ +][][][]Product[][][][]C[][][][]Polyhedron[] -Overfull \hbox (34.3313pt too wide) in paragraph at lines 83--85 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]is[][][]universe[][] ([][]ppl[][][]const[][][][]C -onstraints[][][][]Product[][][][]C[][][][]Polyhedron[] +Overfull \hbox (10.49197pt too wide) in paragraph at lines 601--602 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]unconstrain[][][]space[][][]dimension()[] \OT1/pcr/m/n/8 +int ppl[][][][]Constraints[] -Overfull \hbox (35.29152pt too wide) in paragraph at lines 85--87 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]is[][][]bounded[][] ([][]ppl[][][]const[][][][]Co -nstraints[][][][]Product[][][][]C[][][][]Polyhedron[] +Overfull \hbox (14.38187pt too wide) in paragraph at lines 607--608 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]unconstrain[][][]space[][][]dimensions()[] \OT1/pcr/m/n/8 + int ppl[][][][]Constraints[] -Overfull \hbox (22.80093pt too wide) in paragraph at lines 87--89 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]is[][][]topologically[][][]closed[][] ([][]ppl[][ -][]const[][][][]Constraints[][][][]Product[] +Overfull \hbox (33.02313pt too wide) in paragraph at lines 613--614 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]affine[][][]image()[] \OT1/pcr/m/n/8 int ppl[][][][]Const +raints[][][][]Product[][][][]C[][][][]Polyhedron[] -Overfull \hbox (31.95103pt too wide) in paragraph at lines 89--91 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]is[][][]discrete[][] ([][]ppl[][][]const[][][][]C -onstraints[][][][]Product[][][][]C[][][][]Polyhedron[] +Overfull \hbox (47.28302pt too wide) in paragraph at lines 619--620 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]affine[][][]preimage()[] \OT1/pcr/m/n/8 int ppl[][][][]Co +nstraints[][][][]Product[][][][]C[][][][]Polyhedron[] -Overfull \hbox (11.9711pt too wide) in paragraph at lines 91--93 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]topological[][][]closure[][][]assign[][] ([][]ppl +Overfull \hbox (15.30272pt too wide) in paragraph at lines 625--626 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]bounded[][][]affine[][][]image()[] \OT1/pcr/m/n/8 int ppl [][][][]Constraints[][][][]Product[] -Overfull \hbox (9.71191pt too wide) in paragraph at lines 93--95 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]bounds[][][]from[][][]above[][] ([][]ppl[][][]con -st[][][][]Constraints[][][][]Product[] - -Overfull \hbox (10.32164pt too wide) in paragraph at lines 95--97 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]bounds[][][]from[][][]below[][] ([][]ppl[][][]con -st[][][][]Constraints[][][][]Product[] - -Overfull \hbox (30.02118pt too wide) in paragraph at lines 97--99 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]maximize[][] ([][]ppl[][][]const[][][][]Constrain -ts[][][][]Product[][][][]C[][][][]Polyhedron[] - -Overfull \hbox (29.78001pt too wide) in paragraph at lines 97--99 -[][][]\OT1/ptm/bc/n/10 Grid[][][]t[][] ph, [][]ppl[][][]const[][][][]Linear[][] -[][]Expression[][][]t[][] le, [][]ppl[][][][]Coefficient[][][]t[][] ext[][][]n, - [][]ppl[][][][]Coefficient[][][]t[][] ext[][][]d, int $\OMS/cmsy/m/n/10 ^^C$\O -T1/ptm/bc/n/10 poptimum) - -Overfull \hbox (28.36113pt too wide) in paragraph at lines 99--101 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]minimize[][] ([][]ppl[][][]const[][][][]Constrain -ts[][][][]Product[][][][]C[][][][]Polyhedron[] - -Overfull \hbox (29.78001pt too wide) in paragraph at lines 99--101 -[][][]\OT1/ptm/bc/n/10 Grid[][][]t[][] ph, [][]ppl[][][]const[][][][]Linear[][] -[][]Expression[][][]t[][] le, [][]ppl[][][][]Coefficient[][][]t[][] ext[][][]n, - [][]ppl[][][][]Coefficient[][][]t[][] ext[][][]d, int $\OMS/cmsy/m/n/10 ^^C$\O -T1/ptm/bc/n/10 poptimum) - -Overfull \hbox (15.58107pt too wide) in paragraph at lines 101--103 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]maximize[][][]with[][][]point[][] ([][]ppl[][][]c -onst[][][][]Constraints[][][][]Product[] - -Overfull \hbox (3.36195pt too wide) in paragraph at lines 101--103 -[][][]\OT1/ptm/bc/n/10 C[][][][]Polyhedron[][][][]Grid[][][]t[][] ph, [][]ppl[] - [10] [11] [12] +Overfull \hbox (29.5626pt too wide) in paragraph at lines 631--632 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]bounded[][][]affine[][][]preimage()[] \OT1/pcr/m/n/8 int +ppl[][][][]Constraints[][][][]Product[] +[121 (./GFDL.tex [10]] [11] [12] Overfull \hbox (7.49895pt too wide) in paragraph at lines 97--98 \OT1/ptm/m/n/10 ments, form-ing one sec-tion En-ti-tled "[]History"; like-wise com-bine any sec-tions En-ti-tled "[]Acknowledgements", -[13]) (./PI_SI_Features.tex [14[][]const[][][][]Linear[][][][]Expression[][][]t[][] le, [][]ppl[][][][]Coeffic -ient[][][]t[][] ext[][][]n, [][]ppl[][][][]Coefficient[] - -Overfull \hbox (13.92102pt too wide) in paragraph at lines 103--105 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]minimize[][][]with[][][]point[][] ([][]ppl[][][]c -onst[][][][]Constraints[][][][]Product[] - -Overfull \hbox (3.36195pt too wide) in paragraph at lines 103--105 -[][][]\OT1/ptm/bc/n/10 C[][][][]Polyhedron[][][][]Grid[][][]t[][] ph, [][]ppl[] -[][]const[][][][]Linear[][][][]Expression[][][]t[][] le, [][]ppl[][][][]Coeffic -ient[][][]t[][] ext[][][]n, [][]ppl[][][][]Coefficient[] - -Overfull \hbox (21.13144pt too wide) in paragraph at lines 105--107 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]contains[][][][]Constraints[][][][]Product[][][][ -]C[][][][]Polyhedron[][][][]Grid[][] ([][]ppl[] - -Overfull \hbox (12.5711pt too wide) in paragraph at lines 107--109 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]strictly[][][]contains[][][][]Constraints[][][][] -Product[][][][]C[][][][]Polyhedron[] +[13]) (./PI_SI_Features.tex [14] +Overfull \hbox (26.94246pt too wide) in paragraph at lines 637--638 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]generalized[][][]affine[][][]image()[] \OT1/pcr/m/n/8 int + ppl[][][][]Constraints[][][][]Product[] -Overfull \hbox (11.18124pt too wide) in paragraph at lines 109--111 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]is[][][]disjoint[][][]from[][][][]Constraints[][] -[][]Product[][][][]C[][][][]Polyhedron[] +Overfull \hbox (4.72232pt too wide) in paragraph at lines 643--644 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]generalized[][][]affine[][][]preimage()[] \OT1/pcr/m/n/8 +int ppl[][][][]Constraints[] -Overfull \hbox (13.35155pt too wide) in paragraph at lines 111--113 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]equals[][][][]Constraints[][][][]Product[][][][]C -[][][][]Polyhedron[][][][]Grid[][] ([][]ppl[] +Overfull \hbox (23.78194pt too wide) in paragraph at lines 649--650 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]generalized[][][]affine[][][]image[][][]lhs[][][]rhs()[] +\OT1/pcr/m/n/8 int ppl[][][][]Constraints[] -Overfull \hbox (5.02113pt too wide) in paragraph at lines 113--115 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][][]OK[][] ([][]ppl[][][]const[][][][]Constraints[] -[][][]Product[][][][]C[][][][]Polyhedron[] +Overfull \hbox (38.04182pt too wide) in paragraph at lines 655--656 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]generalized[][][]affine[][][]preimage[][][]lhs[][][]rhs() +[] \OT1/pcr/m/n/8 int ppl[][][][]Constraints[] -Overfull \hbox (23.35141pt too wide) in paragraph at lines 115--117 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]add[][][]constraint[][] ([][]ppl[][][][]Constrain -ts[][][][]Product[][][][]C[][][][]Polyhedron[] +Overfull \hbox (31.03197pt too wide) in paragraph at lines 661--662 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]add[][][]space[][][]dimensions[][][]and[][][]embed()[] \O +T1/pcr/m/n/8 int ppl[][][][]Constraints[] -Overfull \hbox (30.00172pt too wide) in paragraph at lines 117--119 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]add[][][]congruence[][] ([][]ppl[][][][]Constrain -ts[][][][]Product[][][][]C[][][][]Polyhedron[] -[110] +Overfull \hbox (33.062pt too wide) in paragraph at lines 667--668 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]add[][][]space[][][]dimensions[][][]and[][][]project()[] +\OT1/pcr/m/n/8 int ppl[][][][]Constraints[] +[122] Underfull \hbox (badness 10000) in paragraph at lines 19--20 @@ -16136,7 +16709,7 @@ Overfull \hbox (3.40186pt too wide) in paragraph at lines 28--29 []\OT1/ptm/m/n/10 The prod-uct do-mains con-sist of Direct[][][][]Product[][][] []S[][][]T, Smash[][][][]Product[][][][]S[][][]T, Constraints[][][][]Product[] -[15]] [16] +[15] [16] Underfull \vbox (badness 10000) has occurred while \output is active [17] Underfull \hbox (badness 10000) in paragraph at lines 241--242 @@ -16180,81 +16753,46 @@ Underfull \hbox (badness 10000) in paragraph at lines 308--309 [19] -Overfull \hbox (27.2413pt too wide) in paragraph at lines 119--121 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]add[][][]constraints[][] ([][]ppl[][][][]Constrai -nts[][][][]Product[][][][]C[][][][]Polyhedron[] - -Overfull \hbox (33.89162pt too wide) in paragraph at lines 121--123 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]add[][][]congruences[][] ([][]ppl[][][][]Constrai -nts[][][][]Product[][][][]C[][][][]Polyhedron[] - -Overfull \hbox (3.62155pt too wide) in paragraph at lines 129--131 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]refine[][][]with[][][]congruences[][] ([][]ppl[][ -][][]Constraints[][][][]Product[] - -Overfull \hbox (34.7512pt too wide) in paragraph at lines 135--137 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]difference[][][]assign[][] ([][]ppl[][][][]Constr -aints[][][][]Product[][][][]C[][][][]Polyhedron[] - -Overfull \hbox (40.84091pt too wide) in paragraph at lines 139--141 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]time[][][]elapse[][][]assign[][] ([][]ppl[][][][] -Constraints[][][][]Product[][][][]C[][][][]Polyhedron[] +Overfull \hbox (31.01239pt too wide) in paragraph at lines 673--674 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]remove[][][]space[][][]dimensions()[] \OT1/pcr/m/n/8 int +ppl[][][][]Constraints[][][][]Product[] -Overfull \hbox (20.1216pt too wide) in paragraph at lines 141--143 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]upper[][][]bound[][][]assign[][][]if[][][]exact[] -[] ([][]ppl[][][][]Constraints[][][][]Product[] +Overfull \hbox (25.91202pt too wide) in paragraph at lines 679--680 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]remove[][][]higher[][][]space[][][]dimensions()[] \OT1/pc +r/m/n/8 int ppl[][][][]Constraints[] -Overfull \hbox (6.42146pt too wide) in paragraph at lines 143--145 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]constrains[][] ([][]ppl[][][][]Constraints[][][][ -]Product[][][][]C[][][][]Polyhedron[] +Overfull \hbox (26.97238pt too wide) in paragraph at lines 685--686 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]expand[][][]space[][][]dimension()[] \OT1/pcr/m/n/8 int p +pl[][][][]Constraints[][][][]Product[] -Overfull \hbox (23.63115pt too wide) in paragraph at lines 145--147 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]unconstrain[][][]space[][][]dimension[][] ([][]pp +Overfull \hbox (16.16231pt too wide) in paragraph at lines 691--692 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]fold[][][]space[][][]dimensions()[] \OT1/pcr/m/n/8 int pp l[][][][]Constraints[][][][]Product[] -Overfull \hbox (16.4315pt too wide) in paragraph at lines 149--151 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]affine[][][]image[][] ([][]ppl[][][][]Constraints -[][][][]Product[][][][]C[][][][]Polyhedron[] - -Overfull \hbox (29.2014pt too wide) in paragraph at lines 151--153 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]affine[][][]preimage[][] ([][]ppl[][][][]Constrai -nts[][][][]Product[][][][]C[][][][]Polyhedron[] - -Overfull \hbox (7.26169pt too wide) in paragraph at lines 155--157 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]bounded[][][]affine[][][]preimage[][] ([][]ppl[][ -][][]Constraints[][][][]Product[] - -Overfull \hbox (6.1413pt too wide) in paragraph at lines 157--159 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]generalized[][][]affine[][][]image[][] ([][]ppl[] -[][][]Constraints[][][][]Product[] +Overfull \hbox (18.63242pt too wide) in paragraph at lines 697--698 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]map[][][]space[][][]dimensions()[] \OT1/pcr/m/n/8 int ppl +[][][][]Constraints[][][][]Product[] -Overfull \hbox (18.9112pt too wide) in paragraph at lines 159--161 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]generalized[][][]affine[][][]preimage[][] ([][]pp -l[][][][]Constraints[][][][]Product[] +Overfull \hbox (13.61229pt too wide) in paragraph at lines 703--704 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]drop[][][]some[][][]non[][][]integer[][][]points()[] \OT1 +/pcr/m/n/8 int ppl[][][][]Constraints[] -Overfull \hbox (2.52121pt too wide) in paragraph at lines 161--163 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]generalized[][][]affine[][][]image[][][]lhs[][][] -rhs[][] ([][]ppl[][][][]Constraints[] +Overfull \hbox (22.2123pt too wide) in paragraph at lines 709--710 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]drop[][][]some[][][]non[][][]integer[][][]points[][][]2() +[] \OT1/pcr/m/n/8 int ppl[][][][]Constraints[] -Overfull \hbox (15.2911pt too wide) in paragraph at lines 163--165 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]generalized[][][]affine[][][]preimage[][][]lhs[][ -][]rhs[][] ([][]ppl[][][][]Constraints[] -[111 +Overfull \hbox (33.1626pt too wide) in paragraph at lines 715--716 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]external[][][]memory[][][]in[][][]bytes()[] \OT1/pcr/m/n/ +8 int ppl[][][][]Constraints[][][][]Product[] +[123 Underfull \hbox (badness 10000) in paragraph at lines 313--314 @@ -16373,87 +16911,6 @@ Underfull \hbox (badness 10000) in paragraph at lines 439--440 [21] -Overfull \hbox (8.89146pt too wide) in paragraph at lines 165--167 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]add[][][]space[][][]dimensions[][][]and[][][]embe -d[][] ([][]ppl[][][][]Constraints[] - -Overfull \hbox (10.00131pt too wide) in paragraph at lines 167--169 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]add[][][]space[][][]dimensions[][][]and[][][]proj -ect[][] ([][]ppl[][][][]Constraints[] - -Overfull \hbox (10.55145pt too wide) in paragraph at lines 169--171 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]remove[][][]space[][][]dimensions[][] ([][]ppl[][ -][][]Constraints[][][][]Product[] - -Overfull \hbox (4.99152pt too wide) in paragraph at lines 171--173 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]remove[][][]higher[][][]space[][][]dimensions[][] - ([][]ppl[][][][]Constraints[] - -Overfull \hbox (5.70161pt too wide) in paragraph at lines 173--175 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]expand[][][]space[][][]dimension[][] ([][]ppl[][] -[][]Constraints[][][][]Product[] - -Overfull \hbox (0.69177pt too wide) in paragraph at lines 181--183 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]drop[][][]some[][][]non[][][]integer[][][]points[ -][][]2[][] ([][]ppl[][][][]Constraints[] - -Overfull \hbox (0.97137pt too wide) in paragraph at lines 183--185 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]external[][][]memory[][][]in[][][]bytes[][] ([][] -ppl[][][]const[][][][]Constraints[] - -Overfull \hbox (21.40106pt too wide) in paragraph at lines 185--187 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]total[][][]memory[][][]in[][][]bytes[][] ([][]ppl -[][][]const[][][][]Constraints[][][][]Product[] - -Overfull \hbox (22.70122pt too wide) in paragraph at lines 187--189 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]widening[][][]assign[][][]with[][][]tokens[][] ([ -][]ppl[][][][]Constraints[][][][]Product[] - -Overfull \hbox (31.69138pt too wide) in paragraph at lines 189--191 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]widening[][][]assign[][] ([][]ppl[][][][]Constrai -nts[][][][]Product[][][][]C[][][][]Polyhedron[] - -Overfull \hbox (20.85143pt too wide) in paragraph at lines 191--193 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]io[][][]print[][][][]Constraints[][][][]Pro -duct[][][][]C[][][][]Polyhedron[][][][]Grid[][] ([][]ppl[][][]const[][][][]Cons -traints[][][][]Product[][][][]C[][][][]Polyhedron[] - -Overfull \hbox (17.83125pt too wide) in paragraph at lines 195--197 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]io[][][]asprint[][][][]Constraints[][][][]P -roduct[][][][]C[][][][]Polyhedron[][][][]Grid[][] (char $\OMS/cmsy/m/n/10 ^^C$$ -^^C$\OT1/ptm/bc/n/10 strp, [][]ppl[][][]const[][][][]Constraints[][][][]Product -[] - -Overfull \hbox (35.29124pt too wide) in paragraph at lines 197--199 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]ascii[][][]dump[][] ([][]ppl[][][]const[][][][]Co -nstraints[][][][]Product[][][][]C[][][][]Polyhedron[] - -Overfull \hbox (5.02145pt too wide) in paragraph at lines 199--200 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid[][][]ascii[][][]load[][] ([][]ppl[][][][]Constraints[] -[][][]Product[][][][]C[][][][]Polyhedron[] - -Overfull \hbox (36.6532pt too wide) in paragraph at lines 211--212 - []\OT1/ptm/b/n/10 ppl[][][]delete[][][][]Constraints[][][][]Product[][][][]C[] -[][][]Polyhedron[][][][]Grid()[] \OT1/pcr/m/n/8 int ppl[][][]delete[][][][]Cons -traints[][][][]Product[][][][]C[][][][]Polyhedron[] - -Overfull \hbox (18.3924pt too wide) in paragraph at lines 217--218 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ -][]Polyhedron[][][][]Grid[][][]from[][][]space[][][]dimension()[] \OT1/pcr/m/n/ -8 int ppl[][][]new[][][][]Constraints[] -[112 Underfull \hbox (badness 10000) in paragraph at lines 444--445 @@ -16488,6 +16945,46 @@ Underfull \hbox (badness 10000) in paragraph at lines 484--485 [22] +Overfull \hbox (17.7627pt too wide) in paragraph at lines 721--722 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]total[][][]memory[][][]in[][][]bytes()[] \OT1/pcr/m/n/8 i +nt ppl[][][][]Constraints[][][][]Product[] + +Overfull \hbox (7.33206pt too wide) in paragraph at lines 727--728 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]widening[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/m +/n/8 int ppl[][][][]Constraints[] + +Overfull \hbox (0.60266pt too wide) in paragraph at lines 733--734 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]widening[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]Co +nstraints[][][][]Product[][][][]C[][][] + +Overfull \hbox (1.51312pt too wide) in paragraph at lines 739--740 + []\OT1/ptm/b/n/10 ppl[][][]io[][][]print[][][][]Constraints[][][][]Product[][] +[][]C[][][][]Polyhedron[][][][]Grid()[] \OT1/pcr/m/n/8 int ppl[][][]io[][][]pri +nt[][][][]Constraints[][][][]Product[][][][]C[] + +Overfull \hbox (1.96307pt too wide) in paragraph at lines 745--746 + []\OT1/ptm/b/n/10 ppl[][][]io[][][]fprint[][][][]Constraints[][][][]Product[][ +][][]C[][][][]Polyhedron[][][][]Grid()[] \OT1/pcr/m/n/8 int ppl[][][]io[][][]fp +rint[][][][]Constraints[][][][]Product[] + +Overfull \hbox (12.32301pt too wide) in paragraph at lines 751--752 + []\OT1/ptm/b/n/10 ppl[][][]io[][][]asprint[][][][]Constraints[][][][]Product[] +[][][]C[][][][]Polyhedron[][][][]Grid()[] \OT1/pcr/m/n/8 int ppl[][][]io[][][]a +sprint[][][][]Constraints[][][][]Product[] + +Overfull \hbox (27.48296pt too wide) in paragraph at lines 757--758 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]ascii[][][]dump()[] \OT1/pcr/m/n/8 int ppl[][][][]Constra +ints[][][][]Product[][][][]C[][][][]Polyhedron[] + +Overfull \hbox (20.81302pt too wide) in paragraph at lines 763--764 + []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe +dron[][][][]Grid[][][]ascii[][][]load()[] \OT1/pcr/m/n/8 int ppl[][][][]Constra +ints[][][][]Product[][][][]C[][][][]Polyhedron[] +[124]) (./interfaceppl__Double__Box__tag.tex Overfull \hbox (62.5953pt too wide) in paragraph at lines 504--505 []\OT1/pcr/m/n/10 ppl[][][][]P[]I[]P[][][][]Problem[][][]get[][][]control[][][] parameter(+[]Handle, +[]Control[][][][]Parameter[][][][]Name, ?Control[] @@ -16516,47 +17013,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 544--545 -[23]]) (./configured_domains_predicates.tex [24 -Overfull \hbox (7.45296pt too wide) in paragraph at lines 223--224 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ -][]Polyhedron[][][][]Grid[][][]from[][][][]C[][][][]Polyhedron()[] \OT1/pcr/m/n -/8 int ppl[][][]new[][][][]Constraints[] - -Overfull \hbox (21.8929pt too wide) in paragraph at lines 229--230 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ -][]Polyhedron[][][][]Grid[][][]from[][][][]N[]N[]C[][][][]Polyhedron()[] \OT1/p -cr/m/n/8 int ppl[][][]new[][][][]Constraints[] - -Overfull \hbox (4.60298pt too wide) in paragraph at lines 235--236 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ -][]Polyhedron[][][][]Grid[][][]from[][][][]Grid()[] \OT1/pcr/m/n/8 int ppl[][][ -]new[][][][]Constraints[][][][]Product[] - -Overfull \hbox (4.50287pt too wide) in paragraph at lines 241--242 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ -][]Polyhedron[][][][]Grid[][][]from[][][][]Rational[][][][]Box()[] \OT1/pcr/m/n -/8 int ppl[][][]new[][][][]Constraints[] - -Overfull \hbox (36.70241pt too wide) in paragraph at lines 247--248 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ -][]Polyhedron[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]clas -s()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Constraints[] - -Overfull \hbox (37.8224pt too wide) in paragraph at lines 253--254 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ -][]Polyhedron[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[][][]mpq[][][]clas -s()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Constraints[] - -Overfull \hbox (11.0221pt too wide) in paragraph at lines 259--260 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ -][]Polyhedron[][][][]Grid[][][]from[][][][]Octagonal[][][][]Shape[][][]mpz[][][ -]class()[] \OT1/pcr/m/n/8 int ppl[][][]new[] - -Overfull \hbox (12.14209pt too wide) in paragraph at lines 265--266 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ -][]Polyhedron[][][][]Grid[][][]from[][][][]Octagonal[][][][]Shape[][][]mpq[][][ -]class()[] \OT1/pcr/m/n/8 int ppl[][][]new[] -[113]] +[23]) (./configured_domains_predicates.tex [24] Overfull \hbox (6.19531pt too wide) in paragraph at lines 34--36 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]C[][][][]Polyhedron[][][]from[][][]space[ ][][]dimension(+[]Dimension[][][][]Type, +[]Universe[][][]or[] @@ -16568,46 +17025,60 @@ Underfull \hbox (badness 10000) in paragraph at lines 71--72 [25] -Overfull \hbox (1.2729pt too wide) in paragraph at lines 271--272 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ -][]Polyhedron[][][][]Grid[][][]from[][][][]Double[][][][]Box()[] \OT1/pcr/m/n/8 - int ppl[][][]new[][][][]Constraints[][][] +Overfull \hbox (7.5225pt too wide) in paragraph at lines 27--29 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][ +][]B[]D[][][][]Shape[][][]mpz[][][]class[][] ([][]ppl[][][][]Double[][][][]Box[ +][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][]const[][][] +[]B[]D[][][][]Shape[] -Overfull \hbox (23.67259pt too wide) in paragraph at lines 277--278 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ -][]Polyhedron[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[][][]double()[] \O -T1/pcr/m/n/8 int ppl[][][]new[][][][]Constraints[] +Overfull \hbox (8.08257pt too wide) in paragraph at lines 29--31 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][ +][]B[]D[][][][]Shape[][][]mpq[][][]class[][] ([][]ppl[][][][]Double[][][][]Box[ +][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][]const[][][] +[]B[]D[][][][]Shape[] -Overfull \hbox (0.87228pt too wide) in paragraph at lines 283--284 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ -][]Polyhedron[][][][]Grid[][][]from[][][][]Octagonal[][][][]Shape[][][]double() -[] \OT1/pcr/m/n/8 int ppl[][][]new[][][] +Overfull \hbox (20.86249pt too wide) in paragraph at lines 39--41 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][ +][]Octagonal[][][][]Shape[][][]double[][] ([][]ppl[][][][]Double[][][][]Box[][] +[]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][]const[][][][]O +ctagonal[] -Overfull \hbox (21.9302pt too wide) in paragraph at lines 289--290 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ -][]Polyhedron[][][][]Grid[][][]from[][][][]Constraints[][][][]Product[][][][]C[ -][][][]Polyhedron[][][][]Grid()[] \OT1/pcr/m/n/8 int +Overfull \hbox (2.41263pt too wide) in paragraph at lines 41--43 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][ +][]C[][][][]Polyhedron[][][]with[][][]complexity[][] ([][]ppl[][][][]Double[][] +[][]Box[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][]con +st[] -Overfull \hbox (7.24219pt too wide) in paragraph at lines 295--296 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ -][]Polyhedron[][][][]Grid[][][]from[][][][]C[][][][]Polyhedron[][][]with[][][]c -omplexity()[] \OT1/pcr/m/n/8 int ppl[] +Overfull \hbox (0.19238pt too wide) in paragraph at lines 47--49 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][ +][]Rational[][][][]Box[][][]with[][][]complexity[][] ([][]ppl[][][][]Double[][] +[][]Box[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][]con +st[] -Overfull \hbox (21.68213pt too wide) in paragraph at lines 301--302 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ -][]Polyhedron[][][][]Grid[][][]from[][][][]N[]N[]C[][][][]Polyhedron[][][]with[ -][][]complexity()[] \OT1/pcr/m/n/8 int ppl[] +Overfull \hbox (7.11237pt too wide) in paragraph at lines 49--51 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][ +][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]with[][][]complexity[][] ([][]ppl +[][][][]Double[][][][]Box[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph +, [][]ppl[] -Overfull \hbox (40.87224pt too wide) in paragraph at lines 307--308 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ -][]Polyhedron[][][][]Grid[][][]from[][][][]Grid[][][]with[][][]complexity()[] \ -OT1/pcr/m/n/8 int ppl[][][]new[][][][]Constraints[] +Overfull \hbox (7.67242pt too wide) in paragraph at lines 51--53 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][ +][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]with[][][]complexity[][] ([][]ppl +[][][][]Double[][][][]Box[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph +, [][]ppl[] -Overfull \hbox (4.2921pt too wide) in paragraph at lines 313--314 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ -][]Polyhedron[][][][]Grid[][][]from[][][][]Rational[][][][]Box[][][]with[][][]c -omplexity()[] \OT1/pcr/m/n/8 int ppl[] -[114 +Overfull \hbox (10.54063pt too wide) in paragraph at lines 53--55 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][ +][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]with[][][]complexity[][] ([] +[]ppl[][][][]Double[][][][]Box[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/1 +0 pph, + +Overfull \hbox (11.1007pt too wide) in paragraph at lines 55--57 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][ +][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]with[][][]complexity[][] ([] +[]ppl[][][][]Double[][][][]Box[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/1 +0 pph, +[125] Overfull \hbox (11.00215pt too wide) in paragraph at lines 104--106 \OT1/ptm/m/it/10 Builds a new N[]NC poly-he-dron \OT1/pcr/m/sl/10 P[][][]1 \OT1 /ptm/m/it/10 from the bd[][][]shape[][][]mpz[][][]class ref-er-enced by han-dle @@ -16633,7 +17104,7 @@ Overfull \hbox (9.79532pt too wide) in paragraph at lines 122--124 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]N[]N[]C[][][][]Polyhedron[][][]from[][][] []Octagonal[][][][]Shape[][][]mpq[][][]class(+[]Handle[][][]1, -[]Handle[] -[26]] +[26] Overfull \hbox (15.07239pt too wide) in paragraph at lines 137--139 \OT1/ptm/m/it/10 Builds a new C poly-he-dron \OT1/pcr/m/sl/10 P[][][]1 \OT1/ptm /m/it/10 from the octagonal[][][]shape[][][]double ref-er-enced by han-dle \OT1 @@ -16680,56 +17151,6 @@ []\OT1/pcr/m/n/10 ppl[][][]new[][][][]C[][][][]Polyhedron[][][]from[][][][]B[]D [][][][]Shape[][][]mpz[][][]class[][][]with[][][]complexity(+[]Handle, +[] [27] -Overfull \hbox (8.31012pt too wide) in paragraph at lines 319--320 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ -][]Polyhedron[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]clas -s[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int - -Overfull \hbox (9.43011pt too wide) in paragraph at lines 325--326 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ -][]Polyhedron[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[][][]mpq[][][]clas -s[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int - -Overfull \hbox (15.90984pt too wide) in paragraph at lines 331--332 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ -][]Polyhedron[][][][]Grid[][][]from[][][][]Octagonal[][][][]Shape[][][]mpz[][][ -]class[][][]with[][][]complexity()[] - -Overfull \hbox (11.25407pt too wide) in paragraph at lines 331--332 -\OT1/pcr/m/n/8 int ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ -][]Polyhedron[][][][]Grid[][][]from[][][][]Octagonal[][][][]Shape[][][]mpz[][][ -]class[][][]with[][][]complexity - -Overfull \hbox (17.02983pt too wide) in paragraph at lines 337--338 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ -][]Polyhedron[][][][]Grid[][][]from[][][][]Octagonal[][][][]Shape[][][]mpq[][][ -]class[][][]with[][][]complexity()[] - -Overfull \hbox (11.25407pt too wide) in paragraph at lines 337--338 -\OT1/pcr/m/n/8 int ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ -][]Polyhedron[][][][]Grid[][][]from[][][][]Octagonal[][][][]Shape[][][]mpq[][][ -]class[][][]with[][][]complexity - -Overfull \hbox (1.06213pt too wide) in paragraph at lines 343--344 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ -][]Polyhedron[][][][]Grid[][][]from[][][][]Double[][][][]Box[][][]with[][][]com -plexity()[] \OT1/pcr/m/n/8 int ppl[][][] - -Overfull \hbox (23.46182pt too wide) in paragraph at lines 349--350 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ -][]Polyhedron[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[][][]double[][][]w -ith[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[] - -Overfull \hbox (2.88002pt too wide) in paragraph at lines 355--356 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ -][]Polyhedron[][][][]Grid[][][]from[][][][]Octagonal[][][][]Shape[][][]double[] -[][]with[][][]complexity()[] - -Overfull \hbox (8.37407pt too wide) in paragraph at lines 355--356 -\OT1/pcr/m/n/8 int ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ -][]Polyhedron[][][][]Grid[][][]from[][][][]Octagonal[][][][]Shape[][][]double[] -[][]with[][][]complexity ( -[115 Overfull \hbox (13.39532pt too wide) in paragraph at lines 170--172 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]N[]N[]C[][][][]Polyhedron[][][]from[][][] []B[]D[][][][]Shape[][][]mpz[][][]class[][][]with[][][]complexity(+[]Handle, +[ @@ -16780,11 +17201,63 @@ Overfull \hbox (6.81381pt too wide) in paragraph at lines 203--205 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]C[][][][]Polyhedron[][][]from[][][][]Octa gonal[][][][]Shape[][][]double[][][]with[][][]complexity(+[]Handle, -[28]] +[28] Overfull \hbox (18.81381pt too wide) in paragraph at lines 206--208 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]N[]N[]C[][][][]Polyhedron[][][]from[][][] []Octagonal[][][][]Shape[][][]double[][][]with[][][]complexity(+[]Handle, -[29] +[29 +Overfull \hbox (9.49263pt too wide) in paragraph at lines 65--67 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][ +][]Congruence[][][][]System[][] ([][]ppl[][][][]Double[][][][]Box[][][]t[][] $\ +OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][]const[][][][]Congruence[ +] + +Overfull \hbox (3.63234pt too wide) in paragraph at lines 77--79 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Double[][][][]Box[][][]relation[][][]with +[][][][]Congruence[][] ([][]ppl[][][]const[][][][]Double[][][][]Box[][][]t[][] +ph, [][]ppl[][][]const[][][][]Congruence[] + +Overfull \hbox (6.28996pt too wide) in paragraph at lines 79--81 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Double[][][][]Box[][][]get[][][]constrain +ts[][] ([][]ppl[][][]const[][][][]Double[][][][]Box[][][]t[][] ph, [][]ppl[][][ +]const[][][][]Constraint[][][][]System[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/pt +m/bc/n/10 pcs) + +Overfull \hbox (11.96216pt too wide) in paragraph at lines 85--87 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Double[][][][]Box[][][]get[][][]minimized +[][][]congruences[][] ([][]ppl[][][]const[][][][]Double[][][][]Box[][][]t[][] p +h, [][]ppl[][][]const[][][][]Congruence[] + +Overfull \hbox (4.71272pt too wide) in paragraph at lines 101--103 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Double[][][][]Box[][][]bounds[][][]from[] +[][]above[][] ([][]ppl[][][]const[][][][]Double[][][][]Box[][][]t[][] ph, [][]p +pl[][][]const[][][][]Linear[][][][]Expression[] + +Overfull \hbox (5.32245pt too wide) in paragraph at lines 103--105 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Double[][][][]Box[][][]bounds[][][]from[] +[][]below[][] ([][]ppl[][][]const[][][][]Double[][][][]Box[][][]t[][] ph, [][]p +pl[][][]const[][][][]Linear[][][][]Expression[] + +Overfull \hbox (9.72252pt too wide) in paragraph at lines 105--107 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Double[][][][]Box[][][]get[][][]upper[][] +[]bound[][] ([][]ppl[][][][]Double[][][][]Box[][][]t[][] ps, [][]ppl[][][]dimen +sion[][][]type[][] var, [][]ppl[][][][]Coefficient[] + +Overfull \hbox (9.47238pt too wide) in paragraph at lines 107--109 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Double[][][][]Box[][][]get[][][]lower[][] +[]bound[][] ([][]ppl[][][][]Double[][][][]Box[][][]t[][] ps, [][]ppl[][][]dimen +sion[][][]type[][] var, [][]ppl[][][][]Coefficient[] + +Overfull \hbox (10.58188pt too wide) in paragraph at lines 113--115 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Double[][][][]Box[][][]maximize[][][]with +[][][]point[][] ([][]ppl[][][]const[][][][]Double[][][][]Box[][][]t[][] ph, [][ +]ppl[][][]const[][][][]Linear[][][][]Expression[] + +Overfull \hbox (8.92183pt too wide) in paragraph at lines 115--117 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Double[][][][]Box[][][]minimize[][][]with +[][][]point[][] ([][]ppl[][][]const[][][][]Double[][][][]Box[][][]t[][] ph, [][ +]ppl[][][]const[][][][]Linear[][][][]Expression[] +[126] Overfull \hbox (15.79529pt too wide) in paragraph at lines 274--276 []\OT1/pcr/m/n/10 ppl[][][][]Polyhedron[][][]relation[][][]with[][][]constraint (+[]Handle, +[]Constraint, ?Relation[] @@ -16825,56 +17298,11 @@ Overfull \hbox (10.9953pt too wide) in paragraph at lines 311--313 []\OT1/pcr/m/n/10 ppl[][][][]Polyhedron[][][]maximize[][][]with[][][]point(+[]H andle, +[]Lin[][][][]Expr, ?Coeff[][][]1, ?Coeff[] -[30] +[30]] Overfull \hbox (10.9953pt too wide) in paragraph at lines 316--318 []\OT1/pcr/m/n/10 ppl[][][][]Polyhedron[][][]minimize[][][]with[][][]point(+[]H andle, +[]Lin[][][][]Expr, ?Coeff[][][]1, ?Coeff[] -[31 -Overfull \hbox (1.85179pt too wide) in paragraph at lines 361--362 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ -][]Polyhedron[][][][]Grid[][][]from[][][][]Constraints[][][][]Product[][][][]C[ -][][][]Polyhedron[][][][]Grid[] - -Overfull \hbox (9.12473pt too wide) in paragraph at lines 361--362 -[][]\OT1/ptm/b/n/10 with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[][][]new[][ -][][]Constraints[][][][]Product[][][][]C[][][][]Polyhedron[][][][]Grid[][][]fro -m[][][][]Constraints[][][][]Product[] - -Overfull \hbox (27.82246pt too wide) in paragraph at lines 367--368 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ -][]Polyhedron[][][][]Grid[][][]from[][][][]Constraint[][][][]System()[] \OT1/pc -r/m/n/8 int ppl[][][]new[][][][]Constraints[] - -Overfull \hbox (33.37253pt too wide) in paragraph at lines 373--374 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][ -][]Polyhedron[][][][]Grid[][][]from[][][][]Congruence[][][][]System()[] \OT1/pc -r/m/n/8 int ppl[][][]new[][][][]Constraints[] - -Overfull \hbox (2.81264pt too wide) in paragraph at lines 379--380 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]space[][][]dimension()[] \OT1/pcr/m/n/8 int ppl[][][][]Co -nstraints[][][][]Product[][][][]C[][][] - -Overfull \hbox (0.49269pt too wide) in paragraph at lines 385--386 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]affine[][][]dimension()[] \OT1/pcr/m/n/8 int ppl[][][][]C -onstraints[][][][]Product[][][][]C[] - -Overfull \hbox (26.7724pt too wide) in paragraph at lines 391--392 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]relation[][][]with[][][][]Constraint()[] \OT1/pcr/m/n/8 i -nt ppl[][][][]Constraints[][][][]Product[] - -Overfull \hbox (25.09247pt too wide) in paragraph at lines 397--398 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]relation[][][]with[][][][]Generator()[] \OT1/pcr/m/n/8 in -t ppl[][][][]Constraints[][][][]Product[] - -Overfull \hbox (32.32246pt too wide) in paragraph at lines 403--404 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]relation[][][]with[][][][]Congruence()[] \OT1/pcr/m/n/8 i -nt ppl[][][][]Constraints[][][][]Product[] -[116] +[31] Overfull \hbox (2.92062pt too wide) in paragraph at lines 386--388 \OT1/ptm/m/it/10 Transforms the poly-he-dron ref-er-enced by \OT1/pcr/m/sl/10 H andle \OT1/ptm/m/it/10 sub-sti-tut-ing the affine ex-pres-sion for \OT1/pcr/m/s @@ -16899,52 +17327,7 @@ Overfull \hbox (6.19531pt too wide) in paragraph at lines 401--403 []\OT1/pcr/m/n/10 ppl[][][][]Polyhedron[][][]generalized[][][]affine[][][]image [][][]lhs[][][]rhs(+[]Handle, +[]Lin[][][][]Expr[][][]1, +[] -[32]] -Overfull \hbox (16.91315pt too wide) in paragraph at lines 409--410 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]is[][][]empty()[] \OT1/pcr/m/n/8 int ppl[][][][]Constrain -ts[][][][]Product[][][][]C[][][][]Polyhedron[] - -Overfull \hbox (26.16286pt too wide) in paragraph at lines 415--416 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]is[][][]universe()[] \OT1/pcr/m/n/8 int ppl[][][][]Constr -aints[][][][]Product[][][][]C[][][][]Polyhedron[] - -Overfull \hbox (27.49298pt too wide) in paragraph at lines 421--422 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]is[][][]bounded()[] \OT1/pcr/m/n/8 int ppl[][][][]Constra -ints[][][][]Product[][][][]C[][][][]Polyhedron[] - -Overfull \hbox (15.85233pt too wide) in paragraph at lines 427--428 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]is[][][]topologically[][][]closed()[] \OT1/pcr/m/n/8 int -ppl[][][][]Constraints[][][][]Product[] - -Overfull \hbox (23.39287pt too wide) in paragraph at lines 433--434 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]is[][][]discrete()[] \OT1/pcr/m/n/8 int ppl[][][][]Constr -aints[][][][]Product[][][][]C[][][][]Polyhedron[] - -Overfull \hbox (31.78227pt too wide) in paragraph at lines 439--440 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]topological[][][]closure[][][]assign()[] \OT1/pcr/m/n/8 i -nt ppl[][][][]Constraints[][][][]Product[] - -Overfull \hbox (5.47299pt too wide) in paragraph at lines 445--446 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]bounds[][][]from[][][]above()[] \OT1/pcr/m/n/8 int ppl[][ -][][]Constraints[][][][]Product[] - -Overfull \hbox (5.57285pt too wide) in paragraph at lines 451--452 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]bounds[][][]from[][][]below()[] \OT1/pcr/m/n/8 int ppl[][ -][][]Constraints[][][][]Product[] - -Overfull \hbox (21.08315pt too wide) in paragraph at lines 457--458 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]maximize()[] \OT1/pcr/m/n/8 int ppl[][][][]Constraints[][ -][][]Product[][][][]C[][][][]Polyhedron[] -[117 +[32] Overfull \hbox (0.19531pt too wide) in paragraph at lines 404--406 []\OT1/pcr/m/n/10 ppl[][][][]Polyhedron[][][]generalized[][][]affine[][][]preim age[][][]lhs[][][]rhs(+[]Handle, +[]Lin[][][][]Expr[][][] @@ -16988,7 +17371,32 @@ Overfull \hbox (12.19531pt too wide) in paragraph at lines 475--477 []\OT1/pcr/m/n/10 ppl[][][][]Polyhedron[][][]bounded[][][][]H79[][][]extrapolat ion[][][]assign[][][]with[][][]tokens(+[]Handle[][][]1, +[] -[34]] +[34] +Overfull \hbox (5.85234pt too wide) in paragraph at lines 143--145 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Double[][][][]Box[][][]refine[][][]with[] +[][]congruences[][] ([][]ppl[][][][]Double[][][][]Box[][][]t[][] ph, [][]ppl[][ +][]const[][][][]Congruence[][][][]System[] + +Overfull \hbox (0.82236pt too wide) in paragraph at lines 165--167 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Double[][][][]Box[][][]affine[][][]image[ +][] ([][]ppl[][][][]Double[][][][]Box[][][]t[][] ph, [][]ppl[][][]dimension[][] +[]type[][] var, [][]ppl[][][]const[][][][]Linear[] + +Overfull \hbox (9.33069pt too wide) in paragraph at lines 175--177 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Double[][][][]Box[][][]generalized[][][]a +ffine[][][]preimage[][] ([][]ppl[][][][]Double[][][][]Box[][][]t[][] ph, [][]pp +l[][][]dimension[][][]type[][] var, enum + +Overfull \hbox (32.23175pt too wide) in paragraph at lines 177--179 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Double[][][][]Box[][][]generalized[][][]a +ffine[][][]image[][][]lhs[][][]rhs[][] ([][]ppl[][][][]Double[][][][]Box[][][]t +[][] ph, [][]ppl[][][]const[][][][]Linear[][][][]Expression[] + +Overfull \hbox (8.37874pt too wide) in paragraph at lines 185--187 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Double[][][][]Box[][][]remove[][][]space[ +][][]dimensions[][] ([][]ppl[][][][]Double[][][][]Box[][][]t[][] ph, [][]ppl[][ +][]dimension[][][]type[][] ds[]$ $[], size[] +[127 Overfull \hbox (2.5953pt too wide) in paragraph at lines 478--480 []\OT1/pcr/m/n/10 ppl[][][][]Polyhedron[][][]limited[][][][]B[]H[]R[]Z03[][][]e xtrapolation[][][]assign(+[]Handle[][][]1, +[]Handle[][][] @@ -17012,47 +17420,7 @@ Overfull \hbox (2.0138pt too wide) in paragraph at lines 512--514 []\OT1/pcr/m/n/10 ppl[][][][]Polyhedron[][][]remove[][][]higher[][][]space[][][ ]dimensions(+[]Handle, +[]Dimension[][][][]Type) -[35] -Overfull \hbox (19.42297pt too wide) in paragraph at lines 463--464 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]minimize()[] \OT1/pcr/m/n/8 int ppl[][][][]Constraints[][ -][][]Product[][][][]C[][][][]Polyhedron[] - -Overfull \hbox (10.84259pt too wide) in paragraph at lines 469--470 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]maximize[][][]with[][][]point()[] \OT1/pcr/m/n/8 int ppl[ -][][][]Constraints[][][][]Product[] - -Overfull \hbox (9.18242pt too wide) in paragraph at lines 475--476 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]minimize[][][]with[][][]point()[] \OT1/pcr/m/n/8 int ppl[ -][][][]Constraints[][][][]Product[] - -Overfull \hbox (15.74998pt too wide) in paragraph at lines 481--482 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]contains[][][][]Constraints[][][][]Product[][][][]C[][][] -[]Polyhedron[][][][]Grid()[] \OT1/pcr/m/n/8 int - -Overfull \hbox (5.10138pt too wide) in paragraph at lines 487--488 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]strictly[][][]contains[][][][]Constraints[][][][]Product[ -][][][]C[][][][]Polyhedron[] - -Overfull \hbox (3.73514pt too wide) in paragraph at lines 487--488 -[][][]\OT1/ptm/b/n/10 Grid()[] \OT1/pcr/m/n/8 int ppl[][][][]Constraints[][][][ -]Product[][][][]C[][][][]Polyhedron[][][][]Grid[][][]strictly[][][]contains[][] -[][]Constraints[][][][]Product[] - -Overfull \hbox (2.97153pt too wide) in paragraph at lines 493--494 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]is[][][]disjoint[][][]from[][][][]Constraints[][][][]Prod -uct[][][][]C[][][][]Polyhedron[] - -Overfull \hbox (4.69514pt too wide) in paragraph at lines 493--494 -[][][]\OT1/ptm/b/n/10 Grid()[] \OT1/pcr/m/n/8 int ppl[][][][]Constraints[][][][ -]Product[][][][]C[][][][]Polyhedron[][][][]Grid[][][]is[][][]disjoint[][][]from -[][][][]Constraints[][][][]Product[][][][]C[] -[118 +[35]] Overfull \hbox (14.0138pt too wide) in paragraph at lines 515--517 []\OT1/pcr/m/n/10 ppl[][][][]Polyhedron[][][]expand[][][]space[][][]dimension(+ []Handle, +[]P[]P[]L[][][][]Var, +[]Dimension[][][][]Type) @@ -17067,7 +17435,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 561--562 -[36]] +[36] Overfull \hbox (2.5953pt too wide) in paragraph at lines 600--602 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]C[][][][]Polyhedron [][][]with[][][]complexity(+[]Handle, +[]Complexity, -[] @@ -17083,47 +17451,7 @@ Overfull \hbox (12.81381pt too wide) in paragraph at lines 612--614 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[] [][]mpz[][][]class[][][]with[][][]complexity(+[]Handle, +[]Complexity, -[37 -Overfull \hbox (7.42003pt too wide) in paragraph at lines 499--500 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]equals[][][][]Constraints[][][][]Product[][][][]C[][][][] -Polyhedron[][][][]Grid()[] \OT1/pcr/m/n/8 int - -Overfull \hbox (17.62337pt too wide) in paragraph at lines 505--506 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][][]O[]K()[] \OT1/pcr/m/n/8 int ppl[][][][]Constraints[][][ -][]Product[][][][]C[][][][]Polyhedron[][][][]Grid[] - -Overfull \hbox (43.0329pt too wide) in paragraph at lines 511--512 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]add[][][]constraint()[] \OT1/pcr/m/n/8 int ppl[][][][]Con -straints[][][][]Product[][][][]C[][][][]Polyhedron[] - -Overfull \hbox (0.58293pt too wide) in paragraph at lines 517--518 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]add[][][]congruence()[] \OT1/pcr/m/n/8 int ppl[][][][]Con -straints[][][][]Product[][][][]C[][][] - -Overfull \hbox (46.92279pt too wide) in paragraph at lines 523--524 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]add[][][]constraints()[] \OT1/pcr/m/n/8 int ppl[][][][]Co -nstraints[][][][]Product[][][][]C[][][][]Polyhedron[] - -Overfull \hbox (1.59282pt too wide) in paragraph at lines 529--530 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]add[][][]congruences()[] \OT1/pcr/m/n/8 int ppl[][][][]Co -nstraints[][][][]Product[][][][]C[] - -Overfull \hbox (15.10251pt too wide) in paragraph at lines 535--536 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]refine[][][]with[][][]constraint()[] \OT1/pcr/m/n/8 int p -pl[][][][]Constraints[][][][]Product[] - -Overfull \hbox (20.65257pt too wide) in paragraph at lines 541--542 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]refine[][][]with[][][]congruence()[] \OT1/pcr/m/n/8 int p -pl[][][][]Constraints[][][][]Product[] -[119] +[37] Overfull \hbox (12.81381pt too wide) in paragraph at lines 615--617 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[] [][]mpq[][][]class[][][]with[][][]complexity(+[]Handle, +[]Complexity, @@ -17147,7 +17475,64 @@ Overfull \hbox (39.2138pt too wide) in paragraph at lines 630--632 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]Octagonal[][][][]Sh ape[][][]double[][][]with[][][]complexity(+[]Handle, +[]Complexity, -[38]] +[38] +Overfull \hbox (8.12848pt too wide) in paragraph at lines 193--195 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Double[][][][]Box[][][]map[][][]space[][] +[]dimensions[][] ([][]ppl[][][][]Double[][][][]Box[][][]t[][] ph, [][]ppl[][][] +dimension[][][]type[][] maps[]$ $[], size[] + +Overfull \hbox (6.6776pt too wide) in paragraph at lines 197--199 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Double[][][][]Box[][][]drop[][][]some[][] +[]non[][][]integer[][][]points[][][]2[][] ([][]ppl[][][][]Double[][][][]Box[][] +[]t[][] ph, [][]ppl[][][]dimension[][][]type[][] ds[]$ $[], + +Overfull \hbox (9.24174pt too wide) in paragraph at lines 211--213 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Double[][][][]Box[][][]limited[][][][]C[] +C76[][][]extrapolation[][][]assign[][][]with[][][]tokens[][] ([][]ppl[][][][]Do +uble[][][][]Box[][][]t[][] x, [][]ppl[][][]const[] + +Overfull \hbox (13.81174pt too wide) in paragraph at lines 221--223 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Double[][][][]Box[][][]recycle[] +[][][]Constraint[][][][]System[][] ([][]ppl[][][][]Double[][][][]Box[][][]t[][] + $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][][]Constraint[][][][]S +ystem[] + +Overfull \hbox (10.43216pt too wide) in paragraph at lines 225--227 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Double[][][][]Box[][][]recycle[] +[][][]Generator[][][][]System[][] ([][]ppl[][][][]Double[][][][]Box[][][]t[][] +$\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][][]Generator[][][][]Sys +tem[] + +Overfull \hbox (2.53229pt too wide) in paragraph at lines 237--239 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]one[][][]affine[][][]ranking[][][]function[ +][][][]M[]S[][][][]Double[][][][]Box[][] ([][]ppl[][][]const[][][][]Double[][][ +][]Box[][][]t[][] pset, [][]ppl[][][][]Generator[] + +Overfull \hbox (0.31232pt too wide) in paragraph at lines 239--241 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]one[][][]affine[][][]ranking[][][]function[ +][][][]P[]R[][][][]Double[][][][]Box[][] ([][]ppl[][][]const[][][][]Double[][][ +][]Box[][][]t[][] pset, [][]ppl[][][][]Generator[] + +Overfull \hbox (8.11209pt too wide) in paragraph at lines 241--243 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]all[][][]affine[][][]ranking[][][]functions +[][][][]M[]S[][][][]Double[][][][]Box[][] ([][]ppl[][][]const[][][][]Double[][] +[][]Box[][][]t[][] pset, [][]ppl[][][][]Polyhedron[] + +Overfull \hbox (5.89212pt too wide) in paragraph at lines 243--245 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]all[][][]affine[][][]ranking[][][]functions +[][][][]P[]R[][][][]Double[][][][]Box[][] ([][]ppl[][][]const[][][][]Double[][] +[][]Box[][][]t[][] pset, [][]ppl[][][][]Polyhedron[] + +Overfull \hbox (6.40175pt too wide) in paragraph at lines 245--247 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]termination[][][]test[][][][]M[]S[][][][]Do +uble[][][][]Box[][][]2[][] ([][]ppl[][][]const[][][][]Double[][][][]Box[][][]t[ +][] pset[][][]before, [][]ppl[][][]const[][][][]Double[] + +Overfull \hbox (4.18178pt too wide) in paragraph at lines 247--249 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]termination[][][]test[][][][]P[]R[][][][]Do +uble[][][][]Box[][][]2[][] ([][]ppl[][][]const[][][][]Double[][][][]Box[][][]t[ +][] pset[][][]before, [][]ppl[][][]const[][][][]Double[] +[128 Overfull \hbox (7.44052pt too wide) in paragraph at lines 692--694 \OT1/ptm/m/it/10 Unifies \OT1/pcr/m/sl/10 Dimension[][][][]Type \OT1/ptm/m/it/1 0 with the di-men-sion of the vec-tor space en-clos-ing the grid ref-er-enced b @@ -17182,47 +17567,7 @@ Overfull \hbox (41.6138pt too wide) in paragraph at lines 743--745 []\OT1/pcr/m/n/10 ppl[][][][]Grid[][][]minimize[][][]with[][][]point(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[][][]1, ?Coeff[][][]2, ?Boolean, -[40] -Overfull \hbox (18.9924pt too wide) in paragraph at lines 547--548 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]refine[][][]with[][][]constraints()[] \OT1/pcr/m/n/8 int -ppl[][][][]Constraints[][][][]Product[] - -Overfull \hbox (24.54247pt too wide) in paragraph at lines 553--554 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]refine[][][]with[][][]congruences()[] \OT1/pcr/m/n/8 int -ppl[][][][]Constraints[][][][]Product[] - -Overfull \hbox (1.13237pt too wide) in paragraph at lines 559--560 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]intersection[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][] -[]Constraints[][][][]Product[] - -Overfull \hbox (7.54259pt too wide) in paragraph at lines 565--566 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]upper[][][]bound[][][]assign()[] \OT1/pcr/m/n/8 int ppl[] -[][][]Constraints[][][][]Product[] - -Overfull \hbox (1.40259pt too wide) in paragraph at lines 571--572 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]difference[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][] -Constraints[][][][]Product[][][][]C[] - -Overfull \hbox (1.6827pt too wide) in paragraph at lines 577--578 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]concatenate[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][ -]Constraints[][][][]Product[] - -Overfull \hbox (2.6125pt too wide) in paragraph at lines 583--584 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]time[][][]elapse[][][]assign()[] \OT1/pcr/m/n/8 int ppl[] -[][][]Constraints[][][][]Product[][][] - -Overfull \hbox (6.58226pt too wide) in paragraph at lines 589--590 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]upper[][][]bound[][][]assign[][][]if[][][]exact()[] \OT1/ -pcr/m/n/8 int ppl[][][][]Constraints[] -[120 +[40]] Overfull \hbox (7.24037pt too wide) in paragraph at lines 785--787 \OT1/ptm/m/it/10 Updates the grid ref-er-enced by \OT1/pcr/m/sl/10 Handle \OT1/ ptm/m/it/10 to one ob-tained by re-fin-ing its con-straint sys-tem with \OT1/pc @@ -17244,7 +17589,12 @@ Overfull \hbox (16.9953pt too wide) in paragraph at lines 822--824 []\OT1/pcr/m/n/10 ppl[][][][]Grid[][][]generalized[][][]affine[][][]image(+[]Ha ndle, +[]P[]P[]L[][][][]Var, +[]Relation[][][][]Symbol, +[] -[41]] +[41] +Overfull \hbox (1.9221pt too wide) in paragraph at lines 313--314 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]B[]D[ +][][][]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Dou +ble[][][][]Box[][][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]class +[129 Overfull \hbox (14.0138pt too wide) in paragraph at lines 825--827 []\OT1/pcr/m/n/10 ppl[][][][]Grid[][][]generalized[][][]affine[][][]preimage(+[ ]Handle, +[]P[]P[]L[][][][]Var, +[]Relation[][][][]Symbol, @@ -17276,42 +17626,7 @@ Overfull \hbox (8.0138pt too wide) in paragraph at lines 846--848 []\OT1/pcr/m/n/10 ppl[][][][]Grid[][][]wrap[][][]assign(+[]Handle, +[]List[][][ ]of[][][][]P[]P[]L[][][][]Var, +[]Width, +[]Representation, -[42] -Overfull \hbox (23.87296pt too wide) in paragraph at lines 595--596 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]constrains()[] \OT1/pcr/m/n/8 int ppl[][][][]Constraints[ -][][][]Product[][][][]C[][][][]Polyhedron[] - -Overfull \hbox (10.49197pt too wide) in paragraph at lines 601--602 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]unconstrain[][][]space[][][]dimension()[] \OT1/pcr/m/n/8 -int ppl[][][][]Constraints[] - -Overfull \hbox (14.38187pt too wide) in paragraph at lines 607--608 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]unconstrain[][][]space[][][]dimensions()[] \OT1/pcr/m/n/8 - int ppl[][][][]Constraints[] - -Overfull \hbox (33.02313pt too wide) in paragraph at lines 613--614 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]affine[][][]image()[] \OT1/pcr/m/n/8 int ppl[][][][]Const -raints[][][][]Product[][][][]C[][][][]Polyhedron[] - -Overfull \hbox (47.28302pt too wide) in paragraph at lines 619--620 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]affine[][][]preimage()[] \OT1/pcr/m/n/8 int ppl[][][][]Co -nstraints[][][][]Product[][][][]C[][][][]Polyhedron[] - -Overfull \hbox (15.30272pt too wide) in paragraph at lines 625--626 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]bounded[][][]affine[][][]image()[] \OT1/pcr/m/n/8 int ppl -[][][][]Constraints[][][][]Product[] - -Overfull \hbox (29.5626pt too wide) in paragraph at lines 631--632 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]bounded[][][]affine[][][]preimage()[] \OT1/pcr/m/n/8 int -ppl[][][][]Constraints[][][][]Product[] -[121 +[42]] Overfull \hbox (6.19531pt too wide) in paragraph at lines 875--877 []\OT1/pcr/m/n/10 ppl[][][][]Grid[][][]congruence[][][]widening[][][]assign[][] []with[][][]tokens(+[]Handle[][][]1, +[]Handle[][][]2, +[] @@ -17345,7 +17660,37 @@ -enced by \OT1/pcr/m/sl/10 Handle[][][]1 \OT1/ptm/m/it/10 the con-cate-na-tion of \OT1/pcr/m/sl/10 P \OT1/ptm/m/it/10 and the grid ref-er-enced by \OT1/pcr/m/ sl/10 Handle[] -[44]] +[44 +Overfull \hbox (3.0421pt too wide) in paragraph at lines 319--320 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]B[]D[ +][][][]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Dou +ble[][][][]Box[][][]from[][][][]B[]D[][][][]Shape[][][]mpq[][][]class + +Overfull \hbox (3.4633pt too wide) in paragraph at lines 325--326 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]Octag +onal[][][][]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][] +[]Double[][][][]Box[][][]from[][][][]Octagonal[] + +Overfull \hbox (4.5833pt too wide) in paragraph at lines 331--332 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]Octag +onal[][][][]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][] +[]Double[][][][]Box[][][]from[][][][]Octagonal[] + +Overfull \hbox (17.3135pt too wide) in paragraph at lines 349--350 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]Octag +onal[][][][]Shape[][][]double()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Double +[][][][]Box[][][]from[][][][]Octagonal[][][][]Shape[] + +Overfull \hbox (29.44342pt too wide) in paragraph at lines 355--356 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]C[][] +[][]Polyhedron[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[][][]new[][ +][][]Double[][][][]Box[][][]from[][][][]C[][][][]Polyhedron[] + +Overfull \hbox (2.60333pt too wide) in paragraph at lines 361--362 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]N[]N[ +]C[][][][]Polyhedron[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[][][] +new[][][][]Double[][][][]Box[][][]from[][][][]N[]N[]C[] +[130]] Overfull \hbox (6.19531pt too wide) in paragraph at lines 955--957 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Rational[][][][]Box[][][]from[][][]space[ ][][]dimension(+[]Dimension[][][][]Type, +[]Universe[][][]or[] @@ -17356,37 +17701,7 @@ Overfull \hbox (1.39532pt too wide) in paragraph at lines 1000--1002 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Rational[][][][]Box[][][]from[][][][]Octa gonal[][][][]Shape[][][]mpz[][][]class(+[]Handle[][][]1, -[]Handle[][][] -[45 -Overfull \hbox (26.94246pt too wide) in paragraph at lines 637--638 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]generalized[][][]affine[][][]image()[] \OT1/pcr/m/n/8 int - ppl[][][][]Constraints[][][][]Product[] - -Overfull \hbox (4.72232pt too wide) in paragraph at lines 643--644 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]generalized[][][]affine[][][]preimage()[] \OT1/pcr/m/n/8 -int ppl[][][][]Constraints[] - -Overfull \hbox (23.78194pt too wide) in paragraph at lines 649--650 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]generalized[][][]affine[][][]image[][][]lhs[][][]rhs()[] -\OT1/pcr/m/n/8 int ppl[][][][]Constraints[] - -Overfull \hbox (38.04182pt too wide) in paragraph at lines 655--656 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]generalized[][][]affine[][][]preimage[][][]lhs[][][]rhs() -[] \OT1/pcr/m/n/8 int ppl[][][][]Constraints[] - -Overfull \hbox (31.03197pt too wide) in paragraph at lines 661--662 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]add[][][]space[][][]dimensions[][][]and[][][]embed()[] \O -T1/pcr/m/n/8 int ppl[][][][]Constraints[] - -Overfull \hbox (33.062pt too wide) in paragraph at lines 667--668 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]add[][][]space[][][]dimensions[][][]and[][][]project()[] -\OT1/pcr/m/n/8 int ppl[][][][]Constraints[] -[122]] +[45] Overfull \hbox (1.39532pt too wide) in paragraph at lines 1003--1005 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Rational[][][][]Box[][][]from[][][][]Octa gonal[][][][]Shape[][][]mpq[][][]class(+[]Handle[][][]1, -[]Handle[][][] @@ -17428,6 +17743,46 @@ []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Rational[][][][]Box[][][]from[][][][]Octa gonal[][][][]Shape[][][]mpq[][][]class[][][]with[][][]complexity(+[]Handle, [46] +Overfull \hbox (17.61194pt too wide) in paragraph at lines 367--368 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]Grid[ +][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Double[][] +[][]Box[][][]from[][][][]Grid[][][]with[][][]complexity + +Overfull \hbox (9.21332pt too wide) in paragraph at lines 373--374 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]Ratio +nal[][][][]Box[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[][][]new[][ +][][]Double[][][][]Box[][][]from[][][][]Rational[] + +Overfull \hbox (0.13283pt too wide) in paragraph at lines 379--380 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]B[]D[ +][][][]Shape[][][]mpz[][][]class[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 i +nt ppl[][][]new[][][][]Double[][][][]Box[][][]from[] + +Overfull \hbox (1.25282pt too wide) in paragraph at lines 385--386 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]B[]D[ +][][][]Shape[][][]mpq[][][]class[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 i +nt ppl[][][]new[][][][]Double[][][][]Box[][][]from[] + +Overfull \hbox (8.05254pt too wide) in paragraph at lines 391--392 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]Octag +onal[][][][]Shape[][][]mpz[][][]class[][][]with[][][]complexity()[] \OT1/pcr/m/ +n/8 int ppl[][][]new[][][][]Double[][][][]Box[] + +Overfull \hbox (9.17253pt too wide) in paragraph at lines 397--398 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]Octag +onal[][][][]Shape[][][]mpq[][][]class[][][]with[][][]complexity()[] \OT1/pcr/m/ +n/8 int ppl[][][]new[][][][]Double[][][][]Box[] + +Overfull \hbox (10.78336pt too wide) in paragraph at lines 403--404 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]Doubl +e[][][][]Box[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][ +][]Double[][][][]Box[][][]from[][][][]Double[][][][]Box[] + +Overfull \hbox (2.46303pt too wide) in paragraph at lines 409--410 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]B[]D[ +][][][]Shape[][][]double[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[] +[][]new[][][][]Double[][][][]Box[][][]from[][][][]B[]D[][][] +[131] Overfull \hbox (15.2138pt too wide) in paragraph at lines 1039--1041 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Rational[][][][]Box[][][]from[][][][]Doub le[][][][]Box[][][]with[][][]complexity(+[]Handle, +[]Complexity, @@ -17439,47 +17794,7 @@ Overfull \hbox (6.81381pt too wide) in paragraph at lines 1045--1047 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Rational[][][][]Box[][][]from[][][][]Octa gonal[][][][]Shape[][][]double[][][]with[][][]complexity(+[]Handle, -[47 -Overfull \hbox (31.01239pt too wide) in paragraph at lines 673--674 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]remove[][][]space[][][]dimensions()[] \OT1/pcr/m/n/8 int -ppl[][][][]Constraints[][][][]Product[] - -Overfull \hbox (25.91202pt too wide) in paragraph at lines 679--680 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]remove[][][]higher[][][]space[][][]dimensions()[] \OT1/pc -r/m/n/8 int ppl[][][][]Constraints[] - -Overfull \hbox (26.97238pt too wide) in paragraph at lines 685--686 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]expand[][][]space[][][]dimension()[] \OT1/pcr/m/n/8 int p -pl[][][][]Constraints[][][][]Product[] - -Overfull \hbox (16.16231pt too wide) in paragraph at lines 691--692 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]fold[][][]space[][][]dimensions()[] \OT1/pcr/m/n/8 int pp -l[][][][]Constraints[][][][]Product[] - -Overfull \hbox (18.63242pt too wide) in paragraph at lines 697--698 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]map[][][]space[][][]dimensions()[] \OT1/pcr/m/n/8 int ppl -[][][][]Constraints[][][][]Product[] - -Overfull \hbox (13.61229pt too wide) in paragraph at lines 703--704 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]drop[][][]some[][][]non[][][]integer[][][]points()[] \OT1 -/pcr/m/n/8 int ppl[][][][]Constraints[] - -Overfull \hbox (22.2123pt too wide) in paragraph at lines 709--710 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]drop[][][]some[][][]non[][][]integer[][][]points[][][]2() -[] \OT1/pcr/m/n/8 int ppl[][][][]Constraints[] - -Overfull \hbox (33.1626pt too wide) in paragraph at lines 715--716 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]external[][][]memory[][][]in[][][]bytes()[] \OT1/pcr/m/n/ -8 int ppl[][][][]Constraints[][][][]Product[] -[123] +[47] Overfull \hbox (25.3953pt too wide) in paragraph at lines 1113--1115 []\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][]relation[][][]with[][][]c onstraint(+[]Handle, +[]Constraint, ?Relation[] @@ -17511,7 +17826,7 @@ Overfull \hbox (26.0138pt too wide) in paragraph at lines 1144--1146 []\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][]maximize(+[]Handle, +[]Li n[][][][]Expr, ?Coeff[][][]1, ?Coeff[][][]2, ?Boolean) -[48]] +[48] Overfull \hbox (26.0138pt too wide) in paragraph at lines 1149--1151 []\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][]minimize(+[]Handle, +[]Li n[][][][]Expr, ?Coeff[][][]1, ?Coeff[][][]2, ?Boolean) @@ -17523,7 +17838,22 @@ Overfull \hbox (20.5953pt too wide) in paragraph at lines 1159--1161 []\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][]minimize[][][]with[][][]p oint(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[][][]1, ?Coeff[] -[49] +[49 +Overfull \hbox (17.10274pt too wide) in paragraph at lines 415--416 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]Octag +onal[][][][]Shape[][][]double[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int +ppl[][][]new[][][][]Double[][][][]Box[][][]from[] + +Overfull \hbox (1.68216pt too wide) in paragraph at lines 421--422 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]Const +raint[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Double[][][][]Bo +x[][][]from[][][][]Constraint[][][][]System ( + +Overfull \hbox (7.23222pt too wide) in paragraph at lines 427--428 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]Congr +uence[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Double[][][][]Bo +x[][][]from[][][][]Congruence[][][][]System ( +[132]] Overfull \hbox (3.2138pt too wide) in paragraph at lines 1217--1219 []\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][]unconstrain[][][]space[][ ][]dimensions(+[]Handle, +[]List[][][]of[][][][]P[]P[]L[][][][]Var) @@ -17548,47 +17878,7 @@ Overfull \hbox (22.9953pt too wide) in paragraph at lines 1235--1237 []\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][]generalized[][][]affine[] [][]preimage(+[]Handle, +[]P[]P[]L[][][][]Var, +[]Relation[] -[50 -Overfull \hbox (17.7627pt too wide) in paragraph at lines 721--722 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]total[][][]memory[][][]in[][][]bytes()[] \OT1/pcr/m/n/8 i -nt ppl[][][][]Constraints[][][][]Product[] - -Overfull \hbox (7.33206pt too wide) in paragraph at lines 727--728 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]widening[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/m -/n/8 int ppl[][][][]Constraints[] - -Overfull \hbox (0.60266pt too wide) in paragraph at lines 733--734 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]widening[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]Co -nstraints[][][][]Product[][][][]C[][][] - -Overfull \hbox (1.51312pt too wide) in paragraph at lines 739--740 - []\OT1/ptm/b/n/10 ppl[][][]io[][][]print[][][][]Constraints[][][][]Product[][] -[][]C[][][][]Polyhedron[][][][]Grid()[] \OT1/pcr/m/n/8 int ppl[][][]io[][][]pri -nt[][][][]Constraints[][][][]Product[][][][]C[] - -Overfull \hbox (1.96307pt too wide) in paragraph at lines 745--746 - []\OT1/ptm/b/n/10 ppl[][][]io[][][]fprint[][][][]Constraints[][][][]Product[][ -][][]C[][][][]Polyhedron[][][][]Grid()[] \OT1/pcr/m/n/8 int ppl[][][]io[][][]fp -rint[][][][]Constraints[][][][]Product[] - -Overfull \hbox (12.32301pt too wide) in paragraph at lines 751--752 - []\OT1/ptm/b/n/10 ppl[][][]io[][][]asprint[][][][]Constraints[][][][]Product[] -[][][]C[][][][]Polyhedron[][][][]Grid()[] \OT1/pcr/m/n/8 int ppl[][][]io[][][]a -sprint[][][][]Constraints[][][][]Product[] - -Overfull \hbox (27.48296pt too wide) in paragraph at lines 757--758 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]ascii[][][]dump()[] \OT1/pcr/m/n/8 int ppl[][][][]Constra -ints[][][][]Product[][][][]C[][][][]Polyhedron[] - -Overfull \hbox (20.81302pt too wide) in paragraph at lines 763--764 - []\OT1/ptm/b/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhe -dron[][][][]Grid[][][]ascii[][][]load()[] \OT1/pcr/m/n/8 int ppl[][][][]Constra -ints[][][][]Product[][][][]C[][][][]Polyhedron[] -[124] +[50] Overfull \hbox (15.79532pt too wide) in paragraph at lines 1238--1240 []\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][]generalized[][][]affine[] [][]image[][][]lhs[][][]rhs(+[]Handle, +[]Lin[][][][]Expr[][][]1, +[] @@ -17608,7 +17898,7 @@ Overfull \hbox (26.5953pt too wide) in paragraph at lines 1269--1271 []\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][]linear[][][]partition(+[] Handle[][][]1, +[]Handle[][][]2, -[]Handle[][][]3, -[]Handle[] -[51]]) (./interfaceppl__Double__Box__tag.tex +[51 [133]] Overfull \hbox (15.79532pt too wide) in paragraph at lines 1276--1278 []\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][][]C[]C76[][][]widening[][ ][]assign[][][]with[][][]tokens(+[]Handle[][][]1, +[]Handle[][][]2, +[] @@ -17617,68 +17907,14 @@ []\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][]widening[][][]assign[][][ ]with[][][]tokens(+[]Handle[][][]1, +[]Handle[][][]2, +[]C[][][]unsigned[] -Overfull \hbox (0.19531pt too wide) in paragraph at lines 1288--1290 -[]\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][]limited[][][][]C[]C76[][] -[]extrapolation[][][]assign[][][]with[][][]tokens(+[]Handle[] - -Overfull \hbox (0.19531pt too wide) in paragraph at lines 1291--1293 -[]\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][]limited[][][][]C[]C76[][] -[]extrapolation[][][]assign(+[]Handle[][][]1, +[]Handle[][][] -[52] -Overfull \hbox (7.5225pt too wide) in paragraph at lines 27--29 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][ -][]B[]D[][][][]Shape[][][]mpz[][][]class[][] ([][]ppl[][][][]Double[][][][]Box[ -][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][]const[][][] -[]B[]D[][][][]Shape[] - -Overfull \hbox (8.08257pt too wide) in paragraph at lines 29--31 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][ -][]B[]D[][][][]Shape[][][]mpq[][][]class[][] ([][]ppl[][][][]Double[][][][]Box[ -][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][]const[][][] -[]B[]D[][][][]Shape[] - -Overfull \hbox (20.86249pt too wide) in paragraph at lines 39--41 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][ -][]Octagonal[][][][]Shape[][][]double[][] ([][]ppl[][][][]Double[][][][]Box[][] -[]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][]const[][][][]O -ctagonal[] - -Overfull \hbox (2.41263pt too wide) in paragraph at lines 41--43 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][ -][]C[][][][]Polyhedron[][][]with[][][]complexity[][] ([][]ppl[][][][]Double[][] -[][]Box[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][]con -st[] - -Overfull \hbox (0.19238pt too wide) in paragraph at lines 47--49 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][ -][]Rational[][][][]Box[][][]with[][][]complexity[][] ([][]ppl[][][][]Double[][] -[][]Box[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][]con -st[] - -Overfull \hbox (7.11237pt too wide) in paragraph at lines 49--51 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][ -][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]with[][][]complexity[][] ([][]ppl -[][][][]Double[][][][]Box[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph -, [][]ppl[] - -Overfull \hbox (7.67242pt too wide) in paragraph at lines 51--53 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][ -][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]with[][][]complexity[][] ([][]ppl -[][][][]Double[][][][]Box[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph -, [][]ppl[] - -Overfull \hbox (10.54063pt too wide) in paragraph at lines 53--55 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][ -][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]with[][][]complexity[][] ([] -[]ppl[][][][]Double[][][][]Box[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/1 -0 pph, +Overfull \hbox (0.19531pt too wide) in paragraph at lines 1288--1290 +[]\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][]limited[][][][]C[]C76[][] +[]extrapolation[][][]assign[][][]with[][][]tokens(+[]Handle[] -Overfull \hbox (11.1007pt too wide) in paragraph at lines 55--57 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][ -][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]with[][][]complexity[][] ([] -[]ppl[][][][]Double[][][][]Box[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/1 -0 pph, -[125 +Overfull \hbox (0.19531pt too wide) in paragraph at lines 1291--1293 +[]\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][]limited[][][][]C[]C76[][] +[]extrapolation[][][]assign(+[]Handle[][][]1, +[]Handle[][][] +[52] Overfull \hbox (9.2138pt too wide) in paragraph at lines 1310--1312 []\OT1/pcr/m/n/10 ppl[][][][]Rational[][][][]Box[][][]add[][][]space[][][]dimen sions[][][]and[][][]embed(+[]Handle, +[]Dimension[][][][]Type) @@ -17710,7 +17946,7 @@ Overfull \hbox (3.2138pt too wide) in paragraph at lines 1357--1359 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] []from[][][]congruences(+[]Congruence[][][][]System, -[]Handle) -[53] +[53 [134]] Underfull \hbox (badness 10000) in paragraph at lines 1368--1369 @@ -17737,7 +17973,17 @@ Overfull \hbox (13.39532pt too wide) in paragraph at lines 1404--1406 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] []from[][][][]Octagonal[][][][]Shape[][][]double(+[]Handle[][][]1, -[]Handle[] -[54]] +[54] +Overfull \hbox (9.26186pt too wide) in paragraph at lines 595--596 + []\OT1/ptm/b/n/10 ppl[][][][]Double[][][][]Box[][][]strictly[][][]contains[][] +[][]Double[][][][]Box()[] \OT1/pcr/m/n/8 int ppl[][][][]Double[][][][]Box[][][] +strictly[][][]contains[][][][]Double[][][][]Box ( + +Overfull \hbox (0.412pt too wide) in paragraph at lines 601--602 + []\OT1/ptm/b/n/10 ppl[][][][]Double[][][][]Box[][][]is[][][]disjoint[][][]from +[][][][]Double[][][][]Box()[] \OT1/pcr/m/n/8 int ppl[][][][]Double[][][][]Box[] +[][]is[][][]disjoint[][][]from[][][][]Double[][][][]Box ( +[135] Overfull \hbox (1.39532pt too wide) in paragraph at lines 1407--1409 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] []from[][][][]C[][][][]Polyhedron[][][]with[][][]complexity(+[]Handle, +[] @@ -17788,59 +18034,7 @@ Overfull \hbox (4.99533pt too wide) in paragraph at lines 1437--1439 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][] []from[][][][]Octagonal[][][][]Shape[][][]double[][][]with[][][]complexity(+[] -[55 -Overfull \hbox (9.49263pt too wide) in paragraph at lines 65--67 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][ -][]Congruence[][][][]System[][] ([][]ppl[][][][]Double[][][][]Box[][][]t[][] $\ -OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][]const[][][][]Congruence[ -] - -Overfull \hbox (3.63234pt too wide) in paragraph at lines 77--79 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Double[][][][]Box[][][]relation[][][]with -[][][][]Congruence[][] ([][]ppl[][][]const[][][][]Double[][][][]Box[][][]t[][] -ph, [][]ppl[][][]const[][][][]Congruence[] - -Overfull \hbox (6.28996pt too wide) in paragraph at lines 79--81 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Double[][][][]Box[][][]get[][][]constrain -ts[][] ([][]ppl[][][]const[][][][]Double[][][][]Box[][][]t[][] ph, [][]ppl[][][ -]const[][][][]Constraint[][][][]System[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/pt -m/bc/n/10 pcs) - -Overfull \hbox (11.96216pt too wide) in paragraph at lines 85--87 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Double[][][][]Box[][][]get[][][]minimized -[][][]congruences[][] ([][]ppl[][][]const[][][][]Double[][][][]Box[][][]t[][] p -h, [][]ppl[][][]const[][][][]Congruence[] - -Overfull \hbox (4.71272pt too wide) in paragraph at lines 101--103 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Double[][][][]Box[][][]bounds[][][]from[] -[][]above[][] ([][]ppl[][][]const[][][][]Double[][][][]Box[][][]t[][] ph, [][]p -pl[][][]const[][][][]Linear[][][][]Expression[] - -Overfull \hbox (5.32245pt too wide) in paragraph at lines 103--105 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Double[][][][]Box[][][]bounds[][][]from[] -[][]below[][] ([][]ppl[][][]const[][][][]Double[][][][]Box[][][]t[][] ph, [][]p -pl[][][]const[][][][]Linear[][][][]Expression[] - -Overfull \hbox (9.72252pt too wide) in paragraph at lines 105--107 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Double[][][][]Box[][][]get[][][]upper[][] -[]bound[][] ([][]ppl[][][][]Double[][][][]Box[][][]t[][] ps, [][]ppl[][][]dimen -sion[][][]type[][] var, [][]ppl[][][][]Coefficient[] - -Overfull \hbox (9.47238pt too wide) in paragraph at lines 107--109 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Double[][][][]Box[][][]get[][][]lower[][] -[]bound[][] ([][]ppl[][][][]Double[][][][]Box[][][]t[][] ps, [][]ppl[][][]dimen -sion[][][]type[][] var, [][]ppl[][][][]Coefficient[] - -Overfull \hbox (10.58188pt too wide) in paragraph at lines 113--115 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Double[][][][]Box[][][]maximize[][][]with -[][][]point[][] ([][]ppl[][][]const[][][][]Double[][][][]Box[][][]t[][] ph, [][ -]ppl[][][]const[][][][]Linear[][][][]Expression[] - -Overfull \hbox (8.92183pt too wide) in paragraph at lines 115--117 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Double[][][][]Box[][][]minimize[][][]with -[][][]point[][] ([][]ppl[][][]const[][][][]Double[][][][]Box[][][]t[][] ph, [][ -]ppl[][][]const[][][][]Linear[][][][]Expression[] -[126] +[55] Overfull \hbox (4.99533pt too wide) in paragraph at lines 1480--1482 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]strictl y[][][]contains[][][][]B[]D[][][][]Shape[][][]mpz[][][]class(+[]Handle[][][]1, @@ -17868,7 +18062,7 @@ \OT1/ptm/m/it/10 Unifies \OT1/pcr/m/sl/10 Relation[][][][]List \OT1/ptm/m/it/10 with the list of re-la-tions the bd shape ref-er-enced by \OT1/pcr/m/sl/10 Han dle \OT1/ptm/m/it/10 has with \OT1/pcr/m/sl/10 Generator\OT1/ptm/m/it/10 . -[56]] +[56] [136] Overfull \hbox (56.5953pt too wide) in paragraph at lines 1511--1513 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]relatio n[][][]with[][][]congruence(+[]Handle, +[]Congruence, ?Relation[] @@ -17923,31 +18117,26 @@ []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]affine[ ][][]image(+[]Handle, +[]P[]P[]L[][][][]Var, +[]Lin[][][][]Expr, +[]Coeff) [58] -Overfull \hbox (5.85234pt too wide) in paragraph at lines 143--145 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Double[][][][]Box[][][]refine[][][]with[] -[][]congruences[][] ([][]ppl[][][][]Double[][][][]Box[][][]t[][] ph, [][]ppl[][ -][]const[][][][]Congruence[][][][]System[] - -Overfull \hbox (0.82236pt too wide) in paragraph at lines 165--167 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Double[][][][]Box[][][]affine[][][]image[ -][] ([][]ppl[][][][]Double[][][][]Box[][][]t[][] ph, [][]ppl[][][]dimension[][] -[]type[][] var, [][]ppl[][][]const[][][][]Linear[] +Overfull \hbox (0.60197pt too wide) in paragraph at lines 697--698 + []\OT1/ptm/b/n/10 ppl[][][][]Double[][][][]Box[][][]upper[][][]bound[][][]assi +gn[][][]if[][][]exact()[] \OT1/pcr/m/n/8 int ppl[][][][]Double[][][][]Box[][][] +upper[][][]bound[][][]assign[][][]if[][][]exact ( -Overfull \hbox (9.33069pt too wide) in paragraph at lines 175--177 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Double[][][][]Box[][][]generalized[][][]a -ffine[][][]preimage[][] ([][]ppl[][][][]Double[][][][]Box[][][]t[][] ph, [][]pp -l[][][]dimension[][][]type[][] var, enum +Overfull \hbox (6.14165pt too wide) in paragraph at lines 703--704 + []\OT1/ptm/b/n/10 ppl[][][][]Double[][][][]Box[][][]simplify[][][]using[][][]c +ontext[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]Double[][][][]Box[][][]sim +plify[][][]using[][][]context[][][]assign -Overfull \hbox (32.23175pt too wide) in paragraph at lines 177--179 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Double[][][][]Box[][][]generalized[][][]a -ffine[][][]image[][][]lhs[][][]rhs[][] ([][]ppl[][][][]Double[][][][]Box[][][]t -[][] ph, [][]ppl[][][]const[][][][]Linear[][][][]Expression[] +Overfull \hbox (8.35168pt too wide) in paragraph at lines 715--716 + []\OT1/ptm/b/n/10 ppl[][][][]Double[][][][]Box[][][]unconstrain[][][]space[][] +[]dimension()[] \OT1/pcr/m/n/8 int ppl[][][][]Double[][][][]Box[][][]unconstrai +n[][][]space[][][]dimension ( -Overfull \hbox (8.37874pt too wide) in paragraph at lines 185--187 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Double[][][][]Box[][][]remove[][][]space[ -][][]dimensions[][] ([][]ppl[][][][]Double[][][][]Box[][][]t[][] ph, [][]ppl[][ -][]dimension[][][]type[][] ds[]$ $[], size[] -[127 +Overfull \hbox (7.44157pt too wide) in paragraph at lines 721--722 + []\OT1/ptm/b/n/10 ppl[][][][]Double[][][][]Box[][][]unconstrain[][][]space[][] +[]dimensions()[] \OT1/pcr/m/n/8 int ppl[][][][]Double[][][][]Box[][][]unconstra +in[][][]space[][][]dimensions +[137] Overfull \hbox (0.19531pt too wide) in paragraph at lines 1605--1607 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]affine[ ][][]preimage(+[]Handle, +[]P[]P[]L[][][][]Var, +[]Lin[][][][]Expr, +[] @@ -17979,7 +18168,32 @@ Overfull \hbox (3.79532pt too wide) in paragraph at lines 1626--1628 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]wrap[][ ][]assign(+[]Handle, +[]List[][][]of[][][][]P[]P[]L[][][][]Var, +[]Width, +[] -[59]] +[59] +Overfull \hbox (2.58203pt too wide) in paragraph at lines 757--758 + []\OT1/ptm/b/n/10 ppl[][][][]Double[][][][]Box[][][]generalized[][][]affine[][ +][]preimage()[] \OT1/pcr/m/n/8 int ppl[][][][]Double[][][][]Box[][][]generalize +d[][][]affine[][][]preimage ( + +Overfull \hbox (6.62314pt too wide) in paragraph at lines 763--764 + []\OT1/ptm/b/n/10 ppl[][][][]Double[][][][]Box[][][]generalized[][][]affine[][ +][]image[][][]lhs[][][]rhs()[] \OT1/pcr/m/n/8 int ppl[][][][]Double[][][][]Box[ +][][]generalized[][][]affine[][][]image[] + +Overfull \hbox (35.28304pt too wide) in paragraph at lines 769--770 + []\OT1/ptm/b/n/10 ppl[][][][]Double[][][][]Box[][][]generalized[][][]affine[][ +][]preimage[][][]lhs[][][]rhs()[] \OT1/pcr/m/n/8 int ppl[][][][]Double[][][][]B +ox[][][]generalized[][][]affine[][][]preimage[] + +Overfull \hbox (11.95317pt too wide) in paragraph at lines 775--776 + []\OT1/ptm/b/n/10 ppl[][][][]Double[][][][]Box[][][]add[][][]space[][][]dimens +ions[][][]and[][][]embed()[] \OT1/pcr/m/n/8 int ppl[][][][]Double[][][][]Box[][ +][]add[][][]space[][][]dimensions[][][]and[] + +Overfull \hbox (13.9832pt too wide) in paragraph at lines 781--782 + []\OT1/ptm/b/n/10 ppl[][][][]Double[][][][]Box[][][]add[][][]space[][][]dimens +ions[][][]and[][][]project()[] \OT1/pcr/m/n/8 int ppl[][][][]Double[][][][]Box[ +][][]add[][][]space[][][]dimensions[][][]and[] +[138] Overfull \hbox (3.79532pt too wide) in paragraph at lines 1648--1650 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]simplif y[][][]using[][][]context[][][]assign(+[]Handle[][][]1, +[]Handle[] @@ -18029,64 +18243,22 @@ Overfull \hbox (15.79532pt too wide) in paragraph at lines 1710--1712 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]add[][] []space[][][]dimensions[][][]and[][][]embed(+[]Handle, +[]Dimension[] -[61 -Overfull \hbox (8.12848pt too wide) in paragraph at lines 193--195 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Double[][][][]Box[][][]map[][][]space[][] -[]dimensions[][] ([][]ppl[][][][]Double[][][][]Box[][][]t[][] ph, [][]ppl[][][] -dimension[][][]type[][] maps[]$ $[], size[] - -Overfull \hbox (6.6776pt too wide) in paragraph at lines 197--199 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Double[][][][]Box[][][]drop[][][]some[][] -[]non[][][]integer[][][]points[][][]2[][] ([][]ppl[][][][]Double[][][][]Box[][] -[]t[][] ph, [][]ppl[][][]dimension[][][]type[][] ds[]$ $[], - -Overfull \hbox (9.24174pt too wide) in paragraph at lines 211--213 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Double[][][][]Box[][][]limited[][][][]C[] -C76[][][]extrapolation[][][]assign[][][]with[][][]tokens[][] ([][]ppl[][][][]Do -uble[][][][]Box[][][]t[][] x, [][]ppl[][][]const[] - -Overfull \hbox (13.81174pt too wide) in paragraph at lines 221--223 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Double[][][][]Box[][][]recycle[] -[][][]Constraint[][][][]System[][] ([][]ppl[][][][]Double[][][][]Box[][][]t[][] - $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][][]Constraint[][][][]S -ystem[] - -Overfull \hbox (10.43216pt too wide) in paragraph at lines 225--227 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Double[][][][]Box[][][]recycle[] -[][][]Generator[][][][]System[][] ([][]ppl[][][][]Double[][][][]Box[][][]t[][] -$\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][][]Generator[][][][]Sys -tem[] - -Overfull \hbox (2.53229pt too wide) in paragraph at lines 237--239 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]one[][][]affine[][][]ranking[][][]function[ -][][][]M[]S[][][][]Double[][][][]Box[][] ([][]ppl[][][]const[][][][]Double[][][ -][]Box[][][]t[][] pset, [][]ppl[][][][]Generator[] - -Overfull \hbox (0.31232pt too wide) in paragraph at lines 239--241 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]one[][][]affine[][][]ranking[][][]function[ -][][][]P[]R[][][][]Double[][][][]Box[][] ([][]ppl[][][]const[][][][]Double[][][ -][]Box[][][]t[][] pset, [][]ppl[][][][]Generator[] - -Overfull \hbox (8.11209pt too wide) in paragraph at lines 241--243 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]all[][][]affine[][][]ranking[][][]functions -[][][][]M[]S[][][][]Double[][][][]Box[][] ([][]ppl[][][]const[][][][]Double[][] -[][]Box[][][]t[][] pset, [][]ppl[][][][]Polyhedron[] - -Overfull \hbox (5.89212pt too wide) in paragraph at lines 243--245 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]all[][][]affine[][][]ranking[][][]functions -[][][][]P[]R[][][][]Double[][][][]Box[][] ([][]ppl[][][]const[][][][]Double[][] -[][]Box[][][]t[][] pset, [][]ppl[][][][]Polyhedron[] +[61] +Overfull \hbox (26.65173pt too wide) in paragraph at lines 793--794 + []\OT1/ptm/b/n/10 ppl[][][][]Double[][][][]Box[][][]remove[][][]higher[][][]sp +ace[][][]dimensions()[] \OT1/pcr/m/n/8 int ppl[][][][]Double[][][][]Box[][][]re +move[][][]higher[][][]space[][][]dimensions -Overfull \hbox (6.40175pt too wide) in paragraph at lines 245--247 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]termination[][][]test[][][][]M[]S[][][][]Do -uble[][][][]Box[][][]2[][] ([][]ppl[][][]const[][][][]Double[][][][]Box[][][]t[ -][] pset[][][]before, [][]ppl[][][]const[][][][]Double[] +Overfull \hbox (2.832pt too wide) in paragraph at lines 817--818 + []\OT1/ptm/b/n/10 ppl[][][][]Double[][][][]Box[][][]drop[][][]some[][][]non[][ +][]integer[][][]points()[] \OT1/pcr/m/n/8 int ppl[][][][]Double[][][][]Box[][][ +]drop[][][]some[][][]non[][][]integer[][][]points -Overfull \hbox (4.18178pt too wide) in paragraph at lines 247--249 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]termination[][][]test[][][][]P[]R[][][][]Do -uble[][][][]Box[][][]2[][] ([][]ppl[][][]const[][][][]Double[][][][]Box[][][]t[ -][] pset[][][]before, [][]ppl[][][]const[][][][]Double[] -[128]] +Overfull \hbox (20.41351pt too wide) in paragraph at lines 823--824 + []\OT1/ptm/b/n/10 ppl[][][][]Double[][][][]Box[][][]drop[][][]some[][][]non[][ +][]integer[][][]points[][][]2()[] \OT1/pcr/m/n/8 int ppl[][][][]Double[][][][]B +ox[][][]drop[][][]some[][][]non[][][]integer[][][]points[] +[139] Overfull \hbox (27.79532pt too wide) in paragraph at lines 1713--1715 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]add[][] []space[][][]dimensions[][][]and[][][]project(+[]Handle, +[]Dimension[] @@ -18120,12 +18292,7 @@ Overfull \hbox (3.2138pt too wide) in paragraph at lines 1757--1759 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] []from[][][]congruences(+[]Congruence[][][][]System, -[]Handle) -[62 -Overfull \hbox (1.9221pt too wide) in paragraph at lines 313--314 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]B[]D[ -][][][]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Dou -ble[][][][]Box[][][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]class -[129] +[62] Underfull \hbox (badness 10000) in paragraph at lines 1768--1769 @@ -18156,7 +18323,22 @@ Overfull \hbox (1.39532pt too wide) in paragraph at lines 1807--1809 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] []from[][][][]C[][][][]Polyhedron[][][]with[][][]complexity(+[]Handle, +[] -[63]] +[63] +Overfull \hbox (1.8932pt too wide) in paragraph at lines 841--842 + []\OT1/ptm/b/n/10 ppl[][][][]Double[][][][]Box[][][][]C[]C76[][][]widening[][] +[]assign[][][]with[][][]tokens()[] \OT1/pcr/m/n/8 int ppl[][][][]Double[][][][] +Box[][][][]C[]C76[][][]widening[][][]assign[][][] + +Overfull \hbox (3.27177pt too wide) in paragraph at lines 853--854 + []\OT1/ptm/b/n/10 ppl[][][][]Double[][][][]Box[][][]widening[][][]assign[][][] +with[][][]tokens()[] \OT1/pcr/m/n/8 int ppl[][][][]Double[][][][]Box[][][]widen +ing[][][]assign[][][]with[][][]tokens ( + +Overfull \hbox (25.9632pt too wide) in paragraph at lines 871--872 + []\OT1/ptm/b/n/10 ppl[][][][]Double[][][][]Box[][][]limited[][][][]C[]C76[][][ +]extrapolation[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]Double[][][][]Box[ +][][]limited[][][][]C[]C76[][][]extrapolation[] +[140] Overfull \hbox (13.39532pt too wide) in paragraph at lines 1810--1812 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] []from[][][][]N[]N[]C[][][][]Polyhedron[][][]with[][][]complexity(+[]Handle, +[ @@ -18204,36 +18386,6 @@ []\OT1/pcr/m/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][] []from[][][][]Octagonal[][][][]Shape[][][]double[][][]with[][][]complexity(+[] [64] -Overfull \hbox (3.0421pt too wide) in paragraph at lines 319--320 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]B[]D[ -][][][]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Dou -ble[][][][]Box[][][]from[][][][]B[]D[][][][]Shape[][][]mpq[][][]class - -Overfull \hbox (3.4633pt too wide) in paragraph at lines 325--326 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]Octag -onal[][][][]Shape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][] -[]Double[][][][]Box[][][]from[][][][]Octagonal[] - -Overfull \hbox (4.5833pt too wide) in paragraph at lines 331--332 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]Octag -onal[][][][]Shape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][] -[]Double[][][][]Box[][][]from[][][][]Octagonal[] - -Overfull \hbox (17.3135pt too wide) in paragraph at lines 349--350 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]Octag -onal[][][][]Shape[][][]double()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Double -[][][][]Box[][][]from[][][][]Octagonal[][][][]Shape[] - -Overfull \hbox (29.44342pt too wide) in paragraph at lines 355--356 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]C[][] -[][]Polyhedron[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[][][]new[][ -][][]Double[][][][]Box[][][]from[][][][]C[][][][]Polyhedron[] - -Overfull \hbox (2.60333pt too wide) in paragraph at lines 361--362 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]N[]N[ -]C[][][][]Polyhedron[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[][][] -new[][][][]Double[][][][]Box[][][]from[][][][]N[]N[]C[] -[130 Overfull \hbox (4.99533pt too wide) in paragraph at lines 1880--1882 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]strictl y[][][]contains[][][][]B[]D[][][][]Shape[][][]mpq[][][]class(+[]Handle[][][]1, @@ -18261,7 +18413,22 @@ \OT1/ptm/m/it/10 Unifies \OT1/pcr/m/sl/10 Relation[][][][]List \OT1/ptm/m/it/10 with the list of re-la-tions the bd shape ref-er-enced by \OT1/pcr/m/sl/10 Han dle \OT1/ptm/m/it/10 has with \OT1/pcr/m/sl/10 Generator\OT1/ptm/m/it/10 . -[65]] +[65 +Overfull \hbox (15.36191pt too wide) in paragraph at lines 895--896 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]recycle[][][][]Co +nstraint[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Double[][][][ +]Box[][][]recycle[][][][]Constraint[][][][]System + +Overfull \hbox (1.09346pt too wide) in paragraph at lines 901--902 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]recycle[][][][]Co +ngruence[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Double[][][][ +]Box[][][]recycle[][][][]Congruence[][][] + +Overfull \hbox (8.88197pt too wide) in paragraph at lines 907--908 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]recycle[][][][]Ge +nerator[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Double[][][][] +Box[][][]recycle[][][][]Generator[][][][]System +[141]] Overfull \hbox (56.5953pt too wide) in paragraph at lines 1911--1913 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]relatio n[][][]with[][][]congruence(+[]Handle, +[]Congruence, ?Relation[] @@ -18295,46 +18462,6 @@ []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]minimiz e[][][]with[][][]point(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[][][]1, [66] -Overfull \hbox (17.61194pt too wide) in paragraph at lines 367--368 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]Grid[ -][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Double[][] -[][]Box[][][]from[][][][]Grid[][][]with[][][]complexity - -Overfull \hbox (9.21332pt too wide) in paragraph at lines 373--374 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]Ratio -nal[][][][]Box[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[][][]new[][ -][][]Double[][][][]Box[][][]from[][][][]Rational[] - -Overfull \hbox (0.13283pt too wide) in paragraph at lines 379--380 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]B[]D[ -][][][]Shape[][][]mpz[][][]class[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 i -nt ppl[][][]new[][][][]Double[][][][]Box[][][]from[] - -Overfull \hbox (1.25282pt too wide) in paragraph at lines 385--386 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]B[]D[ -][][][]Shape[][][]mpq[][][]class[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 i -nt ppl[][][]new[][][][]Double[][][][]Box[][][]from[] - -Overfull \hbox (8.05254pt too wide) in paragraph at lines 391--392 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]Octag -onal[][][][]Shape[][][]mpz[][][]class[][][]with[][][]complexity()[] \OT1/pcr/m/ -n/8 int ppl[][][]new[][][][]Double[][][][]Box[] - -Overfull \hbox (9.17253pt too wide) in paragraph at lines 397--398 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]Octag -onal[][][][]Shape[][][]mpq[][][]class[][][]with[][][]complexity()[] \OT1/pcr/m/ -n/8 int ppl[][][]new[][][][]Double[][][][]Box[] - -Overfull \hbox (10.78336pt too wide) in paragraph at lines 403--404 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]Doubl -e[][][][]Box[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][ -][]Double[][][][]Box[][][]from[][][][]Double[][][][]Box[] - -Overfull \hbox (2.46303pt too wide) in paragraph at lines 409--410 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]B[]D[ -][][][]Shape[][][]double[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[] -[][]new[][][][]Double[][][][]Box[][][]from[][][][]B[]D[][][] -[131] Overfull \hbox (25.80045pt too wide) in paragraph at lines 1977--1979 \OT1/ptm/m/it/10 Updates the bd shape ref-er-enced by \OT1/pcr/m/sl/10 Handle \ OT1/ptm/m/it/10 to one ob-tained by re-fin-ing its con-straint sys-tem with \OT @@ -18356,6 +18483,36 @@ []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]affine[ ][][]image(+[]Handle, +[]P[]P[]L[][][][]Var, +[]Lin[][][][]Expr, +[]Coeff) [67] +Overfull \hbox (13.21346pt too wide) in paragraph at lines 943--944 + []\OT1/ptm/b/n/10 ppl[][][]one[][][]affine[][][]ranking[][][]function[][][][]M +[]S[][][][]Double[][][][]Box()[] \OT1/pcr/m/n/8 int ppl[][][]one[][][]affine[][ +][]ranking[][][]function[][][][]M[]S[][][][]Double[] + +Overfull \hbox (11.54353pt too wide) in paragraph at lines 949--950 + []\OT1/ptm/b/n/10 ppl[][][]one[][][]affine[][][]ranking[][][]function[][][][]P +[]R[][][][]Double[][][][]Box()[] \OT1/pcr/m/n/8 int ppl[][][]one[][][]affine[][ +][]ranking[][][]function[][][][]P[]R[][][][]Double[] + +Overfull \hbox (17.46326pt too wide) in paragraph at lines 955--956 + []\OT1/ptm/b/n/10 ppl[][][]all[][][]affine[][][]ranking[][][]functions[][][][] +M[]S[][][][]Double[][][][]Box()[] \OT1/pcr/m/n/8 int ppl[][][]all[][][]affine[] +[][]ranking[][][]functions[][][][]M[]S[][][][]Double[] + +Overfull \hbox (15.79333pt too wide) in paragraph at lines 961--962 + []\OT1/ptm/b/n/10 ppl[][][]all[][][]affine[][][]ranking[][][]functions[][][][] +P[]R[][][][]Double[][][][]Box()[] \OT1/pcr/m/n/8 int ppl[][][]all[][][]affine[] +[][]ranking[][][]functions[][][][]P[]R[][][][]Double[] + +Overfull \hbox (21.81346pt too wide) in paragraph at lines 979--980 + []\OT1/ptm/b/n/10 ppl[][][]one[][][]affine[][][]ranking[][][]function[][][][]M +[]S[][][][]Double[][][][]Box[][][]2()[] \OT1/pcr/m/n/8 int ppl[][][]one[][][]af +fine[][][]ranking[][][]function[][][][]M[]S[][][][]Double[] + +Overfull \hbox (20.14354pt too wide) in paragraph at lines 985--986 + []\OT1/ptm/b/n/10 ppl[][][]one[][][]affine[][][]ranking[][][]function[][][][]P +[]R[][][][]Double[][][][]Box[][][]2()[] \OT1/pcr/m/n/8 int ppl[][][]one[][][]af +fine[][][]ranking[][][]function[][][][]P[]R[][][][]Double[] +[142] Overfull \hbox (0.19531pt too wide) in paragraph at lines 2005--2007 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]affine[ ][][]preimage(+[]Handle, +[]P[]P[]L[][][][]Var, +[]Lin[][][][]Expr, +[] @@ -18387,22 +18544,17 @@ Overfull \hbox (3.79532pt too wide) in paragraph at lines 2026--2028 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]wrap[][ ][]assign(+[]Handle, +[]List[][][]of[][][][]P[]P[]L[][][][]Var, +[]Width, +[] -[68 -Overfull \hbox (17.10274pt too wide) in paragraph at lines 415--416 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]Octag -onal[][][][]Shape[][][]double[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int -ppl[][][]new[][][][]Double[][][][]Box[][][]from[] - -Overfull \hbox (1.68216pt too wide) in paragraph at lines 421--422 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]Const -raint[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Double[][][][]Bo -x[][][]from[][][][]Constraint[][][][]System ( +[68] +Overfull \hbox (26.06326pt too wide) in paragraph at lines 991--992 + []\OT1/ptm/b/n/10 ppl[][][]all[][][]affine[][][]ranking[][][]functions[][][][] +M[]S[][][][]Double[][][][]Box[][][]2()[] \OT1/pcr/m/n/8 int ppl[][][]all[][][]a +ffine[][][]ranking[][][]functions[][][][]M[]S[][][][]Double[] -Overfull \hbox (7.23222pt too wide) in paragraph at lines 427--428 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]Congr -uence[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Double[][][][]Bo -x[][][]from[][][][]Congruence[][][][]System ( -[132]] +Overfull \hbox (24.39334pt too wide) in paragraph at lines 997--998 + []\OT1/ptm/b/n/10 ppl[][][]all[][][]affine[][][]ranking[][][]functions[][][][] +P[]R[][][][]Double[][][][]Box[][][]2()[] \OT1/pcr/m/n/8 int ppl[][][]all[][][]a +ffine[][][]ranking[][][]functions[][][][]P[]R[][][][]Double[] +) (./interfaceppl__Generator__System__const__iterator__tag.tex [143 Overfull \hbox (3.79532pt too wide) in paragraph at lines 2048--2050 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]simplif y[][][]using[][][]context[][][]assign(+[]Handle[][][]1, +[]Handle[] @@ -18427,7 +18579,7 @@ Overfull \hbox (7.39532pt too wide) in paragraph at lines 2076--2078 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]limited [][][][]B[]H[]M[]Z05[][][]extrapolation[][][]assign[][][]with[][][]tokens(+[] -[69] +[69]] Overfull \hbox (25.39532pt too wide) in paragraph at lines 2079--2081 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]limited [][][][]H79[][][]extrapolation[][][]assign[][][]with[][][]tokens(+[]Handle[] @@ -18452,7 +18604,38 @@ Overfull \hbox (15.79532pt too wide) in paragraph at lines 2110--2112 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]add[][] []space[][][]dimensions[][][]and[][][]embed(+[]Handle, +[]Dimension[] -[70 [133]] [134 +[70 +Overfull \hbox (20.03731pt too wide) in paragraph at lines 19--21 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Generator[][][][]System[][][] +const[][][]iterator[][][]from[][][][]Generator[][][][]System[][][]const[][][]it +erator[][] ([][]ppl[][][][]Generator[] + +Overfull \hbox (28.62701pt too wide) in paragraph at lines 22--24 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]assign[][][][]Generator[][][][]System[][ +][]const[][][]iterator[][][]from[][][][]Generator[][][][]System[][][]const[][][ +]iterator[][] ([][]ppl[][][][]Generator[] + +Overfull \hbox (8.34723pt too wide) in paragraph at lines 32--34 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Generator[][][][]System[][][]const[][] +[]iterator[][][]dereference[][] ([][]ppl[][][]const[][][][]Generator[][][][]Sys +tem[][][]const[][][]iterator[] + +Overfull \hbox (0.86711pt too wide) in paragraph at lines 38--40 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Generator[][][][]System[][][]const[][] +[]iterator[][][]equal[][][]test[][] ([][]ppl[][][]const[][][][]Generator[][][][ +]System[][][]const[][][]iterator[] +) (./interfaceppl__Generator__System__tag.tex] +Overfull \hbox (18.41797pt too wide) in paragraph at lines 19--21 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Generator[][][][]System[][][] +from[][][][]Generator[][] ([][]ppl[][][][]Generator[][][][]System[][][]t[][] $\ +OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pgs, [][]ppl[][][]const[][][][]Generator[] + + +Overfull \hbox (7.88792pt too wide) in paragraph at lines 22--24 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Generator[][][][]System[][][] +from[][][][]Generator[][][][]System[][] ([][]ppl[][][][]Generator[][][][]System +[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pgs, [][]ppl[][][]const[] +[144 Overfull \hbox (27.79532pt too wide) in paragraph at lines 2113--2115 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]mpq[][][]class[][][]add[][] []space[][][]dimensions[][][]and[][][]project(+[]Handle, +[]Dimension[] @@ -18487,16 +18670,6 @@ []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]mpz[][][]clas s[][][]from[][][]congruences(+[]Congruence[][][][]System, -[] [71]] -Overfull \hbox (9.26186pt too wide) in paragraph at lines 595--596 - []\OT1/ptm/b/n/10 ppl[][][][]Double[][][][]Box[][][]strictly[][][]contains[][] -[][]Double[][][][]Box()[] \OT1/pcr/m/n/8 int ppl[][][][]Double[][][][]Box[][][] -strictly[][][]contains[][][][]Double[][][][]Box ( - -Overfull \hbox (0.412pt too wide) in paragraph at lines 601--602 - []\OT1/ptm/b/n/10 ppl[][][][]Double[][][][]Box[][][]is[][][]disjoint[][][]from -[][][][]Double[][][][]Box()[] \OT1/pcr/m/n/8 int ppl[][][][]Double[][][][]Box[] -[][]is[][][]disjoint[][][]from[][][][]Double[][][][]Box ( -[135 Overfull \hbox (0.19531pt too wide) in paragraph at lines 2160--2162 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]mpz[][][]clas s[][][]from[][][]generators(+[]Generator[][][][]System, -[] @@ -18547,7 +18720,12 @@ Overfull \hbox (13.39532pt too wide) in paragraph at lines 2201--2203 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]mpz[][][]clas s[][][]from[][][][]B[]D[][][][]Shape[][][]double(+[]Handle[][][]1, -[]Handle[] -[72]] +[72] +Overfull \hbox (5.21785pt too wide) in paragraph at lines 41--43 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Generator[][][][]System[][][]begin[][] + ([][]ppl[][][]const[][][][]Generator[][][][]System[][][]t[][] gs, [][]ppl[][][ +][]Generator[][][][]System[][][]const[] +) (./interfaceppl__Generator__tag.tex [145] Overfull \hbox (19.39532pt too wide) in paragraph at lines 2204--2206 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]mpz[][][]clas s[][][]from[][][][]Octagonal[][][][]Shape[][][]double(+[]Handle[][][]1, -[] @@ -18600,7 +18778,7 @@ []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]mpz[][][]clas s[][][]from[][][][]Octagonal[][][][]Shape[][][]double[][][]with[][][]complexity (+[] -[73 [136]] +[73] Overfull \hbox (9.79532pt too wide) in paragraph at lines 2277--2279 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]co ntains[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class(+[]Handle[] @@ -18616,27 +18794,7 @@ Overfull \hbox (1.39532pt too wide) in paragraph at lines 2286--2288 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]eq uals[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class(+[]Handle[][][] -[74] -Overfull \hbox (0.60197pt too wide) in paragraph at lines 697--698 - []\OT1/ptm/b/n/10 ppl[][][][]Double[][][][]Box[][][]upper[][][]bound[][][]assi -gn[][][]if[][][]exact()[] \OT1/pcr/m/n/8 int ppl[][][][]Double[][][][]Box[][][] -upper[][][]bound[][][]assign[][][]if[][][]exact ( - -Overfull \hbox (6.14165pt too wide) in paragraph at lines 703--704 - []\OT1/ptm/b/n/10 ppl[][][][]Double[][][][]Box[][][]simplify[][][]using[][][]c -ontext[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]Double[][][][]Box[][][]sim -plify[][][]using[][][]context[][][]assign - -Overfull \hbox (8.35168pt too wide) in paragraph at lines 715--716 - []\OT1/ptm/b/n/10 ppl[][][][]Double[][][][]Box[][][]unconstrain[][][]space[][] -[]dimension()[] \OT1/pcr/m/n/8 int ppl[][][][]Double[][][][]Box[][][]unconstrai -n[][][]space[][][]dimension ( - -Overfull \hbox (7.44157pt too wide) in paragraph at lines 721--722 - []\OT1/ptm/b/n/10 ppl[][][][]Double[][][][]Box[][][]unconstrain[][][]space[][] -[]dimensions()[] \OT1/pcr/m/n/8 int ppl[][][][]Double[][][][]Box[][][]unconstra -in[][][]space[][][]dimensions -[137] +[74] [146 Overfull \hbox (5.6138pt too wide) in paragraph at lines 2302--2304 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]af fine[][][]dimension(+[]Handle, ?Dimension[][][][]Type) @@ -18684,7 +18842,8 @@ Overfull \hbox (36.19531pt too wide) in paragraph at lines 2341--2343 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]mi nimize[][][]with[][][]point(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[] -[75] +[75]]) +(./interfaceppl__Grid__Generator__System__const__iterator__tag.tex Overfull \hbox (3.2138pt too wide) in paragraph at lines 2346--2348 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]ex ternal[][][]memory[][][]in[][][]bytes(+[]Handle, ?Number) @@ -18712,47 +18871,37 @@ Overfull \hbox (32.5953pt too wide) in paragraph at lines 2386--2388 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]re fine[][][]with[][][]congruences( +[]Handle, +[]Congruence[] -[76 -Overfull \hbox (2.58203pt too wide) in paragraph at lines 757--758 - []\OT1/ptm/b/n/10 ppl[][][][]Double[][][][]Box[][][]generalized[][][]affine[][ -][]preimage()[] \OT1/pcr/m/n/8 int ppl[][][][]Double[][][][]Box[][][]generalize -d[][][]affine[][][]preimage ( - -Overfull \hbox (6.62314pt too wide) in paragraph at lines 763--764 - []\OT1/ptm/b/n/10 ppl[][][][]Double[][][][]Box[][][]generalized[][][]affine[][ -][]image[][][]lhs[][][]rhs()[] \OT1/pcr/m/n/8 int ppl[][][][]Double[][][][]Box[ -][][]generalized[][][]affine[][][]image[] +[76] +Overfull \hbox (20.31735pt too wide) in paragraph at lines 19--21 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Grid[][][][]Generator[][][][] +System[][][]const[][][]iterator[][][]from[][][][]Grid[][][][]Generator[][][][]S +ystem[][][]const[][][]iterator[][] ([][]ppl[] -Overfull \hbox (35.28304pt too wide) in paragraph at lines 769--770 - []\OT1/ptm/b/n/10 ppl[][][][]Double[][][][]Box[][][]generalized[][][]affine[][ -][]preimage[][][]lhs[][][]rhs()[] \OT1/pcr/m/n/8 int ppl[][][][]Double[][][][]B -ox[][][]generalized[][][]affine[][][]preimage[] +Overfull \hbox (2.36742pt too wide) in paragraph at lines 19--21 +[][][]\OT1/ptm/bc/n/10 Grid[][][][]Generator[][][][]System[][][]const[][][]iter +ator[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pgit, [][]ppl[][][]const +[][][][]Grid[][][][]Generator[][][][]System[][][]const[][][]iterator[] -Overfull \hbox (11.95317pt too wide) in paragraph at lines 775--776 - []\OT1/ptm/b/n/10 ppl[][][][]Double[][][][]Box[][][]add[][][]space[][][]dimens -ions[][][]and[][][]embed()[] \OT1/pcr/m/n/8 int ppl[][][][]Double[][][][]Box[][ -][]add[][][]space[][][]dimensions[][][]and[] +Overfull \hbox (1.91568pt too wide) in paragraph at lines 22--24 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]assign[][][][]Grid[][][][]Generator[][][ +][]System[][][]const[][][]iterator[][][]from[][][][]Grid[][][][]Generator[][][] +[]System[][][]const[][][]iterator[][] -Overfull \hbox (13.9832pt too wide) in paragraph at lines 781--782 - []\OT1/ptm/b/n/10 ppl[][][][]Double[][][][]Box[][][]add[][][]space[][][]dimens -ions[][][]and[][][]project()[] \OT1/pcr/m/n/8 int ppl[][][][]Double[][][][]Box[ -][][]add[][][]space[][][]dimensions[][][]and[] -[138]] -Overfull \hbox (26.65173pt too wide) in paragraph at lines 793--794 - []\OT1/ptm/b/n/10 ppl[][][][]Double[][][][]Box[][][]remove[][][]higher[][][]sp -ace[][][]dimensions()[] \OT1/pcr/m/n/8 int ppl[][][][]Double[][][][]Box[][][]re -move[][][]higher[][][]space[][][]dimensions +Overfull \hbox (10.18723pt too wide) in paragraph at lines 22--24 +\OT1/ptm/bc/n/10 ([][]ppl[][][][]Grid[][][][]Generator[][][][]System[][][]const +[][][]iterator[][][]t[][] dst, [][]ppl[][][]const[][][][]Grid[][][][]Generator[ +][][][]System[][][]const[][][]iterator[] -Overfull \hbox (2.832pt too wide) in paragraph at lines 817--818 - []\OT1/ptm/b/n/10 ppl[][][][]Double[][][][]Box[][][]drop[][][]some[][][]non[][ -][]integer[][][]points()[] \OT1/pcr/m/n/8 int ppl[][][][]Double[][][][]Box[][][ -]drop[][][]some[][][]non[][][]integer[][][]points +Overfull \hbox (20.85709pt too wide) in paragraph at lines 35--37 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Grid[][][][]Generator[][][][]System[][ +][]const[][][]iterator[][][]increment[][] ([][]ppl[][][][]Grid[][][][]Generator +[][][][]System[][][]const[][][]iterator[] -Overfull \hbox (20.41351pt too wide) in paragraph at lines 823--824 - []\OT1/ptm/b/n/10 ppl[][][][]Double[][][][]Box[][][]drop[][][]some[][][]non[][ -][]integer[][][]points[][][]2()[] \OT1/pcr/m/n/8 int ppl[][][][]Double[][][][]B -ox[][][]drop[][][]some[][][]non[][][]integer[][][]points[] -[139 +Overfull \hbox (12.24728pt too wide) in paragraph at lines 38--40 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Grid[][][][]Generator[][][][]System[][ +][]const[][][]iterator[][][]equal[][][]test[][] ([][]ppl[][][]const[][][][]Grid +[][][][]Generator[][][][]System[][][]const[] +) (./interfaceppl__Grid__Generator__System__tag.tex Overfull \hbox (2.5953pt too wide) in paragraph at lines 2396--2398 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]un constrain[][][]space[][][]dimension(+[]Handle, +[]P[]P[] @@ -18797,7 +18946,7 @@ Overfull \hbox (12.81381pt too wide) in paragraph at lines 2423--2425 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]ge neralized[][][]affine[][][]preimage[][][]lhs[][][]rhs(+[]Handle, -[77]] +[77] [147] Overfull \hbox (24.81381pt too wide) in paragraph at lines 2426--2428 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]wr ap[][][]assign(+[]Handle, +[]List[][][]of[][][][]P[]P[]L[][][][]Var, +[]Width, @@ -18818,21 +18967,6 @@ []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][][] B[]H[]M[]Z05[][][]widening[][][]assign[][][]with[][][]tokens(+[]Handle[] [78] -Overfull \hbox (1.8932pt too wide) in paragraph at lines 841--842 - []\OT1/ptm/b/n/10 ppl[][][][]Double[][][][]Box[][][][]C[]C76[][][]widening[][] -[]assign[][][]with[][][]tokens()[] \OT1/pcr/m/n/8 int ppl[][][][]Double[][][][] -Box[][][][]C[]C76[][][]widening[][][]assign[][][] - -Overfull \hbox (3.27177pt too wide) in paragraph at lines 853--854 - []\OT1/ptm/b/n/10 ppl[][][][]Double[][][][]Box[][][]widening[][][]assign[][][] -with[][][]tokens()[] \OT1/pcr/m/n/8 int ppl[][][][]Double[][][][]Box[][][]widen -ing[][][]assign[][][]with[][][]tokens ( - -Overfull \hbox (25.9632pt too wide) in paragraph at lines 871--872 - []\OT1/ptm/b/n/10 ppl[][][][]Double[][][][]Box[][][]limited[][][][]C[]C76[][][ -]extrapolation[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]Double[][][][]Box[ -][][]limited[][][][]C[]C76[][][]extrapolation[] -[140] Overfull \hbox (6.19531pt too wide) in paragraph at lines 2461--2463 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][][] B[]H[]M[]Z05[][][]widening[][][]assign(+[]Handle[][][]1, +[]Handle[] @@ -18870,6 +19004,31 @@ []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][][] C[]C76[][][]narrowing[][][]assign(+[]Handle[][][]1, +[]Handle[] [79] +Overfull \hbox (4.49792pt too wide) in paragraph at lines 22--24 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Grid[][][][]Generator[][][][] +System[][][]from[][][][]Grid[][][][]Generator[][][][]System[][] ([][]ppl[][][][ +]Grid[][][][]Generator[][][][]System[] + +Overfull \hbox (13.08763pt too wide) in paragraph at lines 25--27 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]assign[][][][]Grid[][][][]Generator[][][ +][]System[][][]from[][][][]Grid[][][][]Generator[][][][]System[][] ([][]ppl[][] +[][]Grid[][][][]Generator[][][][]System[] + +Overfull \hbox (13.24803pt too wide) in paragraph at lines 41--43 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Grid[][][][]Generator[][][][]System[][ +][]begin[][] ([][]ppl[][][]const[][][][]Grid[][][][]Generator[][][][]System[][] +[]t[][] gs, [][]ppl[][][][]Grid[][][][]Generator[] + +Overfull \hbox (5.61804pt too wide) in paragraph at lines 44--46 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Grid[][][][]Generator[][][][]System[][ +][]end[][] ([][]ppl[][][]const[][][][]Grid[][][][]Generator[][][][]System[][][] +t[][] gs, [][]ppl[][][][]Grid[][][][]Generator[] + +Overfull \hbox (2.72562pt too wide) in paragraph at lines 73--75 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Grid[][][][]Generator[][][][]System[][ +][]ascii[][][]dump[][] ([][]ppl[][][]const[][][][]Grid[][][][]Generator[][][][] +System[][][]t[][] x, F[]I[]LE $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 stream) +[148] Overfull \hbox (3.79532pt too wide) in paragraph at lines 2498--2500 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class[][][]ad d[][][]space[][][]dimensions[][][]and[][][]embed(+[]Handle, +[] @@ -18897,22 +19056,7 @@ Overfull \hbox (15.79532pt too wide) in paragraph at lines 2535--2537 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]mpq[][][]clas s[][][]from[][][]space[][][]dimension(+[]Dimension[][][][]Type, +[] -[80] -Overfull \hbox (15.36191pt too wide) in paragraph at lines 895--896 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]recycle[][][][]Co -nstraint[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Double[][][][ -]Box[][][]recycle[][][][]Constraint[][][][]System - -Overfull \hbox (1.09346pt too wide) in paragraph at lines 901--902 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]recycle[][][][]Co -ngruence[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Double[][][][ -]Box[][][]recycle[][][][]Congruence[][][] - -Overfull \hbox (8.88197pt too wide) in paragraph at lines 907--908 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]recycle[][][][]Ge -nerator[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Double[][][][] -Box[][][]recycle[][][][]Generator[][][][]System -[141] +[80) (./interfaceppl__Grid__Generator__tag.tex] Overfull \hbox (12.19531pt too wide) in paragraph at lines 2542--2544 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]mpq[][][]clas s[][][]from[][][]constraints(+[]Constraint[][][][]System, -[] @@ -18963,7 +19107,7 @@ Overfull \hbox (7.39532pt too wide) in paragraph at lines 2580--2582 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]mpq[][][]clas s[][][]from[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class(+[]Handle[] -[81] +[81] [149] Overfull \hbox (7.39532pt too wide) in paragraph at lines 2583--2585 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]mpq[][][]clas s[][][]from[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class(+[]Handle[] @@ -19011,37 +19155,8 @@ []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]mpq[][][]clas s[][][]from[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]with[][][]co mplexity(+[] -[82 -Overfull \hbox (13.21346pt too wide) in paragraph at lines 943--944 - []\OT1/ptm/b/n/10 ppl[][][]one[][][]affine[][][]ranking[][][]function[][][][]M -[]S[][][][]Double[][][][]Box()[] \OT1/pcr/m/n/8 int ppl[][][]one[][][]affine[][ -][]ranking[][][]function[][][][]M[]S[][][][]Double[] - -Overfull \hbox (11.54353pt too wide) in paragraph at lines 949--950 - []\OT1/ptm/b/n/10 ppl[][][]one[][][]affine[][][]ranking[][][]function[][][][]P -[]R[][][][]Double[][][][]Box()[] \OT1/pcr/m/n/8 int ppl[][][]one[][][]affine[][ -][]ranking[][][]function[][][][]P[]R[][][][]Double[] - -Overfull \hbox (17.46326pt too wide) in paragraph at lines 955--956 - []\OT1/ptm/b/n/10 ppl[][][]all[][][]affine[][][]ranking[][][]functions[][][][] -M[]S[][][][]Double[][][][]Box()[] \OT1/pcr/m/n/8 int ppl[][][]all[][][]affine[] -[][]ranking[][][]functions[][][][]M[]S[][][][]Double[] - -Overfull \hbox (15.79333pt too wide) in paragraph at lines 961--962 - []\OT1/ptm/b/n/10 ppl[][][]all[][][]affine[][][]ranking[][][]functions[][][][] -P[]R[][][][]Double[][][][]Box()[] \OT1/pcr/m/n/8 int ppl[][][]all[][][]affine[] -[][]ranking[][][]functions[][][][]P[]R[][][][]Double[] - -Overfull \hbox (21.81346pt too wide) in paragraph at lines 979--980 - []\OT1/ptm/b/n/10 ppl[][][]one[][][]affine[][][]ranking[][][]function[][][][]M -[]S[][][][]Double[][][][]Box[][][]2()[] \OT1/pcr/m/n/8 int ppl[][][]one[][][]af -fine[][][]ranking[][][]function[][][][]M[]S[][][][]Double[] - -Overfull \hbox (20.14354pt too wide) in paragraph at lines 985--986 - []\OT1/ptm/b/n/10 ppl[][][]one[][][]affine[][][]ranking[][][]function[][][][]P -[]R[][][][]Double[][][][]Box[][][]2()[] \OT1/pcr/m/n/8 int ppl[][][]one[][][]af -fine[][][]ranking[][][]function[][][][]P[]R[][][][]Double[] -[142]] +[82]) +(./interfaceppl__Grid__tag.tex Overfull \hbox (10.41382pt too wide) in paragraph at lines 2619--2621 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]mpq[][][]clas s[][][]from[][][][]Double[][][][]Box[][][]with[][][]complexity(+[]Handle, @@ -19110,17 +19225,13 @@ Overfull \hbox (32.5953pt too wide) in paragraph at lines 2719--2721 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]mi nimize(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[][][]1, ?Coeff[] -[84 -Overfull \hbox (26.06326pt too wide) in paragraph at lines 991--992 - []\OT1/ptm/b/n/10 ppl[][][]all[][][]affine[][][]ranking[][][]functions[][][][] -M[]S[][][][]Double[][][][]Box[][][]2()[] \OT1/pcr/m/n/8 int ppl[][][]all[][][]a -ffine[][][]ranking[][][]functions[][][][]M[]S[][][][]Double[] - -Overfull \hbox (24.39334pt too wide) in paragraph at lines 997--998 - []\OT1/ptm/b/n/10 ppl[][][]all[][][]affine[][][]ranking[][][]functions[][][][] -P[]R[][][][]Double[][][][]Box[][][]2()[] \OT1/pcr/m/n/8 int ppl[][][]all[][][]a -ffine[][][]ranking[][][]functions[][][][]P[]R[][][][]Double[] -) (./interfaceppl__Generator__System__const__iterator__tag.tex] [143 +[84] +Overfull \hbox (3.80247pt too wide) in paragraph at lines 43--45 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Grid[][][]from[][][][]N[]N[]C[][ +][][]Polyhedron[][][]with[][][]complexity[][] ([][]ppl[][][][]Grid[][][]t[][] $ +\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][]const[][][][]Polyhedron +[] +[150] Overfull \hbox (36.19531pt too wide) in paragraph at lines 2724--2726 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]ma ximize[][][]with[][][]point(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[] @@ -19144,7 +19255,7 @@ Overfull \hbox (23.6138pt too wide) in paragraph at lines 2765--2767 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]re fine[][][]with[][][]constraint( +[]Handle, +[]Constraint) -[85]] +[85] Overfull \hbox (23.6138pt too wide) in paragraph at lines 2768--2770 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]re fine[][][]with[][][]congruence( +[]Handle, +[]Congruence) @@ -19194,26 +19305,6 @@ []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]ge neralized[][][]affine[][][]preimage(+[]Handle, +[]P[]P[] [86] -Overfull \hbox (20.03731pt too wide) in paragraph at lines 19--21 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Generator[][][][]System[][][] -const[][][]iterator[][][]from[][][][]Generator[][][][]System[][][]const[][][]it -erator[][] ([][]ppl[][][][]Generator[] - -Overfull \hbox (28.62701pt too wide) in paragraph at lines 22--24 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]assign[][][][]Generator[][][][]System[][ -][]const[][][]iterator[][][]from[][][][]Generator[][][][]System[][][]const[][][ -]iterator[][] ([][]ppl[][][][]Generator[] - -Overfull \hbox (8.34723pt too wide) in paragraph at lines 32--34 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Generator[][][][]System[][][]const[][] -[]iterator[][][]dereference[][] ([][]ppl[][][]const[][][][]Generator[][][][]Sys -tem[][][]const[][][]iterator[] - -Overfull \hbox (0.86711pt too wide) in paragraph at lines 38--40 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Generator[][][][]System[][][]const[][] -[]iterator[][][]equal[][][]test[][] ([][]ppl[][][]const[][][][]Generator[][][][ -]System[][][]const[][][]iterator[] -) (./interfaceppl__Generator__System__tag.tex Overfull \hbox (15.79532pt too wide) in paragraph at lines 2808--2810 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]ge neralized[][][]affine[][][]image[][][]lhs[][][]rhs(+[]Handle, +[] @@ -19238,17 +19329,6 @@ []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]li near[][][]partition(+[]Handle[][][]1, +[]Handle[][][]2, -[] [87] -Overfull \hbox (18.41797pt too wide) in paragraph at lines 19--21 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Generator[][][][]System[][][] -from[][][][]Generator[][] ([][]ppl[][][][]Generator[][][][]System[][][]t[][] $\ -OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pgs, [][]ppl[][][]const[][][][]Generator[] - - -Overfull \hbox (7.88792pt too wide) in paragraph at lines 22--24 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Generator[][][][]System[][][] -from[][][][]Generator[][][][]System[][] ([][]ppl[][][][]Generator[][][][]System -[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pgs, [][]ppl[][][]const[] -[144] Overfull \hbox (9.79532pt too wide) in paragraph at lines 2846--2848 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][][] B[]H[]M[]Z05[][][]widening[][][]assign[][][]with[][][]tokens(+[]Handle[] @@ -19290,11 +19370,45 @@ []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][][] C[]C76[][][]narrowing[][][]assign(+[]Handle[][][]1, +[]Handle[] [88] -Overfull \hbox (5.21785pt too wide) in paragraph at lines 41--43 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Generator[][][][]System[][][]begin[][] - ([][]ppl[][][]const[][][][]Generator[][][][]System[][][]t[][] gs, [][]ppl[][][ -][]Generator[][][][]System[][][]const[] -) (./interfaceppl__Generator__tag.tex [145 +Overfull \hbox (1.55243pt too wide) in paragraph at lines 59--61 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Grid[][][]from[][][][]B[]D[][][] +[]Shape[][][]double[][][]with[][][]complexity[][] ([][]ppl[][][][]Grid[][][]t[] +[] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][]const[][][][]B[]D[] +[][][]Shape[] + +Overfull \hbox (27.93198pt too wide) in paragraph at lines 61--63 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Grid[][][]from[][][][]Octagonal[ +][][][]Shape[][][]double[][][]with[][][]complexity[][] ([][]ppl[][][][]Grid[][] +[]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][]const[][][][]O +ctagonal[] + +Overfull \hbox (6.9618pt too wide) in paragraph at lines 67--69 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Grid[][][]from[][][][]Grid[][][] +[]Generator[][][][]System[][] ([][]ppl[][][][]Grid[][][]t[][] $\OMS/cmsy/m/n/10 + ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][]const[][][][]Grid[][][][]Generator[][][ +][]System[] + +Overfull \hbox (3.21011pt too wide) in paragraph at lines 89--91 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Grid[][][]get[][][]minimized[][][]congrue +nces[][] ([][]ppl[][][]const[][][][]Grid[][][]t[][] ph, [][]ppl[][][]const[][][ +][]Congruence[][][][]System[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 p +cs) + +Overfull \hbox (7.22137pt too wide) in paragraph at lines 91--93 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Grid[][][]get[][][]minimized[][][]grid[][ +][]generators[][] ([][]ppl[][][]const[][][][]Grid[][][]t[][] ph, [][]ppl[][][]c +onst[][][][]Grid[][][][]Generator[][][][]System[] + +Overfull \hbox (28.41115pt too wide) in paragraph at lines 115--117 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Grid[][][]maximize[][][]with[][][]point[] +[] ([][]ppl[][][]const[][][][]Grid[][][]t[][] ph, [][]ppl[][][]const[][][][]Lin +ear[][][][]Expression[][][]t[][] le, [][]ppl[][][][]Coefficient[] + +Overfull \hbox (26.7511pt too wide) in paragraph at lines 117--119 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Grid[][][]minimize[][][]with[][][]point[] +[] ([][]ppl[][][]const[][][][]Grid[][][]t[][] ph, [][]ppl[][][]const[][][][]Lin +ear[][][][]Expression[][][]t[][] le, [][]ppl[][][][]Coefficient[] +[151 Overfull \hbox (3.79532pt too wide) in paragraph at lines 2886--2888 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]ad d[][][]space[][][]dimensions[][][]and[][][]embed(+[]Handle, +[] @@ -19418,8 +19532,7 @@ []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][] []Polyhedron[][][][]Grid[][][]from[][][][]Rational[][][][]Box[][][]with[][][]co mplexity(+[] -[91 [146]) -(./interfaceppl__Grid__Generator__System__const__iterator__tag.tex] +[91] Overfull \hbox (14.59534pt too wide) in paragraph at lines 2995--2997 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][] []Polyhedron[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]class @@ -19463,36 +19576,6 @@ []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Constraints[][][][]Product[][][][]C[][][] []Polyhedron[][][][]Grid[][][]from[][][][]Constraints[][][][]Product[][][] [92] -Overfull \hbox (20.31735pt too wide) in paragraph at lines 19--21 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Grid[][][][]Generator[][][][] -System[][][]const[][][]iterator[][][]from[][][][]Grid[][][][]Generator[][][][]S -ystem[][][]const[][][]iterator[][] ([][]ppl[] - -Overfull \hbox (2.36742pt too wide) in paragraph at lines 19--21 -[][][]\OT1/ptm/bc/n/10 Grid[][][][]Generator[][][][]System[][][]const[][][]iter -ator[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pgit, [][]ppl[][][]const -[][][][]Grid[][][][]Generator[][][][]System[][][]const[][][]iterator[] - -Overfull \hbox (1.91568pt too wide) in paragraph at lines 22--24 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]assign[][][][]Grid[][][][]Generator[][][ -][]System[][][]const[][][]iterator[][][]from[][][][]Grid[][][][]Generator[][][] -[]System[][][]const[][][]iterator[][] - -Overfull \hbox (10.18723pt too wide) in paragraph at lines 22--24 -\OT1/ptm/bc/n/10 ([][]ppl[][][][]Grid[][][][]Generator[][][][]System[][][]const -[][][]iterator[][][]t[][] dst, [][]ppl[][][]const[][][][]Grid[][][][]Generator[ -][][][]System[][][]const[][][]iterator[] - -Overfull \hbox (20.85709pt too wide) in paragraph at lines 35--37 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Grid[][][][]Generator[][][][]System[][ -][]const[][][]iterator[][][]increment[][] ([][]ppl[][][][]Grid[][][][]Generator -[][][][]System[][][]const[][][]iterator[] - -Overfull \hbox (12.24728pt too wide) in paragraph at lines 38--40 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Grid[][][][]Generator[][][][]System[][ -][]const[][][]iterator[][][]equal[][][]test[][] ([][]ppl[][][]const[][][][]Grid -[][][][]Generator[][][][]System[][][]const[] -) (./interfaceppl__Grid__Generator__System__tag.tex [147] Overfull \hbox (15.2138pt too wide) in paragraph at lines 3041--3043 []\OT1/pcr/m/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhed ron[][][][]Grid[][][]is[][][]topologically[][][]closed(+[]Handle) @@ -19536,7 +19619,27 @@ Overfull \hbox (15.2138pt too wide) in paragraph at lines 3084--3086 []\OT1/pcr/m/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhed ron[][][][]Grid[][][]relation[][][]with[][][]generator(+[]Handle, -[93] +[93 +Overfull \hbox (24.14204pt too wide) in paragraph at lines 175--177 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Grid[][][]bounded[][][]affine[][][]image[ +][] ([][]ppl[][][][]Grid[][][]t[][] ph, [][]ppl[][][]dimension[][][]type[][] va +r, [][]ppl[][][]const[][][][]Linear[][][][]Expression[] + +Overfull \hbox (7.17998pt too wide) in paragraph at lines 183--185 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Grid[][][]generalized[][][]affine[][][]im +age[][][]lhs[][][]rhs[][] ([][]ppl[][][][]Grid[][][]t[][] ph, [][]ppl[][][]cons +t[][][][]Linear[][][][]Expression[][][]t[][] lhs, enum + +Overfull \hbox (4.87045pt too wide) in paragraph at lines 187--189 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Grid[][][]generalized[][][]affine[][][]im +age[][][]with[][][]congruence[][] ([][]ppl[][][][]Grid[][][]t[][] ph, [][]ppl[] +[][]dimension[][][]type[][] var, enum + +Overfull \hbox (1.3616pt too wide) in paragraph at lines 187--189 +[][]\OT1/ptm/bc/n/10 ppl[][][]enum[][][][]Constraint[][][][]Type[][] rel-sym, [ +][]ppl[][][]const[][][][]Linear[][][][]Expression[][][]t[][] le, [][]ppl[][][]c +onst[][][][]Coefficient[][][]t[][] d, [][]ppl[] +[152] Overfull \hbox (21.2138pt too wide) in paragraph at lines 3087--3089 []\OT1/pcr/m/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhed ron[][][][]Grid[][][]relation[][][]with[][][]congruence(+[]Handle, @@ -19564,32 +19667,7 @@ Overfull \hbox (0.81381pt too wide) in paragraph at lines 3113--3115 []\OT1/pcr/m/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhed ron[][][][]Grid[][][]total[][][]memory[][][]in[][][]bytes(+[]Handle, -[94] -Overfull \hbox (4.49792pt too wide) in paragraph at lines 22--24 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Grid[][][][]Generator[][][][] -System[][][]from[][][][]Grid[][][][]Generator[][][][]System[][] ([][]ppl[][][][ -]Grid[][][][]Generator[][][][]System[] - -Overfull \hbox (13.08763pt too wide) in paragraph at lines 25--27 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]assign[][][][]Grid[][][][]Generator[][][ -][]System[][][]from[][][][]Grid[][][][]Generator[][][][]System[][] ([][]ppl[][] -[][]Grid[][][][]Generator[][][][]System[] - -Overfull \hbox (13.24803pt too wide) in paragraph at lines 41--43 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Grid[][][][]Generator[][][][]System[][ -][]begin[][] ([][]ppl[][][]const[][][][]Grid[][][][]Generator[][][][]System[][] -[]t[][] gs, [][]ppl[][][][]Grid[][][][]Generator[] - -Overfull \hbox (5.61804pt too wide) in paragraph at lines 44--46 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Grid[][][][]Generator[][][][]System[][ -][]end[][] ([][]ppl[][][]const[][][][]Grid[][][][]Generator[][][][]System[][][] -t[][] gs, [][]ppl[][][][]Grid[][][][]Generator[] - -Overfull \hbox (2.72562pt too wide) in paragraph at lines 73--75 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Grid[][][][]Generator[][][][]System[][ -][]ascii[][][]dump[][] ([][]ppl[][][]const[][][][]Grid[][][][]Generator[][][][] -System[][][]t[][] x, F[]I[]LE $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 stream) -[148 +[94]] Overfull \hbox (41.6138pt too wide) in paragraph at lines 3129--3131 []\OT1/pcr/m/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhed ron[][][][]Grid[][][]add[][][]constraint(+[]Handle, +[]Constraint) @@ -19633,7 +19711,7 @@ Overfull \hbox (12.19531pt too wide) in paragraph at lines 3163--3165 []\OT1/pcr/m/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhed ron[][][][]Grid[][][]unconstrain[][][]space[][][]dimensions(+[] -[95]]) (./interfaceppl__Grid__Generator__tag.tex +[95] Overfull \hbox (9.2138pt too wide) in paragraph at lines 3166--3168 []\OT1/pcr/m/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhed ron[][][][]Grid[][][]affine[][][]image(+[]Handle, +[]P[]P[]L[][][][]Var, @@ -19709,8 +19787,27 @@ Overfull \hbox (15.2138pt too wide) in paragraph at lines 3238--3240 []\OT1/pcr/m/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhed ron[][][][]Grid[][][]remove[][][]space[][][]dimensions(+[]Handle, -[97 [149]]) -(./interfaceppl__Grid__tag.tex +[97] +Overfull \hbox (5.27174pt too wide) in paragraph at lines 193--195 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Grid[][][]generalized[][][]affine[][][]pr +eimage[][][]lhs[][][]rhs[][][]with[][][]congruence[][] ([][]ppl[][][][]Grid[][] +[]t[][] ph, [][]ppl[][][]const[][][][]Linear[] + +Overfull \hbox (7.88818pt too wide) in paragraph at lines 205--207 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Grid[][][]fold[][][]space[][][]dimensions +[][] ([][]ppl[][][][]Grid[][][]t[][] ph, [][]ppl[][][]dimension[][][]type[][] d +s[]$ $[], size[][][]t n, [][]ppl[][][]dimension[] + +Overfull \hbox (9.77875pt too wide) in paragraph at lines 237--239 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Grid[][][]wrap[][][]assign[][] ([][]ppl[] +[][][]Grid[][][]t[][] ph, [][]ppl[][][]dimension[][][]type[][] ds[]$ $[], size[ +][][]t n, enum [][]ppl[][][]enum[][][][]Bounded[] + +Overfull \hbox (8.82231pt too wide) in paragraph at lines 237--239 +[][][]\OT1/ptm/bc/n/10 Bounded[][][][]Integer[][][][]Type[][][][]Overflow[][] o +, const [][]ppl[][][]const[][][][]Constraint[][][][]System[][][]t[][] $\OMS/cms +y/m/n/10 ^^C$\OT1/ptm/bc/n/10 pcs, un-signed complexity[] +[153 Overfull \hbox (21.79532pt too wide) in paragraph at lines 3241--3243 []\OT1/pcr/m/n/10 ppl[][][][]Constraints[][][][]Product[][][][]C[][][][]Polyhed ron[][][][]Grid[][][]remove[][][]higher[][][]space[][][]dimensions(+[] @@ -19738,13 +19835,7 @@ Overfull \hbox (21.2138pt too wide) in paragraph at lines 3279--3281 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Pointset[][][][]Powerset[][][][]C[][][][] Polyhedron[][][]from[][][]congruences(+[]Congruence[][][][]System, -[98] -Overfull \hbox (3.80247pt too wide) in paragraph at lines 43--45 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Grid[][][]from[][][][]N[]N[]C[][ -][][]Polyhedron[][][]with[][][]complexity[][] ([][]ppl[][][][]Grid[][][]t[][] $ -\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][]const[][][][]Polyhedron -[] -[150 +[98]] Underfull \hbox (badness 10000) in paragraph at lines 3287--3288 @@ -19783,7 +19874,7 @@ Overfull \hbox (3.2138pt too wide) in paragraph at lines 3339--3341 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro n[][][]bounds[][][]from[][][]below(+[]Handle, +[]Lin[][][][]Expr) -[99]] +[99] Overfull \hbox (33.79532pt too wide) in paragraph at lines 3342--3344 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro n[][][]contains[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedron(+[] @@ -19831,46 +19922,27 @@ Overfull \hbox (4.9953pt too wide) in paragraph at lines 3385--3387 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro n[][][]maximize(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[] -[100 -Overfull \hbox (1.55243pt too wide) in paragraph at lines 59--61 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Grid[][][]from[][][][]B[]D[][][] -[]Shape[][][]double[][][]with[][][]complexity[][] ([][]ppl[][][][]Grid[][][]t[] -[] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][]const[][][][]B[]D[] -[][][]Shape[] - -Overfull \hbox (27.93198pt too wide) in paragraph at lines 61--63 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Grid[][][]from[][][][]Octagonal[ -][][][]Shape[][][]double[][][]with[][][]complexity[][] ([][]ppl[][][][]Grid[][] -[]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][]const[][][][]O -ctagonal[] - -Overfull \hbox (6.9618pt too wide) in paragraph at lines 67--69 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Grid[][][]from[][][][]Grid[][][] -[]Generator[][][][]System[][] ([][]ppl[][][][]Grid[][][]t[][] $\OMS/cmsy/m/n/10 - ^^C$\OT1/ptm/bc/n/10 pph, [][]ppl[][][]const[][][][]Grid[][][][]Generator[][][ -][]System[] - -Overfull \hbox (3.21011pt too wide) in paragraph at lines 89--91 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Grid[][][]get[][][]minimized[][][]congrue -nces[][] ([][]ppl[][][]const[][][][]Grid[][][]t[][] ph, [][]ppl[][][]const[][][ -][]Congruence[][][][]System[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 p -cs) +[100] +Overfull \hbox (4.96187pt too wide) in paragraph at lines 269--271 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]one[][][]affine[][][]ranking[][][]function[ +][][][]M[]S[][][][]Grid[][][]2[][] ([][]ppl[][][]const[][][][]Grid[][][]t[][] p +set[][][]before, [][]ppl[][][]const[][][][]Grid[][][]t[][] pset[] -Overfull \hbox (7.22137pt too wide) in paragraph at lines 91--93 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Grid[][][]get[][][]minimized[][][]grid[][ -][]generators[][] ([][]ppl[][][]const[][][][]Grid[][][]t[][] ph, [][]ppl[][][]c -onst[][][][]Grid[][][][]Generator[][][][]System[] +Overfull \hbox (2.7419pt too wide) in paragraph at lines 271--273 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]one[][][]affine[][][]ranking[][][]function[ +][][][]P[]R[][][][]Grid[][][]2[][] ([][]ppl[][][]const[][][][]Grid[][][]t[][] p +set[][][]before, [][]ppl[][][]const[][][][]Grid[][][]t[][] pset[] -Overfull \hbox (28.41115pt too wide) in paragraph at lines 115--117 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Grid[][][]maximize[][][]with[][][]point[] -[] ([][]ppl[][][]const[][][][]Grid[][][]t[][] ph, [][]ppl[][][]const[][][][]Lin -ear[][][][]Expression[][][]t[][] le, [][]ppl[][][][]Coefficient[] +Overfull \hbox (4.41154pt too wide) in paragraph at lines 273--275 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]all[][][]affine[][][]ranking[][][]functions +[][][][]M[]S[][][][]Grid[][][]2[][] ([][]ppl[][][]const[][][][]Grid[][][]t[][] +pset[][][]before, [][]ppl[][][]const[][][][]Grid[][][]t[][] pset[] -Overfull \hbox (26.7511pt too wide) in paragraph at lines 117--119 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Grid[][][]minimize[][][]with[][][]point[] -[] ([][]ppl[][][]const[][][][]Grid[][][]t[][] ph, [][]ppl[][][]const[][][][]Lin -ear[][][][]Expression[][][]t[][] le, [][]ppl[][][][]Coefficient[] -[151] +Overfull \hbox (2.19157pt too wide) in paragraph at lines 275--277 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][]all[][][]affine[][][]ranking[][][]functions +[][][][]P[]R[][][][]Grid[][][]2[][] ([][]ppl[][][]const[][][][]Grid[][][]t[][] +pset[][][]before, [][]ppl[][][]const[][][][]Grid[][][]t[][] pset[] +[154 Overfull \hbox (4.9953pt too wide) in paragraph at lines 3390--3392 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro n[][][]minimize(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[] @@ -19980,26 +20052,26 @@ []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro n[][][]difference[][][]assign(+[]Handle[][][]1, +[]Handle[] [103 -Overfull \hbox (24.14204pt too wide) in paragraph at lines 175--177 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Grid[][][]bounded[][][]affine[][][]image[ -][] ([][]ppl[][][][]Grid[][][]t[][] ph, [][]ppl[][][]dimension[][][]type[][] va -r, [][]ppl[][][]const[][][][]Linear[][][][]Expression[] +Overfull \hbox (8.37189pt too wide) in paragraph at lines 345--346 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]Octagonal[][][][]S +hape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Grid[][][]f +rom[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class -Overfull \hbox (7.17998pt too wide) in paragraph at lines 183--185 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Grid[][][]generalized[][][]affine[][][]im -age[][][]lhs[][][]rhs[][] ([][]ppl[][][][]Grid[][][]t[][] ph, [][]ppl[][][]cons -t[][][][]Linear[][][][]Expression[][][]t[][] lhs, enum +Overfull \hbox (9.49188pt too wide) in paragraph at lines 351--352 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]Octagonal[][][][]S +hape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Grid[][][]f +rom[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class -Overfull \hbox (4.87045pt too wide) in paragraph at lines 187--189 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Grid[][][]generalized[][][]affine[][][]im -age[][][]with[][][]congruence[][] ([][]ppl[][][][]Grid[][][]t[][] ph, [][]ppl[] -[][]dimension[][][]type[][] var, enum +Overfull \hbox (36.272pt too wide) in paragraph at lines 375--376 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]C[][][][]Polyhedro +n[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Grid[][] +[]from[][][][]C[][][][]Polyhedron[][][]with[][][]complexity -Overfull \hbox (1.3616pt too wide) in paragraph at lines 187--189 -[][]\OT1/ptm/bc/n/10 ppl[][][]enum[][][][]Constraint[][][][]Type[][] rel-sym, [ -][]ppl[][][]const[][][][]Linear[][][][]Expression[][][]t[][] le, [][]ppl[][][]c -onst[][][][]Coefficient[][][]t[][] d, [][]ppl[] -[152]] +Overfull \hbox (18.41342pt too wide) in paragraph at lines 381--382 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]N[]N[]C[][][][]Pol +yhedron[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Gr +id[][][]from[][][][]N[]N[]C[][][][]Polyhedron[][][]with[] +[155]] Overfull \hbox (12.19531pt too wide) in paragraph at lines 3507--3509 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro n[][][]time[][][]elapse[][][]assign(+[]Handle[][][]1, +[]Handle[] @@ -20033,26 +20105,36 @@ []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro n[][][]concatenate[][][]assign(+[]Handle[][][]1, +[]Handle[] [104] -Overfull \hbox (5.27174pt too wide) in paragraph at lines 193--195 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Grid[][][]generalized[][][]affine[][][]pr -eimage[][][]lhs[][][]rhs[][][]with[][][]congruence[][] ([][]ppl[][][][]Grid[][] -[]t[][] ph, [][]ppl[][][]const[][][][]Linear[] +Overfull \hbox (33.32191pt too wide) in paragraph at lines 393--394 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]Rational[][][][]Bo +x[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Grid[][] +[]from[][][][]Rational[][][][]Box[][][]with[][][]complexity -Overfull \hbox (7.88818pt too wide) in paragraph at lines 205--207 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Grid[][][]fold[][][]space[][][]dimensions -[][] ([][]ppl[][][][]Grid[][][]t[][] ph, [][]ppl[][][]dimension[][][]type[][] d -s[]$ $[], size[][][]t n, [][]ppl[][][]dimension[] +Overfull \hbox (2.50291pt too wide) in paragraph at lines 399--400 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[ +][][]mpz[][][]class[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[][][]n +ew[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][] -Overfull \hbox (9.77875pt too wide) in paragraph at lines 237--239 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]Grid[][][]wrap[][][]assign[][] ([][]ppl[] -[][][]Grid[][][]t[][] ph, [][]ppl[][][]dimension[][][]type[][] ds[]$ $[], size[ -][][]t n, enum [][]ppl[][][]enum[][][][]Bounded[] +Overfull \hbox (0.7429pt too wide) in paragraph at lines 405--406 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[ +][][]mpq[][][]class[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[][][]n +ew[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[][][]mpq[] -Overfull \hbox (8.82231pt too wide) in paragraph at lines 237--239 -[][][]\OT1/ptm/bc/n/10 Bounded[][][][]Integer[][][][]Type[][][][]Overflow[][] o -, const [][]ppl[][][]const[][][][]Constraint[][][][]System[][][]t[][] $\OMS/cms -y/m/n/10 ^^C$\OT1/ptm/bc/n/10 pcs, un-signed complexity[] -[153 +Overfull \hbox (19.06262pt too wide) in paragraph at lines 411--412 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]Octagonal[][][][]S +hape[][][]mpz[][][]class[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[] +[][]new[][][][]Grid[][][]from[][][][]Octagonal[] + +Overfull \hbox (20.18262pt too wide) in paragraph at lines 417--418 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]Octagonal[][][][]S +hape[][][]mpq[][][]class[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[] +[][]new[][][][]Grid[][][]from[][][][]Octagonal[] + +Overfull \hbox (17.61194pt too wide) in paragraph at lines 423--424 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]Double[][][][]Box[ +][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Grid[][][] +from[][][][]Double[][][][]Box[][][]with[][][]complexity +[156 Overfull \hbox (12.81381pt too wide) in paragraph at lines 3545--3547 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]C[][][][]Polyhedro n[][][]add[][][]space[][][]dimensions[][][]and[][][]embed(+[]Handle, @@ -20114,26 +20196,6 @@ []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[] [][][]Polyhedron[][][]from[][][]congruences(+[]Congruence[][][] [106] -Overfull \hbox (4.96187pt too wide) in paragraph at lines 269--271 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]one[][][]affine[][][]ranking[][][]function[ -][][][]M[]S[][][][]Grid[][][]2[][] ([][]ppl[][][]const[][][][]Grid[][][]t[][] p -set[][][]before, [][]ppl[][][]const[][][][]Grid[][][]t[][] pset[] - -Overfull \hbox (2.7419pt too wide) in paragraph at lines 271--273 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]one[][][]affine[][][]ranking[][][]function[ -][][][]P[]R[][][][]Grid[][][]2[][] ([][]ppl[][][]const[][][][]Grid[][][]t[][] p -set[][][]before, [][]ppl[][][]const[][][][]Grid[][][]t[][] pset[] - -Overfull \hbox (4.41154pt too wide) in paragraph at lines 273--275 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]all[][][]affine[][][]ranking[][][]functions -[][][][]M[]S[][][][]Grid[][][]2[][] ([][]ppl[][][]const[][][][]Grid[][][]t[][] -pset[][][]before, [][]ppl[][][]const[][][][]Grid[][][]t[][] pset[] - -Overfull \hbox (2.19157pt too wide) in paragraph at lines 275--277 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][]all[][][]affine[][][]ranking[][][]functions -[][][][]P[]R[][][][]Grid[][][]2[][] ([][]ppl[][][]const[][][][]Grid[][][]t[][] -pset[][][]before, [][]ppl[][][]const[][][][]Grid[][][]t[][] pset[] -[154 Underfull \hbox (badness 10000) in paragraph at lines 3637--3638 @@ -20160,7 +20222,17 @@ Overfull \hbox (15.2138pt too wide) in paragraph at lines 3686--3688 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]bounds[][][]from[][][]above(+[]Handle, +[]Lin[][][][]Expr) -[107]] +[107] +Overfull \hbox (0.9931pt too wide) in paragraph at lines 429--430 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[ +][][]double[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][] +[]Grid[][][]from[][][][]B[]D[][][][]Shape[][][]double[] + +Overfull \hbox (6.0328pt too wide) in paragraph at lines 435--436 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]Octagonal[][][][]S +hape[][][]double[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[][][]new[ +][][][]Grid[][][]from[][][][]Octagonal[] +[157] Overfull \hbox (15.2138pt too wide) in paragraph at lines 3689--3691 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]bounds[][][]from[][][]below(+[]Handle, +[]Lin[][][][]Expr) @@ -20234,27 +20306,7 @@ Overfull \hbox (27.2138pt too wide) in paragraph at lines 3758--3760 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]total[][][]memory[][][]in[][][]bytes(+[]Handle, ?Number) -[109] -Overfull \hbox (8.37189pt too wide) in paragraph at lines 345--346 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]Octagonal[][][][]S -hape[][][]mpz[][][]class()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Grid[][][]f -rom[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class - -Overfull \hbox (9.49188pt too wide) in paragraph at lines 351--352 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]Octagonal[][][][]S -hape[][][]mpq[][][]class()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Grid[][][]f -rom[][][][]Octagonal[][][][]Shape[][][]mpq[][][]class - -Overfull \hbox (36.272pt too wide) in paragraph at lines 375--376 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]C[][][][]Polyhedro -n[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Grid[][] -[]from[][][][]C[][][][]Polyhedron[][][]with[][][]complexity - -Overfull \hbox (18.41342pt too wide) in paragraph at lines 381--382 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]N[]N[]C[][][][]Pol -yhedron[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Gr -id[][][]from[][][][]N[]N[]C[][][][]Polyhedron[][][]with[] -[155 +[109] [158] Overfull \hbox (14.0138pt too wide) in paragraph at lines 3777--3779 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]add[][][]constraint(+[]Handle, +[]Constraint) @@ -20298,7 +20350,7 @@ Overfull \hbox (17.6138pt too wide) in paragraph at lines 3817--3819 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]unconstrain[][][]space[][][]dimensions(+[]Handle, -[110]] +[110] [159 Overfull \hbox (2.5953pt too wide) in paragraph at lines 3820--3822 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]affine[][][]image(+[]Handle, +[]P[]P[]L[][][][]Var, +[] @@ -20347,7 +20399,7 @@ Overfull \hbox (20.5953pt too wide) in paragraph at lines 3854--3856 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]difference[][][]assign(+[]Handle[][][]1, +[]Handle[] -[111] +[111]] Overfull \hbox (24.19531pt too wide) in paragraph at lines 3857--3859 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]time[][][]elapse[][][]assign(+[]Handle[][][]1, +[]Handle[] @@ -20382,37 +20434,7 @@ Overfull \hbox (26.5953pt too wide) in paragraph at lines 3888--3890 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]concatenate[][][]assign(+[]Handle[][][]1, +[]Handle[] -[112 -Overfull \hbox (33.32191pt too wide) in paragraph at lines 393--394 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]Rational[][][][]Bo -x[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Grid[][] -[]from[][][][]Rational[][][][]Box[][][]with[][][]complexity - -Overfull \hbox (2.50291pt too wide) in paragraph at lines 399--400 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[ -][][]mpz[][][]class[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[][][]n -ew[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][] - -Overfull \hbox (0.7429pt too wide) in paragraph at lines 405--406 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[ -][][]mpq[][][]class[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[][][]n -ew[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[][][]mpq[] - -Overfull \hbox (19.06262pt too wide) in paragraph at lines 411--412 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]Octagonal[][][][]S -hape[][][]mpz[][][]class[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[] -[][]new[][][][]Grid[][][]from[][][][]Octagonal[] - -Overfull \hbox (20.18262pt too wide) in paragraph at lines 417--418 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]Octagonal[][][][]S -hape[][][]mpq[][][]class[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[] -[][]new[][][][]Grid[][][]from[][][][]Octagonal[] - -Overfull \hbox (17.61194pt too wide) in paragraph at lines 423--424 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]Double[][][][]Box[ -][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Grid[][][] -from[][][][]Double[][][][]Box[][][]with[][][]complexity -[156] +[112] [160] Overfull \hbox (24.81381pt too wide) in paragraph at lines 3895--3897 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]add[][][]space[][][]dimensions[][][]and[][][]embed(+[]Handle, @@ -20453,7 +20475,7 @@ Overfull \hbox (2.0138pt too wide) in paragraph at lines 3923--3925 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]begin[][][]iterator(+[]Handle, -[]Iterator) -[113]] +[113] Overfull \hbox (8.5953pt too wide) in paragraph at lines 3929--3931 []\OT1/pcr/m/n/10 ppl[][][][]Pointset[][][][]Powerset[][][][]N[]N[]C[][][][]Pol yhedron[][][]iterator[][][]equals[][][]iterator(+[]Iterator[] @@ -20469,17 +20491,7 @@ Overfull \hbox (24.81381pt too wide) in paragraph at lines 3969--3971 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][]space[][ ][]dimension(+[]Dimension[][][][]Type, +[]Universe[][][]or[][][][]Empty, -[114 -Overfull \hbox (0.9931pt too wide) in paragraph at lines 429--430 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]B[]D[][][][]Shape[ -][][]double[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][] -[]Grid[][][]from[][][][]B[]D[][][][]Shape[][][]double[] - -Overfull \hbox (6.0328pt too wide) in paragraph at lines 435--436 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Grid[][][]from[][][][]Octagonal[][][][]S -hape[][][]double[][][]with[][][]complexity()[] \OT1/pcr/m/n/8 int ppl[][][]new[ -][][][]Grid[][][]from[][][][]Octagonal[] -[157] +[114] [161] Underfull \hbox (badness 10000) in paragraph at lines 3990--3991 @@ -20496,7 +20508,7 @@ Overfull \hbox (15.2138pt too wide) in paragraph at lines 4029--4031 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]C[][][ ][]Polyhedron[][][]with[][][]complexity(+[]Handle, +[]Complexity, -[115]] +[115] [162] Overfull \hbox (27.2138pt too wide) in paragraph at lines 4032--4034 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]N[]N[] C[][][][]Polyhedron[][][]with[][][]complexity(+[]Handle, +[]Complexity, @@ -20538,7 +20550,7 @@ Overfull \hbox (15.79532pt too wide) in paragraph at lines 4059--4061 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Double[][][][]Box[][][]from[][][][]Octago nal[][][][]Shape[][][]double[][][]with[][][]complexity(+[]Handle, +[] -[116 [158]] +[116] Overfull \hbox (13.3953pt too wide) in paragraph at lines 4127--4129 []\OT1/pcr/m/n/10 ppl[][][][]Double[][][][]Box[][][]relation[][][]with[][][]con straint(+[]Handle, +[]Constraint, ?Relation[] @@ -20565,7 +20577,17 @@ \OT1/ptm/m/it/10 Unifies \OT1/pcr/m/sl/10 Relation[][][][]List \OT1/ptm/m/it/10 with the list of re-la-tions the dou-ble box ref-er-enced by \OT1/pcr/m/sl/10 Handle \OT1/ptm/m/it/10 has with \OT1/pcr/m/sl/10 Congruence\OT1/ptm/m/it/10 . -[117 [159] +[117] +Overfull \hbox (3.7116pt too wide) in paragraph at lines 807--808 + []\OT1/ptm/b/n/10 ppl[][][][]Grid[][][]generalized[][][]affine[][][]preimage[] +[][]lhs[][][]rhs()[] \OT1/pcr/m/n/8 int ppl[][][][]Grid[][][]generalized[][][]a +ffine[][][]preimage[][][]lhs[][][]rhs + +Overfull \hbox (13.20297pt too wide) in paragraph at lines 813--814 + []\OT1/ptm/b/n/10 ppl[][][][]Grid[][][]generalized[][][]affine[][][]image[][][ +]with[][][]congruence()[] \OT1/pcr/m/n/8 int ppl[][][][]Grid[][][]generalized[] +[][]affine[][][]image[][][]with[] +[163 Overfull \hbox (23.6138pt too wide) in paragraph at lines 4148--4150 []\OT1/pcr/m/n/10 ppl[][][][]Double[][][][]Box[][][]has[][][]upper[][][]bound(+ []Handle, +[]Var, ?Coeff[][][]1, ?Coeff[][][]2, ?Boolean) @@ -20589,7 +20611,22 @@ Overfull \hbox (8.5953pt too wide) in paragraph at lines 4173--4175 []\OT1/pcr/m/n/10 ppl[][][][]Double[][][][]Box[][][]minimize[][][]with[][][]poi nt(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[][][]1, ?Coeff[] -[118]] [119 [160] +[118]] [119] +Overfull \hbox (19.78285pt too wide) in paragraph at lines 819--820 + []\OT1/ptm/b/n/10 ppl[][][][]Grid[][][]generalized[][][]affine[][][]preimage[] +[][]with[][][]congruence()[] \OT1/pcr/m/n/8 int ppl[][][][]Grid[][][]generalize +d[][][]affine[][][]preimage[] + +Overfull \hbox (0.44244pt too wide) in paragraph at lines 825--826 + []\OT1/ptm/b/n/10 ppl[][][][]Grid[][][]generalized[][][]affine[][][]image[][][ +]lhs[][][]rhs[][][]with[][][]congruence()[] \OT1/pcr/m/n/8 int ppl[][][][]Grid[ +][][]generalized[][][]affine[][][] + +Overfull \hbox (11.82233pt too wide) in paragraph at lines 831--832 + []\OT1/ptm/b/n/10 ppl[][][][]Grid[][][]generalized[][][]affine[][][]preimage[] +[][]lhs[][][]rhs[][][]with[][][]congruence()[] \OT1/pcr/m/n/8 int ppl[][][][]Gr +id[][][]generalized[][][]affine[] +[164 Overfull \hbox (1.38072pt too wide) in paragraph at lines 4237--4239 \OT1/ptm/m/it/10 Transforms the dou-ble box ref-er-enced by \OT1/pcr/m/sl/10 Ha ndle \OT1/ptm/m/it/10 sub-sti-tut-ing the affine ex-pres-sion for \OT1/pcr/m/sl @@ -20643,7 +20680,17 @@ Overfull \hbox (15.79532pt too wide) in paragraph at lines 4302--4304 []\OT1/pcr/m/n/10 ppl[][][][]Double[][][][]Box[][][]limited[][][][]C[]C76[][][] extrapolation[][][]assign[][][]with[][][]tokens(+[]Handle[][][]1, +[] -[121] [161 +[121] +Overfull \hbox (17.18285pt too wide) in paragraph at lines 903--904 + []\OT1/ptm/b/n/10 ppl[][][][]Grid[][][]congruence[][][]widening[][][]assign[][ +][]with[][][]tokens()[] \OT1/pcr/m/n/8 int ppl[][][][]Grid[][][]congruence[][][ +]widening[][][]assign[][][]with[] + +Overfull \hbox (5.15298pt too wide) in paragraph at lines 909--910 + []\OT1/ptm/b/n/10 ppl[][][][]Grid[][][]generator[][][]widening[][][]assign[][] +[]with[][][]tokens()[] \OT1/pcr/m/n/8 int ppl[][][][]Grid[][][]generator[][][]w +idening[][][]assign[][][]with[] +[165] Overfull \hbox (12.19531pt too wide) in paragraph at lines 4305--4307 []\OT1/pcr/m/n/10 ppl[][][][]Double[][][][]Box[][][]limited[][][][]C[]C76[][][] extrapolation[][][]assign(+[]Handle[][][]1, +[]Handle[][][]2, +[] @@ -20660,24 +20707,34 @@ []\OT1/pcr/m/n/10 ppl[][][][]Double[][][][]Box[][][]fold[][][]space[][][]dimens ions(+[]Handle, +[]List[][][]of[][][][]P[]P[]L[][][][]Vars, +[]P[]P[]L[][][][]V ar) -[122]] [162 +[122] Overfull \hbox (6.19531pt too wide) in paragraph at lines 4361--4363 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[] [][]space[][][]dimension(+[]Dimension[][][][]Type, +[]Universe[] Underfull \hbox (badness 10000) in paragraph at lines 4382--4383 -[123]] -Overfull \hbox (3.7116pt too wide) in paragraph at lines 807--808 - []\OT1/ptm/b/n/10 ppl[][][][]Grid[][][]generalized[][][]affine[][][]preimage[] -[][]lhs[][][]rhs()[] \OT1/pcr/m/n/8 int ppl[][][][]Grid[][][]generalized[][][]a -ffine[][][]preimage[][][]lhs[][][]rhs +[123] +Overfull \hbox (10.54222pt too wide) in paragraph at lines 939--940 + []\OT1/ptm/b/n/10 ppl[][][][]Grid[][][]limited[][][]congruence[][][]extrapolat +ion[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/m/n/8 int ppl[][][][]Grid[][ +][]limited[][][]congruence[] -Overfull \hbox (13.20297pt too wide) in paragraph at lines 813--814 - []\OT1/ptm/b/n/10 ppl[][][][]Grid[][][]generalized[][][]affine[][][]image[][][ -]with[][][]congruence()[] \OT1/pcr/m/n/8 int ppl[][][][]Grid[][][]generalized[] -[][]affine[][][]image[][][]with[] -[163 +Overfull \hbox (1.39236pt too wide) in paragraph at lines 945--946 + []\OT1/ptm/b/n/10 ppl[][][][]Grid[][][]limited[][][]generator[][][]extrapolati +on[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/m/n/8 int ppl[][][][]Grid[][] +[]limited[][][]generator[][][] + +Overfull \hbox (22.05283pt too wide) in paragraph at lines 951--952 + []\OT1/ptm/b/n/10 ppl[][][][]Grid[][][]limited[][][]congruence[][][]extrapolat +ion[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]Grid[][][]limited[][][]congru +ence[][][]extrapolation[] + +Overfull \hbox (10.02296pt too wide) in paragraph at lines 957--958 + []\OT1/ptm/b/n/10 ppl[][][][]Grid[][][]limited[][][]generator[][][]extrapolati +on[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]Grid[][][]limited[][][]generat +or[][][]extrapolation[] +[166] Overfull \hbox (13.39532pt too wide) in paragraph at lines 4406--4408 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[] [][][]Octagonal[][][][]Shape[][][]mpz[][][]class(+[]Handle[][][]1, -[]Handle[] @@ -20734,7 +20791,12 @@ Overfull \hbox (4.99533pt too wide) in paragraph at lines 4442--4444 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[] [][][]Octagonal[][][][]Shape[][][]mpq[][][]class[][][]with[][][]complexity(+[] -[124]] +[124] +Overfull \hbox (7.5717pt too wide) in paragraph at lines 981--982 + []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Grid[][][]recycle[][][][]Grid[][][][]Gen +erator[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Grid[][][]recyc +le[][][][]Grid[][][][]Generator[][][][]System ( +[167] Overfull \hbox (30.81381pt too wide) in paragraph at lines 4445--4447 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]B[]D[][][][]Shape[][][]double[][][]from[] [][][]Double[][][][]Box[][][]with[][][]complexity(+[]Handle, +[]Complexity, @@ -20755,21 +20817,6 @@ []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]is[][][]disjoin t[][][]from[][][][]B[]D[][][][]Shape[][][]double(+[]Handle[][][]1, +[]Handle[] [125] -Overfull \hbox (19.78285pt too wide) in paragraph at lines 819--820 - []\OT1/ptm/b/n/10 ppl[][][][]Grid[][][]generalized[][][]affine[][][]preimage[] -[][]with[][][]congruence()[] \OT1/pcr/m/n/8 int ppl[][][][]Grid[][][]generalize -d[][][]affine[][][]preimage[] - -Overfull \hbox (0.44244pt too wide) in paragraph at lines 825--826 - []\OT1/ptm/b/n/10 ppl[][][][]Grid[][][]generalized[][][]affine[][][]image[][][ -]lhs[][][]rhs[][][]with[][][]congruence()[] \OT1/pcr/m/n/8 int ppl[][][][]Grid[ -][][]generalized[][][]affine[][][] - -Overfull \hbox (11.82233pt too wide) in paragraph at lines 831--832 - []\OT1/ptm/b/n/10 ppl[][][][]Grid[][][]generalized[][][]affine[][][]preimage[] -[][]lhs[][][]rhs[][][]with[][][]congruence()[] \OT1/pcr/m/n/8 int ppl[][][][]Gr -id[][][]generalized[][][]affine[] -[164] Overfull \hbox (40.9953pt too wide) in paragraph at lines 4519--4521 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]relation[][][]w ith[][][]constraint(+[]Handle, +[]Constraint, ?Relation[] @@ -20816,7 +20863,7 @@ Overfull \hbox (36.19531pt too wide) in paragraph at lines 4550--4552 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]maximize[][][]w ith[][][]point(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[][][]1, ?Coeff[] -[126] +[126] [168 Overfull \hbox (36.19531pt too wide) in paragraph at lines 4555--4557 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]minimize[][][]w ith[][][]point(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[][][]1, ?Coeff[] @@ -20829,17 +20876,7 @@ Overfull \hbox (11.6138pt too wide) in paragraph at lines 4597--4599 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]refine[][][]wit h[][][]constraints( +[]Handle, +[]Constraint[][][][]System) -[127] -Overfull \hbox (17.18285pt too wide) in paragraph at lines 903--904 - []\OT1/ptm/b/n/10 ppl[][][][]Grid[][][]congruence[][][]widening[][][]assign[][ -][]with[][][]tokens()[] \OT1/pcr/m/n/8 int ppl[][][][]Grid[][][]congruence[][][ -]widening[][][]assign[][][]with[] - -Overfull \hbox (5.15298pt too wide) in paragraph at lines 909--910 - []\OT1/ptm/b/n/10 ppl[][][][]Grid[][][]generator[][][]widening[][][]assign[][] -[]with[][][]tokens()[] \OT1/pcr/m/n/8 int ppl[][][][]Grid[][][]generator[][][]w -idening[][][]assign[][][]with[] -[165] +[127]] Overfull \hbox (11.6138pt too wide) in paragraph at lines 4600--4602 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]refine[][][]wit h[][][]congruences( +[]Handle, +[]Congruence[][][][]System) @@ -20875,7 +20912,7 @@ Overfull \hbox (21.79532pt too wide) in paragraph at lines 4637--4639 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]generalized[][] []affine[][][]preimage[][][]lhs[][][]rhs(+[]Handle, +[]Lin[][][][]Expr[] -[128] +[128) (./interfaceppl__Linear__Expression__tag.tex] [169] Overfull \hbox (69.2138pt too wide) in paragraph at lines 4640--4642 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]wrap[][][]assig n(+[]Handle, +[]List[][][]of[][][][]P[]P[]L[][][][]Var, +[]Width, +[]Representa @@ -20892,27 +20929,7 @@ Overfull \hbox (15.79532pt too wide) in paragraph at lines 4672--4674 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][][]B[]H[]M[]Z05[ ][][]widening[][][]assign[][][]with[][][]tokens(+[]Handle[][][]1, +[]Handle[] -[129 -Overfull \hbox (10.54222pt too wide) in paragraph at lines 939--940 - []\OT1/ptm/b/n/10 ppl[][][][]Grid[][][]limited[][][]congruence[][][]extrapolat -ion[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/m/n/8 int ppl[][][][]Grid[][ -][]limited[][][]congruence[] - -Overfull \hbox (1.39236pt too wide) in paragraph at lines 945--946 - []\OT1/ptm/b/n/10 ppl[][][][]Grid[][][]limited[][][]generator[][][]extrapolati -on[][][]assign[][][]with[][][]tokens()[] \OT1/pcr/m/n/8 int ppl[][][][]Grid[][] -[]limited[][][]generator[][][] - -Overfull \hbox (22.05283pt too wide) in paragraph at lines 951--952 - []\OT1/ptm/b/n/10 ppl[][][][]Grid[][][]limited[][][]congruence[][][]extrapolat -ion[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]Grid[][][]limited[][][]congru -ence[][][]extrapolation[] - -Overfull \hbox (10.02296pt too wide) in paragraph at lines 957--958 - []\OT1/ptm/b/n/10 ppl[][][][]Grid[][][]limited[][][]generator[][][]extrapolati -on[][][]assign()[] \OT1/pcr/m/n/8 int ppl[][][][]Grid[][][]limited[][][]generat -or[][][]extrapolation[] -[166]] +[129] Overfull \hbox (1.39532pt too wide) in paragraph at lines 4675--4677 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][][]H79[][][]wide ning[][][]assign[][][]with[][][]tokens(+[]Handle[][][]1, +[]Handle[][][] @@ -20945,11 +20962,28 @@ []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]limited[][][][] C[]C76[][][]extrapolation[][][]assign(+[]Handle[][][]1, +[]Handle[] [130] -Overfull \hbox (7.5717pt too wide) in paragraph at lines 981--982 - []\OT1/ptm/b/n/10 ppl[][][]new[][][][]Grid[][][]recycle[][][][]Grid[][][][]Gen -erator[][][][]System()[] \OT1/pcr/m/n/8 int ppl[][][]new[][][][]Grid[][][]recyc -le[][][][]Grid[][][][]Generator[][][][]System ( -[167 +Overfull \hbox (22.34773pt too wide) in paragraph at lines 25--27 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Linear[][][][]Expression[][][ +]from[][][][]Constraint[][] ([][]ppl[][][][]Linear[][][][]Expression[][][]t[][] + $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 ple, [][]ppl[][][]const[][][][]Constrai +nt[] + +Overfull \hbox (18.96815pt too wide) in paragraph at lines 28--30 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Linear[][][][]Expression[][][ +]from[][][][]Generator[][] ([][]ppl[][][][]Linear[][][][]Expression[][][]t[][] +$\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 ple, [][]ppl[][][]const[][][][]Generator +[] + +Overfull \hbox (15.40788pt too wide) in paragraph at lines 53--55 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Linear[][][][]Expression[][][]inhomoge +neous[][][]term[][] ([][]ppl[][][]const[][][][]Linear[][][][]Expression[][][]t[ +][] le, [][]ppl[][][][]Coefficient[] + +Overfull \hbox (2.65662pt too wide) in paragraph at lines 69--71 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Linear[][][][]Expression[][][]add[][][ +]to[][][]coefficient[][] ([][]ppl[][][][]Linear[][][][]Expression[][][]t[][] le +, [][]ppl[][][]dimension[][][]type[][] var, +[170] Overfull \hbox (0.19531pt too wide) in paragraph at lines 4724--4726 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]add[][][]space[ ][][]dimensions[][][]and[][][]embed(+[]Handle, +[]Dimension[] @@ -20969,7 +21003,17 @@ Overfull \hbox (3.79532pt too wide) in paragraph at lines 4739--4741 []\OT1/pcr/m/n/10 ppl[][][][]B[]D[][][][]Shape[][][]double[][][]fold[][][]space [][][]dimensions(+[]Handle, +[]List[][][]of[][][][]P[]P[]L[][][][]Vars, +[] -[131]] +[131] +Overfull \hbox (22.89804pt too wide) in paragraph at lines 72--74 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Linear[][][][]Expression[][][]add[][][ +]to[][][]inhomogeneous[][] ([][]ppl[][][][]Linear[][][][]Expression[][][]t[][] +le, [][]ppl[][][]const[][][][]Coefficient[] + +Overfull \hbox (25.43753pt too wide) in paragraph at lines 81--83 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]multiply[][][][]Linear[][][][]Expression +[][][]by[][][][]Coefficient[][] ([][]ppl[][][][]Linear[][][][]Expression[][][]t +[][] le, [][]ppl[][][]const[][][][]Coefficient[] +) (./interfaceppl__MIP__Problem__tag.tex Overfull \hbox (0.19531pt too wide) in paragraph at lines 4761--4763 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]double[][][]f rom[][][]space[][][]dimension(+[]Dimension[][][][]Type, +[] @@ -21010,7 +21054,7 @@ \OT1/ptm/m/it/10 Builds a new oc-tag-o-nal shape \OT1/pcr/m/sl/10 P[][][]1 \OT1 /ptm/m/it/10 from the bd[][][]shape[][][]mpq[][][]class ref-er-enced by han-dle \OT1/pcr/m/sl/10 Handle[][][]1\OT1/ptm/m/it/10 . \OT1/pcr/m/sl/10 Handle[] -[132] [168 +[132] [171] Overfull \hbox (19.39532pt too wide) in paragraph at lines 4806--4808 []\OT1/pcr/m/n/10 ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]double[][][]f rom[][][][]Octagonal[][][][]Shape[][][]mpz[][][]class(+[]Handle[][][]1, -[] @@ -21084,7 +21128,7 @@ Overfull \hbox (21.79532pt too wide) in paragraph at lines 4897--4899 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]is[][][]di sjoint[][][]from[][][][]Octagonal[][][][]Shape[][][]double(+[]Handle[] -[134]] +[134] Overfull \hbox (30.19531pt too wide) in paragraph at lines 4900--4902 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]equals[][] [][]Octagonal[][][][]Shape[][][]double(+[]Handle[][][]1, +[]Handle[] @@ -21125,6 +21169,38 @@ []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]minimize(+ []Handle, +[]Lin[][][][]Expr, ?Coeff[][][]1, ?Coeff[] [135] +Overfull \hbox (14.92802pt too wide) in paragraph at lines 50--52 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]M[]I[]P[][][][]Problem[][] ([ +][]ppl[][][][]M[]I[]P[][][][]Problem[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/ +bc/n/10 pmip, [][]ppl[][][]dimension[][][]type[][] d, [][]ppl[][][]const[][][][ +]Constraint[] + +Overfull \hbox (20.14798pt too wide) in paragraph at lines 53--55 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]M[]I[]P[][][][]Problem[][][]f +rom[][][][]M[]I[]P[][][][]Problem[][] ([][]ppl[][][][]M[]I[]P[][][][]Problem[][ +][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pmip, [][]ppl[][][]const[][][][ +]M[]I[]P[][][][]Problem[] + +Overfull \hbox (14.84767pt too wide) in paragraph at lines 56--58 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]assign[][][][]M[]I[]P[][][][]Problem[][] +[]from[][][][]M[]I[]P[][][][]Problem[][] ([][]ppl[][][][]M[]I[]P[][][][]Problem +[][][]t[][] dst, [][]ppl[][][]const[][][][]M[]I[]P[][][][]Problem[] + +Overfull \hbox (1.62802pt too wide) in paragraph at lines 69--71 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]M[]I[]P[][][][]Problem[][][]number[][] +[]of[][][]integer[][][]space[][][]dimensions[][] ([][]ppl[][][]const[][][][]M[] +I[]P[][][][]Problem[][][]t[][] mip, [][]ppl[] + +Overfull \hbox (0.81778pt too wide) in paragraph at lines 72--74 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]M[]I[]P[][][][]Problem[][][]integer[][ +][]space[][][]dimensions[][] ([][]ppl[][][]const[][][][]M[]I[]P[][][][]Problem[ +][][]t[][] mip, [][]ppl[][][]dimension[] + +Overfull \hbox (28.59772pt too wide) in paragraph at lines 81--83 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]M[]I[]P[][][][]Problem[][][]objective[ +][][]function[][] ([][]ppl[][][]const[][][][]M[]I[]P[][][][]Problem[][][]t[][] +mip, [][]ppl[][][]const[][][][]Linear[][][][]Expression[] +[172] Overfull \hbox (20.5953pt too wide) in paragraph at lines 4950--4952 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]maximize[] [][]with[][][]point(+[]Handle, +[]Lin[][][][]Expr, ?Coeff[] @@ -21140,7 +21216,7 @@ Overfull \hbox (8.0138pt too wide) in paragraph at lines 4988--4990 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]add[][][]c ongruences( +[]Handle, +[]Congruence[][][][]System) -[136]) (./interfaceppl__Linear__Expression__tag.tex +[136] Overfull \hbox (8.0138pt too wide) in paragraph at lines 4991--4993 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]refine[][] []with[][][]constraint( +[]Handle, +[]Constraint) @@ -21189,7 +21265,7 @@ Overfull \hbox (14.5953pt too wide) in paragraph at lines 5028--5030 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]generalize d[][][]affine[][][]image(+[]Handle, +[]P[]P[]L[][][][]Var, +[] -[137] [169 +[137] Overfull \hbox (11.6138pt too wide) in paragraph at lines 5031--5033 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]generalize d[][][]affine[][][]preimage(+[]Handle, +[]P[]P[]L[][][][]Var, @@ -21213,7 +21289,27 @@ Overfull \hbox (30.19531pt too wide) in paragraph at lines 5062--5064 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]simplify[] [][]using[][][]context[][][]assign(+[]Handle[][][]1, +[]Handle[] -[138]] +[138 +Overfull \hbox (11.228pt too wide) in paragraph at lines 97--99 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]M[]I[]P[][][][]Problem[][][]add[][][]s +pace[][][]dimensions[][][]and[][][]embed[][] ([][]ppl[][][][]M[]I[]P[][][][]Pro +blem[][][]t[][] mip, [][]ppl[][][]dimension[] + +Overfull \hbox (5.5279pt too wide) in paragraph at lines 100--102 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]M[]I[]P[][][][]Problem[][][]add[][][]t +o[][][]integer[][][]space[][][]dimensions[][] ([][]ppl[][][][]M[]I[]P[][][][]Pr +oblem[][][]t[][] mip, [][]ppl[][][]dimension[] + +Overfull \hbox (18.59772pt too wide) in paragraph at lines 109--111 +[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]M[]I[]P[][][][]Problem[][][]set[][][]o +bjective[][][]function[][] ([][]ppl[][][][]M[]I[]P[][][][]Problem[][][]t[][] mi +p, [][]ppl[][][]const[][][][]Linear[][][][]Expression[] + +Overfull \hbox (28.95757pt too wide) in paragraph at lines 124--125 +[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]M[]I[]P[][][][]Problem[][][]evaluate[][][ +]objective[][][]function[][] ([][]ppl[][][]const[][][][]M[]I[]P[][][][]Problem[ +][][]t[][] mip, [][]ppl[][][]const[][][][]Generator[] +[173]] Overfull \hbox (20.5953pt too wide) in paragraph at lines 5065--5067 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]linear[][] []partition(+[]Handle[][][]1, +[]Handle[][][]2, -[]Handle[] @@ -21242,28 +21338,6 @@ []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]limited[][ ][][]C[]C76[][][]extrapolation[][][]assign(+[]Handle[][][]1, +[] [139] -Overfull \hbox (22.34773pt too wide) in paragraph at lines 25--27 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Linear[][][][]Expression[][][ -]from[][][][]Constraint[][] ([][]ppl[][][][]Linear[][][][]Expression[][][]t[][] - $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 ple, [][]ppl[][][]const[][][][]Constrai -nt[] - -Overfull \hbox (18.96815pt too wide) in paragraph at lines 28--30 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Linear[][][][]Expression[][][ -]from[][][][]Generator[][] ([][]ppl[][][][]Linear[][][][]Expression[][][]t[][] -$\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 ple, [][]ppl[][][]const[][][][]Generator -[] - -Overfull \hbox (15.40788pt too wide) in paragraph at lines 53--55 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Linear[][][][]Expression[][][]inhomoge -neous[][][]term[][] ([][]ppl[][][]const[][][][]Linear[][][][]Expression[][][]t[ -][] le, [][]ppl[][][][]Coefficient[] - -Overfull \hbox (2.65662pt too wide) in paragraph at lines 69--71 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Linear[][][][]Expression[][][]add[][][ -]to[][][]coefficient[][] ([][]ppl[][][][]Linear[][][][]Expression[][][]t[][] le -, [][]ppl[][][]dimension[][][]type[][] var, -[170] Overfull \hbox (42.19531pt too wide) in paragraph at lines 5112--5114 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]add[][][]s pace[][][]dimensions[][][]and[][][]embed(+[]Handle, +[]Dimension[] @@ -21287,17 +21361,25 @@ Overfull \hbox (0.19531pt too wide) in paragraph at lines 5127--5129 []\OT1/pcr/m/n/10 ppl[][][][]Octagonal[][][][]Shape[][][]double[][][]fold[][][] space[][][]dimensions(+[]Handle, +[]List[][][]of[][][][]P[]P[]L[] -) (./PI_Compilation.tex [140]) -Overfull \hbox (22.89804pt too wide) in paragraph at lines 72--74 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]Linear[][][][]Expression[][][]add[][][ -]to[][][]inhomogeneous[][] ([][]ppl[][][][]Linear[][][][]Expression[][][]t[][] -le, [][]ppl[][][]const[][][][]Coefficient[] +) (./PI_Compilation.tex +Underfull \hbox (badness 10000) detected at line 188 +[][][] -Overfull \hbox (25.43753pt too wide) in paragraph at lines 81--83 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]multiply[][][][]Linear[][][][]Expression -[][][]by[][][][]Coefficient[][] ([][]ppl[][][][]Linear[][][][]Expression[][][]t -[][] le, [][]ppl[][][]const[][][][]Coefficient[] -) (./interfaceppl__MIP__Problem__tag.tex (./PI_SD_Features.tex [141 [171] [142]] +Overfull \hbox (2.87207pt too wide) in paragraph at lines 195--196 + []\OT1/ptm/b/n/10 ppl[][][][]M[]I[]P[][][][]Problem[][][]evaluate[][][]objecti +ve[][][]function()[] \OT1/pcr/m/n/8 int ppl[][][][]M[]I[]P[][][][]Problem[][][] +evaluate[][][]objective[][][]function + +Package longtable Warning: Column widths have changed +(longtable) in table 11 on input line 211. + + +Underfull \vbox (badness 10000) has occurred while \output is active [174 [140]]) (./PI_SD_Features.tex + +Package longtable Warning: Column widths have changed +(longtable) in table 12 on input line 230. + +) (./interfaceppl__Octagonal__Shape__double__tag.tex [141] [142] Overfull \hbox (30.3312pt too wide) in paragraph at lines 86--87 []\OT1/ptm/m/n/10 Notice that, for dy-namic link-ing to work, you should have c on-fig-ured the li-brary with the \OT1/pcr/m/n/10 --enable-shared @@ -21315,91 +21397,7 @@ ist/fonts/enc/dvips/base/8r.enc} -Overfull \hbox (14.92802pt too wide) in paragraph at lines 50--52 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]M[]I[]P[][][][]Problem[][] ([ -][]ppl[][][][]M[]I[]P[][][][]Problem[][][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/ -bc/n/10 pmip, [][]ppl[][][]dimension[][][]type[][] d, [][]ppl[][][]const[][][][ -]Constraint[] - -Overfull \hbox (20.14798pt too wide) in paragraph at lines 53--55 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]M[]I[]P[][][][]Problem[][][]f -rom[][][][]M[]I[]P[][][][]Problem[][] ([][]ppl[][][][]M[]I[]P[][][][]Problem[][ -][]t[][] $\OMS/cmsy/m/n/10 ^^C$\OT1/ptm/bc/n/10 pmip, [][]ppl[][][]const[][][][ -]M[]I[]P[][][][]Problem[] - -Overfull \hbox (14.84767pt too wide) in paragraph at lines 56--58 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][]assign[][][][]M[]I[]P[][][][]Problem[][] -[]from[][][][]M[]I[]P[][][][]Problem[][] ([][]ppl[][][][]M[]I[]P[][][][]Problem -[][][]t[][] dst, [][]ppl[][][]const[][][][]M[]I[]P[][][][]Problem[] - -Overfull \hbox (1.62802pt too wide) in paragraph at lines 69--71 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]M[]I[]P[][][][]Problem[][][]number[][] -[]of[][][]integer[][][]space[][][]dimensions[][] ([][]ppl[][][]const[][][][]M[] -I[]P[][][][]Problem[][][]t[][] mip, [][]ppl[] - -Overfull \hbox (0.81778pt too wide) in paragraph at lines 72--74 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]M[]I[]P[][][][]Problem[][][]integer[][ -][]space[][][]dimensions[][] ([][]ppl[][][]const[][][][]M[]I[]P[][][][]Problem[ -][][]t[][] mip, [][]ppl[][][]dimension[] - -Overfull \hbox (28.59772pt too wide) in paragraph at lines 81--83 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]M[]I[]P[][][][]Problem[][][]objective[ -][][]function[][] ([][]ppl[][][]const[][][][]M[]I[]P[][][][]Problem[][][]t[][] -mip, [][]ppl[][][]const[][][][]Linear[][][][]Expression[] -[172 -Overfull \hbox (11.228pt too wide) in paragraph at lines 97--99 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]M[]I[]P[][][][]Problem[][][]add[][][]s -pace[][][]dimensions[][][]and[][][]embed[][] ([][]ppl[][][][]M[]I[]P[][][][]Pro -blem[][][]t[][] mip, [][]ppl[][][]dimension[] - -Overfull \hbox (5.5279pt too wide) in paragraph at lines 100--102 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]M[]I[]P[][][][]Problem[][][]add[][][]t -o[][][]integer[][][]space[][][]dimensions[][] ([][]ppl[][][][]M[]I[]P[][][][]Pr -oblem[][][]t[][] mip, [][]ppl[][][]dimension[] - -Overfull \hbox (18.59772pt too wide) in paragraph at lines 109--111 -[][] \OT1/ptm/bc/n/10 int [][]ppl[][][][]M[]I[]P[][][][]Problem[][][]set[][][]o -bjective[][][]function[][] ([][]ppl[][][][]M[]I[]P[][][][]Problem[][][]t[][] mi -p, [][]ppl[][][]const[][][][]Linear[][][][]Expression[] - -Overfull \hbox (28.95757pt too wide) in paragraph at lines 124--125 -[]\OT1/ptm/bc/n/10 int [][]ppl[][][][]M[]I[]P[][][][]Problem[][][]evaluate[][][ -]objective[][][]function[][] ([][]ppl[][][]const[][][][]M[]I[]P[][][][]Problem[ -][][]t[][] mip, [][]ppl[][][]const[][][][]Generator[] -[173] -Output written on refman.pdf (151 pages, 759051 bytes). -Transcript written on refman.log. -make[3]: Leaving directory '/build/ppl-1.2/doc/user-configured-prolog-interface.latex-dir' -pdftops ppl-user-configured-prolog-interface-1.2.pdf ppl-user-configured-prolog-interface-1.2.ps - -Underfull \hbox (badness 10000) detected at line 188 -[][][] - -Overfull \hbox (2.87207pt too wide) in paragraph at lines 195--196 - []\OT1/ptm/b/n/10 ppl[][][][]M[]I[]P[][][][]Problem[][][]evaluate[][][]objecti -ve[][][]function()[] \OT1/pcr/m/n/8 int ppl[][][][]M[]I[]P[][][][]Problem[][][] -evaluate[][][]objective[][][]function - -Package longtable Warning: Column widths have changed -(longtable) in table 11 on input line 211. - - -Underfull \vbox (badness 10000) has occurred while \output is active [174] - -Package longtable Warning: Column widths have changed -(longtable) in table 12 on input line 230. - -) (./interfaceppl__Octagonal__Shape__double__tag.tex +m/cmr10.pfb> Overfull \hbox (8.3726pt too wide) in paragraph at lines 19--21 []\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]doub le[][][]from[][][][]C[][][][]Polyhedron[][] ([][]ppl[][][][]Octagonal[][][][]Sh @@ -21447,7 +21445,21 @@ []\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]doub le[][][]from[][][][]N[]N[]C[][][][]Polyhedron[][][]with[][][]complexity[][] ([] []ppl[][][][]Octagonal[][][][]Shape[] -[175] +[175 +Output written on refman.pdf (151 pages, 758996 bytes). +Transcript written on refman.log. +make[3]: Leaving directory '/build/ppl-1.2/doc/user-configured-prolog-interface.latex-dir' +pdftops ppl-user-configured-prolog-interface-1.2.pdf ppl-user-configured-prolog-interface-1.2.ps + Overfull \hbox (3.17188pt too wide) in paragraph at lines 49--51 []\OT1/ptm/bc/n/10 int [][]ppl[][][]new[][][][]Octagonal[][][][]Shape[][][]doub le[][][]from[][][][]B[]D[][][][]Shape[][][]mpz[][][]class[][][]with[][][]comple @@ -27305,7 +27317,8 @@ []\OT1/ptm/b/n/10 ppl[][][][]Rational[][][][]Box[][][]generalized[][][]affine[ ][][]image[][][]lhs[][][]rhs()[] \OT1/pcr/m/n/8 int ppl[][][][]Rational[][][][] Box[][][]generalized[][][]affine[][][]image[] -[335] +[335]gzip -n --best --force ppl-user-configured-prolog-interface-1.2.ps + Overfull \hbox (9.71298pt too wide) in paragraph at lines 769--770 []\OT1/ptm/b/n/10 ppl[][][][]Rational[][][][]Box[][][]generalized[][][]affine[ ][][]preimage[][][]lhs[][][]rhs()[] \OT1/pcr/m/n/8 int ppl[][][][]Rational[][][ @@ -27451,9 +27464,8 @@ texlive/texmf-dist/fonts/type1/urw/times/utmb8a.pfb>gzip -n --best --force ppl-user-configured-prolog-interface-1.2.ps - -Output written on refman.pdf (348 pages, 2086543 bytes). +ri8a.pfb> +Output written on refman.pdf (348 pages, 2086434 bytes). Transcript written on refman.log. makeindex refman.idx This is makeindex, version 2.15 [TeX Live 2019/dev] (kpathsea + Thai support). @@ -47542,7 +47554,7 @@ ist/fonts/type1/urw/times/utmbi8a.pfb> -Output written on refman.pdf (414 pages, 2579809 bytes). +Output written on refman.pdf (414 pages, 2579699 bytes). Transcript written on refman.log. latex_count=8 ; \ while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $latex_count -gt 0 ] ;\ @@ -67618,7 +67630,7 @@ ist/fonts/type1/urw/times/utmbi8a.pfb> -Output written on refman.pdf (414 pages, 2579613 bytes). +Output written on refman.pdf (414 pages, 2579564 bytes). Transcript written on refman.log. makeindex refman.idx This is makeindex, version 2.15 [TeX Live 2019/dev] (kpathsea + Thai support). @@ -87693,7 +87705,7 @@ ist/fonts/type1/urw/times/utmbi8a.pfb> -Output written on refman.pdf (414 pages, 2579613 bytes). +Output written on refman.pdf (414 pages, 2579564 bytes). Transcript written on refman.log. make[3]: Leaving directory '/build/ppl-1.2/doc/user-configured-c-interface.latex-dir' pdftops ppl-user-configured-c-interface-1.2.pdf ppl-user-configured-c-interface-1.2.ps @@ -87714,8 +87726,8 @@ -e 's||'"./gpl.dox ./fdl.dox ./../interfaces/Prolog/Prolog_configured_interface.dox ./../interfaces/Prolog/Prolog_interface_sysindep.dox ../interfaces/Prolog/Prolog_configured_domains.dox ./../interfaces/Prolog/Prolog_interface_compilation.dox ./../interfaces/Prolog/Prolog_interface_sysdep.dox"'|' \ user-language-interface.doxyconf \ > Doxyfile.user-configured-prolog-interface-html -TEXINPUTS=/build/ppl-1.2/doc: texmf_casefold_search=0 doxygen Doxyfile.user-configured-prolog-interface-html TEXINPUTS=/build/ppl-1.2/doc: texmf_casefold_search=0 doxygen Doxyfile.user-configured-c-interface-html +TEXINPUTS=/build/ppl-1.2/doc: texmf_casefold_search=0 doxygen Doxyfile.user-configured-prolog-interface-html warning: doxygen no longer ships with the FreeSans font. You may want to clear or change DOT_FONTNAME. Otherwise you run the risk that the wrong font is being used for dot generated graphs. @@ -87749,7 +87761,7 @@ make[2]: Leaving directory '/build/ppl-1.2/doc' make[1]: Leaving directory '/build/ppl-1.2' dh_auto_build -Nlibppl-doc - make -j10 + make -j18 make[1]: Entering directory '/build/ppl-1.2' make all-recursive make[2]: Entering directory '/build/ppl-1.2' @@ -87895,7 +87907,7 @@ # FIXME: there are test failures with swi-prolog 7.2 # for now just ignore these. dh_auto_test || true - make -j10 check VERBOSE=1 + make -j18 check VERBOSE=1 make[2]: Entering directory '/build/ppl-1.2' Making check in . make[3]: Entering directory '/build/ppl-1.2' @@ -87993,7 +88005,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from C_Expr.cc:25: + from bdshape1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -88005,7 +88017,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from C_Expr.cc:25: + from bdshape1.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -88015,7 +88027,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from linearform1.cc:24: + from octagonalshape1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -88027,7 +88039,51 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from linearform1.cc:24: + from octagonalshape1.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../../src/CO_Tree_defs.hh:1557, + from ../../src/Sparse_Row_defs.hh:29, + from ../../src/Linear_Expression_Impl_defs.hh:33, + from ../../src/ppl_include_files.hh:8, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from polyhedron2.cc:26: +../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../../src/mp_std_bits_defs.hh:28, + from ../../src/checked_defs.hh:27, + from ../../src/Checked_Number_defs.hh:28, + from ../../src/checked_numeric_limits.hh:27, + from ../../src/ppl_include_files.hh:3, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from polyhedron2.cc:26: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../../src/CO_Tree_defs.hh:1557, + from ../../src/Sparse_Row_defs.hh:29, + from ../../src/Linear_Expression_Impl_defs.hh:33, + from ../../src/ppl_include_files.hh:8, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from linearize.cc:24: +../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../../src/mp_std_bits_defs.hh:28, + from ../../src/checked_defs.hh:27, + from ../../src/Checked_Number_defs.hh:28, + from ../../src/checked_numeric_limits.hh:27, + from ../../src/ppl_include_files.hh:3, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from linearize.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -88040,7 +88096,79 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from C_Expr.cc:25: + from bdshape1.cc:24: +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +In file included from ../../src/Linear_System_templates.hh:30, + from ../../src/Linear_System_defs.hh:580, + from ../../src/Constraint_System_defs.hh:29, + from ../../src/Box_inlines.hh:28, + from ../../src/Box_defs.hh:2285, + from ../../src/Linear_Form_templates.hh:29, + from ../../src/ppl_include_files.hh:9, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from polyhedron2.cc:26: +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +In file included from ../../src/Linear_System_templates.hh:30, + from ../../src/Linear_System_defs.hh:580, + from ../../src/Constraint_System_defs.hh:29, + from ../../src/Box_inlines.hh:28, + from ../../src/Box_defs.hh:2285, + from ../../src/Linear_Form_templates.hh:29, + from ../../src/ppl_include_files.hh:9, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from octagonalshape1.cc:24: +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +In file included from ../../src/Linear_System_templates.hh:30, + from ../../src/Linear_System_defs.hh:580, + from ../../src/Constraint_System_defs.hh:29, + from ../../src/Box_inlines.hh:28, + from ../../src/Box_defs.hh:2285, + from ../../src/Linear_Form_templates.hh:29, + from ../../src/ppl_include_files.hh:9, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from linearize.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -88061,7 +88189,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from bdshape2.cc:24: + from polyhedron1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -88073,7 +88201,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from bdshape2.cc:24: + from polyhedron1.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -88083,7 +88211,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from linearize.cc:24: + from bdshape2.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -88095,7 +88223,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from linearize.cc:24: + from bdshape2.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -88108,7 +88236,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from linearform1.cc:24: + from polyhedron1.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -88123,28 +88251,6 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -In file included from ../../src/CO_Tree_defs.hh:1557, - from ../../src/Sparse_Row_defs.hh:29, - from ../../src/Linear_Expression_Impl_defs.hh:33, - from ../../src/ppl_include_files.hh:8, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from digitalfilters1.cc:24: -../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from ../../src/mp_std_bits_defs.hh:28, - from ../../src/checked_defs.hh:27, - from ../../src/Checked_Number_defs.hh:28, - from ../../src/checked_numeric_limits.hh:27, - from ../../src/ppl_include_files.hh:3, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from digitalfilters1.cc:24: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/Linear_System_templates.hh:30, from ../../src/Linear_System_defs.hh:580, from ../../src/Constraint_System_defs.hh:29, @@ -88175,7 +88281,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from octagonalshape1.cc:24: + from octagonalshape2.cc:25: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -88187,7 +88293,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from octagonalshape1.cc:24: + from octagonalshape2.cc:25: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -88197,7 +88303,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from bdshape1.cc:24: + from linearform1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -88209,7 +88315,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from bdshape1.cc:24: + from linearform1.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -88219,7 +88325,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from octagonalshape2.cc:25: + from C_Expr.cc:25: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -88231,41 +88337,17 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from octagonalshape2.cc:25: + from C_Expr.cc:25: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ -In file included from ../../src/Linear_System_templates.hh:30, - from ../../src/Linear_System_defs.hh:580, - from ../../src/Constraint_System_defs.hh:29, - from ../../src/Box_inlines.hh:28, - from ../../src/Box_defs.hh:2285, - from ../../src/Linear_Form_templates.hh:29, - from ../../src/ppl_include_files.hh:9, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from digitalfilters1.cc:24: -../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': -../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': -../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ In file included from ../../src/CO_Tree_defs.hh:1557, from ../../src/Sparse_Row_defs.hh:29, from ../../src/Linear_Expression_Impl_defs.hh:33, from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from polyhedron1.cc:24: + from digitalfilters1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -88277,7 +88359,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from polyhedron1.cc:24: + from digitalfilters1.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -88290,54 +88372,6 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from linearize.cc:24: -../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': -../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': -../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -In file included from ../../src/Linear_System_templates.hh:30, - from ../../src/Linear_System_defs.hh:580, - from ../../src/Constraint_System_defs.hh:29, - from ../../src/Box_inlines.hh:28, - from ../../src/Box_defs.hh:2285, - from ../../src/Linear_Form_templates.hh:29, - from ../../src/ppl_include_files.hh:9, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from bdshape1.cc:24: -../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': -../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': -../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -In file included from ../../src/Linear_System_templates.hh:30, - from ../../src/Linear_System_defs.hh:580, - from ../../src/Constraint_System_defs.hh:29, - from ../../src/Box_inlines.hh:28, - from ../../src/Box_defs.hh:2285, - from ../../src/Linear_Form_templates.hh:29, - from ../../src/ppl_include_files.hh:9, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, from octagonalshape2.cc:25: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] @@ -88353,28 +88387,6 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -In file included from ../../src/CO_Tree_defs.hh:1557, - from ../../src/Sparse_Row_defs.hh:29, - from ../../src/Linear_Expression_Impl_defs.hh:33, - from ../../src/ppl_include_files.hh:8, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from polyhedron2.cc:26: -../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from ../../src/mp_std_bits_defs.hh:28, - from ../../src/checked_defs.hh:27, - from ../../src/Checked_Number_defs.hh:28, - from ../../src/checked_numeric_limits.hh:27, - from ../../src/ppl_include_files.hh:3, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from polyhedron2.cc:26: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/Linear_System_templates.hh:30, from ../../src/Linear_System_defs.hh:580, from ../../src/Constraint_System_defs.hh:29, @@ -88384,7 +88396,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from polyhedron1.cc:24: + from linearform1.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -88408,7 +88420,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from octagonalshape1.cc:24: + from C_Expr.cc:25: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -88432,7 +88444,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from polyhedron2.cc:26: + from digitalfilters1.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -88447,32 +88459,6 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -linearform1.cc: In function 'bool {anonymous}::test08()': -linearform1.cc:233:27: warning: catching polymorphic type 'class std::length_error' by value [-Wcatch-value=] - catch(std::length_error e) { - ^ -linearform1.cc:242:27: warning: catching polymorphic type 'class std::length_error' by value [-Wcatch-value=] - catch(std::length_error e) { - ^ -linearform1.cc:252:27: warning: catching polymorphic type 'class std::length_error' by value [-Wcatch-value=] - catch(std::length_error e) { - ^ -linearform1.cc:267:27: warning: catching polymorphic type 'class std::length_error' by value [-Wcatch-value=] - catch(std::length_error e) { - ^ -linearform1.cc:277:27: warning: catching polymorphic type 'class std::length_error' by value [-Wcatch-value=] - catch(std::length_error e) { - ^ -linearform1.cc:287:27: warning: catching polymorphic type 'class std::length_error' by value [-Wcatch-value=] - catch(std::length_error e) { - ^ -bdshape2.cc: In function 'bool {anonymous}::test01()': -bdshape2.cc:41:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] - catch(std::invalid_argument e) { - ^ -bdshape2.cc:51:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] - catch(std::invalid_argument e){ - ^ bdshape1.cc: In function 'bool {anonymous}::test01()': bdshape1.cc:40:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] catch(std::invalid_argument e) { @@ -88480,7 +88466,6 @@ bdshape1.cc:51:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] catch(std::invalid_argument e) { ^ -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o C_Expr C_Expr.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp polyhedron2.cc: In function 'bool {anonymous}::test01()': polyhedron2.cc:41:15: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] catch (std::invalid_argument) { @@ -88488,12 +88473,12 @@ polyhedron2.cc:47:17: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] catch (std::invalid_argument) { ^~~~~~~~~~~~~~~~ -octagonalshape2.cc: In function 'bool {anonymous}::test01()': -octagonalshape2.cc:40:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] +bdshape2.cc: In function 'bool {anonymous}::test01()': +bdshape2.cc:41:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] catch(std::invalid_argument e) { ^ -octagonalshape2.cc:49:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] - catch(std::invalid_argument e) { +bdshape2.cc:51:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] + catch(std::invalid_argument e){ ^ octagonalshape1.cc: In function 'bool {anonymous}::test01()': octagonalshape1.cc:40:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] @@ -88502,24 +88487,51 @@ octagonalshape1.cc:51:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] catch(std::invalid_argument e) { ^ +octagonalshape2.cc: In function 'bool {anonymous}::test01()': +octagonalshape2.cc:40:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] + catch(std::invalid_argument e) { + ^ +octagonalshape2.cc:49:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] + catch(std::invalid_argument e) { + ^ +linearform1.cc: In function 'bool {anonymous}::test08()': +linearform1.cc:233:27: warning: catching polymorphic type 'class std::length_error' by value [-Wcatch-value=] + catch(std::length_error e) { + ^ +linearform1.cc:242:27: warning: catching polymorphic type 'class std::length_error' by value [-Wcatch-value=] + catch(std::length_error e) { + ^ +linearform1.cc:252:27: warning: catching polymorphic type 'class std::length_error' by value [-Wcatch-value=] + catch(std::length_error e) { + ^ +linearform1.cc:267:27: warning: catching polymorphic type 'class std::length_error' by value [-Wcatch-value=] + catch(std::length_error e) { + ^ +linearform1.cc:277:27: warning: catching polymorphic type 'class std::length_error' by value [-Wcatch-value=] + catch(std::length_error e) { + ^ +linearform1.cc:287:27: warning: catching polymorphic type 'class std::length_error' by value [-Wcatch-value=] + catch(std::length_error e) { + ^ +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o C_Expr C_Expr.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/C_Expr C_Expr.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o linearform1 linearform1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o polyhedron1 polyhedron1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/polyhedron1 polyhedron1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o bdshape1 bdshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/bdshape1 bdshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o linearform1 linearform1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o polyhedron2 polyhedron2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/linearform1 linearform1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o linearize linearize.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o bdshape1 bdshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o polyhedron1 polyhedron1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/polyhedron2 polyhedron2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o linearize linearize.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/linearize linearize.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/bdshape1 bdshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/polyhedron1 polyhedron1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o octagonalshape1 octagonalshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o bdshape2 bdshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o octagonalshape1 octagonalshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/bdshape2 bdshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/octagonalshape1 octagonalshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o octagonalshape2 octagonalshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o polyhedron2 polyhedron2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o bdshape2 bdshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o octagonalshape2 octagonalshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/octagonalshape2 octagonalshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/polyhedron2 polyhedron2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/bdshape2 bdshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o digitalfilters1 digitalfilters1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o digitalfilters1 digitalfilters1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/digitalfilters1 digitalfilters1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp make[5]: Leaving directory '/build/ppl-1.2/tests/Concrete_Expression' make check-TESTS @@ -88588,29 +88600,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from bdshape2.cc:24: -../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from ../../src/mp_std_bits_defs.hh:28, - from ../../src/checked_defs.hh:27, - from ../../src/Checked_Number_defs.hh:28, - from ../../src/checked_numeric_limits.hh:27, - from ../../src/ppl_include_files.hh:3, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from bdshape2.cc:24: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ -In file included from ../../src/CO_Tree_defs.hh:1557, - from ../../src/Sparse_Row_defs.hh:29, - from ../../src/Linear_Expression_Impl_defs.hh:33, - from ../../src/ppl_include_files.hh:8, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from polyhedron2.cc:26: + from linearform1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -88622,7 +88612,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from polyhedron2.cc:26: + from linearform1.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -88632,7 +88622,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from bdshape1.cc:24: + from bdshape2.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -88644,7 +88634,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from bdshape1.cc:24: + from bdshape2.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -88657,7 +88647,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from bdshape2.cc:24: + from linearform1.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -88678,50 +88668,6 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from linearize.cc:24: -../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from ../../src/mp_std_bits_defs.hh:28, - from ../../src/checked_defs.hh:27, - from ../../src/Checked_Number_defs.hh:28, - from ../../src/checked_numeric_limits.hh:27, - from ../../src/ppl_include_files.hh:3, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from linearize.cc:24: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ -In file included from ../../src/CO_Tree_defs.hh:1557, - from ../../src/Sparse_Row_defs.hh:29, - from ../../src/Linear_Expression_Impl_defs.hh:33, - from ../../src/ppl_include_files.hh:8, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from linearform1.cc:24: -../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from ../../src/mp_std_bits_defs.hh:28, - from ../../src/checked_defs.hh:27, - from ../../src/Checked_Number_defs.hh:28, - from ../../src/checked_numeric_limits.hh:27, - from ../../src/ppl_include_files.hh:3, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from linearform1.cc:24: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ -In file included from ../../src/CO_Tree_defs.hh:1557, - from ../../src/Sparse_Row_defs.hh:29, - from ../../src/Linear_Expression_Impl_defs.hh:33, - from ../../src/ppl_include_files.hh:8, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, from C_Expr.cc:25: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] @@ -88744,7 +88690,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from polyhedron1.cc:24: + from octagonalshape2.cc:25: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -88756,7 +88702,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from polyhedron1.cc:24: + from octagonalshape2.cc:25: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -88791,7 +88737,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from polyhedron2.cc:26: + from bdshape2.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -88806,6 +88752,28 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ +In file included from ../../src/CO_Tree_defs.hh:1557, + from ../../src/Sparse_Row_defs.hh:29, + from ../../src/Linear_Expression_Impl_defs.hh:33, + from ../../src/ppl_include_files.hh:8, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from linearize.cc:24: +../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../../src/mp_std_bits_defs.hh:28, + from ../../src/checked_defs.hh:27, + from ../../src/Checked_Number_defs.hh:28, + from ../../src/checked_numeric_limits.hh:27, + from ../../src/ppl_include_files.hh:3, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from linearize.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/Linear_System_templates.hh:30, from ../../src/Linear_System_defs.hh:580, from ../../src/Constraint_System_defs.hh:29, @@ -88815,7 +88783,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from bdshape1.cc:24: + from C_Expr.cc:25: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -88839,7 +88807,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from linearize.cc:24: + from octagonalshape2.cc:25: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -88860,7 +88828,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from octagonalshape2.cc:25: + from polyhedron2.cc:26: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -88872,34 +88840,32 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from octagonalshape2.cc:25: + from polyhedron2.cc:26: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ -In file included from ../../src/Linear_System_templates.hh:30, - from ../../src/Linear_System_defs.hh:580, - from ../../src/Constraint_System_defs.hh:29, - from ../../src/Box_inlines.hh:28, - from ../../src/Box_defs.hh:2285, - from ../../src/Linear_Form_templates.hh:29, - from ../../src/ppl_include_files.hh:9, +In file included from ../../src/CO_Tree_defs.hh:1557, + from ../../src/Sparse_Row_defs.hh:29, + from ../../src/Linear_Expression_Impl_defs.hh:33, + from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from C_Expr.cc:25: -../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': -../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': -../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ + from digitalfilters1.cc:24: +../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../../src/mp_std_bits_defs.hh:28, + from ../../src/checked_defs.hh:27, + from ../../src/Checked_Number_defs.hh:28, + from ../../src/checked_numeric_limits.hh:27, + from ../../src/ppl_include_files.hh:3, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from digitalfilters1.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/Linear_System_templates.hh:30, from ../../src/Linear_System_defs.hh:580, from ../../src/Constraint_System_defs.hh:29, @@ -88909,7 +88875,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from linearform1.cc:24: + from octagonalshape1.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -88930,7 +88896,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from digitalfilters1.cc:24: + from bdshape1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -88942,7 +88908,29 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from digitalfilters1.cc:24: + from bdshape1.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../../src/CO_Tree_defs.hh:1557, + from ../../src/Sparse_Row_defs.hh:29, + from ../../src/Linear_Expression_Impl_defs.hh:33, + from ../../src/ppl_include_files.hh:8, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from polyhedron1.cc:24: +../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../../src/mp_std_bits_defs.hh:28, + from ../../src/checked_defs.hh:27, + from ../../src/Checked_Number_defs.hh:28, + from ../../src/checked_numeric_limits.hh:27, + from ../../src/ppl_include_files.hh:3, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from polyhedron1.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -88955,7 +88943,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from polyhedron1.cc:24: + from linearize.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -88979,7 +88967,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from octagonalshape1.cc:24: + from polyhedron2.cc:26: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -89027,7 +89015,31 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from octagonalshape2.cc:25: + from bdshape1.cc:24: +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +In file included from ../../src/Linear_System_templates.hh:30, + from ../../src/Linear_System_defs.hh:580, + from ../../src/Constraint_System_defs.hh:29, + from ../../src/Box_inlines.hh:28, + from ../../src/Box_defs.hh:2285, + from ../../src/Linear_Form_templates.hh:29, + from ../../src/ppl_include_files.hh:9, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from polyhedron1.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -89042,27 +89054,6 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -bdshape2.cc: In function 'bool {anonymous}::test01()': -bdshape2.cc:41:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] - catch(std::invalid_argument e) { - ^ -bdshape2.cc:51:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] - catch(std::invalid_argument e){ - ^ -polyhedron2.cc: In function 'bool {anonymous}::test01()': -polyhedron2.cc:41:15: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] - catch (std::invalid_argument) { - ^~~~~~~~~~~~~~~~ -polyhedron2.cc:47:17: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] - catch (std::invalid_argument) { - ^~~~~~~~~~~~~~~~ -bdshape1.cc: In function 'bool {anonymous}::test01()': -bdshape1.cc:40:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] - catch(std::invalid_argument e) { - ^ -bdshape1.cc:51:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] - catch(std::invalid_argument e) { - ^ linearform1.cc: In function 'bool {anonymous}::test08()': linearform1.cc:233:27: warning: catching polymorphic type 'class std::length_error' by value [-Wcatch-value=] catch(std::length_error e) { @@ -89082,6 +89073,20 @@ linearform1.cc:287:27: warning: catching polymorphic type 'class std::length_error' by value [-Wcatch-value=] catch(std::length_error e) { ^ +bdshape2.cc: In function 'bool {anonymous}::test01()': +bdshape2.cc:41:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] + catch(std::invalid_argument e) { + ^ +bdshape2.cc:51:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] + catch(std::invalid_argument e){ + ^ +octagonalshape1.cc: In function 'bool {anonymous}::test01()': +octagonalshape1.cc:40:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] + catch(std::invalid_argument e) { + ^ +octagonalshape1.cc:51:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] + catch(std::invalid_argument e) { + ^ octagonalshape2.cc: In function 'bool {anonymous}::test01()': octagonalshape2.cc:40:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] catch(std::invalid_argument e) { @@ -89089,32 +89094,39 @@ octagonalshape2.cc:49:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] catch(std::invalid_argument e) { ^ -octagonalshape1.cc: In function 'bool {anonymous}::test01()': -octagonalshape1.cc:40:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] +bdshape1.cc: In function 'bool {anonymous}::test01()': +bdshape1.cc:40:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] catch(std::invalid_argument e) { ^ -octagonalshape1.cc:51:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] +bdshape1.cc:51:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] catch(std::invalid_argument e) { ^ -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o C_Expr C_Expr.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +polyhedron2.cc: In function 'bool {anonymous}::test01()': +polyhedron2.cc:41:15: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] + catch (std::invalid_argument) { + ^~~~~~~~~~~~~~~~ +polyhedron2.cc:47:17: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] + catch (std::invalid_argument) { + ^~~~~~~~~~~~~~~~ +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o C_Expr C_Expr.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/C_Expr C_Expr.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o linearform1 linearform1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o bdshape1 bdshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o polyhedron1 polyhedron1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o linearize linearize.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o linearform1 linearform1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/linearform1 linearform1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/polyhedron1 polyhedron1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o bdshape1 bdshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/bdshape1 bdshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o linearize linearize.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/linearize linearize.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o octagonalshape1 octagonalshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o octagonalshape1 octagonalshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o polyhedron1 polyhedron1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/octagonalshape1 octagonalshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o octagonalshape2 octagonalshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/polyhedron1 polyhedron1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o octagonalshape2 octagonalshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/octagonalshape2 octagonalshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o polyhedron2 polyhedron2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o polyhedron2 polyhedron2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/polyhedron2 polyhedron2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o bdshape2 bdshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o bdshape2 bdshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/bdshape2 bdshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o digitalfilters1 digitalfilters1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o digitalfilters1 digitalfilters1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/digitalfilters1 digitalfilters1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp make[7]: Leaving directory '/build/ppl-1.2/tests/Concrete_Expression' make check-TESTS @@ -89135,11 +89147,11 @@ make[7]: Leaving directory '/build/ppl-1.2/tests/Concrete_Expression' make[6]: Leaving directory '/build/ppl-1.2/tests/Concrete_Expression' make[6]: Entering directory '/build/ppl-1.2/tests/Concrete_Expression' - rm -f C_Expr linearform1 linearize digitalfilters1 bdshape1 bdshape2 octagonalshape1 octagonalshape2 polyhedron1 polyhedron2 test -z "run_tests.stamp" || rm -f run_tests.stamp rm -rf .libs _libs rm -f *.o rm -f *.lo + rm -f C_Expr linearform1 linearize digitalfilters1 bdshape1 bdshape2 octagonalshape1 octagonalshape2 polyhedron1 polyhedron2 make[6]: Leaving directory '/build/ppl-1.2/tests/Concrete_Expression' **************************** float/IEEE754_QUAD **************************** make[6]: Entering directory '/build/ppl-1.2/tests/Concrete_Expression' @@ -89163,7 +89175,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from octagonalshape1.cc:24: + from polyhedron1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -89175,7 +89187,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from octagonalshape1.cc:24: + from polyhedron1.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -89185,7 +89197,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from C_Expr.cc:25: + from linearform1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -89197,7 +89209,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from C_Expr.cc:25: + from linearform1.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -89207,7 +89219,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from polyhedron2.cc:26: + from C_Expr.cc:25: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -89219,17 +89231,41 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from polyhedron2.cc:26: + from C_Expr.cc:25: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../../src/Linear_System_templates.hh:30, + from ../../src/Linear_System_defs.hh:580, + from ../../src/Constraint_System_defs.hh:29, + from ../../src/Box_inlines.hh:28, + from ../../src/Box_defs.hh:2285, + from ../../src/Linear_Form_templates.hh:29, + from ../../src/ppl_include_files.hh:9, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from polyhedron1.cc:24: +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ In file included from ../../src/CO_Tree_defs.hh:1557, from ../../src/Sparse_Row_defs.hh:29, from ../../src/Linear_Expression_Impl_defs.hh:33, from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from bdshape2.cc:24: + from bdshape1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -89241,7 +89277,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from bdshape2.cc:24: + from bdshape1.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -89251,7 +89287,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from bdshape1.cc:24: + from octagonalshape2.cc:25: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -89263,7 +89299,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from bdshape1.cc:24: + from octagonalshape2.cc:25: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -89289,35 +89325,72 @@ /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../../src/Linear_System_templates.hh:30, + from ../../src/Linear_System_defs.hh:580, + from ../../src/Constraint_System_defs.hh:29, + from ../../src/Box_inlines.hh:28, + from ../../src/Box_defs.hh:2285, + from ../../src/Linear_Form_templates.hh:29, + from ../../src/ppl_include_files.hh:9, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from linearform1.cc:24: +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +In file included from ../../src/Linear_System_templates.hh:30, + from ../../src/Linear_System_defs.hh:580, + from ../../src/Constraint_System_defs.hh:29, + from ../../src/Box_inlines.hh:28, + from ../../src/Box_defs.hh:2285, + from ../../src/Linear_Form_templates.hh:29, + from ../../src/ppl_include_files.hh:9, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from C_Expr.cc:25: +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ In file included from ../../src/CO_Tree_defs.hh:1557, from ../../src/Sparse_Row_defs.hh:29, from ../../src/Linear_Expression_Impl_defs.hh:33, from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from linearform1.cc:24: + from bdshape2.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); ^ -In file included from ../../src/mp_std_bits_defs.hh:28, - from ../../src/checked_defs.hh:27, - from ../../src/Checked_Number_defs.hh:28, - from ../../src/checked_numeric_limits.hh:27, - from ../../src/ppl_include_files.hh:3, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from linearform1.cc:24: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/CO_Tree_defs.hh:1557, from ../../src/Sparse_Row_defs.hh:29, from ../../src/Linear_Expression_Impl_defs.hh:33, from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from polyhedron1.cc:24: + from octagonalshape1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -89329,7 +89402,18 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from polyhedron1.cc:24: + from octagonalshape1.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../../src/mp_std_bits_defs.hh:28, + from ../../src/checked_defs.hh:27, + from ../../src/Checked_Number_defs.hh:28, + from ../../src/checked_numeric_limits.hh:27, + from ../../src/ppl_include_files.hh:3, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from bdshape2.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -89355,37 +89439,13 @@ /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ -In file included from ../../src/Linear_System_templates.hh:30, - from ../../src/Linear_System_defs.hh:580, - from ../../src/Constraint_System_defs.hh:29, - from ../../src/Box_inlines.hh:28, - from ../../src/Box_defs.hh:2285, - from ../../src/Linear_Form_templates.hh:29, - from ../../src/ppl_include_files.hh:9, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from octagonalshape1.cc:24: -../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': -../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': -../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ In file included from ../../src/CO_Tree_defs.hh:1557, from ../../src/Sparse_Row_defs.hh:29, from ../../src/Linear_Expression_Impl_defs.hh:33, from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from octagonalshape2.cc:25: + from polyhedron2.cc:26: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -89397,7 +89457,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from octagonalshape2.cc:25: + from polyhedron2.cc:26: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -89410,7 +89470,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from polyhedron2.cc:26: + from octagonalshape2.cc:25: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -89434,7 +89494,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from C_Expr.cc:25: + from bdshape1.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -89458,7 +89518,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from bdshape2.cc:24: + from linearize.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -89482,21 +89542,11 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from linearize.cc:24: + from octagonalshape1.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) ^ -../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': -../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ In file included from ../../src/Linear_System_templates.hh:30, from ../../src/Linear_System_defs.hh:580, from ../../src/Constraint_System_defs.hh:29, @@ -89506,7 +89556,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from bdshape1.cc:24: + from bdshape2.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -89514,27 +89564,6 @@ ../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': -../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -In file included from ../../src/Linear_System_templates.hh:30, - from ../../src/Linear_System_defs.hh:580, - from ../../src/Constraint_System_defs.hh:29, - from ../../src/Box_inlines.hh:28, - from ../../src/Box_defs.hh:2285, - from ../../src/Linear_Form_templates.hh:29, - from ../../src/ppl_include_files.hh:9, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from polyhedron1.cc:24: -../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': -../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ ../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ @@ -89542,26 +89571,6 @@ ../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) ^ -../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -In file included from ../../src/Linear_System_templates.hh:30, - from ../../src/Linear_System_defs.hh:580, - from ../../src/Constraint_System_defs.hh:29, - from ../../src/Box_inlines.hh:28, - from ../../src/Box_defs.hh:2285, - from ../../src/Linear_Form_templates.hh:29, - from ../../src/ppl_include_files.hh:9, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from linearform1.cc:24: -../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': -../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': ../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -89569,6 +89578,9 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ +../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ In file included from ../../src/Linear_System_templates.hh:30, from ../../src/Linear_System_defs.hh:580, from ../../src/Constraint_System_defs.hh:29, @@ -89602,7 +89614,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from octagonalshape2.cc:25: + from polyhedron2.cc:26: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -89617,27 +89629,6 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -octagonalshape1.cc: In function 'bool {anonymous}::test01()': -octagonalshape1.cc:40:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] - catch(std::invalid_argument e) { - ^ -octagonalshape1.cc:51:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] - catch(std::invalid_argument e) { - ^ -polyhedron2.cc: In function 'bool {anonymous}::test01()': -polyhedron2.cc:41:15: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] - catch (std::invalid_argument) { - ^~~~~~~~~~~~~~~~ -polyhedron2.cc:47:17: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] - catch (std::invalid_argument) { - ^~~~~~~~~~~~~~~~ -bdshape2.cc: In function 'bool {anonymous}::test01()': -bdshape2.cc:41:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] - catch(std::invalid_argument e) { - ^ -bdshape2.cc:51:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] - catch(std::invalid_argument e){ - ^ linearform1.cc: In function 'bool {anonymous}::test08()': linearform1.cc:233:27: warning: catching polymorphic type 'class std::length_error' by value [-Wcatch-value=] catch(std::length_error e) { @@ -89657,39 +89648,60 @@ linearform1.cc:287:27: warning: catching polymorphic type 'class std::length_error' by value [-Wcatch-value=] catch(std::length_error e) { ^ -bdshape1.cc: In function 'bool {anonymous}::test01()': -bdshape1.cc:40:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] +octagonalshape2.cc: In function 'bool {anonymous}::test01()': +octagonalshape2.cc:40:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] catch(std::invalid_argument e) { ^ -bdshape1.cc:51:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] +octagonalshape2.cc:49:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] catch(std::invalid_argument e) { ^ -octagonalshape2.cc: In function 'bool {anonymous}::test01()': -octagonalshape2.cc:40:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] +bdshape2.cc: In function 'bool {anonymous}::test01()': +bdshape2.cc:41:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] catch(std::invalid_argument e) { ^ -octagonalshape2.cc:49:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] +bdshape2.cc:51:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] + catch(std::invalid_argument e){ + ^ +octagonalshape1.cc: In function 'bool {anonymous}::test01()': +octagonalshape1.cc:40:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] + catch(std::invalid_argument e) { + ^ +octagonalshape1.cc:51:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] + catch(std::invalid_argument e) { + ^ +bdshape1.cc: In function 'bool {anonymous}::test01()': +bdshape1.cc:40:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] + catch(std::invalid_argument e) { + ^ +bdshape1.cc:51:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] catch(std::invalid_argument e) { ^ -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o C_Expr C_Expr.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +polyhedron2.cc: In function 'bool {anonymous}::test01()': +polyhedron2.cc:41:15: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] + catch (std::invalid_argument) { + ^~~~~~~~~~~~~~~~ +polyhedron2.cc:47:17: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] + catch (std::invalid_argument) { + ^~~~~~~~~~~~~~~~ +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o C_Expr C_Expr.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/C_Expr C_Expr.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o polyhedron1 polyhedron1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o polyhedron1 polyhedron1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/polyhedron1 polyhedron1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o linearize linearize.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o octagonalshape1 octagonalshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o linearform1 linearform1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp -libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/linearize linearize.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/octagonalshape1 octagonalshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/linearform1 linearform1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o bdshape1 bdshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o linearform1 linearform1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o bdshape1 bdshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/bdshape1 bdshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o octagonalshape2 octagonalshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/linearform1 linearform1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o linearize linearize.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/linearize linearize.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o octagonalshape2 octagonalshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/octagonalshape2 octagonalshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o polyhedron2 polyhedron2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o octagonalshape1 octagonalshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/octagonalshape1 octagonalshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o polyhedron2 polyhedron2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/polyhedron2 polyhedron2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o bdshape2 bdshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o bdshape2 bdshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/bdshape2 bdshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o digitalfilters1 digitalfilters1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o digitalfilters1 digitalfilters1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/digitalfilters1 digitalfilters1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp make[7]: Leaving directory '/build/ppl-1.2/tests/Concrete_Expression' make check-TESTS @@ -89738,18 +89750,29 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from bdshape1.cc:24: + from digitalfilters1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); ^ +In file included from ../../src/mp_std_bits_defs.hh:28, + from ../../src/checked_defs.hh:27, + from ../../src/Checked_Number_defs.hh:28, + from ../../src/checked_numeric_limits.hh:27, + from ../../src/ppl_include_files.hh:3, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from digitalfilters1.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/CO_Tree_defs.hh:1557, from ../../src/Sparse_Row_defs.hh:29, from ../../src/Linear_Expression_Impl_defs.hh:33, from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from digitalfilters1.cc:24: + from linearform1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -89761,10 +89784,21 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from bdshape1.cc:24: + from linearform1.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../../src/CO_Tree_defs.hh:1557, + from ../../src/Sparse_Row_defs.hh:29, + from ../../src/Linear_Expression_Impl_defs.hh:33, + from ../../src/ppl_include_files.hh:8, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from polyhedron1.cc:24: +../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ In file included from ../../src/mp_std_bits_defs.hh:28, from ../../src/checked_defs.hh:27, from ../../src/Checked_Number_defs.hh:28, @@ -89772,7 +89806,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from digitalfilters1.cc:24: + from polyhedron1.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -89800,6 +89834,76 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ +In file included from ../../src/CO_Tree_defs.hh:1557, + from ../../src/Sparse_Row_defs.hh:29, + from ../../src/Linear_Expression_Impl_defs.hh:33, + from ../../src/ppl_include_files.hh:8, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from bdshape1.cc:24: +../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../../src/mp_std_bits_defs.hh:28, + from ../../src/checked_defs.hh:27, + from ../../src/Checked_Number_defs.hh:28, + from ../../src/checked_numeric_limits.hh:27, + from ../../src/ppl_include_files.hh:3, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from bdshape1.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../../src/Linear_System_templates.hh:30, + from ../../src/Linear_System_defs.hh:580, + from ../../src/Constraint_System_defs.hh:29, + from ../../src/Box_inlines.hh:28, + from ../../src/Box_defs.hh:2285, + from ../../src/Linear_Form_templates.hh:29, + from ../../src/ppl_include_files.hh:9, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from linearform1.cc:24: +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +In file included from ../../src/Linear_System_templates.hh:30, + from ../../src/Linear_System_defs.hh:580, + from ../../src/Constraint_System_defs.hh:29, + from ../../src/Box_inlines.hh:28, + from ../../src/Box_defs.hh:2285, + from ../../src/Linear_Form_templates.hh:29, + from ../../src/ppl_include_files.hh:9, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from polyhedron1.cc:24: +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ In file included from ../../src/Linear_System_templates.hh:30, from ../../src/Linear_System_defs.hh:580, from ../../src/Constraint_System_defs.hh:29, @@ -89830,7 +89934,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from polyhedron1.cc:24: + from bdshape2.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -89842,7 +89946,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from polyhedron1.cc:24: + from bdshape2.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -89852,7 +89956,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from linearize.cc:24: + from octagonalshape2.cc:25: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -89864,7 +89968,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from linearize.cc:24: + from octagonalshape2.cc:25: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -89874,29 +89978,18 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from octagonalshape2.cc:25: + from octagonalshape1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); ^ -In file included from ../../src/mp_std_bits_defs.hh:28, - from ../../src/checked_defs.hh:27, - from ../../src/Checked_Number_defs.hh:28, - from ../../src/checked_numeric_limits.hh:27, - from ../../src/ppl_include_files.hh:3, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from octagonalshape2.cc:25: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/CO_Tree_defs.hh:1557, from ../../src/Sparse_Row_defs.hh:29, from ../../src/Linear_Expression_Impl_defs.hh:33, from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from linearform1.cc:24: + from C_Expr.cc:25: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -89908,7 +90001,18 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from linearform1.cc:24: + from C_Expr.cc:25: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../../src/mp_std_bits_defs.hh:28, + from ../../src/checked_defs.hh:27, + from ../../src/Checked_Number_defs.hh:28, + from ../../src/checked_numeric_limits.hh:27, + from ../../src/ppl_include_files.hh:3, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from octagonalshape1.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -89918,7 +90022,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from octagonalshape1.cc:24: + from linearize.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -89930,7 +90034,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from octagonalshape1.cc:24: + from linearize.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -89965,7 +90069,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from octagonalshape2.cc:25: + from bdshape2.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -89989,7 +90093,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from linearform1.cc:24: + from octagonalshape2.cc:25: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -90013,43 +90117,11 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from linearize.cc:24: + from C_Expr.cc:25: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) ^ -../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': -../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -In file included from ../../src/CO_Tree_defs.hh:1557, - from ../../src/Sparse_Row_defs.hh:29, - from ../../src/Linear_Expression_Impl_defs.hh:33, - from ../../src/ppl_include_files.hh:8, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from C_Expr.cc:25: -../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from ../../src/mp_std_bits_defs.hh:28, - from ../../src/checked_defs.hh:27, - from ../../src/Checked_Number_defs.hh:28, - from ../../src/checked_numeric_limits.hh:27, - from ../../src/ppl_include_files.hh:3, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from C_Expr.cc:25: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/Linear_System_templates.hh:30, from ../../src/Linear_System_defs.hh:580, from ../../src/Constraint_System_defs.hh:29, @@ -90059,7 +90131,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from polyhedron1.cc:24: + from octagonalshape1.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -90067,27 +90139,6 @@ ../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': -../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -In file included from ../../src/Linear_System_templates.hh:30, - from ../../src/Linear_System_defs.hh:580, - from ../../src/Constraint_System_defs.hh:29, - from ../../src/Box_inlines.hh:28, - from ../../src/Box_defs.hh:2285, - from ../../src/Linear_Form_templates.hh:29, - from ../../src/ppl_include_files.hh:9, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from octagonalshape1.cc:24: -../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': -../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ ../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ @@ -90095,48 +90146,6 @@ ../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) ^ -../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -In file included from ../../src/CO_Tree_defs.hh:1557, - from ../../src/Sparse_Row_defs.hh:29, - from ../../src/Linear_Expression_Impl_defs.hh:33, - from ../../src/ppl_include_files.hh:8, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from bdshape2.cc:24: -../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from ../../src/mp_std_bits_defs.hh:28, - from ../../src/checked_defs.hh:27, - from ../../src/Checked_Number_defs.hh:28, - from ../../src/checked_numeric_limits.hh:27, - from ../../src/ppl_include_files.hh:3, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from bdshape2.cc:24: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ -In file included from ../../src/Linear_System_templates.hh:30, - from ../../src/Linear_System_defs.hh:580, - from ../../src/Constraint_System_defs.hh:29, - from ../../src/Box_inlines.hh:28, - from ../../src/Box_defs.hh:2285, - from ../../src/Linear_Form_templates.hh:29, - from ../../src/ppl_include_files.hh:9, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from polyhedron2.cc:26: -../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': -../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': ../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -90144,6 +90153,9 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ +../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ In file included from ../../src/Linear_System_templates.hh:30, from ../../src/Linear_System_defs.hh:580, from ../../src/Constraint_System_defs.hh:29, @@ -90153,7 +90165,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from C_Expr.cc:25: + from linearize.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -90177,7 +90189,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from bdshape2.cc:24: + from polyhedron2.cc:26: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -90192,20 +90204,6 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -bdshape1.cc: In function 'bool {anonymous}::test01()': -bdshape1.cc:40:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] - catch(std::invalid_argument e) { - ^ -bdshape1.cc:51:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] - catch(std::invalid_argument e) { - ^ -octagonalshape1.cc: In function 'bool {anonymous}::test01()': -octagonalshape1.cc:40:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] - catch(std::invalid_argument e) { - ^ -octagonalshape1.cc:51:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] - catch(std::invalid_argument e) { - ^ linearform1.cc: In function 'bool {anonymous}::test08()': linearform1.cc:233:27: warning: catching polymorphic type 'class std::length_error' by value [-Wcatch-value=] catch(std::length_error e) { @@ -90213,13 +90211,6 @@ linearform1.cc:242:27: warning: catching polymorphic type 'class std::length_error' by value [-Wcatch-value=] catch(std::length_error e) { ^ -octagonalshape2.cc: In function 'bool {anonymous}::test01()': -octagonalshape2.cc:40:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] - catch(std::invalid_argument e) { - ^ -octagonalshape2.cc:49:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] - catch(std::invalid_argument e) { - ^ linearform1.cc:252:27: warning: catching polymorphic type 'class std::length_error' by value [-Wcatch-value=] catch(std::length_error e) { ^ @@ -90232,14 +90223,13 @@ linearform1.cc:287:27: warning: catching polymorphic type 'class std::length_error' by value [-Wcatch-value=] catch(std::length_error e) { ^ -polyhedron2.cc: In function 'bool {anonymous}::test01()': -polyhedron2.cc:41:15: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] - catch (std::invalid_argument) { - ^~~~~~~~~~~~~~~~ -polyhedron2.cc:47:17: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] - catch (std::invalid_argument) { - ^~~~~~~~~~~~~~~~ -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o C_Expr C_Expr.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +bdshape1.cc: In function 'bool {anonymous}::test01()': +bdshape1.cc:40:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] + catch(std::invalid_argument e) { + ^ +bdshape1.cc:51:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] + catch(std::invalid_argument e) { + ^ bdshape2.cc: In function 'bool {anonymous}::test01()': bdshape2.cc:41:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] catch(std::invalid_argument e) { @@ -90247,24 +90237,46 @@ bdshape2.cc:51:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] catch(std::invalid_argument e){ ^ +octagonalshape2.cc: In function 'bool {anonymous}::test01()': +octagonalshape2.cc:40:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] + catch(std::invalid_argument e) { + ^ +octagonalshape2.cc:49:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] + catch(std::invalid_argument e) { + ^ +octagonalshape1.cc: In function 'bool {anonymous}::test01()': +octagonalshape1.cc:40:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] + catch(std::invalid_argument e) { + ^ +octagonalshape1.cc:51:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] + catch(std::invalid_argument e) { + ^ +polyhedron2.cc: In function 'bool {anonymous}::test01()': +polyhedron2.cc:41:15: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] + catch (std::invalid_argument) { + ^~~~~~~~~~~~~~~~ +polyhedron2.cc:47:17: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] + catch (std::invalid_argument) { + ^~~~~~~~~~~~~~~~ +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o C_Expr C_Expr.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/C_Expr C_Expr.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o linearform1 linearform1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o polyhedron1 polyhedron1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o linearform1 linearform1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/linearform1 linearform1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o polyhedron1 polyhedron1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/polyhedron1 polyhedron1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o linearize linearize.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o bdshape1 bdshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o bdshape1 bdshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/bdshape1 bdshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o linearize linearize.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/linearize linearize.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o octagonalshape1 octagonalshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o octagonalshape1 octagonalshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/octagonalshape1 octagonalshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o polyhedron2 polyhedron2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o octagonalshape2 octagonalshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp -libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/polyhedron2 polyhedron2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o octagonalshape2 octagonalshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/octagonalshape2 octagonalshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o bdshape2 bdshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o polyhedron2 polyhedron2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/polyhedron2 polyhedron2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o bdshape2 bdshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/bdshape2 bdshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o digitalfilters1 digitalfilters1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o digitalfilters1 digitalfilters1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/digitalfilters1 digitalfilters1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp make[7]: Leaving directory '/build/ppl-1.2/tests/Concrete_Expression' make check-TESTS @@ -90313,7 +90325,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from bdshape1.cc:24: + from digitalfilters1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -90325,41 +90337,17 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from bdshape1.cc:24: + from digitalfilters1.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ -In file included from ../../src/Linear_System_templates.hh:30, - from ../../src/Linear_System_defs.hh:580, - from ../../src/Constraint_System_defs.hh:29, - from ../../src/Box_inlines.hh:28, - from ../../src/Box_defs.hh:2285, - from ../../src/Linear_Form_templates.hh:29, - from ../../src/ppl_include_files.hh:9, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from bdshape1.cc:24: -../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': -../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': -../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ In file included from ../../src/CO_Tree_defs.hh:1557, from ../../src/Sparse_Row_defs.hh:29, from ../../src/Linear_Expression_Impl_defs.hh:33, from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from linearform1.cc:24: + from linearize.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -90371,7 +90359,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from linearform1.cc:24: + from linearize.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -90381,29 +90369,18 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from octagonalshape1.cc:24: + from bdshape1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); ^ -In file included from ../../src/mp_std_bits_defs.hh:28, - from ../../src/checked_defs.hh:27, - from ../../src/Checked_Number_defs.hh:28, - from ../../src/checked_numeric_limits.hh:27, - from ../../src/ppl_include_files.hh:3, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from octagonalshape1.cc:24: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/CO_Tree_defs.hh:1557, from ../../src/Sparse_Row_defs.hh:29, from ../../src/Linear_Expression_Impl_defs.hh:33, from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from polyhedron1.cc:24: + from bdshape2.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -90415,7 +90392,18 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from polyhedron1.cc:24: + from bdshape1.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../../src/mp_std_bits_defs.hh:28, + from ../../src/checked_defs.hh:27, + from ../../src/Checked_Number_defs.hh:28, + from ../../src/checked_numeric_limits.hh:27, + from ../../src/ppl_include_files.hh:3, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from bdshape2.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -90425,7 +90413,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from octagonalshape2.cc:25: + from linearform1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -90437,7 +90425,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from octagonalshape2.cc:25: + from linearform1.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -90447,7 +90435,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from bdshape2.cc:24: + from polyhedron2.cc:26: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -90459,7 +90447,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from bdshape2.cc:24: + from polyhedron2.cc:26: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -90472,7 +90460,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from octagonalshape1.cc:24: + from digitalfilters1.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -90496,7 +90484,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from linearform1.cc:24: + from linearize.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -90520,7 +90508,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from polyhedron1.cc:24: + from bdshape2.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -90544,7 +90532,55 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from bdshape2.cc:24: + from bdshape1.cc:24: +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +In file included from ../../src/Linear_System_templates.hh:30, + from ../../src/Linear_System_defs.hh:580, + from ../../src/Constraint_System_defs.hh:29, + from ../../src/Box_inlines.hh:28, + from ../../src/Box_defs.hh:2285, + from ../../src/Linear_Form_templates.hh:29, + from ../../src/ppl_include_files.hh:9, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from linearform1.cc:24: +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +In file included from ../../src/Linear_System_templates.hh:30, + from ../../src/Linear_System_defs.hh:580, + from ../../src/Constraint_System_defs.hh:29, + from ../../src/Box_inlines.hh:28, + from ../../src/Box_defs.hh:2285, + from ../../src/Linear_Form_templates.hh:29, + from ../../src/ppl_include_files.hh:9, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from polyhedron2.cc:26: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -90565,7 +90601,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from linearize.cc:24: + from octagonalshape2.cc:25: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -90577,7 +90613,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from linearize.cc:24: + from octagonalshape2.cc:25: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -90587,22 +90623,11 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from digitalfilters1.cc:24: + from polyhedron1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); ^ -In file included from ../../src/mp_std_bits_defs.hh:28, - from ../../src/checked_defs.hh:27, - from ../../src/Checked_Number_defs.hh:28, - from ../../src/checked_numeric_limits.hh:27, - from ../../src/ppl_include_files.hh:3, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from digitalfilters1.cc:24: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/CO_Tree_defs.hh:1557, from ../../src/Sparse_Row_defs.hh:29, from ../../src/Linear_Expression_Impl_defs.hh:33, @@ -90625,6 +90650,17 @@ /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../../src/mp_std_bits_defs.hh:28, + from ../../src/checked_defs.hh:27, + from ../../src/Checked_Number_defs.hh:28, + from ../../src/checked_numeric_limits.hh:27, + from ../../src/ppl_include_files.hh:3, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from polyhedron1.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/Linear_System_templates.hh:30, from ../../src/Linear_System_defs.hh:580, from ../../src/Constraint_System_defs.hh:29, @@ -90655,7 +90691,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from polyhedron2.cc:26: + from octagonalshape1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -90667,7 +90703,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from polyhedron2.cc:26: + from octagonalshape1.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -90680,21 +90716,11 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from digitalfilters1.cc:24: + from polyhedron1.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) ^ -../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': -../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ In file included from ../../src/Linear_System_templates.hh:30, from ../../src/Linear_System_defs.hh:580, from ../../src/Constraint_System_defs.hh:29, @@ -90712,30 +90738,13 @@ ../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': -../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] +../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -In file included from ../../src/Linear_System_templates.hh:30, - from ../../src/Linear_System_defs.hh:580, - from ../../src/Constraint_System_defs.hh:29, - from ../../src/Box_inlines.hh:28, - from ../../src/Box_defs.hh:2285, - from ../../src/Linear_Form_templates.hh:29, - from ../../src/ppl_include_files.hh:9, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from linearize.cc:24: -../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': -../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) ^ -../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': ../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -90743,6 +90752,9 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ +../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ In file included from ../../src/Linear_System_templates.hh:30, from ../../src/Linear_System_defs.hh:580, from ../../src/Constraint_System_defs.hh:29, @@ -90752,7 +90764,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from polyhedron2.cc:26: + from octagonalshape1.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -90767,6 +90779,13 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ +bdshape2.cc: In function 'bool {anonymous}::test01()': +bdshape2.cc:41:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] + catch(std::invalid_argument e) { + ^ +bdshape2.cc:51:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] + catch(std::invalid_argument e){ + ^ bdshape1.cc: In function 'bool {anonymous}::test01()': bdshape1.cc:40:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] catch(std::invalid_argument e) { @@ -90774,6 +90793,13 @@ bdshape1.cc:51:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] catch(std::invalid_argument e) { ^ +polyhedron2.cc: In function 'bool {anonymous}::test01()': +polyhedron2.cc:41:15: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] + catch (std::invalid_argument) { + ^~~~~~~~~~~~~~~~ +polyhedron2.cc:47:17: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] + catch (std::invalid_argument) { + ^~~~~~~~~~~~~~~~ linearform1.cc: In function 'bool {anonymous}::test08()': linearform1.cc:233:27: warning: catching polymorphic type 'class std::length_error' by value [-Wcatch-value=] catch(std::length_error e) { @@ -90807,39 +90833,25 @@ octagonalshape1.cc:51:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] catch(std::invalid_argument e) { ^ -bdshape2.cc: In function 'bool {anonymous}::test01()': -bdshape2.cc:41:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] - catch(std::invalid_argument e) { - ^ -bdshape2.cc:51:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] - catch(std::invalid_argument e){ - ^ -polyhedron2.cc: In function 'bool {anonymous}::test01()': -polyhedron2.cc:41:15: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] - catch (std::invalid_argument) { - ^~~~~~~~~~~~~~~~ -polyhedron2.cc:47:17: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] - catch (std::invalid_argument) { - ^~~~~~~~~~~~~~~~ -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o C_Expr C_Expr.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o C_Expr C_Expr.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/C_Expr C_Expr.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o linearform1 linearform1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o linearform1 linearform1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/linearform1 linearform1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o bdshape1 bdshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o polyhedron1 polyhedron1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o linearize linearize.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/linearize linearize.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o bdshape1 bdshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/bdshape1 bdshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o polyhedron2 polyhedron2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o polyhedron1 polyhedron1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/polyhedron2 polyhedron2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/polyhedron1 polyhedron1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o linearize linearize.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp -libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/linearize linearize.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o octagonalshape1 octagonalshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp -libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/octagonalshape1 octagonalshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o octagonalshape2 octagonalshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o polyhedron2 polyhedron2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o octagonalshape2 octagonalshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/octagonalshape2 octagonalshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/polyhedron2 polyhedron2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o bdshape2 bdshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o bdshape2 bdshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/bdshape2 bdshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o digitalfilters1 digitalfilters1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o octagonalshape1 octagonalshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/octagonalshape1 octagonalshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o digitalfilters1 digitalfilters1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/digitalfilters1 digitalfilters1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp make[7]: Leaving directory '/build/ppl-1.2/tests/Concrete_Expression' make check-TESTS @@ -90888,7 +90900,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from polyhedron2.cc:26: + from linearize.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -90900,7 +90912,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from polyhedron2.cc:26: + from linearize.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -90910,7 +90922,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from C_Expr.cc:25: + from linearform1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -90922,41 +90934,17 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from C_Expr.cc:25: + from linearform1.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ -In file included from ../../src/Linear_System_templates.hh:30, - from ../../src/Linear_System_defs.hh:580, - from ../../src/Constraint_System_defs.hh:29, - from ../../src/Box_inlines.hh:28, - from ../../src/Box_defs.hh:2285, - from ../../src/Linear_Form_templates.hh:29, - from ../../src/ppl_include_files.hh:9, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from polyhedron2.cc:26: -../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': -../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': -../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ In file included from ../../src/CO_Tree_defs.hh:1557, from ../../src/Sparse_Row_defs.hh:29, from ../../src/Linear_Expression_Impl_defs.hh:33, from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from linearize.cc:24: + from C_Expr.cc:25: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -90968,7 +90956,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from linearize.cc:24: + from C_Expr.cc:25: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -90978,7 +90966,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from bdshape1.cc:24: + from bdshape2.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -90990,10 +90978,106 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from bdshape1.cc:24: + from bdshape2.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../../src/Linear_System_templates.hh:30, + from ../../src/Linear_System_defs.hh:580, + from ../../src/Constraint_System_defs.hh:29, + from ../../src/Box_inlines.hh:28, + from ../../src/Box_defs.hh:2285, + from ../../src/Linear_Form_templates.hh:29, + from ../../src/ppl_include_files.hh:9, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from linearize.cc:24: +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +In file included from ../../src/Linear_System_templates.hh:30, + from ../../src/Linear_System_defs.hh:580, + from ../../src/Constraint_System_defs.hh:29, + from ../../src/Box_inlines.hh:28, + from ../../src/Box_defs.hh:2285, + from ../../src/Linear_Form_templates.hh:29, + from ../../src/ppl_include_files.hh:9, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from linearform1.cc:24: +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +In file included from ../../src/Linear_System_templates.hh:30, + from ../../src/Linear_System_defs.hh:580, + from ../../src/Constraint_System_defs.hh:29, + from ../../src/Box_inlines.hh:28, + from ../../src/Box_defs.hh:2285, + from ../../src/Linear_Form_templates.hh:29, + from ../../src/ppl_include_files.hh:9, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from C_Expr.cc:25: +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +In file included from ../../src/Linear_System_templates.hh:30, + from ../../src/Linear_System_defs.hh:580, + from ../../src/Constraint_System_defs.hh:29, + from ../../src/Box_inlines.hh:28, + from ../../src/Box_defs.hh:2285, + from ../../src/Linear_Form_templates.hh:29, + from ../../src/ppl_include_files.hh:9, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from bdshape2.cc:24: +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ In file included from ../../src/CO_Tree_defs.hh:1557, from ../../src/Sparse_Row_defs.hh:29, from ../../src/Linear_Expression_Impl_defs.hh:33, @@ -91022,7 +91106,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from bdshape2.cc:24: + from bdshape1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -91034,7 +91118,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from bdshape2.cc:24: + from bdshape1.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -91044,29 +91128,18 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from octagonalshape2.cc:25: + from polyhedron1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); ^ -In file included from ../../src/mp_std_bits_defs.hh:28, - from ../../src/checked_defs.hh:27, - from ../../src/Checked_Number_defs.hh:28, - from ../../src/checked_numeric_limits.hh:27, - from ../../src/ppl_include_files.hh:3, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from octagonalshape2.cc:25: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/CO_Tree_defs.hh:1557, from ../../src/Sparse_Row_defs.hh:29, from ../../src/Linear_Expression_Impl_defs.hh:33, from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from digitalfilters1.cc:24: + from polyhedron2.cc:26: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -91078,7 +91151,18 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from digitalfilters1.cc:24: + from polyhedron1.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../../src/mp_std_bits_defs.hh:28, + from ../../src/checked_defs.hh:27, + from ../../src/Checked_Number_defs.hh:28, + from ../../src/checked_numeric_limits.hh:27, + from ../../src/ppl_include_files.hh:3, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from polyhedron2.cc:26: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -91088,7 +91172,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from linearform1.cc:24: + from octagonalshape2.cc:25: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -91100,7 +91184,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from linearform1.cc:24: + from octagonalshape2.cc:25: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -91110,7 +91194,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from polyhedron1.cc:24: + from digitalfilters1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -91122,7 +91206,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from polyhedron1.cc:24: + from digitalfilters1.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -91135,7 +91219,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from C_Expr.cc:25: + from octagonalshape1.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -91159,21 +91243,11 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from linearize.cc:24: + from polyhedron1.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) ^ -../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': -../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ In file included from ../../src/Linear_System_templates.hh:30, from ../../src/Linear_System_defs.hh:580, from ../../src/Constraint_System_defs.hh:29, @@ -91183,7 +91257,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from octagonalshape1.cc:24: + from polyhedron2.cc:26: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -91191,27 +91265,6 @@ ../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': -../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -In file included from ../../src/Linear_System_templates.hh:30, - from ../../src/Linear_System_defs.hh:580, - from ../../src/Constraint_System_defs.hh:29, - from ../../src/Box_inlines.hh:28, - from ../../src/Box_defs.hh:2285, - from ../../src/Linear_Form_templates.hh:29, - from ../../src/ppl_include_files.hh:9, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from octagonalshape2.cc:25: -../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': -../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ ../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ @@ -91219,26 +91272,6 @@ ../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) ^ -../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -In file included from ../../src/Linear_System_templates.hh:30, - from ../../src/Linear_System_defs.hh:580, - from ../../src/Constraint_System_defs.hh:29, - from ../../src/Box_inlines.hh:28, - from ../../src/Box_defs.hh:2285, - from ../../src/Linear_Form_templates.hh:29, - from ../../src/ppl_include_files.hh:9, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from bdshape1.cc:24: -../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': -../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': ../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -91246,27 +91279,6 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -In file included from ../../src/Linear_System_templates.hh:30, - from ../../src/Linear_System_defs.hh:580, - from ../../src/Constraint_System_defs.hh:29, - from ../../src/Box_inlines.hh:28, - from ../../src/Box_defs.hh:2285, - from ../../src/Linear_Form_templates.hh:29, - from ../../src/ppl_include_files.hh:9, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from digitalfilters1.cc:24: -../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': -../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': -../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ @@ -91279,7 +91291,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from bdshape2.cc:24: + from bdshape1.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -91303,7 +91315,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from linearform1.cc:24: + from octagonalshape2.cc:25: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -91327,7 +91339,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from polyhedron1.cc:24: + from digitalfilters1.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -91342,20 +91354,6 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -polyhedron2.cc: In function 'bool {anonymous}::test01()': -polyhedron2.cc:41:15: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] - catch (std::invalid_argument) { - ^~~~~~~~~~~~~~~~ -polyhedron2.cc:47:17: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] - catch (std::invalid_argument) { - ^~~~~~~~~~~~~~~~ -octagonalshape1.cc: In function 'bool {anonymous}::test01()': -octagonalshape1.cc:40:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] - catch(std::invalid_argument e) { - ^ -octagonalshape1.cc:51:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] - catch(std::invalid_argument e) { - ^ linearform1.cc: In function 'bool {anonymous}::test08()': linearform1.cc:233:27: warning: catching polymorphic type 'class std::length_error' by value [-Wcatch-value=] catch(std::length_error e) { @@ -91375,6 +91373,15 @@ linearform1.cc:287:27: warning: catching polymorphic type 'class std::length_error' by value [-Wcatch-value=] catch(std::length_error e) { ^ +bdshape2.cc: In function 'bool {anonymous}::test01()': +bdshape2.cc:41:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] + catch(std::invalid_argument e) { + ^ +bdshape2.cc:51:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] + catch(std::invalid_argument e){ + ^ +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o C_Expr C_Expr.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/C_Expr C_Expr.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp bdshape1.cc: In function 'bool {anonymous}::test01()': bdshape1.cc:40:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] catch(std::invalid_argument e) { @@ -91382,39 +91389,44 @@ bdshape1.cc:51:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] catch(std::invalid_argument e) { ^ -octagonalshape2.cc: In function 'bool {anonymous}::test01()': -octagonalshape2.cc:40:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] +octagonalshape1.cc: In function 'bool {anonymous}::test01()': +octagonalshape1.cc:40:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] catch(std::invalid_argument e) { ^ -octagonalshape2.cc:49:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] +octagonalshape1.cc:51:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] catch(std::invalid_argument e) { ^ -bdshape2.cc: In function 'bool {anonymous}::test01()': -bdshape2.cc:41:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] +polyhedron2.cc: In function 'bool {anonymous}::test01()': +polyhedron2.cc:41:15: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] + catch (std::invalid_argument) { + ^~~~~~~~~~~~~~~~ +polyhedron2.cc:47:17: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] + catch (std::invalid_argument) { + ^~~~~~~~~~~~~~~~ +octagonalshape2.cc: In function 'bool {anonymous}::test01()': +octagonalshape2.cc:40:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] catch(std::invalid_argument e) { ^ -bdshape2.cc:51:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] - catch(std::invalid_argument e){ +octagonalshape2.cc:49:31: warning: catching polymorphic type 'class std::invalid_argument' by value [-Wcatch-value=] + catch(std::invalid_argument e) { ^ -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o C_Expr C_Expr.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp -libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/C_Expr C_Expr.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o linearform1 linearform1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o linearform1 linearform1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/linearform1 linearform1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o bdshape1 bdshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp -libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/bdshape1 bdshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o polyhedron1 polyhedron1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o linearize linearize.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp -libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/polyhedron1 polyhedron1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o linearize linearize.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/linearize linearize.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o octagonalshape1 octagonalshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp -libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/octagonalshape1 octagonalshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o octagonalshape2 octagonalshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o polyhedron2 polyhedron2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o bdshape2 bdshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp -libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/octagonalshape2 octagonalshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o polyhedron1 polyhedron1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o bdshape1 bdshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/polyhedron1 polyhedron1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp +libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/bdshape1 bdshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o polyhedron2 polyhedron2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/polyhedron2 polyhedron2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o bdshape2 bdshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/bdshape2 bdshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o digitalfilters1 digitalfilters1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o octagonalshape1 octagonalshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o octagonalshape2 octagonalshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/octagonalshape1 octagonalshape1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp +libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/octagonalshape2 octagonalshape2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o digitalfilters1 digitalfilters1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/digitalfilters1 digitalfilters1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp make[7]: Leaving directory '/build/ppl-1.2/tests/Concrete_Expression' make check-TESTS @@ -91437,9 +91449,9 @@ make[6]: Entering directory '/build/ppl-1.2/tests/Concrete_Expression' test -z "run_tests.stamp" || rm -f run_tests.stamp rm -rf .libs _libs - rm -f C_Expr linearform1 linearize digitalfilters1 bdshape1 bdshape2 octagonalshape1 octagonalshape2 polyhedron1 polyhedron2 rm -f *.o rm -f *.lo + rm -f C_Expr linearform1 linearize digitalfilters1 bdshape1 bdshape2 octagonalshape1 octagonalshape2 polyhedron1 polyhedron2 make[6]: Leaving directory '/build/ppl-1.2/tests/Concrete_Expression' echo "true" >run_tests.stamp chmod +x run_tests.stamp @@ -91500,7 +91512,7 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o cotree1 cotree1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o cotree1 cotree1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/cotree1 cotree1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp make[5]: Leaving directory '/build/ppl-1.2/tests/CO_Tree' make check-TESTS @@ -91559,6 +91571,50 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, + from pipproblem2.cc:24: +../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../../src/CO_Tree_defs.hh:1557, + from ../../src/Sparse_Row_defs.hh:29, + from ../../src/Linear_Expression_Impl_defs.hh:33, + from ../../src/ppl_include_files.hh:8, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from pipproblem3.cc:24: +../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../../src/mp_std_bits_defs.hh:28, + from ../../src/checked_defs.hh:27, + from ../../src/Checked_Number_defs.hh:28, + from ../../src/checked_numeric_limits.hh:27, + from ../../src/ppl_include_files.hh:3, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from pipproblem2.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../../src/mp_std_bits_defs.hh:28, + from ../../src/checked_defs.hh:27, + from ../../src/Checked_Number_defs.hh:28, + from ../../src/checked_numeric_limits.hh:27, + from ../../src/ppl_include_files.hh:3, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from pipproblem3.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../../src/CO_Tree_defs.hh:1557, + from ../../src/Sparse_Row_defs.hh:29, + from ../../src/Linear_Expression_Impl_defs.hh:33, + from ../../src/ppl_include_files.hh:8, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, from pipproblem1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] @@ -91581,6 +91637,28 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, + from weightwatch1.cc:24: +../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../../src/mp_std_bits_defs.hh:28, + from ../../src/checked_defs.hh:27, + from ../../src/Checked_Number_defs.hh:28, + from ../../src/checked_numeric_limits.hh:27, + from ../../src/ppl_include_files.hh:3, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from weightwatch1.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../../src/CO_Tree_defs.hh:1557, + from ../../src/Sparse_Row_defs.hh:29, + from ../../src/Linear_Expression_Impl_defs.hh:33, + from ../../src/ppl_include_files.hh:8, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, from ascii_dump_load1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] @@ -91621,28 +91699,6 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -In file included from ../../src/CO_Tree_defs.hh:1557, - from ../../src/Sparse_Row_defs.hh:29, - from ../../src/Linear_Expression_Impl_defs.hh:33, - from ../../src/ppl_include_files.hh:8, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from weightwatch1.cc:24: -../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from ../../src/mp_std_bits_defs.hh:28, - from ../../src/checked_defs.hh:27, - from ../../src/Checked_Number_defs.hh:28, - from ../../src/checked_numeric_limits.hh:27, - from ../../src/ppl_include_files.hh:3, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from weightwatch1.cc:24: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/Linear_System_templates.hh:30, from ../../src/Linear_System_defs.hh:580, from ../../src/Constraint_System_defs.hh:29, @@ -91652,7 +91708,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from pipproblem1.cc:24: + from pipproblem3.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -91667,28 +91723,6 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -In file included from ../../src/CO_Tree_defs.hh:1557, - from ../../src/Sparse_Row_defs.hh:29, - from ../../src/Linear_Expression_Impl_defs.hh:33, - from ../../src/ppl_include_files.hh:8, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from pipproblem3.cc:24: -../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from ../../src/mp_std_bits_defs.hh:28, - from ../../src/checked_defs.hh:27, - from ../../src/Checked_Number_defs.hh:28, - from ../../src/checked_numeric_limits.hh:27, - from ../../src/ppl_include_files.hh:3, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from pipproblem3.cc:24: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/Linear_System_templates.hh:30, from ../../src/Linear_System_defs.hh:580, from ../../src/Constraint_System_defs.hh:29, @@ -91698,7 +91732,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from ascii_dump_load1.cc:24: + from pipproblem2.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -91713,28 +91747,6 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -In file included from ../../src/CO_Tree_defs.hh:1557, - from ../../src/Sparse_Row_defs.hh:29, - from ../../src/Linear_Expression_Impl_defs.hh:33, - from ../../src/ppl_include_files.hh:8, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from pipproblem2.cc:24: -../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from ../../src/mp_std_bits_defs.hh:28, - from ../../src/checked_defs.hh:27, - from ../../src/Checked_Number_defs.hh:28, - from ../../src/checked_numeric_limits.hh:27, - from ../../src/ppl_include_files.hh:3, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from pipproblem2.cc:24: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/Linear_System_templates.hh:30, from ../../src/Linear_System_defs.hh:580, from ../../src/Constraint_System_defs.hh:29, @@ -91744,7 +91756,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from weightwatch1.cc:24: + from pipproblem1.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -91768,7 +91780,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from pipproblem3.cc:24: + from weightwatch1.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -91792,7 +91804,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from pipproblem2.cc:24: + from ascii_dump_load1.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -91807,26 +91819,26 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o pipproblem3 pipproblem3.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o pipproblem3 pipproblem3.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/pipproblem3 pipproblem3.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o exceptions1 exceptions1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp -libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/exceptions1 exceptions1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o ascii_dump_load1 ascii_dump_load1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o ascii_dump_load1 ascii_dump_load1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/ascii_dump_load1 ascii_dump_load1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o pipproblem2 pipproblem2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o exceptions1 exceptions1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/exceptions1 exceptions1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o pipproblem2 pipproblem2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/pipproblem2 pipproblem2.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o weightwatch1 weightwatch1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o weightwatch1 weightwatch1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/weightwatch1 weightwatch1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp -/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o pipproblem1 pipproblem1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o pipproblem1 pipproblem1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/pipproblem1 pipproblem1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp make[5]: Leaving directory '/build/ppl-1.2/tests/PIP_Problem' make check-TESTS make[5]: Entering directory '/build/ppl-1.2/tests/PIP_Problem' make[6]: Entering directory '/build/ppl-1.2/tests/PIP_Problem' -PASS: ascii_dump_load1 +PASS: pipproblem2 PASS: exceptions1 +PASS: ascii_dump_load1 PASS: pipproblem3 -PASS: pipproblem2 PASS: pipproblem1 PASS: weightwatch1 ============================================================================ @@ -91857,13 +91869,21 @@ g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o closed1.o closed1.cc g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o closure1.o closure1.cc g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o collapse1.o collapse1.cc +g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o concatenate1.o concatenate1.cc +g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o contains1.o contains1.cc +g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o containsintegerpoint1.o containsintegerpoint1.cc +g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o difference1.o difference1.cc +g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o discrete1.o discrete1.cc +g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o disjoint1.o disjoint1.cc +g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o disjunct1.o disjunct1.cc +g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o empty1.o empty1.cc In file included from ../../src/CO_Tree_defs.hh:1557, from ../../src/Sparse_Row_defs.hh:29, from ../../src/Linear_Expression_Impl_defs.hh:33, from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from bounded1.cc:24: + from containsintegerpoint1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -91875,7 +91895,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from bounded1.cc:24: + from containsintegerpoint1.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -91885,7 +91905,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from addconstraints1.cc:25: + from affinedimension1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -91897,34 +91917,10 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from addconstraints1.cc:25: + from affinedimension1.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ -In file included from ../../src/Linear_System_templates.hh:30, - from ../../src/Linear_System_defs.hh:580, - from ../../src/Constraint_System_defs.hh:29, - from ../../src/Box_inlines.hh:28, - from ../../src/Box_defs.hh:2285, - from ../../src/Linear_Form_templates.hh:29, - from ../../src/ppl_include_files.hh:9, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from bounded1.cc:24: -../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': -../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ -../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': -../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - ? static_cast(&Scalar_Products::sign) - ^ -../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] - : static_cast(&Scalar_Products::reduced_sign)) { - ^ In file included from ../../src/CO_Tree_defs.hh:1557, from ../../src/Sparse_Row_defs.hh:29, from ../../src/Linear_Expression_Impl_defs.hh:33, @@ -91953,7 +91949,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from affineimage1.cc:26: + from closed1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -91965,7 +91961,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from affineimage1.cc:26: + from closed1.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -91975,7 +91971,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from addcongruences1.cc:25: + from discrete1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -91987,7 +91983,95 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from addcongruences1.cc:25: + from discrete1.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../../src/CO_Tree_defs.hh:1557, + from ../../src/Sparse_Row_defs.hh:29, + from ../../src/Linear_Expression_Impl_defs.hh:33, + from ../../src/ppl_include_files.hh:8, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from contains1.cc:25: +../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../../src/mp_std_bits_defs.hh:28, + from ../../src/checked_defs.hh:27, + from ../../src/Checked_Number_defs.hh:28, + from ../../src/checked_numeric_limits.hh:27, + from ../../src/ppl_include_files.hh:3, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from contains1.cc:25: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../../src/CO_Tree_defs.hh:1557, + from ../../src/Sparse_Row_defs.hh:29, + from ../../src/Linear_Expression_Impl_defs.hh:33, + from ../../src/ppl_include_files.hh:8, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from concatenate1.cc:24: +../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../../src/mp_std_bits_defs.hh:28, + from ../../src/checked_defs.hh:27, + from ../../src/Checked_Number_defs.hh:28, + from ../../src/checked_numeric_limits.hh:27, + from ../../src/ppl_include_files.hh:3, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from concatenate1.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../../src/CO_Tree_defs.hh:1557, + from ../../src/Sparse_Row_defs.hh:29, + from ../../src/Linear_Expression_Impl_defs.hh:33, + from ../../src/ppl_include_files.hh:8, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from affinepreimage1.cc:26: +../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../../src/mp_std_bits_defs.hh:28, + from ../../src/checked_defs.hh:27, + from ../../src/Checked_Number_defs.hh:28, + from ../../src/checked_numeric_limits.hh:27, + from ../../src/ppl_include_files.hh:3, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from affinepreimage1.cc:26: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../../src/CO_Tree_defs.hh:1557, + from ../../src/Sparse_Row_defs.hh:29, + from ../../src/Linear_Expression_Impl_defs.hh:33, + from ../../src/ppl_include_files.hh:8, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from difference1.cc:24: +../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../../src/mp_std_bits_defs.hh:28, + from ../../src/checked_defs.hh:27, + from ../../src/Checked_Number_defs.hh:28, + from ../../src/checked_numeric_limits.hh:27, + from ../../src/ppl_include_files.hh:3, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from difference1.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -92019,7 +92103,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from affinedimension1.cc:24: + from closure1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -92031,7 +92115,29 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from affinedimension1.cc:24: + from closure1.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../../src/CO_Tree_defs.hh:1557, + from ../../src/Sparse_Row_defs.hh:29, + from ../../src/Linear_Expression_Impl_defs.hh:33, + from ../../src/ppl_include_files.hh:8, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from addconstraints1.cc:25: +../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../../src/mp_std_bits_defs.hh:28, + from ../../src/checked_defs.hh:27, + from ../../src/Checked_Number_defs.hh:28, + from ../../src/checked_numeric_limits.hh:27, + from ../../src/ppl_include_files.hh:3, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from addconstraints1.cc:25: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -92044,7 +92150,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from addconstraints1.cc:25: + from containsintegerpoint1.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -92059,28 +92165,30 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -In file included from ../../src/CO_Tree_defs.hh:1557, - from ../../src/Sparse_Row_defs.hh:29, - from ../../src/Linear_Expression_Impl_defs.hh:33, - from ../../src/ppl_include_files.hh:8, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from closed1.cc:24: -../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from ../../src/mp_std_bits_defs.hh:28, - from ../../src/checked_defs.hh:27, - from ../../src/Checked_Number_defs.hh:28, - from ../../src/checked_numeric_limits.hh:27, - from ../../src/ppl_include_files.hh:3, +In file included from ../../src/Linear_System_templates.hh:30, + from ../../src/Linear_System_defs.hh:580, + from ../../src/Constraint_System_defs.hh:29, + from ../../src/Box_inlines.hh:28, + from ../../src/Box_defs.hh:2285, + from ../../src/Linear_Form_templates.hh:29, + from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from closed1.cc:24: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ + from affinedimension1.cc:24: +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ In file included from ../../src/Linear_System_templates.hh:30, from ../../src/Linear_System_defs.hh:580, from ../../src/Constraint_System_defs.hh:29, @@ -92114,7 +92222,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from affineimage1.cc:26: + from closed1.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -92129,28 +92237,6 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -In file included from ../../src/CO_Tree_defs.hh:1557, - from ../../src/Sparse_Row_defs.hh:29, - from ../../src/Linear_Expression_Impl_defs.hh:33, - from ../../src/ppl_include_files.hh:8, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from affinepreimage1.cc:26: -../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from ../../src/mp_std_bits_defs.hh:28, - from ../../src/checked_defs.hh:27, - from ../../src/Checked_Number_defs.hh:28, - from ../../src/checked_numeric_limits.hh:27, - from ../../src/ppl_include_files.hh:3, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from affinepreimage1.cc:26: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/Linear_System_templates.hh:30, from ../../src/Linear_System_defs.hh:580, from ../../src/Constraint_System_defs.hh:29, @@ -92160,7 +92246,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from closed1.cc:24: + from discrete1.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -92184,7 +92270,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from addcongruences1.cc:25: + from contains1.cc:25: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -92199,6 +92285,28 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ +In file included from ../../src/CO_Tree_defs.hh:1557, + from ../../src/Sparse_Row_defs.hh:29, + from ../../src/Linear_Expression_Impl_defs.hh:33, + from ../../src/ppl_include_files.hh:8, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from bounded1.cc:24: +../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../../src/mp_std_bits_defs.hh:28, + from ../../src/checked_defs.hh:27, + from ../../src/Checked_Number_defs.hh:28, + from ../../src/checked_numeric_limits.hh:27, + from ../../src/ppl_include_files.hh:3, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from bounded1.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/Linear_System_templates.hh:30, from ../../src/Linear_System_defs.hh:580, from ../../src/Constraint_System_defs.hh:29, @@ -92208,7 +92316,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from collapse1.cc:24: + from concatenate1.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -92229,7 +92337,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from closure1.cc:24: + from disjoint1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -92241,7 +92349,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from closure1.cc:24: + from disjoint1.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -92278,7 +92386,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from affinedimension1.cc:24: + from addconstraints1.cc:25: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -92317,17 +92425,61 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o concatenate1.o concatenate1.cc -g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o contains1.o contains1.cc -g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o containsintegerpoint1.o containsintegerpoint1.cc -g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o difference1.o difference1.cc +In file included from ../../src/Linear_System_templates.hh:30, + from ../../src/Linear_System_defs.hh:580, + from ../../src/Constraint_System_defs.hh:29, + from ../../src/Box_inlines.hh:28, + from ../../src/Box_defs.hh:2285, + from ../../src/Linear_Form_templates.hh:29, + from ../../src/ppl_include_files.hh:9, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from difference1.cc:24: +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +In file included from ../../src/Linear_System_templates.hh:30, + from ../../src/Linear_System_defs.hh:580, + from ../../src/Constraint_System_defs.hh:29, + from ../../src/Box_inlines.hh:28, + from ../../src/Box_defs.hh:2285, + from ../../src/Linear_Form_templates.hh:29, + from ../../src/ppl_include_files.hh:9, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from collapse1.cc:24: +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ In file included from ../../src/CO_Tree_defs.hh:1557, from ../../src/Sparse_Row_defs.hh:29, from ../../src/Linear_Expression_Impl_defs.hh:33, from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from concatenate1.cc:24: + from addcongruences1.cc:25: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -92339,7 +92491,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from concatenate1.cc:24: + from addcongruences1.cc:25: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -92352,7 +92504,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from concatenate1.cc:24: + from bounded1.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -92373,7 +92525,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from containsintegerpoint1.cc:24: + from disjunct1.cc:25: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -92385,17 +92537,41 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from containsintegerpoint1.cc:24: + from disjunct1.cc:25: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../../src/Linear_System_templates.hh:30, + from ../../src/Linear_System_defs.hh:580, + from ../../src/Constraint_System_defs.hh:29, + from ../../src/Box_inlines.hh:28, + from ../../src/Box_defs.hh:2285, + from ../../src/Linear_Form_templates.hh:29, + from ../../src/ppl_include_files.hh:9, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from disjoint1.cc:24: +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ In file included from ../../src/CO_Tree_defs.hh:1557, from ../../src/Sparse_Row_defs.hh:29, from ../../src/Linear_Expression_Impl_defs.hh:33, from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from contains1.cc:25: + from affineimage1.cc:26: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -92407,7 +92583,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from contains1.cc:25: + from affineimage1.cc:26: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -92420,7 +92596,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from containsintegerpoint1.cc:24: + from addcongruences1.cc:25: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -92444,7 +92620,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from contains1.cc:25: + from disjunct1.cc:25: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -92459,30 +92635,6 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o discrete1.o discrete1.cc -g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o disjoint1.o disjoint1.cc -In file included from ../../src/CO_Tree_defs.hh:1557, - from ../../src/Sparse_Row_defs.hh:29, - from ../../src/Linear_Expression_Impl_defs.hh:33, - from ../../src/ppl_include_files.hh:8, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from difference1.cc:24: -../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from ../../src/mp_std_bits_defs.hh:28, - from ../../src/checked_defs.hh:27, - from ../../src/Checked_Number_defs.hh:28, - from ../../src/checked_numeric_limits.hh:27, - from ../../src/ppl_include_files.hh:3, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from difference1.cc:24: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/Linear_System_templates.hh:30, from ../../src/Linear_System_defs.hh:580, from ../../src/Constraint_System_defs.hh:29, @@ -92492,7 +92644,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from difference1.cc:24: + from affineimage1.cc:26: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -92507,15 +92659,13 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o disjunct1.o disjunct1.cc -g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o empty1.o empty1.cc In file included from ../../src/CO_Tree_defs.hh:1557, from ../../src/Sparse_Row_defs.hh:29, from ../../src/Linear_Expression_Impl_defs.hh:33, from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from discrete1.cc:24: + from empty1.cc:25: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -92527,7 +92677,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from discrete1.cc:24: + from empty1.cc:25: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -92540,7 +92690,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from discrete1.cc:24: + from empty1.cc:25: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -92555,13 +92705,24 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ +g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o entails1.o entails1.cc +g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o equals1.o equals1.cc +g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o frombdshape1.o frombdshape1.cc +g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o frombox1.o frombox1.cc +g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o fromcongruences1.o fromcongruences1.cc +g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o fromconstraints1.o fromconstraints1.cc +g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o fromgrid1.o fromgrid1.cc +g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o fromoctagonalshape1.o fromoctagonalshape1.cc +g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o frompolyhedron1.o frompolyhedron1.cc +g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o fromspacedimension1.o fromspacedimension1.cc +g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o intersection1.o intersection1.cc In file included from ../../src/CO_Tree_defs.hh:1557, from ../../src/Sparse_Row_defs.hh:29, from ../../src/Linear_Expression_Impl_defs.hh:33, from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from disjoint1.cc:24: + from frombdshape1.cc:25: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -92573,11 +92734,56 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from disjoint1.cc:24: + from frombdshape1.cc:25: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o maxmin1.o maxmin1.cc +g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o meet1.o meet1.cc +In file included from ../../src/CO_Tree_defs.hh:1557, + from ../../src/Sparse_Row_defs.hh:29, + from ../../src/Linear_Expression_Impl_defs.hh:33, + from ../../src/ppl_include_files.hh:8, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from entails1.cc:24: +../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../../src/mp_std_bits_defs.hh:28, + from ../../src/checked_defs.hh:27, + from ../../src/Checked_Number_defs.hh:28, + from ../../src/checked_numeric_limits.hh:27, + from ../../src/ppl_include_files.hh:3, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from entails1.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../../src/CO_Tree_defs.hh:1557, + from ../../src/Sparse_Row_defs.hh:29, + from ../../src/Linear_Expression_Impl_defs.hh:33, + from ../../src/ppl_include_files.hh:8, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from frombox1.cc:25: +../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../../src/mp_std_bits_defs.hh:28, + from ../../src/checked_defs.hh:27, + from ../../src/Checked_Number_defs.hh:28, + from ../../src/checked_numeric_limits.hh:27, + from ../../src/ppl_include_files.hh:3, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from frombox1.cc:25: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ -g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o entails1.o entails1.cc In file included from ../../src/Linear_System_templates.hh:30, from ../../src/Linear_System_defs.hh:580, from ../../src/Constraint_System_defs.hh:29, @@ -92587,7 +92793,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from disjoint1.cc:24: + from frombdshape1.cc:25: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -92608,7 +92814,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from disjunct1.cc:25: + from equals1.cc:25: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -92620,7 +92826,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from disjunct1.cc:25: + from equals1.cc:25: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -92630,7 +92836,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from empty1.cc:25: + from fromcongruences1.cc:25: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -92642,7 +92848,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from empty1.cc:25: + from fromcongruences1.cc:25: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -92655,7 +92861,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from disjunct1.cc:25: + from frombox1.cc:25: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -92679,7 +92885,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from empty1.cc:25: + from entails1.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -92694,28 +92900,6 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -In file included from ../../src/CO_Tree_defs.hh:1557, - from ../../src/Sparse_Row_defs.hh:29, - from ../../src/Linear_Expression_Impl_defs.hh:33, - from ../../src/ppl_include_files.hh:8, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from entails1.cc:24: -../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from ../../src/mp_std_bits_defs.hh:28, - from ../../src/checked_defs.hh:27, - from ../../src/Checked_Number_defs.hh:28, - from ../../src/checked_numeric_limits.hh:27, - from ../../src/ppl_include_files.hh:3, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from entails1.cc:24: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/Linear_System_templates.hh:30, from ../../src/Linear_System_defs.hh:580, from ../../src/Constraint_System_defs.hh:29, @@ -92725,7 +92909,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from entails1.cc:24: + from equals1.cc:25: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -92740,15 +92924,13 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o equals1.o equals1.cc -g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o frombdshape1.o frombdshape1.cc In file included from ../../src/CO_Tree_defs.hh:1557, from ../../src/Sparse_Row_defs.hh:29, from ../../src/Linear_Expression_Impl_defs.hh:33, from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from equals1.cc:25: + from frompolyhedron1.cc:25: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -92760,11 +92942,10 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from equals1.cc:25: + from frompolyhedron1.cc:25: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ -g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o frombox1.o frombox1.cc In file included from ../../src/Linear_System_templates.hh:30, from ../../src/Linear_System_defs.hh:580, from ../../src/Constraint_System_defs.hh:29, @@ -92774,7 +92955,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from equals1.cc:25: + from fromcongruences1.cc:25: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -92795,7 +92976,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from frombdshape1.cc:25: + from fromconstraints1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -92807,11 +92988,32 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from frombdshape1.cc:25: + from fromconstraints1.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../../src/CO_Tree_defs.hh:1557, + from ../../src/Sparse_Row_defs.hh:29, + from ../../src/Linear_Expression_Impl_defs.hh:33, + from ../../src/ppl_include_files.hh:8, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from fromoctagonalshape1.cc:25: +../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../../src/mp_std_bits_defs.hh:28, + from ../../src/checked_defs.hh:27, + from ../../src/Checked_Number_defs.hh:28, + from ../../src/checked_numeric_limits.hh:27, + from ../../src/ppl_include_files.hh:3, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from fromoctagonalshape1.cc:25: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ -g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o fromcongruences1.o fromcongruences1.cc In file included from ../../src/Linear_System_templates.hh:30, from ../../src/Linear_System_defs.hh:580, from ../../src/Constraint_System_defs.hh:29, @@ -92821,7 +93023,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from frombdshape1.cc:25: + from frompolyhedron1.cc:25: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -92836,30 +93038,30 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o fromconstraints1.o fromconstraints1.cc -g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o fromgrid1.o fromgrid1.cc -In file included from ../../src/CO_Tree_defs.hh:1557, - from ../../src/Sparse_Row_defs.hh:29, - from ../../src/Linear_Expression_Impl_defs.hh:33, - from ../../src/ppl_include_files.hh:8, - from ../../src/ppl_header.hh:38, - from ../../tests/ppl_test.hh:27, - from frombox1.cc:25: -../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] - std::memcpy(&to, &from, sizeof(data_type)); - ^ -In file included from ../../src/mp_std_bits_defs.hh:28, - from ../../src/checked_defs.hh:27, - from ../../src/Checked_Number_defs.hh:28, - from ../../src/checked_numeric_limits.hh:27, - from ../../src/ppl_include_files.hh:3, +In file included from ../../src/Linear_System_templates.hh:30, + from ../../src/Linear_System_defs.hh:580, + from ../../src/Constraint_System_defs.hh:29, + from ../../src/Box_inlines.hh:28, + from ../../src/Box_defs.hh:2285, + from ../../src/Linear_Form_templates.hh:29, + from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from frombox1.cc:25: -/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here - class __gmp_expr - ^~~~~~~~~~~~~~~~~~~~~~~~ + from fromoctagonalshape1.cc:25: +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ In file included from ../../src/Linear_System_templates.hh:30, from ../../src/Linear_System_defs.hh:580, from ../../src/Constraint_System_defs.hh:29, @@ -92869,7 +93071,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from frombox1.cc:25: + from fromconstraints1.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -92884,14 +93086,13 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o fromoctagonalshape1.o fromoctagonalshape1.cc In file included from ../../src/CO_Tree_defs.hh:1557, from ../../src/Sparse_Row_defs.hh:29, from ../../src/Linear_Expression_Impl_defs.hh:33, from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from fromcongruences1.cc:25: + from intersection1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -92903,25 +93104,54 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from fromcongruences1.cc:25: + from intersection1.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ -In file included from ../../src/Pointset_Powerset_defs.hh:1454, - from ../../src/algorithms.hh:28, - from ../../src/ppl_include_files.hh:18, +In file included from ../../src/CO_Tree_defs.hh:1557, + from ../../src/Sparse_Row_defs.hh:29, + from ../../src/Linear_Expression_Impl_defs.hh:33, + from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from equals1.cc:25: -../../src/Pointset_Powerset_templates.hh: In instantiation of 'Parma_Polyhedra_Library::Pointset_Powerset::Pointset_Powerset(const Parma_Polyhedra_Library::Pointset_Powerset&, Parma_Polyhedra_Library::Complexity_Class) [with QH = Parma_Polyhedra_Library::Box, Parma_Polyhedra_Library::Interval_Info_Bitset > >; PSET = Parma_Polyhedra_Library::NNC_Polyhedron]': -../../src/Pointset_Powerset_inlines.hh:262:43: required from 'bool Parma_Polyhedra_Library::Pointset_Powerset::geometrically_equals(const Parma_Polyhedra_Library::Pointset_Powerset&) const [with PSET = Parma_Polyhedra_Library::Box, Parma_Polyhedra_Library::Interval_Info_Bitset > >]' -equals1.cc:44:50: required from here -../../src/Pointset_Powerset_templates.hh:66:29: internal compiler error: in type_dependent_expression_p, at cp/pt.c:25195 - y_end = y.end(); i != y_end; ++i) { - ~~^~~~~~~~ -Please submit a full bug report, -with preprocessed source if appropriate. -See for instructions. + from fromspacedimension1.cc:25: +../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../../src/mp_std_bits_defs.hh:28, + from ../../src/checked_defs.hh:27, + from ../../src/Checked_Number_defs.hh:28, + from ../../src/checked_numeric_limits.hh:27, + from ../../src/ppl_include_files.hh:3, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from fromspacedimension1.cc:25: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../../src/CO_Tree_defs.hh:1557, + from ../../src/Sparse_Row_defs.hh:29, + from ../../src/Linear_Expression_Impl_defs.hh:33, + from ../../src/ppl_include_files.hh:8, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from maxmin1.cc:25: +../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../../src/mp_std_bits_defs.hh:28, + from ../../src/checked_defs.hh:27, + from ../../src/Checked_Number_defs.hh:28, + from ../../src/checked_numeric_limits.hh:27, + from ../../src/ppl_include_files.hh:3, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from maxmin1.cc:25: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../src/CO_Tree_defs.hh:1557, from ../../src/Sparse_Row_defs.hh:29, from ../../src/Linear_Expression_Impl_defs.hh:33, @@ -92953,7 +93183,32 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from fromcongruences1.cc:25: + from intersection1.cc:24: +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o membytes1.o membytes1.cc +In file included from ../../src/Linear_System_templates.hh:30, + from ../../src/Linear_System_defs.hh:580, + from ../../src/Constraint_System_defs.hh:29, + from ../../src/Box_inlines.hh:28, + from ../../src/Box_defs.hh:2285, + from ../../src/Linear_Form_templates.hh:29, + from ../../src/ppl_include_files.hh:9, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from fromspacedimension1.cc:25: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -92992,13 +93247,37 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ +In file included from ../../src/Linear_System_templates.hh:30, + from ../../src/Linear_System_defs.hh:580, + from ../../src/Constraint_System_defs.hh:29, + from ../../src/Box_inlines.hh:28, + from ../../src/Box_defs.hh:2285, + from ../../src/Linear_Form_templates.hh:29, + from ../../src/ppl_include_files.hh:9, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from maxmin1.cc:25: +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ In file included from ../../src/CO_Tree_defs.hh:1557, from ../../src/Sparse_Row_defs.hh:29, from ../../src/Linear_Expression_Impl_defs.hh:33, from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from fromconstraints1.cc:24: + from meet1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -93010,11 +93289,10 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from fromconstraints1.cc:24: + from meet1.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ -g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o frompolyhedron1.o frompolyhedron1.cc In file included from ../../src/Linear_System_templates.hh:30, from ../../src/Linear_System_defs.hh:580, from ../../src/Constraint_System_defs.hh:29, @@ -93024,7 +93302,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from fromconstraints1.cc:24: + from meet1.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -93039,13 +93317,30 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ +In file included from ../../src/Pointset_Powerset_defs.hh:1454, + from ../../src/algorithms.hh:28, + from ../../src/ppl_include_files.hh:18, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from equals1.cc:25: +../../src/Pointset_Powerset_templates.hh: In instantiation of 'Parma_Polyhedra_Library::Pointset_Powerset::Pointset_Powerset(const Parma_Polyhedra_Library::Pointset_Powerset&, Parma_Polyhedra_Library::Complexity_Class) [with QH = Parma_Polyhedra_Library::Box, Parma_Polyhedra_Library::Interval_Info_Bitset > >; PSET = Parma_Polyhedra_Library::NNC_Polyhedron]': +../../src/Pointset_Powerset_inlines.hh:262:43: required from 'bool Parma_Polyhedra_Library::Pointset_Powerset::geometrically_equals(const Parma_Polyhedra_Library::Pointset_Powerset&) const [with PSET = Parma_Polyhedra_Library::Box, Parma_Polyhedra_Library::Interval_Info_Bitset > >]' +equals1.cc:44:50: required from here +../../src/Pointset_Powerset_templates.hh:66:29: internal compiler error: in type_dependent_expression_p, at cp/pt.c:25195 + y_end = y.end(); i != y_end; ++i) { + ~~^~~~~~~~ +Please submit a full bug report, +with preprocessed source if appropriate. +See for instructions. +g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o powerset1.o powerset1.cc +g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o reduce1.o reduce1.cc In file included from ../../src/CO_Tree_defs.hh:1557, from ../../src/Sparse_Row_defs.hh:29, from ../../src/Linear_Expression_Impl_defs.hh:33, from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from fromoctagonalshape1.cc:25: + from membytes1.cc:25: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -93057,10 +93352,11 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from fromoctagonalshape1.cc:25: + from membytes1.cc:25: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ +g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o refinewith1.o refinewith1.cc In file included from ../../src/Linear_System_templates.hh:30, from ../../src/Linear_System_defs.hh:580, from ../../src/Constraint_System_defs.hh:29, @@ -93070,7 +93366,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from fromoctagonalshape1.cc:25: + from membytes1.cc:25: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -93085,14 +93381,14 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o fromspacedimension1.o fromspacedimension1.cc +g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o relationwith1.o relationwith1.cc In file included from ../../src/CO_Tree_defs.hh:1557, from ../../src/Sparse_Row_defs.hh:29, from ../../src/Linear_Expression_Impl_defs.hh:33, from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from frompolyhedron1.cc:25: + from powerset1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -93104,7 +93400,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from frompolyhedron1.cc:25: + from powerset1.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -93117,7 +93413,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from frompolyhedron1.cc:25: + from powerset1.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -93138,7 +93434,7 @@ from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from fromspacedimension1.cc:25: + from reduce1.cc:25: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -93150,7 +93446,30 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from fromspacedimension1.cc:25: + from reduce1.cc:25: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o simplifyusingcontext1.o simplifyusingcontext1.cc +In file included from ../../src/CO_Tree_defs.hh:1557, + from ../../src/Sparse_Row_defs.hh:29, + from ../../src/Linear_Expression_Impl_defs.hh:33, + from ../../src/ppl_include_files.hh:8, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from refinewith1.cc:27: +../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../../src/mp_std_bits_defs.hh:28, + from ../../src/checked_defs.hh:27, + from ../../src/Checked_Number_defs.hh:28, + from ../../src/checked_numeric_limits.hh:27, + from ../../src/ppl_include_files.hh:3, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from refinewith1.cc:27: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -93163,7 +93482,31 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from fromspacedimension1.cc:25: + from reduce1.cc:25: +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +In file included from ../../src/Linear_System_templates.hh:30, + from ../../src/Linear_System_defs.hh:580, + from ../../src/Constraint_System_defs.hh:29, + from ../../src/Box_inlines.hh:28, + from ../../src/Box_defs.hh:2285, + from ../../src/Linear_Form_templates.hh:29, + from ../../src/ppl_include_files.hh:9, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from refinewith1.cc:27: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -93178,15 +93521,13 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o intersection1.o intersection1.cc -g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o maxmin1.o maxmin1.cc In file included from ../../src/CO_Tree_defs.hh:1557, from ../../src/Sparse_Row_defs.hh:29, from ../../src/Linear_Expression_Impl_defs.hh:33, from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from intersection1.cc:24: + from relationwith1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -93198,7 +93539,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from intersection1.cc:24: + from relationwith1.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -93211,11 +93552,12 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from intersection1.cc:24: + from relationwith1.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) ^ +g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o size1.o size1.cc ../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ @@ -93226,13 +93568,14 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ +g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o spacedims1.o spacedims1.cc In file included from ../../src/CO_Tree_defs.hh:1557, from ../../src/Sparse_Row_defs.hh:29, from ../../src/Linear_Expression_Impl_defs.hh:33, from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from maxmin1.cc:25: + from simplifyusingcontext1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -93244,7 +93587,7 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from maxmin1.cc:25: + from simplifyusingcontext1.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -93257,7 +93600,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from maxmin1.cc:25: + from simplifyusingcontext1.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -93272,15 +93615,13 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o meet1.o meet1.cc -g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o membytes1.o membytes1.cc In file included from ../../src/CO_Tree_defs.hh:1557, from ../../src/Sparse_Row_defs.hh:29, from ../../src/Linear_Expression_Impl_defs.hh:33, from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from membytes1.cc:25: + from size1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -93292,7 +93633,29 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from membytes1.cc:25: + from size1.cc:24: +/usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here + class __gmp_expr + ^~~~~~~~~~~~~~~~~~~~~~~~ +In file included from ../../src/CO_Tree_defs.hh:1557, + from ../../src/Sparse_Row_defs.hh:29, + from ../../src/Linear_Expression_Impl_defs.hh:33, + from ../../src/ppl_include_files.hh:8, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from spacedims1.cc:28: +../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': +../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] + std::memcpy(&to, &from, sizeof(data_type)); + ^ +In file included from ../../src/mp_std_bits_defs.hh:28, + from ../../src/checked_defs.hh:27, + from ../../src/Checked_Number_defs.hh:28, + from ../../src/checked_numeric_limits.hh:27, + from ../../src/ppl_include_files.hh:3, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from spacedims1.cc:28: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -93305,7 +93668,31 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from membytes1.cc:25: + from size1.cc:24: +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': +../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': +../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + ? static_cast(&Scalar_Products::sign) + ^ +../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] + : static_cast(&Scalar_Products::reduced_sign)) { + ^ +In file included from ../../src/Linear_System_templates.hh:30, + from ../../src/Linear_System_defs.hh:580, + from ../../src/Constraint_System_defs.hh:29, + from ../../src/Box_inlines.hh:28, + from ../../src/Box_defs.hh:2285, + from ../../src/Linear_Form_templates.hh:29, + from ../../src/ppl_include_files.hh:9, + from ../../src/ppl_header.hh:38, + from ../../tests/ppl_test.hh:27, + from spacedims1.cc:28: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -93320,13 +93707,18 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ +g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o universe1.o universe1.cc +g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o upperbound1.o upperbound1.cc +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o addcongruences1 addcongruences1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o addconstraints1 addconstraints1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o affinedimension1 affinedimension1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp In file included from ../../src/CO_Tree_defs.hh:1557, from ../../src/Sparse_Row_defs.hh:29, from ../../src/Linear_Expression_Impl_defs.hh:33, from ../../src/ppl_include_files.hh:8, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from meet1.cc:24: + from universe1.cc:24: ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] std::memcpy(&to, &from, sizeof(data_type)); @@ -93338,10 +93730,13 @@ from ../../src/ppl_include_files.hh:3, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from meet1.cc:24: + from universe1.cc:24: /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here class __gmp_expr ^~~~~~~~~~~~~~~~~~~~~~~~ +libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/addconstraints1 addconstraints1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp +libtool: link: g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z -Wl,relro -o .libs/addcongruences1 addcongruences1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/.libs/libppl.so -lgmpxx -lgmp +/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -Wl,-z,relro -o affineimage1 affineimage1.o ../../utils/libppl_utils.a ../../tests/libppl_tests.a ../../src/libppl.la -lgmpxx -lgmp In file included from ../../src/Linear_System_templates.hh:30, from ../../src/Linear_System_defs.hh:580, from ../../src/Constraint_System_defs.hh:29, @@ -93351,7 +93746,7 @@ from ../../src/ppl_include_files.hh:9, from ../../src/ppl_header.hh:38, from ../../tests/ppl_test.hh:27, - from meet1.cc:24: + from universe1.cc:24: ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] ? static_cast(&Scalar_Products::sign) @@ -93366,161300 +93761,13 @@ ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] : static_cast(&Scalar_Products::reduced_sign)) { ^ -Preprocessed source stored into /tmp/ccL3eUlK.out file, please attach this to your bugreport. -=== BEGIN GCC DUMP === -2441: // Target: i686-linux-gnu -2441: // Configured with: ../src/configure -v --with-pkgversion='Debian 8.3.0-6' --with-bugurl=file:///usr/share/doc/gcc-8/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-8 --program-prefix=i686-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-targets=all --enable-multiarch --disable-werror --with-arch-32=i686 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu -2441: // Thread model: posix -2441: // gcc version 8.3.0 (Debian 8.3.0-6) -2441: // -2441: // In file included from ../../src/CO_Tree_defs.hh:1557, -2441: // from ../../src/Sparse_Row_defs.hh:29, -2441: // from ../../src/Linear_Expression_Impl_defs.hh:33, -2441: // from ../../src/ppl_include_files.hh:8, -2441: // from ../../src/ppl_header.hh:38, -2441: // from ../../tests/ppl_test.hh:27, -2441: // from equals1.cc:25: -2441: // ../../src/CO_Tree_inlines.hh: In static member function 'static void Parma_Polyhedra_Library::CO_Tree::move_data_element(Parma_Polyhedra_Library::CO_Tree::data_type&, Parma_Polyhedra_Library::CO_Tree::data_type&)': -2441: // ../../src/CO_Tree_inlines.hh:354:44: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] -2441: // std::memcpy(&to, &from, sizeof(data_type)); -2441: // ^ -2441: // In file included from ../../src/mp_std_bits_defs.hh:28, -2441: // from ../../src/checked_defs.hh:27, -2441: // from ../../src/Checked_Number_defs.hh:28, -2441: // from ../../src/checked_numeric_limits.hh:27, -2441: // from ../../src/ppl_include_files.hh:3, -2441: // from ../../src/ppl_header.hh:38, -2441: // from ../../tests/ppl_test.hh:27, -2441: // from equals1.cc:25: -2441: // /usr/include/gmpxx.h:1429:7: note: 'Parma_Polyhedra_Library::CO_Tree::data_type' {aka 'class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>'} declared here -2441: // class __gmp_expr -2441: // ^~~~~~~~~~~~~~~~~~~~~~~~ -2441: // In file included from ../../src/Linear_System_templates.hh:30, -2441: // from ../../src/Linear_System_defs.hh:580, -2441: // from ../../src/Constraint_System_defs.hh:29, -2441: // from ../../src/Box_inlines.hh:28, -2441: // from ../../src/Box_defs.hh:2285, -2441: // from ../../src/Linear_Form_templates.hh:29, -2441: // from ../../src/ppl_include_files.hh:9, -2441: // from ../../src/ppl_header.hh:38, -2441: // from ../../tests/ppl_test.hh:27, -2441: // from equals1.cc:25: -2441: // ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Constraint&)': -2441: // ../../src/Scalar_Products_inlines.hh:129:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] -2441: // ? static_cast(&Scalar_Products::sign) -2441: // ^ -2441: // ../../src/Scalar_Products_inlines.hh:130:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] -2441: // : static_cast(&Scalar_Products::reduced_sign)) { -2441: // ^ -2441: // ../../src/Scalar_Products_inlines.hh: In constructor 'Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::Topology_Adjusted_Scalar_Product_Sign(const Parma_Polyhedra_Library::Generator&)': -2441: // ../../src/Scalar_Products_inlines.hh:137:58: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] -2441: // ? static_cast(&Scalar_Products::sign) -2441: // ^ -2441: // ../../src/Scalar_Products_inlines.hh:138:66: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] -2441: // : static_cast(&Scalar_Products::reduced_sign)) { -2441: // ^ -2441: // In file included from ../../src/Pointset_Powerset_defs.hh:1454, -2441: // from ../../src/algorithms.hh:28, -2441: // from ../../src/ppl_include_files.hh:18, -2441: // from ../../src/ppl_header.hh:38, -2441: // from ../../tests/ppl_test.hh:27, -2441: // from equals1.cc:25: -2441: // ../../src/Pointset_Powerset_templates.hh: In instantiation of 'Parma_Polyhedra_Library::Pointset_Powerset::Pointset_Powerset(const Parma_Polyhedra_Library::Pointset_Powerset&, Parma_Polyhedra_Library::Complexity_Class) [with QH = Parma_Polyhedra_Library::Box, Parma_Polyhedra_Library::Interval_Info_Bitset > >; PSET = Parma_Polyhedra_Library::NNC_Polyhedron]': -2441: // ../../src/Pointset_Powerset_inlines.hh:262:43: required from 'bool Parma_Polyhedra_Library::Pointset_Powerset::geometrically_equals(const Parma_Polyhedra_Library::Pointset_Powerset&) const [with PSET = Parma_Polyhedra_Library::Box, Parma_Polyhedra_Library::Interval_Info_Bitset > >]' -2441: // equals1.cc:44:50: required from here -2441: // ../../src/Pointset_Powerset_templates.hh:66:29: internal compiler error: in type_dependent_expression_p, at cp/pt.c:25195 -2441: // y_end = y.end(); i != y_end; ++i) { -2441: // ~~^~~~~~~~ -2441: // Please submit a full bug report, -2441: // with preprocessed source if appropriate. -2441: // See for instructions. -2441: -2441: // /usr/lib/gcc/i686-linux-gnu/8/cc1plus -quiet -I . -I ../.. -I ../../src -I ../../src -I ../../tests -I ../../utils -imultiarch i386-linux-gnu -D_GNU_SOURCE -D HAVE_CONFIG_H -D NDEBUG=1 -D _FORTIFY_SOURCE=2 equals1.cc -quiet -dumpbase equals1.cc -mtune=generic -march=i686 -auxbase-strip equals1.o -g -g -g -O2 -O2 -Wdate-time -Wformat=1 -Werror=format-security -Wextra -Wall -frounding-math -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -fpermissive -o - -frandom-seed=0 -fdump-noaddr -2441: -2441: # 1 "equals1.cc" -2441: # 1 "/build/ppl-1.2/tests/Powerset//" -2441: # 1 "" -2441: # 1 "" -2441: # 1 "/usr/include/stdc-predef.h" 1 3 4 -2441: # 1 "" 2 -2441: # 1 "equals1.cc" -2441: # 25 "equals1.cc" -2441: # 1 "../../tests/ppl_test.hh" 1 -2441: # 27 "../../tests/ppl_test.hh" -2441: # 1 "../../src/ppl_header.hh" 1 -2441: # 36 "../../src/ppl_header.hh" -2441: # 1 "../../ppl-config.h" 1 -2441: # 402 "../../ppl-config.h" -2441: # 1 "/usr/lib/gcc/i686-linux-gnu/8/include/stdint.h" 1 3 4 -2441: # 9 "/usr/lib/gcc/i686-linux-gnu/8/include/stdint.h" 3 4 -2441: # 1 "/usr/include/stdint.h" 1 3 4 -2441: # 26 "/usr/include/stdint.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/libc-header-start.h" 1 3 4 -2441: # 33 "/usr/include/i386-linux-gnu/bits/libc-header-start.h" 3 4 -2441: # 1 "/usr/include/features.h" 1 3 4 -2441: # 424 "/usr/include/features.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/sys/cdefs.h" 1 3 4 -2441: # 442 "/usr/include/i386-linux-gnu/sys/cdefs.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/wordsize.h" 1 3 4 -2441: # 443 "/usr/include/i386-linux-gnu/sys/cdefs.h" 2 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/long-double.h" 1 3 4 -2441: # 444 "/usr/include/i386-linux-gnu/sys/cdefs.h" 2 3 4 -2441: # 425 "/usr/include/features.h" 2 3 4 -2441: # 448 "/usr/include/features.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/gnu/stubs.h" 1 3 4 -2441: -2441: -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/gnu/stubs-32.h" 1 3 4 -2441: # 8 "/usr/include/i386-linux-gnu/gnu/stubs.h" 2 3 4 -2441: # 449 "/usr/include/features.h" 2 3 4 -2441: # 34 "/usr/include/i386-linux-gnu/bits/libc-header-start.h" 2 3 4 -2441: # 27 "/usr/include/stdint.h" 2 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/types.h" 1 3 4 -2441: # 27 "/usr/include/i386-linux-gnu/bits/types.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/wordsize.h" 1 3 4 -2441: # 28 "/usr/include/i386-linux-gnu/bits/types.h" 2 3 4 -2441: -2441: -2441: -2441: # 30 "/usr/include/i386-linux-gnu/bits/types.h" 3 4 -2441: typedef unsigned char __u_char; -2441: typedef unsigned short int __u_short; -2441: typedef unsigned int __u_int; -2441: typedef unsigned long int __u_long; -2441: -2441: -2441: typedef signed char __int8_t; -2441: typedef unsigned char __uint8_t; -2441: typedef signed short int __int16_t; -2441: typedef unsigned short int __uint16_t; -2441: typedef signed int __int32_t; -2441: typedef unsigned int __uint32_t; -2441: -2441: -2441: -2441: -2441: __extension__ typedef signed long long int __int64_t; -2441: __extension__ typedef unsigned long long int __uint64_t; -2441: -2441: -2441: -2441: typedef __int8_t __int_least8_t; -2441: typedef __uint8_t __uint_least8_t; -2441: typedef __int16_t __int_least16_t; -2441: typedef __uint16_t __uint_least16_t; -2441: typedef __int32_t __int_least32_t; -2441: typedef __uint32_t __uint_least32_t; -2441: typedef __int64_t __int_least64_t; -2441: typedef __uint64_t __uint_least64_t; -2441: -2441: -2441: -2441: -2441: -2441: -2441: __extension__ typedef long long int __quad_t; -2441: __extension__ typedef unsigned long long int __u_quad_t; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: __extension__ typedef long long int __intmax_t; -2441: __extension__ typedef unsigned long long int __uintmax_t; -2441: # 140 "/usr/include/i386-linux-gnu/bits/types.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/typesizes.h" 1 3 4 -2441: # 141 "/usr/include/i386-linux-gnu/bits/types.h" 2 3 4 -2441: -2441: -2441: __extension__ typedef __u_quad_t __dev_t; -2441: __extension__ typedef unsigned int __uid_t; -2441: __extension__ typedef unsigned int __gid_t; -2441: __extension__ typedef unsigned long int __ino_t; -2441: __extension__ typedef __u_quad_t __ino64_t; -2441: __extension__ typedef unsigned int __mode_t; -2441: __extension__ typedef unsigned int __nlink_t; -2441: __extension__ typedef long int __off_t; -2441: __extension__ typedef __quad_t __off64_t; -2441: __extension__ typedef int __pid_t; -2441: __extension__ typedef struct { int __val[2]; } __fsid_t; -2441: __extension__ typedef long int __clock_t; -2441: __extension__ typedef unsigned long int __rlim_t; -2441: __extension__ typedef __u_quad_t __rlim64_t; -2441: __extension__ typedef unsigned int __id_t; -2441: __extension__ typedef long int __time_t; -2441: __extension__ typedef unsigned int __useconds_t; -2441: __extension__ typedef long int __suseconds_t; -2441: -2441: __extension__ typedef int __daddr_t; -2441: __extension__ typedef int __key_t; -2441: -2441: -2441: __extension__ typedef int __clockid_t; -2441: -2441: -2441: __extension__ typedef void * __timer_t; -2441: -2441: -2441: __extension__ typedef long int __blksize_t; -2441: -2441: -2441: -2441: -2441: __extension__ typedef long int __blkcnt_t; -2441: __extension__ typedef __quad_t __blkcnt64_t; -2441: -2441: -2441: __extension__ typedef unsigned long int __fsblkcnt_t; -2441: __extension__ typedef __u_quad_t __fsblkcnt64_t; -2441: -2441: -2441: __extension__ typedef unsigned long int __fsfilcnt_t; -2441: __extension__ typedef __u_quad_t __fsfilcnt64_t; -2441: -2441: -2441: __extension__ typedef int __fsword_t; -2441: -2441: __extension__ typedef int __ssize_t; -2441: -2441: -2441: __extension__ typedef long int __syscall_slong_t; -2441: -2441: __extension__ typedef unsigned long int __syscall_ulong_t; -2441: -2441: -2441: -2441: typedef __off64_t __loff_t; -2441: typedef char *__caddr_t; -2441: -2441: -2441: __extension__ typedef int __intptr_t; -2441: -2441: -2441: __extension__ typedef unsigned int __socklen_t; -2441: -2441: -2441: -2441: -2441: typedef int __sig_atomic_t; -2441: # 28 "/usr/include/stdint.h" 2 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/wchar.h" 1 3 4 -2441: # 29 "/usr/include/stdint.h" 2 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/wordsize.h" 1 3 4 -2441: # 30 "/usr/include/stdint.h" 2 3 4 -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/stdint-intn.h" 1 3 4 -2441: # 24 "/usr/include/i386-linux-gnu/bits/stdint-intn.h" 3 4 -2441: typedef __int8_t int8_t; -2441: typedef __int16_t int16_t; -2441: typedef __int32_t int32_t; -2441: typedef __int64_t int64_t; -2441: # 35 "/usr/include/stdint.h" 2 3 4 -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/stdint-uintn.h" 1 3 4 -2441: # 24 "/usr/include/i386-linux-gnu/bits/stdint-uintn.h" 3 4 -2441: typedef __uint8_t uint8_t; -2441: typedef __uint16_t uint16_t; -2441: typedef __uint32_t uint32_t; -2441: typedef __uint64_t uint64_t; -2441: # 38 "/usr/include/stdint.h" 2 3 4 -2441: -2441: -2441: -2441: -2441: -2441: typedef __int_least8_t int_least8_t; -2441: typedef __int_least16_t int_least16_t; -2441: typedef __int_least32_t int_least32_t; -2441: typedef __int_least64_t int_least64_t; -2441: -2441: -2441: typedef __uint_least8_t uint_least8_t; -2441: typedef __uint_least16_t uint_least16_t; -2441: typedef __uint_least32_t uint_least32_t; -2441: typedef __uint_least64_t uint_least64_t; -2441: -2441: -2441: -2441: -2441: -2441: typedef signed char int_fast8_t; -2441: -2441: -2441: -2441: -2441: -2441: typedef int int_fast16_t; -2441: typedef int int_fast32_t; -2441: __extension__ -2441: typedef long long int int_fast64_t; -2441: -2441: -2441: -2441: typedef unsigned char uint_fast8_t; -2441: -2441: -2441: -2441: -2441: -2441: typedef unsigned int uint_fast16_t; -2441: typedef unsigned int uint_fast32_t; -2441: __extension__ -2441: typedef unsigned long long int uint_fast64_t; -2441: # 93 "/usr/include/stdint.h" 3 4 -2441: typedef int intptr_t; -2441: -2441: -2441: typedef unsigned int uintptr_t; -2441: -2441: -2441: -2441: -2441: typedef __intmax_t intmax_t; -2441: typedef __uintmax_t uintmax_t; -2441: # 10 "/usr/lib/gcc/i686-linux-gnu/8/include/stdint.h" 2 3 4 -2441: # 403 "../../ppl-config.h" 2 -2441: -2441: -2441: -2441: # 1 "/usr/include/inttypes.h" 1 3 4 -2441: # 266 "/usr/include/inttypes.h" 3 4 -2441: extern "C" { -2441: # 280 "/usr/include/inttypes.h" 3 4 -2441: typedef struct -2441: { -2441: __extension__ long long int quot; -2441: __extension__ long long int rem; -2441: } imaxdiv_t; -2441: -2441: -2441: -2441: -2441: -2441: extern intmax_t imaxabs (intmax_t __n) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern imaxdiv_t imaxdiv (intmax_t __numer, intmax_t __denom) -2441: throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern intmax_t strtoimax (const char *__restrict __nptr, -2441: char **__restrict __endptr, int __base) throw (); -2441: -2441: -2441: extern uintmax_t strtoumax (const char *__restrict __nptr, -2441: char ** __restrict __endptr, int __base) throw (); -2441: -2441: -2441: extern intmax_t wcstoimax (const wchar_t *__restrict __nptr, -2441: wchar_t **__restrict __endptr, int __base) -2441: throw (); -2441: -2441: -2441: extern uintmax_t wcstoumax (const wchar_t *__restrict __nptr, -2441: wchar_t ** __restrict __endptr, int __base) -2441: throw (); -2441: # 370 "/usr/include/inttypes.h" 3 4 -2441: __extension__ -2441: extern long long int __strtoll_internal (const char *__restrict __nptr, -2441: char **__restrict __endptr, -2441: int __base, int __group) -2441: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); -2441: -2441: extern __inline __attribute__ ((__gnu_inline__)) intmax_t -2441: __attribute__ ((__leaf__)) strtoimax (const char *__restrict nptr, char **__restrict endptr, int base) throw () -2441: -2441: { -2441: return __strtoll_internal (nptr, endptr, base, 0); -2441: } -2441: -2441: __extension__ -2441: extern unsigned long long int __strtoull_internal (const char * -2441: __restrict __nptr, -2441: char ** -2441: __restrict __endptr, -2441: int __base, -2441: int __group) -2441: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); -2441: -2441: extern __inline __attribute__ ((__gnu_inline__)) uintmax_t -2441: __attribute__ ((__leaf__)) strtoumax (const char *__restrict nptr, char **__restrict endptr, int base) throw () -2441: -2441: { -2441: return __strtoull_internal (nptr, endptr, base, 0); -2441: } -2441: -2441: __extension__ -2441: extern long long int __wcstoll_internal (const wchar_t *__restrict __nptr, -2441: wchar_t **__restrict __endptr, -2441: int __base, int __group) -2441: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); -2441: -2441: extern __inline __attribute__ ((__gnu_inline__)) intmax_t -2441: __attribute__ ((__leaf__)) wcstoimax (const wchar_t *__restrict nptr, wchar_t **__restrict endptr, int base) throw () -2441: -2441: { -2441: return __wcstoll_internal (nptr, endptr, base, 0); -2441: } -2441: -2441: -2441: __extension__ -2441: extern unsigned long long int __wcstoull_internal (const wchar_t * -2441: __restrict __nptr, -2441: wchar_t ** -2441: __restrict __endptr, -2441: int __base, -2441: int __group) -2441: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); -2441: -2441: extern __inline __attribute__ ((__gnu_inline__)) uintmax_t -2441: __attribute__ ((__leaf__)) wcstoumax (const wchar_t *__restrict nptr, wchar_t **__restrict endptr, int base) throw () -2441: -2441: { -2441: return __wcstoull_internal (nptr, endptr, base, 0); -2441: } -2441: -2441: -2441: -2441: -2441: } -2441: # 407 "../../ppl-config.h" 2 -2441: # 37 "../../src/ppl_header.hh" 2 -2441: # 1 "../../src/version.hh" 1 -2441: # 61 "../../src/version.hh" -2441: -2441: # 61 "../../src/version.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: -2441: -2441: unsigned -2441: version_major(); -2441: -2441: -2441: unsigned -2441: version_minor(); -2441: -2441: -2441: unsigned -2441: version_revision(); -2441: -2441: -2441: unsigned -2441: version_beta(); -2441: -2441: -2441: const char* version(); -2441: # 92 "../../src/version.hh" -2441: const char* banner(); -2441: -2441: -2441: -2441: } -2441: # 38 "../../src/ppl_header.hh" 2 -2441: # 1 "../../src/ppl_include_files.hh" 1 -2441: # 1 "../../src/namespaces.hh" 1 -2441: # 28 "../../src/namespaces.hh" -2441: namespace Parma_Polyhedra_Library { -2441: # 58 "../../src/namespaces.hh" -2441: namespace IO_Operators { -2441: } -2441: -2441: -2441: -2441: -2441: -2441: namespace Checked { -2441: } -2441: -2441: -2441: -2441: -2441: -2441: namespace Implementation { -2441: } -2441: -2441: -2441: -2441: -2441: namespace Interfaces { -2441: -2441: -2441: -2441: -2441: -2441: namespace C { -2441: -2441: } -2441: -2441: -2441: -2441: -2441: -2441: namespace Java { -2441: -2441: } -2441: -2441: -2441: -2441: -2441: -2441: namespace OCaml { -2441: -2441: } -2441: -2441: -2441: -2441: -2441: -2441: namespace Prolog { -2441: -2441: -2441: -2441: -2441: -2441: namespace Ciao { -2441: -2441: } -2441: -2441: -2441: -2441: -2441: -2441: namespace GNU { -2441: -2441: } -2441: -2441: -2441: -2441: -2441: -2441: namespace SICStus { -2441: -2441: } -2441: -2441: -2441: -2441: -2441: -2441: namespace SWI { -2441: -2441: } -2441: -2441: -2441: -2441: -2441: -2441: namespace XSB { -2441: -2441: } -2441: -2441: -2441: -2441: -2441: -2441: namespace YAP { -2441: -2441: } -2441: -2441: } -2441: -2441: } -2441: -2441: } -2441: # 180 "../../src/namespaces.hh" -2441: namespace std { -2441: } -2441: # 2 "../../src/ppl_include_files.hh" 2 -2441: # 1 "../../src/Interval_Info_types.hh" 1 -2441: # 16 "../../src/Interval_Info_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: class Interval_Info_Null; -2441: -2441: template -2441: class Interval_Info_Bitset; -2441: -2441: } -2441: # 3 "../../src/ppl_include_files.hh" 2 -2441: # 1 "../../src/checked_numeric_limits.hh" 1 -2441: # 27 "../../src/checked_numeric_limits.hh" -2441: # 1 "../../src/Checked_Number_defs.hh" 1 -2441: # 27 "../../src/Checked_Number_defs.hh" -2441: # 1 "../../src/Checked_Number_types.hh" 1 -2441: # 16 "../../src/Checked_Number_types.hh" -2441: # 1 "../../src/Coefficient_traits_template.hh" 1 -2441: # 27 "../../src/Coefficient_traits_template.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct Coefficient_traits_template { -2441: }; -2441: -2441: } -2441: # 17 "../../src/Checked_Number_types.hh" 2 -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: struct Extended_Number_Policy; -2441: -2441: template -2441: class Checked_Number; -2441: -2441: } -2441: # 28 "../../src/Checked_Number_defs.hh" 2 -2441: # 1 "../../src/checked_defs.hh" 1 -2441: # 27 "../../src/checked_defs.hh" -2441: # 1 "../../src/mp_std_bits_defs.hh" 1 -2441: # 28 "../../src/mp_std_bits_defs.hh" -2441: # 1 "/usr/include/gmpxx.h" 1 3 4 -2441: # 34 "/usr/include/gmpxx.h" 3 4 -2441: # 1 "/usr/include/c++/8/iosfwd" 1 3 4 -2441: # 36 "/usr/include/c++/8/iosfwd" 3 4 -2441: -2441: # 37 "/usr/include/c++/8/iosfwd" 3 -2441: -2441: # 1 "/usr/include/i386-linux-gnu/c++/8/bits/c++config.h" 1 3 -2441: # 236 "/usr/include/i386-linux-gnu/c++/8/bits/c++config.h" 3 -2441: -2441: # 236 "/usr/include/i386-linux-gnu/c++/8/bits/c++config.h" 3 -2441: namespace std -2441: { -2441: typedef unsigned int size_t; -2441: typedef int ptrdiff_t; -2441: -2441: -2441: typedef decltype(nullptr) nullptr_t; -2441: -2441: } -2441: # 258 "/usr/include/i386-linux-gnu/c++/8/bits/c++config.h" 3 -2441: namespace std -2441: { -2441: inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -2441: } -2441: namespace __gnu_cxx -2441: { -2441: inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -2441: } -2441: # 508 "/usr/include/i386-linux-gnu/c++/8/bits/c++config.h" 3 -2441: # 1 "/usr/include/i386-linux-gnu/c++/8/bits/os_defines.h" 1 3 -2441: # 509 "/usr/include/i386-linux-gnu/c++/8/bits/c++config.h" 2 3 -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/c++/8/bits/cpu_defines.h" 1 3 -2441: # 512 "/usr/include/i386-linux-gnu/c++/8/bits/c++config.h" 2 3 -2441: # 39 "/usr/include/c++/8/iosfwd" 2 3 -2441: # 1 "/usr/include/c++/8/bits/stringfwd.h" 1 3 -2441: # 37 "/usr/include/c++/8/bits/stringfwd.h" 3 -2441: -2441: # 38 "/usr/include/c++/8/bits/stringfwd.h" 3 -2441: -2441: -2441: # 1 "/usr/include/c++/8/bits/memoryfwd.h" 1 3 -2441: # 46 "/usr/include/c++/8/bits/memoryfwd.h" 3 -2441: -2441: # 47 "/usr/include/c++/8/bits/memoryfwd.h" 3 -2441: -2441: -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: # 63 "/usr/include/c++/8/bits/memoryfwd.h" 3 -2441: template -2441: class allocator; -2441: -2441: template<> -2441: class allocator; -2441: -2441: -2441: template -2441: struct uses_allocator; -2441: -2441: -2441: -2441: -2441: } -2441: # 41 "/usr/include/c++/8/bits/stringfwd.h" 2 3 -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct char_traits; -2441: -2441: template<> struct char_traits; -2441: -2441: -2441: template<> struct char_traits; -2441: -2441: -2441: -2441: -2441: template<> struct char_traits; -2441: template<> struct char_traits; -2441: -2441: -2441: namespace __cxx11 { -2441: -2441: template, -2441: typename _Alloc = allocator<_CharT> > -2441: class basic_string; -2441: -2441: -2441: typedef basic_string string; -2441: -2441: -2441: -2441: typedef basic_string wstring; -2441: -2441: -2441: -2441: -2441: -2441: typedef basic_string u16string; -2441: -2441: -2441: typedef basic_string u32string; -2441: -2441: -2441: } -2441: -2441: -2441: -2441: -2441: } -2441: # 40 "/usr/include/c++/8/iosfwd" 2 3 -2441: # 1 "/usr/include/c++/8/bits/postypes.h" 1 3 -2441: # 38 "/usr/include/c++/8/bits/postypes.h" 3 -2441: -2441: # 39 "/usr/include/c++/8/bits/postypes.h" 3 -2441: -2441: # 1 "/usr/include/c++/8/cwchar" 1 3 -2441: # 39 "/usr/include/c++/8/cwchar" 3 -2441: -2441: # 40 "/usr/include/c++/8/cwchar" 3 -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/wchar.h" 1 3 4 -2441: # 27 "/usr/include/wchar.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/libc-header-start.h" 1 3 4 -2441: # 28 "/usr/include/wchar.h" 2 3 4 -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/floatn.h" 1 3 4 -2441: # 75 "/usr/include/i386-linux-gnu/bits/floatn.h" 3 4 -2441: typedef _Complex float __cfloat128 __attribute__ ((__mode__ (__TC__))); -2441: # 87 "/usr/include/i386-linux-gnu/bits/floatn.h" 3 4 -2441: typedef __float128 _Float128; -2441: # 120 "/usr/include/i386-linux-gnu/bits/floatn.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/floatn-common.h" 1 3 4 -2441: # 24 "/usr/include/i386-linux-gnu/bits/floatn-common.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/long-double.h" 1 3 4 -2441: # 25 "/usr/include/i386-linux-gnu/bits/floatn-common.h" 2 3 4 -2441: # 214 "/usr/include/i386-linux-gnu/bits/floatn-common.h" 3 4 -2441: typedef float _Float32; -2441: # 251 "/usr/include/i386-linux-gnu/bits/floatn-common.h" 3 4 -2441: typedef double _Float64; -2441: # 268 "/usr/include/i386-linux-gnu/bits/floatn-common.h" 3 4 -2441: typedef double _Float32x; -2441: # 285 "/usr/include/i386-linux-gnu/bits/floatn-common.h" 3 4 -2441: typedef long double _Float64x; -2441: # 121 "/usr/include/i386-linux-gnu/bits/floatn.h" 2 3 4 -2441: # 31 "/usr/include/wchar.h" 2 3 4 -2441: -2441: -2441: -2441: -2441: # 1 "/usr/lib/gcc/i686-linux-gnu/8/include/stddef.h" 1 3 4 -2441: # 216 "/usr/lib/gcc/i686-linux-gnu/8/include/stddef.h" 3 4 -2441: typedef unsigned int size_t; -2441: # 36 "/usr/include/wchar.h" 2 3 4 -2441: -2441: -2441: # 1 "/usr/lib/gcc/i686-linux-gnu/8/include/stdarg.h" 1 3 4 -2441: # 40 "/usr/lib/gcc/i686-linux-gnu/8/include/stdarg.h" 3 4 -2441: typedef __builtin_va_list __gnuc_va_list; -2441: # 39 "/usr/include/wchar.h" 2 3 4 -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/types/wint_t.h" 1 3 4 -2441: # 20 "/usr/include/i386-linux-gnu/bits/types/wint_t.h" 3 4 -2441: typedef unsigned int wint_t; -2441: # 42 "/usr/include/wchar.h" 2 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/types/mbstate_t.h" 1 3 4 -2441: -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/types/__mbstate_t.h" 1 3 4 -2441: # 13 "/usr/include/i386-linux-gnu/bits/types/__mbstate_t.h" 3 4 -2441: typedef struct -2441: { -2441: int __count; -2441: union -2441: { -2441: unsigned int __wch; -2441: char __wchb[4]; -2441: } __value; -2441: } __mbstate_t; -2441: # 5 "/usr/include/i386-linux-gnu/bits/types/mbstate_t.h" 2 3 4 -2441: -2441: typedef __mbstate_t mbstate_t; -2441: # 43 "/usr/include/wchar.h" 2 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/types/__FILE.h" 1 3 4 -2441: -2441: -2441: -2441: struct _IO_FILE; -2441: typedef struct _IO_FILE __FILE; -2441: # 44 "/usr/include/wchar.h" 2 3 4 -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/types/FILE.h" 1 3 4 -2441: -2441: -2441: -2441: struct _IO_FILE; -2441: -2441: -2441: typedef struct _IO_FILE FILE; -2441: # 47 "/usr/include/wchar.h" 2 3 4 -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/types/locale_t.h" 1 3 4 -2441: # 22 "/usr/include/i386-linux-gnu/bits/types/locale_t.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/types/__locale_t.h" 1 3 4 -2441: # 28 "/usr/include/i386-linux-gnu/bits/types/__locale_t.h" 3 4 -2441: struct __locale_struct -2441: { -2441: -2441: struct __locale_data *__locales[13]; -2441: -2441: -2441: const unsigned short int *__ctype_b; -2441: const int *__ctype_tolower; -2441: const int *__ctype_toupper; -2441: -2441: -2441: const char *__names[13]; -2441: }; -2441: -2441: typedef struct __locale_struct *__locale_t; -2441: # 23 "/usr/include/i386-linux-gnu/bits/types/locale_t.h" 2 3 4 -2441: -2441: typedef __locale_t locale_t; -2441: # 50 "/usr/include/wchar.h" 2 3 4 -2441: # 79 "/usr/include/wchar.h" 3 4 -2441: extern "C" { -2441: -2441: -2441: -2441: struct tm; -2441: -2441: -2441: -2441: extern wchar_t *wcscpy (wchar_t *__restrict __dest, -2441: const wchar_t *__restrict __src) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: extern wchar_t *wcsncpy (wchar_t *__restrict __dest, -2441: const wchar_t *__restrict __src, size_t __n) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: extern wchar_t *wcscat (wchar_t *__restrict __dest, -2441: const wchar_t *__restrict __src) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: extern wchar_t *wcsncat (wchar_t *__restrict __dest, -2441: const wchar_t *__restrict __src, size_t __n) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: extern int wcscmp (const wchar_t *__s1, const wchar_t *__s2) -2441: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: extern int wcsncmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n) -2441: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: -2441: extern int wcscasecmp (const wchar_t *__s1, const wchar_t *__s2) throw (); -2441: -2441: -2441: extern int wcsncasecmp (const wchar_t *__s1, const wchar_t *__s2, -2441: size_t __n) throw (); -2441: -2441: -2441: -2441: extern int wcscasecmp_l (const wchar_t *__s1, const wchar_t *__s2, -2441: locale_t __loc) throw (); -2441: -2441: extern int wcsncasecmp_l (const wchar_t *__s1, const wchar_t *__s2, -2441: size_t __n, locale_t __loc) throw (); -2441: -2441: -2441: -2441: -2441: extern int wcscoll (const wchar_t *__s1, const wchar_t *__s2) throw (); -2441: -2441: -2441: -2441: extern size_t wcsxfrm (wchar_t *__restrict __s1, -2441: const wchar_t *__restrict __s2, size_t __n) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int wcscoll_l (const wchar_t *__s1, const wchar_t *__s2, -2441: locale_t __loc) throw (); -2441: -2441: -2441: -2441: -2441: extern size_t wcsxfrm_l (wchar_t *__s1, const wchar_t *__s2, -2441: size_t __n, locale_t __loc) throw (); -2441: -2441: -2441: extern wchar_t *wcsdup (const wchar_t *__s) throw () __attribute__ ((__malloc__)); -2441: -2441: -2441: -2441: -2441: extern "C++" wchar_t *wcschr (wchar_t *__wcs, wchar_t __wc) -2441: throw () __asm ("wcschr") __attribute__ ((__pure__)); -2441: extern "C++" const wchar_t *wcschr (const wchar_t *__wcs, wchar_t __wc) -2441: throw () __asm ("wcschr") __attribute__ ((__pure__)); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern "C++" wchar_t *wcsrchr (wchar_t *__wcs, wchar_t __wc) -2441: throw () __asm ("wcsrchr") __attribute__ ((__pure__)); -2441: extern "C++" const wchar_t *wcsrchr (const wchar_t *__wcs, wchar_t __wc) -2441: throw () __asm ("wcsrchr") __attribute__ ((__pure__)); -2441: # 181 "/usr/include/wchar.h" 3 4 -2441: extern wchar_t *wcschrnul (const wchar_t *__s, wchar_t __wc) -2441: throw () __attribute__ ((__pure__)); -2441: -2441: -2441: -2441: -2441: extern size_t wcscspn (const wchar_t *__wcs, const wchar_t *__reject) -2441: throw () __attribute__ ((__pure__)); -2441: -2441: -2441: extern size_t wcsspn (const wchar_t *__wcs, const wchar_t *__accept) -2441: throw () __attribute__ ((__pure__)); -2441: -2441: -2441: extern "C++" wchar_t *wcspbrk (wchar_t *__wcs, const wchar_t *__accept) -2441: throw () __asm ("wcspbrk") __attribute__ ((__pure__)); -2441: extern "C++" const wchar_t *wcspbrk (const wchar_t *__wcs, -2441: const wchar_t *__accept) -2441: throw () __asm ("wcspbrk") __attribute__ ((__pure__)); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern "C++" wchar_t *wcsstr (wchar_t *__haystack, const wchar_t *__needle) -2441: throw () __asm ("wcsstr") __attribute__ ((__pure__)); -2441: extern "C++" const wchar_t *wcsstr (const wchar_t *__haystack, -2441: const wchar_t *__needle) -2441: throw () __asm ("wcsstr") __attribute__ ((__pure__)); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern wchar_t *wcstok (wchar_t *__restrict __s, -2441: const wchar_t *__restrict __delim, -2441: wchar_t **__restrict __ptr) throw (); -2441: -2441: -2441: extern size_t wcslen (const wchar_t *__s) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: -2441: -2441: extern "C++" wchar_t *wcswcs (wchar_t *__haystack, const wchar_t *__needle) -2441: throw () __asm ("wcswcs") __attribute__ ((__pure__)); -2441: extern "C++" const wchar_t *wcswcs (const wchar_t *__haystack, -2441: const wchar_t *__needle) -2441: throw () __asm ("wcswcs") __attribute__ ((__pure__)); -2441: # 240 "/usr/include/wchar.h" 3 4 -2441: extern size_t wcsnlen (const wchar_t *__s, size_t __maxlen) -2441: throw () __attribute__ ((__pure__)); -2441: -2441: -2441: -2441: -2441: -2441: extern "C++" wchar_t *wmemchr (wchar_t *__s, wchar_t __c, size_t __n) -2441: throw () __asm ("wmemchr") __attribute__ ((__pure__)); -2441: extern "C++" const wchar_t *wmemchr (const wchar_t *__s, wchar_t __c, -2441: size_t __n) -2441: throw () __asm ("wmemchr") __attribute__ ((__pure__)); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int wmemcmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n) -2441: throw () __attribute__ ((__pure__)); -2441: -2441: -2441: extern wchar_t *wmemcpy (wchar_t *__restrict __s1, -2441: const wchar_t *__restrict __s2, size_t __n) throw (); -2441: -2441: -2441: -2441: extern wchar_t *wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n) -2441: throw (); -2441: -2441: -2441: extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) throw (); -2441: -2441: -2441: -2441: -2441: extern wchar_t *wmempcpy (wchar_t *__restrict __s1, -2441: const wchar_t *__restrict __s2, size_t __n) -2441: throw (); -2441: -2441: -2441: -2441: -2441: -2441: extern wint_t btowc (int __c) throw (); -2441: -2441: -2441: -2441: extern int wctob (wint_t __c) throw (); -2441: -2441: -2441: -2441: extern int mbsinit (const mbstate_t *__ps) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: -2441: extern size_t mbrtowc (wchar_t *__restrict __pwc, -2441: const char *__restrict __s, size_t __n, -2441: mbstate_t *__restrict __p) throw (); -2441: -2441: -2441: extern size_t wcrtomb (char *__restrict __s, wchar_t __wc, -2441: mbstate_t *__restrict __ps) throw (); -2441: -2441: -2441: extern size_t __mbrlen (const char *__restrict __s, size_t __n, -2441: mbstate_t *__restrict __ps) throw (); -2441: extern size_t mbrlen (const char *__restrict __s, size_t __n, -2441: mbstate_t *__restrict __ps) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern wint_t __btowc_alias (int __c) __asm ("btowc"); -2441: extern __inline __attribute__ ((__gnu_inline__)) wint_t -2441: __attribute__ ((__leaf__)) btowc (int __c) throw () -2441: { return (__builtin_constant_p (__c) && __c >= '\0' && __c <= '\x7f' -2441: ? (wint_t) __c : __btowc_alias (__c)); } -2441: -2441: extern int __wctob_alias (wint_t __c) __asm ("wctob"); -2441: extern __inline __attribute__ ((__gnu_inline__)) int -2441: __attribute__ ((__leaf__)) wctob (wint_t __wc) throw () -2441: { return (__builtin_constant_p (__wc) && __wc >= L'\0' && __wc <= L'\x7f' -2441: ? (int) __wc : __wctob_alias (__wc)); } -2441: -2441: extern __inline __attribute__ ((__gnu_inline__)) size_t -2441: __attribute__ ((__leaf__)) mbrlen (const char *__restrict __s, size_t __n, mbstate_t *__restrict __ps) throw () -2441: -2441: { return (__ps != __null -2441: ? mbrtowc (__null, __s, __n, __ps) : __mbrlen (__s, __n, __null)); } -2441: -2441: -2441: -2441: -2441: extern size_t mbsrtowcs (wchar_t *__restrict __dst, -2441: const char **__restrict __src, size_t __len, -2441: mbstate_t *__restrict __ps) throw (); -2441: -2441: -2441: -2441: extern size_t wcsrtombs (char *__restrict __dst, -2441: const wchar_t **__restrict __src, size_t __len, -2441: mbstate_t *__restrict __ps) throw (); -2441: -2441: -2441: -2441: -2441: -2441: extern size_t mbsnrtowcs (wchar_t *__restrict __dst, -2441: const char **__restrict __src, size_t __nmc, -2441: size_t __len, mbstate_t *__restrict __ps) throw (); -2441: -2441: -2441: -2441: extern size_t wcsnrtombs (char *__restrict __dst, -2441: const wchar_t **__restrict __src, -2441: size_t __nwc, size_t __len, -2441: mbstate_t *__restrict __ps) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int wcwidth (wchar_t __c) throw (); -2441: -2441: -2441: -2441: extern int wcswidth (const wchar_t *__s, size_t __n) throw (); -2441: -2441: -2441: -2441: -2441: -2441: extern double wcstod (const wchar_t *__restrict __nptr, -2441: wchar_t **__restrict __endptr) throw (); -2441: -2441: -2441: -2441: extern float wcstof (const wchar_t *__restrict __nptr, -2441: wchar_t **__restrict __endptr) throw (); -2441: extern long double wcstold (const wchar_t *__restrict __nptr, -2441: wchar_t **__restrict __endptr) throw (); -2441: # 396 "/usr/include/wchar.h" 3 4 -2441: extern _Float32 wcstof32 (const wchar_t *__restrict __nptr, -2441: wchar_t **__restrict __endptr) throw (); -2441: -2441: -2441: -2441: extern _Float64 wcstof64 (const wchar_t *__restrict __nptr, -2441: wchar_t **__restrict __endptr) throw (); -2441: -2441: -2441: -2441: extern _Float128 wcstof128 (const wchar_t *__restrict __nptr, -2441: wchar_t **__restrict __endptr) throw (); -2441: -2441: -2441: -2441: extern _Float32x wcstof32x (const wchar_t *__restrict __nptr, -2441: wchar_t **__restrict __endptr) throw (); -2441: -2441: -2441: -2441: extern _Float64x wcstof64x (const wchar_t *__restrict __nptr, -2441: wchar_t **__restrict __endptr) throw (); -2441: # 428 "/usr/include/wchar.h" 3 4 -2441: extern long int wcstol (const wchar_t *__restrict __nptr, -2441: wchar_t **__restrict __endptr, int __base) throw (); -2441: -2441: -2441: -2441: extern unsigned long int wcstoul (const wchar_t *__restrict __nptr, -2441: wchar_t **__restrict __endptr, int __base) -2441: throw (); -2441: -2441: -2441: -2441: -2441: __extension__ -2441: extern long long int wcstoll (const wchar_t *__restrict __nptr, -2441: wchar_t **__restrict __endptr, int __base) -2441: throw (); -2441: -2441: -2441: -2441: __extension__ -2441: extern unsigned long long int wcstoull (const wchar_t *__restrict __nptr, -2441: wchar_t **__restrict __endptr, -2441: int __base) throw (); -2441: -2441: -2441: -2441: -2441: -2441: __extension__ -2441: extern long long int wcstoq (const wchar_t *__restrict __nptr, -2441: wchar_t **__restrict __endptr, int __base) -2441: throw (); -2441: -2441: -2441: -2441: __extension__ -2441: extern unsigned long long int wcstouq (const wchar_t *__restrict __nptr, -2441: wchar_t **__restrict __endptr, -2441: int __base) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern long int wcstol_l (const wchar_t *__restrict __nptr, -2441: wchar_t **__restrict __endptr, int __base, -2441: locale_t __loc) throw (); -2441: -2441: extern unsigned long int wcstoul_l (const wchar_t *__restrict __nptr, -2441: wchar_t **__restrict __endptr, -2441: int __base, locale_t __loc) throw (); -2441: -2441: __extension__ -2441: extern long long int wcstoll_l (const wchar_t *__restrict __nptr, -2441: wchar_t **__restrict __endptr, -2441: int __base, locale_t __loc) throw (); -2441: -2441: __extension__ -2441: extern unsigned long long int wcstoull_l (const wchar_t *__restrict __nptr, -2441: wchar_t **__restrict __endptr, -2441: int __base, locale_t __loc) -2441: throw (); -2441: -2441: extern double wcstod_l (const wchar_t *__restrict __nptr, -2441: wchar_t **__restrict __endptr, locale_t __loc) -2441: throw (); -2441: -2441: extern float wcstof_l (const wchar_t *__restrict __nptr, -2441: wchar_t **__restrict __endptr, locale_t __loc) -2441: throw (); -2441: -2441: extern long double wcstold_l (const wchar_t *__restrict __nptr, -2441: wchar_t **__restrict __endptr, -2441: locale_t __loc) throw (); -2441: # 511 "/usr/include/wchar.h" 3 4 -2441: extern _Float32 wcstof32_l (const wchar_t *__restrict __nptr, -2441: wchar_t **__restrict __endptr, -2441: locale_t __loc) throw (); -2441: -2441: -2441: -2441: extern _Float64 wcstof64_l (const wchar_t *__restrict __nptr, -2441: wchar_t **__restrict __endptr, -2441: locale_t __loc) throw (); -2441: -2441: -2441: -2441: extern _Float128 wcstof128_l (const wchar_t *__restrict __nptr, -2441: wchar_t **__restrict __endptr, -2441: locale_t __loc) throw (); -2441: -2441: -2441: -2441: extern _Float32x wcstof32x_l (const wchar_t *__restrict __nptr, -2441: wchar_t **__restrict __endptr, -2441: locale_t __loc) throw (); -2441: -2441: -2441: -2441: extern _Float64x wcstof64x_l (const wchar_t *__restrict __nptr, -2441: wchar_t **__restrict __endptr, -2441: locale_t __loc) throw (); -2441: # 551 "/usr/include/wchar.h" 3 4 -2441: extern wchar_t *wcpcpy (wchar_t *__restrict __dest, -2441: const wchar_t *__restrict __src) throw (); -2441: -2441: -2441: -2441: extern wchar_t *wcpncpy (wchar_t *__restrict __dest, -2441: const wchar_t *__restrict __src, size_t __n) -2441: throw (); -2441: # 567 "/usr/include/wchar.h" 3 4 -2441: extern __FILE *open_wmemstream (wchar_t **__bufloc, size_t *__sizeloc) throw (); -2441: -2441: -2441: -2441: -2441: -2441: extern int fwide (__FILE *__fp, int __mode) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int fwprintf (__FILE *__restrict __stream, -2441: const wchar_t *__restrict __format, ...) -2441: ; -2441: -2441: -2441: -2441: -2441: extern int wprintf (const wchar_t *__restrict __format, ...) -2441: ; -2441: -2441: extern int swprintf (wchar_t *__restrict __s, size_t __n, -2441: const wchar_t *__restrict __format, ...) -2441: throw () ; -2441: -2441: -2441: -2441: -2441: -2441: extern int vfwprintf (__FILE *__restrict __s, -2441: const wchar_t *__restrict __format, -2441: __gnuc_va_list __arg) -2441: ; -2441: -2441: -2441: -2441: -2441: extern int vwprintf (const wchar_t *__restrict __format, -2441: __gnuc_va_list __arg) -2441: ; -2441: -2441: -2441: extern int vswprintf (wchar_t *__restrict __s, size_t __n, -2441: const wchar_t *__restrict __format, -2441: __gnuc_va_list __arg) -2441: throw () ; -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int fwscanf (__FILE *__restrict __stream, -2441: const wchar_t *__restrict __format, ...) -2441: ; -2441: -2441: -2441: -2441: -2441: extern int wscanf (const wchar_t *__restrict __format, ...) -2441: ; -2441: -2441: extern int swscanf (const wchar_t *__restrict __s, -2441: const wchar_t *__restrict __format, ...) -2441: throw () ; -2441: # 673 "/usr/include/wchar.h" 3 4 -2441: extern int vfwscanf (__FILE *__restrict __s, -2441: const wchar_t *__restrict __format, -2441: __gnuc_va_list __arg) -2441: ; -2441: -2441: -2441: -2441: -2441: extern int vwscanf (const wchar_t *__restrict __format, -2441: __gnuc_va_list __arg) -2441: ; -2441: -2441: extern int vswscanf (const wchar_t *__restrict __s, -2441: const wchar_t *__restrict __format, -2441: __gnuc_va_list __arg) -2441: throw () ; -2441: # 727 "/usr/include/wchar.h" 3 4 -2441: extern wint_t fgetwc (__FILE *__stream); -2441: extern wint_t getwc (__FILE *__stream); -2441: -2441: -2441: -2441: -2441: -2441: extern wint_t getwchar (void); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern wint_t fputwc (wchar_t __wc, __FILE *__stream); -2441: extern wint_t putwc (wchar_t __wc, __FILE *__stream); -2441: -2441: -2441: -2441: -2441: -2441: extern wint_t putwchar (wchar_t __wc); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n, -2441: __FILE *__restrict __stream); -2441: -2441: -2441: -2441: -2441: -2441: extern int fputws (const wchar_t *__restrict __ws, -2441: __FILE *__restrict __stream); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern wint_t ungetwc (wint_t __wc, __FILE *__stream); -2441: # 782 "/usr/include/wchar.h" 3 4 -2441: extern wint_t getwc_unlocked (__FILE *__stream); -2441: extern wint_t getwchar_unlocked (void); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern wint_t fgetwc_unlocked (__FILE *__stream); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream); -2441: # 808 "/usr/include/wchar.h" 3 4 -2441: extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream); -2441: extern wint_t putwchar_unlocked (wchar_t __wc); -2441: # 818 "/usr/include/wchar.h" 3 4 -2441: extern wchar_t *fgetws_unlocked (wchar_t *__restrict __ws, int __n, -2441: __FILE *__restrict __stream); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int fputws_unlocked (const wchar_t *__restrict __ws, -2441: __FILE *__restrict __stream); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize, -2441: const wchar_t *__restrict __format, -2441: const struct tm *__restrict __tp) throw (); -2441: -2441: -2441: -2441: -2441: extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize, -2441: const wchar_t *__restrict __format, -2441: const struct tm *__restrict __tp, -2441: locale_t __loc) throw (); -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/wchar2.h" 1 3 4 -2441: # 24 "/usr/include/i386-linux-gnu/bits/wchar2.h" 3 4 -2441: extern wchar_t *__wmemcpy_chk (wchar_t *__restrict __s1, -2441: const wchar_t *__restrict __s2, size_t __n, -2441: size_t __ns1) throw (); -2441: extern wchar_t *__wmemcpy_alias (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) throw () __asm__ ("" "wmemcpy") -2441: -2441: -2441: ; -2441: extern wchar_t *__wmemcpy_chk_warn (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n, size_t __ns1) throw () __asm__ ("" "__wmemcpy_chk") -2441: -2441: -2441: -2441: __attribute__((__warning__ ("wmemcpy called with length bigger than size of destination " "buffer"))) -2441: ; -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * -2441: __attribute__ ((__leaf__)) wmemcpy (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) throw () -2441: -2441: { -2441: if (__builtin_object_size (__s1, 0) != (size_t) -1) -2441: { -2441: if (!__builtin_constant_p (__n)) -2441: return __wmemcpy_chk (__s1, __s2, __n, -2441: __builtin_object_size (__s1, 0) / sizeof (wchar_t)); -2441: -2441: if (__n > __builtin_object_size (__s1, 0) / sizeof (wchar_t)) -2441: return __wmemcpy_chk_warn (__s1, __s2, __n, -2441: __builtin_object_size (__s1, 0) / sizeof (wchar_t)); -2441: } -2441: return __wmemcpy_alias (__s1, __s2, __n); -2441: } -2441: -2441: -2441: extern wchar_t *__wmemmove_chk (wchar_t *__s1, const wchar_t *__s2, -2441: size_t __n, size_t __ns1) throw (); -2441: extern wchar_t *__wmemmove_alias (wchar_t *__s1, const wchar_t *__s2, size_t __n) throw () __asm__ ("" "wmemmove") -2441: -2441: ; -2441: extern wchar_t *__wmemmove_chk_warn (wchar_t *__s1, const wchar_t *__s2, size_t __n, size_t __ns1) throw () __asm__ ("" "__wmemmove_chk") -2441: -2441: -2441: __attribute__((__warning__ ("wmemmove called with length bigger than size of destination " "buffer"))) -2441: ; -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * -2441: __attribute__ ((__leaf__)) wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n) throw () -2441: { -2441: if (__builtin_object_size (__s1, 0) != (size_t) -1) -2441: { -2441: if (!__builtin_constant_p (__n)) -2441: return __wmemmove_chk (__s1, __s2, __n, -2441: __builtin_object_size (__s1, 0) / sizeof (wchar_t)); -2441: -2441: if (__n > __builtin_object_size (__s1, 0) / sizeof (wchar_t)) -2441: return __wmemmove_chk_warn (__s1, __s2, __n, -2441: __builtin_object_size (__s1, 0) / sizeof (wchar_t)); -2441: } -2441: return __wmemmove_alias (__s1, __s2, __n); -2441: } -2441: -2441: -2441: -2441: extern wchar_t *__wmempcpy_chk (wchar_t *__restrict __s1, -2441: const wchar_t *__restrict __s2, size_t __n, -2441: size_t __ns1) throw (); -2441: extern wchar_t *__wmempcpy_alias (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) throw () __asm__ ("" "wmempcpy") -2441: -2441: -2441: ; -2441: extern wchar_t *__wmempcpy_chk_warn (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n, size_t __ns1) throw () __asm__ ("" "__wmempcpy_chk") -2441: -2441: -2441: -2441: __attribute__((__warning__ ("wmempcpy called with length bigger than size of destination " "buffer"))) -2441: ; -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * -2441: __attribute__ ((__leaf__)) wmempcpy (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) throw () -2441: -2441: { -2441: if (__builtin_object_size (__s1, 0) != (size_t) -1) -2441: { -2441: if (!__builtin_constant_p (__n)) -2441: return __wmempcpy_chk (__s1, __s2, __n, -2441: __builtin_object_size (__s1, 0) / sizeof (wchar_t)); -2441: -2441: if (__n > __builtin_object_size (__s1, 0) / sizeof (wchar_t)) -2441: return __wmempcpy_chk_warn (__s1, __s2, __n, -2441: __builtin_object_size (__s1, 0) / sizeof (wchar_t)); -2441: } -2441: return __wmempcpy_alias (__s1, __s2, __n); -2441: } -2441: -2441: -2441: -2441: extern wchar_t *__wmemset_chk (wchar_t *__s, wchar_t __c, size_t __n, -2441: size_t __ns) throw (); -2441: extern wchar_t *__wmemset_alias (wchar_t *__s, wchar_t __c, size_t __n) throw () __asm__ ("" "wmemset") -2441: ; -2441: extern wchar_t *__wmemset_chk_warn (wchar_t *__s, wchar_t __c, size_t __n, size_t __ns) throw () __asm__ ("" "__wmemset_chk") -2441: -2441: -2441: __attribute__((__warning__ ("wmemset called with length bigger than size of destination " "buffer"))) -2441: ; -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * -2441: __attribute__ ((__leaf__)) wmemset (wchar_t *__s, wchar_t __c, size_t __n) throw () -2441: { -2441: if (__builtin_object_size (__s, 0) != (size_t) -1) -2441: { -2441: if (!__builtin_constant_p (__n)) -2441: return __wmemset_chk (__s, __c, __n, __builtin_object_size (__s, 0) / sizeof (wchar_t)); -2441: -2441: if (__n > __builtin_object_size (__s, 0) / sizeof (wchar_t)) -2441: return __wmemset_chk_warn (__s, __c, __n, -2441: __builtin_object_size (__s, 0) / sizeof (wchar_t)); -2441: } -2441: return __wmemset_alias (__s, __c, __n); -2441: } -2441: -2441: -2441: extern wchar_t *__wcscpy_chk (wchar_t *__restrict __dest, -2441: const wchar_t *__restrict __src, -2441: size_t __n) throw (); -2441: extern wchar_t *__wcscpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw () __asm__ ("" "wcscpy") -2441: -2441: ; -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * -2441: __attribute__ ((__leaf__)) wcscpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw () -2441: { -2441: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1) -2441: return __wcscpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); -2441: return __wcscpy_alias (__dest, __src); -2441: } -2441: -2441: -2441: extern wchar_t *__wcpcpy_chk (wchar_t *__restrict __dest, -2441: const wchar_t *__restrict __src, -2441: size_t __destlen) throw (); -2441: extern wchar_t *__wcpcpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw () __asm__ ("" "wcpcpy") -2441: -2441: ; -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * -2441: __attribute__ ((__leaf__)) wcpcpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw () -2441: { -2441: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1) -2441: return __wcpcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); -2441: return __wcpcpy_alias (__dest, __src); -2441: } -2441: -2441: -2441: extern wchar_t *__wcsncpy_chk (wchar_t *__restrict __dest, -2441: const wchar_t *__restrict __src, size_t __n, -2441: size_t __destlen) throw (); -2441: extern wchar_t *__wcsncpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw () __asm__ ("" "wcsncpy") -2441: -2441: -2441: ; -2441: extern wchar_t *__wcsncpy_chk_warn (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n, size_t __destlen) throw () __asm__ ("" "__wcsncpy_chk") -2441: -2441: -2441: -2441: __attribute__((__warning__ ("wcsncpy called with length bigger than size of destination " "buffer"))) -2441: ; -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * -2441: __attribute__ ((__leaf__)) wcsncpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw () -2441: -2441: { -2441: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1) -2441: { -2441: if (!__builtin_constant_p (__n)) -2441: return __wcsncpy_chk (__dest, __src, __n, -2441: __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); -2441: if (__n > __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)) -2441: return __wcsncpy_chk_warn (__dest, __src, __n, -2441: __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); -2441: } -2441: return __wcsncpy_alias (__dest, __src, __n); -2441: } -2441: -2441: -2441: extern wchar_t *__wcpncpy_chk (wchar_t *__restrict __dest, -2441: const wchar_t *__restrict __src, size_t __n, -2441: size_t __destlen) throw (); -2441: extern wchar_t *__wcpncpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw () __asm__ ("" "wcpncpy") -2441: -2441: -2441: ; -2441: extern wchar_t *__wcpncpy_chk_warn (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n, size_t __destlen) throw () __asm__ ("" "__wcpncpy_chk") -2441: -2441: -2441: -2441: __attribute__((__warning__ ("wcpncpy called with length bigger than size of destination " "buffer"))) -2441: ; -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * -2441: __attribute__ ((__leaf__)) wcpncpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw () -2441: -2441: { -2441: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1) -2441: { -2441: if (!__builtin_constant_p (__n)) -2441: return __wcpncpy_chk (__dest, __src, __n, -2441: __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); -2441: if (__n > __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)) -2441: return __wcpncpy_chk_warn (__dest, __src, __n, -2441: __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); -2441: } -2441: return __wcpncpy_alias (__dest, __src, __n); -2441: } -2441: -2441: -2441: extern wchar_t *__wcscat_chk (wchar_t *__restrict __dest, -2441: const wchar_t *__restrict __src, -2441: size_t __destlen) throw (); -2441: extern wchar_t *__wcscat_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw () __asm__ ("" "wcscat") -2441: -2441: ; -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * -2441: __attribute__ ((__leaf__)) wcscat (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw () -2441: { -2441: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1) -2441: return __wcscat_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); -2441: return __wcscat_alias (__dest, __src); -2441: } -2441: -2441: -2441: extern wchar_t *__wcsncat_chk (wchar_t *__restrict __dest, -2441: const wchar_t *__restrict __src, -2441: size_t __n, size_t __destlen) throw (); -2441: extern wchar_t *__wcsncat_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw () __asm__ ("" "wcsncat") -2441: -2441: -2441: ; -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * -2441: __attribute__ ((__leaf__)) wcsncat (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw () -2441: -2441: { -2441: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1) -2441: return __wcsncat_chk (__dest, __src, __n, -2441: __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); -2441: return __wcsncat_alias (__dest, __src, __n); -2441: } -2441: -2441: -2441: extern int __swprintf_chk (wchar_t *__restrict __s, size_t __n, -2441: int __flag, size_t __s_len, -2441: const wchar_t *__restrict __format, ...) -2441: throw () ; -2441: -2441: extern int __swprintf_alias (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, ...) throw () __asm__ ("" "swprintf") -2441: -2441: -2441: ; -2441: -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int -2441: __attribute__ ((__leaf__)) swprintf (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, ...) throw () -2441: -2441: { -2441: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 || 2 > 1) -2441: return __swprintf_chk (__s, __n, 2 - 1, -2441: __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t), -2441: __fmt, __builtin_va_arg_pack ()); -2441: return __swprintf_alias (__s, __n, __fmt, __builtin_va_arg_pack ()); -2441: } -2441: # 303 "/usr/include/i386-linux-gnu/bits/wchar2.h" 3 4 -2441: extern int __vswprintf_chk (wchar_t *__restrict __s, size_t __n, -2441: int __flag, size_t __s_len, -2441: const wchar_t *__restrict __format, -2441: __gnuc_va_list __arg) -2441: throw () ; -2441: -2441: extern int __vswprintf_alias (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, __gnuc_va_list __ap) throw () __asm__ ("" "vswprintf") -2441: -2441: -2441: ; -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int -2441: __attribute__ ((__leaf__)) vswprintf (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, __gnuc_va_list __ap) throw () -2441: -2441: { -2441: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 || 2 > 1) -2441: return __vswprintf_chk (__s, __n, 2 - 1, -2441: __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t), __fmt, __ap); -2441: return __vswprintf_alias (__s, __n, __fmt, __ap); -2441: } -2441: -2441: -2441: -2441: -2441: extern int __fwprintf_chk (__FILE *__restrict __stream, int __flag, -2441: const wchar_t *__restrict __format, ...); -2441: extern int __wprintf_chk (int __flag, const wchar_t *__restrict __format, -2441: ...); -2441: extern int __vfwprintf_chk (__FILE *__restrict __stream, int __flag, -2441: const wchar_t *__restrict __format, -2441: __gnuc_va_list __ap); -2441: extern int __vwprintf_chk (int __flag, const wchar_t *__restrict __format, -2441: __gnuc_va_list __ap); -2441: -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int -2441: wprintf (const wchar_t *__restrict __fmt, ...) -2441: { -2441: return __wprintf_chk (2 - 1, __fmt, __builtin_va_arg_pack ()); -2441: } -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int -2441: fwprintf (__FILE *__restrict __stream, const wchar_t *__restrict __fmt, ...) -2441: { -2441: return __fwprintf_chk (__stream, 2 - 1, __fmt, -2441: __builtin_va_arg_pack ()); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int -2441: vwprintf (const wchar_t *__restrict __fmt, __gnuc_va_list __ap) -2441: { -2441: return __vwprintf_chk (2 - 1, __fmt, __ap); -2441: } -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int -2441: vfwprintf (__FILE *__restrict __stream, -2441: const wchar_t *__restrict __fmt, __gnuc_va_list __ap) -2441: { -2441: return __vfwprintf_chk (__stream, 2 - 1, __fmt, __ap); -2441: } -2441: -2441: -2441: -2441: extern wchar_t *__fgetws_chk (wchar_t *__restrict __s, size_t __size, int __n, -2441: __FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); -2441: extern wchar_t *__fgetws_alias (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) __asm__ ("" "fgetws") -2441: -2441: __attribute__ ((__warn_unused_result__)); -2441: extern wchar_t *__fgetws_chk_warn (wchar_t *__restrict __s, size_t __size, int __n, __FILE *__restrict __stream) __asm__ ("" "__fgetws_chk") -2441: -2441: -2441: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgetws called with bigger size than length " "of destination buffer"))) -2441: ; -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) wchar_t * -2441: fgetws (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) -2441: { -2441: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1) -2441: { -2441: if (!__builtin_constant_p (__n) || __n <= 0) -2441: return __fgetws_chk (__s, __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t), -2441: __n, __stream); -2441: -2441: if ((size_t) __n > __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t)) -2441: return __fgetws_chk_warn (__s, __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t), -2441: __n, __stream); -2441: } -2441: return __fgetws_alias (__s, __n, __stream); -2441: } -2441: -2441: -2441: extern wchar_t *__fgetws_unlocked_chk (wchar_t *__restrict __s, size_t __size, -2441: int __n, __FILE *__restrict __stream) -2441: __attribute__ ((__warn_unused_result__)); -2441: extern wchar_t *__fgetws_unlocked_alias (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) __asm__ ("" "fgetws_unlocked") -2441: -2441: -2441: __attribute__ ((__warn_unused_result__)); -2441: extern wchar_t *__fgetws_unlocked_chk_warn (wchar_t *__restrict __s, size_t __size, int __n, __FILE *__restrict __stream) __asm__ ("" "__fgetws_unlocked_chk") -2441: -2441: -2441: -2441: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgetws_unlocked called with bigger size than length " "of destination buffer"))) -2441: ; -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) wchar_t * -2441: fgetws_unlocked (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) -2441: { -2441: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1) -2441: { -2441: if (!__builtin_constant_p (__n) || __n <= 0) -2441: return __fgetws_unlocked_chk (__s, __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t), -2441: __n, __stream); -2441: -2441: if ((size_t) __n > __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t)) -2441: return __fgetws_unlocked_chk_warn (__s, __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t), -2441: __n, __stream); -2441: } -2441: return __fgetws_unlocked_alias (__s, __n, __stream); -2441: } -2441: -2441: -2441: -2441: extern size_t __wcrtomb_chk (char *__restrict __s, wchar_t __wchar, -2441: mbstate_t *__restrict __p, -2441: size_t __buflen) throw () __attribute__ ((__warn_unused_result__)); -2441: extern size_t __wcrtomb_alias (char *__restrict __s, wchar_t __wchar, mbstate_t *__restrict __ps) throw () __asm__ ("" "wcrtomb") -2441: -2441: __attribute__ ((__warn_unused_result__)); -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t -2441: __attribute__ ((__leaf__)) wcrtomb (char *__restrict __s, wchar_t __wchar, mbstate_t *__restrict __ps) throw () -2441: -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 && 16 > __builtin_object_size (__s, 2 > 1)) -2441: return __wcrtomb_chk (__s, __wchar, __ps, __builtin_object_size (__s, 2 > 1)); -2441: return __wcrtomb_alias (__s, __wchar, __ps); -2441: } -2441: -2441: -2441: extern size_t __mbsrtowcs_chk (wchar_t *__restrict __dst, -2441: const char **__restrict __src, -2441: size_t __len, mbstate_t *__restrict __ps, -2441: size_t __dstlen) throw (); -2441: extern size_t __mbsrtowcs_alias (wchar_t *__restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps) throw () __asm__ ("" "mbsrtowcs") -2441: -2441: -2441: -2441: ; -2441: extern size_t __mbsrtowcs_chk_warn (wchar_t *__restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) throw () __asm__ ("" "__mbsrtowcs_chk") -2441: -2441: -2441: -2441: -2441: __attribute__((__warning__ ("mbsrtowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) -2441: ; -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t -2441: __attribute__ ((__leaf__)) mbsrtowcs (wchar_t *__restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps) throw () -2441: -2441: { -2441: if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1) -2441: { -2441: if (!__builtin_constant_p (__len)) -2441: return __mbsrtowcs_chk (__dst, __src, __len, __ps, -2441: __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)); -2441: -2441: if (__len > __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)) -2441: return __mbsrtowcs_chk_warn (__dst, __src, __len, __ps, -2441: __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)); -2441: } -2441: return __mbsrtowcs_alias (__dst, __src, __len, __ps); -2441: } -2441: -2441: -2441: extern size_t __wcsrtombs_chk (char *__restrict __dst, -2441: const wchar_t **__restrict __src, -2441: size_t __len, mbstate_t *__restrict __ps, -2441: size_t __dstlen) throw (); -2441: extern size_t __wcsrtombs_alias (char *__restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps) throw () __asm__ ("" "wcsrtombs") -2441: -2441: -2441: -2441: ; -2441: extern size_t __wcsrtombs_chk_warn (char *__restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) throw () __asm__ ("" "__wcsrtombs_chk") -2441: -2441: -2441: -2441: -2441: __attribute__((__warning__ ("wcsrtombs called with dst buffer smaller than len"))); -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t -2441: __attribute__ ((__leaf__)) wcsrtombs (char *__restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps) throw () -2441: -2441: { -2441: if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1) -2441: { -2441: if (!__builtin_constant_p (__len)) -2441: return __wcsrtombs_chk (__dst, __src, __len, __ps, __builtin_object_size (__dst, 2 > 1)); -2441: -2441: if (__len > __builtin_object_size (__dst, 2 > 1)) -2441: return __wcsrtombs_chk_warn (__dst, __src, __len, __ps, __builtin_object_size (__dst, 2 > 1)); -2441: } -2441: return __wcsrtombs_alias (__dst, __src, __len, __ps); -2441: } -2441: -2441: -2441: -2441: extern size_t __mbsnrtowcs_chk (wchar_t *__restrict __dst, -2441: const char **__restrict __src, size_t __nmc, -2441: size_t __len, mbstate_t *__restrict __ps, -2441: size_t __dstlen) throw (); -2441: extern size_t __mbsnrtowcs_alias (wchar_t *__restrict __dst, const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps) throw () __asm__ ("" "mbsnrtowcs") -2441: -2441: -2441: -2441: ; -2441: extern size_t __mbsnrtowcs_chk_warn (wchar_t *__restrict __dst, const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) throw () __asm__ ("" "__mbsnrtowcs_chk") -2441: -2441: -2441: -2441: -2441: __attribute__((__warning__ ("mbsnrtowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) -2441: ; -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t -2441: __attribute__ ((__leaf__)) mbsnrtowcs (wchar_t *__restrict __dst, const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps) throw () -2441: -2441: { -2441: if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1) -2441: { -2441: if (!__builtin_constant_p (__len)) -2441: return __mbsnrtowcs_chk (__dst, __src, __nmc, __len, __ps, -2441: __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)); -2441: -2441: if (__len > __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)) -2441: return __mbsnrtowcs_chk_warn (__dst, __src, __nmc, __len, __ps, -2441: __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)); -2441: } -2441: return __mbsnrtowcs_alias (__dst, __src, __nmc, __len, __ps); -2441: } -2441: -2441: -2441: extern size_t __wcsnrtombs_chk (char *__restrict __dst, -2441: const wchar_t **__restrict __src, -2441: size_t __nwc, size_t __len, -2441: mbstate_t *__restrict __ps, size_t __dstlen) -2441: throw (); -2441: extern size_t __wcsnrtombs_alias (char *__restrict __dst, const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps) throw () __asm__ ("" "wcsnrtombs") -2441: -2441: -2441: -2441: ; -2441: extern size_t __wcsnrtombs_chk_warn (char *__restrict __dst, const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) throw () __asm__ ("" "__wcsnrtombs_chk") -2441: -2441: -2441: -2441: -2441: -2441: __attribute__((__warning__ ("wcsnrtombs called with dst buffer smaller than len"))); -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t -2441: __attribute__ ((__leaf__)) wcsnrtombs (char *__restrict __dst, const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps) throw () -2441: -2441: { -2441: if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1) -2441: { -2441: if (!__builtin_constant_p (__len)) -2441: return __wcsnrtombs_chk (__dst, __src, __nwc, __len, __ps, -2441: __builtin_object_size (__dst, 2 > 1)); -2441: -2441: if (__len > __builtin_object_size (__dst, 2 > 1)) -2441: return __wcsnrtombs_chk_warn (__dst, __src, __nwc, __len, __ps, -2441: __builtin_object_size (__dst, 2 > 1)); -2441: } -2441: return __wcsnrtombs_alias (__dst, __src, __nwc, __len, __ps); -2441: } -2441: # 851 "/usr/include/wchar.h" 2 3 4 -2441: -2441: -2441: -2441: -2441: -2441: -2441: } -2441: # 45 "/usr/include/c++/8/cwchar" 2 3 -2441: # 62 "/usr/include/c++/8/cwchar" 3 -2441: namespace std -2441: { -2441: using ::mbstate_t; -2441: } -2441: # 135 "/usr/include/c++/8/cwchar" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: using ::wint_t; -2441: -2441: using ::btowc; -2441: using ::fgetwc; -2441: using ::fgetws; -2441: using ::fputwc; -2441: using ::fputws; -2441: using ::fwide; -2441: using ::fwprintf; -2441: using ::fwscanf; -2441: using ::getwc; -2441: using ::getwchar; -2441: using ::mbrlen; -2441: using ::mbrtowc; -2441: using ::mbsinit; -2441: using ::mbsrtowcs; -2441: using ::putwc; -2441: using ::putwchar; -2441: -2441: using ::swprintf; -2441: -2441: using ::swscanf; -2441: using ::ungetwc; -2441: using ::vfwprintf; -2441: -2441: using ::vfwscanf; -2441: -2441: -2441: using ::vswprintf; -2441: -2441: -2441: using ::vswscanf; -2441: -2441: using ::vwprintf; -2441: -2441: using ::vwscanf; -2441: -2441: using ::wcrtomb; -2441: using ::wcscat; -2441: using ::wcscmp; -2441: using ::wcscoll; -2441: using ::wcscpy; -2441: using ::wcscspn; -2441: using ::wcsftime; -2441: using ::wcslen; -2441: using ::wcsncat; -2441: using ::wcsncmp; -2441: using ::wcsncpy; -2441: using ::wcsrtombs; -2441: using ::wcsspn; -2441: using ::wcstod; -2441: -2441: using ::wcstof; -2441: -2441: using ::wcstok; -2441: using ::wcstol; -2441: using ::wcstoul; -2441: using ::wcsxfrm; -2441: using ::wctob; -2441: using ::wmemcmp; -2441: using ::wmemcpy; -2441: using ::wmemmove; -2441: using ::wmemset; -2441: using ::wprintf; -2441: using ::wscanf; -2441: using ::wcschr; -2441: using ::wcspbrk; -2441: using ::wcsrchr; -2441: using ::wcsstr; -2441: using ::wmemchr; -2441: # 232 "/usr/include/c++/8/cwchar" 3 -2441: -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: namespace __gnu_cxx -2441: { -2441: -2441: -2441: -2441: -2441: -2441: using ::wcstold; -2441: # 257 "/usr/include/c++/8/cwchar" 3 -2441: using ::wcstoll; -2441: using ::wcstoull; -2441: -2441: } -2441: -2441: namespace std -2441: { -2441: using ::__gnu_cxx::wcstold; -2441: using ::__gnu_cxx::wcstoll; -2441: using ::__gnu_cxx::wcstoull; -2441: } -2441: # 277 "/usr/include/c++/8/cwchar" 3 -2441: namespace std -2441: { -2441: -2441: using std::wcstof; -2441: -2441: -2441: using std::vfwscanf; -2441: -2441: -2441: using std::vswscanf; -2441: -2441: -2441: using std::vwscanf; -2441: -2441: -2441: -2441: using std::wcstold; -2441: using std::wcstoll; -2441: using std::wcstoull; -2441: -2441: } -2441: # 41 "/usr/include/c++/8/bits/postypes.h" 2 3 -2441: # 68 "/usr/include/c++/8/bits/postypes.h" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: # 90 "/usr/include/c++/8/bits/postypes.h" 3 -2441: typedef long long streamoff; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: typedef ptrdiff_t streamsize; -2441: # 111 "/usr/include/c++/8/bits/postypes.h" 3 -2441: template -2441: class fpos -2441: { -2441: private: -2441: streamoff _M_off; -2441: _StateT _M_state; -2441: -2441: public: -2441: -2441: -2441: -2441: -2441: fpos() -2441: : _M_off(0), _M_state() { } -2441: # 133 "/usr/include/c++/8/bits/postypes.h" 3 -2441: fpos(streamoff __off) -2441: : _M_off(__off), _M_state() { } -2441: -2441: -2441: operator streamoff() const { return _M_off; } -2441: -2441: -2441: void -2441: state(_StateT __st) -2441: { _M_state = __st; } -2441: -2441: -2441: _StateT -2441: state() const -2441: { return _M_state; } -2441: -2441: -2441: -2441: -2441: -2441: fpos& -2441: operator+=(streamoff __off) -2441: { -2441: _M_off += __off; -2441: return *this; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: fpos& -2441: operator-=(streamoff __off) -2441: { -2441: _M_off -= __off; -2441: return *this; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: fpos -2441: operator+(streamoff __off) const -2441: { -2441: fpos __pos(*this); -2441: __pos += __off; -2441: return __pos; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: fpos -2441: operator-(streamoff __off) const -2441: { -2441: fpos __pos(*this); -2441: __pos -= __off; -2441: return __pos; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: streamoff -2441: operator-(const fpos& __other) const -2441: { return _M_off - __other._M_off; } -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline bool -2441: operator==(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) -2441: { return streamoff(__lhs) == streamoff(__rhs); } -2441: -2441: template -2441: inline bool -2441: operator!=(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) -2441: { return streamoff(__lhs) != streamoff(__rhs); } -2441: -2441: -2441: -2441: -2441: -2441: typedef fpos streampos; -2441: -2441: typedef fpos wstreampos; -2441: -2441: -2441: -2441: typedef fpos u16streampos; -2441: -2441: typedef fpos u32streampos; -2441: -2441: -2441: -2441: } -2441: # 41 "/usr/include/c++/8/iosfwd" 2 3 -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: # 74 "/usr/include/c++/8/iosfwd" 3 -2441: class ios_base; -2441: -2441: template > -2441: class basic_ios; -2441: -2441: template > -2441: class basic_streambuf; -2441: -2441: template > -2441: class basic_istream; -2441: -2441: template > -2441: class basic_ostream; -2441: -2441: template > -2441: class basic_iostream; -2441: -2441: -2441: namespace __cxx11 { -2441: -2441: template, -2441: typename _Alloc = allocator<_CharT> > -2441: class basic_stringbuf; -2441: -2441: template, -2441: typename _Alloc = allocator<_CharT> > -2441: class basic_istringstream; -2441: -2441: template, -2441: typename _Alloc = allocator<_CharT> > -2441: class basic_ostringstream; -2441: -2441: template, -2441: typename _Alloc = allocator<_CharT> > -2441: class basic_stringstream; -2441: -2441: } -2441: -2441: template > -2441: class basic_filebuf; -2441: -2441: template > -2441: class basic_ifstream; -2441: -2441: template > -2441: class basic_ofstream; -2441: -2441: template > -2441: class basic_fstream; -2441: -2441: template > -2441: class istreambuf_iterator; -2441: -2441: template > -2441: class ostreambuf_iterator; -2441: -2441: -2441: -2441: typedef basic_ios ios; -2441: -2441: -2441: typedef basic_streambuf streambuf; -2441: -2441: -2441: typedef basic_istream istream; -2441: -2441: -2441: typedef basic_ostream ostream; -2441: -2441: -2441: typedef basic_iostream iostream; -2441: -2441: -2441: typedef basic_stringbuf stringbuf; -2441: -2441: -2441: typedef basic_istringstream istringstream; -2441: -2441: -2441: typedef basic_ostringstream ostringstream; -2441: -2441: -2441: typedef basic_stringstream stringstream; -2441: -2441: -2441: typedef basic_filebuf filebuf; -2441: -2441: -2441: typedef basic_ifstream ifstream; -2441: -2441: -2441: typedef basic_ofstream ofstream; -2441: -2441: -2441: typedef basic_fstream fstream; -2441: -2441: -2441: -2441: typedef basic_ios wios; -2441: -2441: -2441: typedef basic_streambuf wstreambuf; -2441: -2441: -2441: typedef basic_istream wistream; -2441: -2441: -2441: typedef basic_ostream wostream; -2441: -2441: -2441: typedef basic_iostream wiostream; -2441: -2441: -2441: typedef basic_stringbuf wstringbuf; -2441: -2441: -2441: typedef basic_istringstream wistringstream; -2441: -2441: -2441: typedef basic_ostringstream wostringstream; -2441: -2441: -2441: typedef basic_stringstream wstringstream; -2441: -2441: -2441: typedef basic_filebuf wfilebuf; -2441: -2441: -2441: typedef basic_ifstream wifstream; -2441: -2441: -2441: typedef basic_ofstream wofstream; -2441: -2441: -2441: typedef basic_fstream wfstream; -2441: -2441: -2441: -2441: -2441: } -2441: # 35 "/usr/include/gmpxx.h" 2 3 4 -2441: -2441: # 1 "/usr/include/c++/8/cstring" 1 3 4 -2441: # 39 "/usr/include/c++/8/cstring" 3 4 -2441: -2441: # 40 "/usr/include/c++/8/cstring" 3 -2441: -2441: -2441: # 1 "/usr/include/string.h" 1 3 4 -2441: # 26 "/usr/include/string.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/libc-header-start.h" 1 3 4 -2441: # 27 "/usr/include/string.h" 2 3 4 -2441: -2441: extern "C" { -2441: -2441: -2441: -2441: -2441: # 1 "/usr/lib/gcc/i686-linux-gnu/8/include/stddef.h" 1 3 4 -2441: # 34 "/usr/include/string.h" 2 3 4 -2441: # 42 "/usr/include/string.h" 3 4 -2441: extern void *memcpy (void *__restrict __dest, const void *__restrict __src, -2441: size_t __n) throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: extern void *memmove (void *__dest, const void *__src, size_t __n) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: -2441: -2441: -2441: extern void *memccpy (void *__restrict __dest, const void *__restrict __src, -2441: int __c, size_t __n) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: -2441: -2441: extern void *memset (void *__s, int __c, size_t __n) throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int memcmp (const void *__s1, const void *__s2, size_t __n) -2441: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: -2441: extern "C++" -2441: { -2441: extern void *memchr (void *__s, int __c, size_t __n) -2441: throw () __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); -2441: extern const void *memchr (const void *__s, int __c, size_t __n) -2441: throw () __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) void * -2441: memchr (void *__s, int __c, size_t __n) throw () -2441: { -2441: return __builtin_memchr (__s, __c, __n); -2441: } -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const void * -2441: memchr (const void *__s, int __c, size_t __n) throw () -2441: { -2441: return __builtin_memchr (__s, __c, __n); -2441: } -2441: -2441: } -2441: # 98 "/usr/include/string.h" 3 4 -2441: extern "C++" void *rawmemchr (void *__s, int __c) -2441: throw () __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); -2441: extern "C++" const void *rawmemchr (const void *__s, int __c) -2441: throw () __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern "C++" void *memrchr (void *__s, int __c, size_t __n) -2441: throw () __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); -2441: extern "C++" const void *memrchr (const void *__s, int __c, size_t __n) -2441: throw () __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); -2441: # 121 "/usr/include/string.h" 3 4 -2441: extern char *strcpy (char *__restrict __dest, const char *__restrict __src) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: extern char *strncpy (char *__restrict __dest, -2441: const char *__restrict __src, size_t __n) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: extern char *strcat (char *__restrict __dest, const char *__restrict __src) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: extern char *strncat (char *__restrict __dest, const char *__restrict __src, -2441: size_t __n) throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: extern int strcmp (const char *__s1, const char *__s2) -2441: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: extern int strncmp (const char *__s1, const char *__s2, size_t __n) -2441: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: extern int strcoll (const char *__s1, const char *__s2) -2441: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: extern size_t strxfrm (char *__restrict __dest, -2441: const char *__restrict __src, size_t __n) -2441: throw () __attribute__ ((__nonnull__ (2))); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int strcoll_l (const char *__s1, const char *__s2, locale_t __l) -2441: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); -2441: -2441: -2441: extern size_t strxfrm_l (char *__dest, const char *__src, size_t __n, -2441: locale_t __l) throw () __attribute__ ((__nonnull__ (2, 4))); -2441: -2441: -2441: -2441: -2441: -2441: extern char *strdup (const char *__s) -2441: throw () __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern char *strndup (const char *__string, size_t __n) -2441: throw () __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); -2441: # 203 "/usr/include/string.h" 3 4 -2441: extern "C++" -2441: { -2441: extern char *strchr (char *__s, int __c) -2441: throw () __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); -2441: extern const char *strchr (const char *__s, int __c) -2441: throw () __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * -2441: strchr (char *__s, int __c) throw () -2441: { -2441: return __builtin_strchr (__s, __c); -2441: } -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * -2441: strchr (const char *__s, int __c) throw () -2441: { -2441: return __builtin_strchr (__s, __c); -2441: } -2441: -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern "C++" -2441: { -2441: extern char *strrchr (char *__s, int __c) -2441: throw () __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); -2441: extern const char *strrchr (const char *__s, int __c) -2441: throw () __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * -2441: strrchr (char *__s, int __c) throw () -2441: { -2441: return __builtin_strrchr (__s, __c); -2441: } -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * -2441: strrchr (const char *__s, int __c) throw () -2441: { -2441: return __builtin_strrchr (__s, __c); -2441: } -2441: -2441: } -2441: # 260 "/usr/include/string.h" 3 4 -2441: extern "C++" char *strchrnul (char *__s, int __c) -2441: throw () __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); -2441: extern "C++" const char *strchrnul (const char *__s, int __c) -2441: throw () __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); -2441: # 272 "/usr/include/string.h" 3 4 -2441: extern size_t strcspn (const char *__s, const char *__reject) -2441: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: extern size_t strspn (const char *__s, const char *__accept) -2441: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: extern "C++" -2441: { -2441: extern char *strpbrk (char *__s, const char *__accept) -2441: throw () __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); -2441: extern const char *strpbrk (const char *__s, const char *__accept) -2441: throw () __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * -2441: strpbrk (char *__s, const char *__accept) throw () -2441: { -2441: return __builtin_strpbrk (__s, __accept); -2441: } -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * -2441: strpbrk (const char *__s, const char *__accept) throw () -2441: { -2441: return __builtin_strpbrk (__s, __accept); -2441: } -2441: -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern "C++" -2441: { -2441: extern char *strstr (char *__haystack, const char *__needle) -2441: throw () __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); -2441: extern const char *strstr (const char *__haystack, const char *__needle) -2441: throw () __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * -2441: strstr (char *__haystack, const char *__needle) throw () -2441: { -2441: return __builtin_strstr (__haystack, __needle); -2441: } -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * -2441: strstr (const char *__haystack, const char *__needle) throw () -2441: { -2441: return __builtin_strstr (__haystack, __needle); -2441: } -2441: -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern char *strtok (char *__restrict __s, const char *__restrict __delim) -2441: throw () __attribute__ ((__nonnull__ (2))); -2441: -2441: -2441: -2441: extern char *__strtok_r (char *__restrict __s, -2441: const char *__restrict __delim, -2441: char **__restrict __save_ptr) -2441: throw () __attribute__ ((__nonnull__ (2, 3))); -2441: -2441: extern char *strtok_r (char *__restrict __s, const char *__restrict __delim, -2441: char **__restrict __save_ptr) -2441: throw () __attribute__ ((__nonnull__ (2, 3))); -2441: -2441: -2441: -2441: -2441: -2441: extern "C++" char *strcasestr (char *__haystack, const char *__needle) -2441: throw () __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); -2441: extern "C++" const char *strcasestr (const char *__haystack, -2441: const char *__needle) -2441: throw () __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); -2441: # 368 "/usr/include/string.h" 3 4 -2441: extern void *memmem (const void *__haystack, size_t __haystacklen, -2441: const void *__needle, size_t __needlelen) -2441: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3))); -2441: -2441: -2441: -2441: extern void *__mempcpy (void *__restrict __dest, -2441: const void *__restrict __src, size_t __n) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: extern void *mempcpy (void *__restrict __dest, -2441: const void *__restrict __src, size_t __n) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: -2441: -2441: extern size_t strlen (const char *__s) -2441: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: -2441: extern size_t strnlen (const char *__string, size_t __maxlen) -2441: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: -2441: extern char *strerror (int __errnum) throw (); -2441: # 420 "/usr/include/string.h" 3 4 -2441: extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) -2441: throw () __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: -2441: extern char *strerror_l (int __errnum, locale_t __l) throw (); -2441: -2441: -2441: -2441: # 1 "/usr/include/strings.h" 1 3 4 -2441: # 23 "/usr/include/strings.h" 3 4 -2441: # 1 "/usr/lib/gcc/i686-linux-gnu/8/include/stddef.h" 1 3 4 -2441: # 24 "/usr/include/strings.h" 2 3 4 -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern "C" { -2441: -2441: -2441: -2441: extern int bcmp (const void *__s1, const void *__s2, size_t __n) -2441: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: extern void bcopy (const void *__src, void *__dest, size_t __n) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: extern void bzero (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: extern "C++" -2441: { -2441: extern char *index (char *__s, int __c) -2441: throw () __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); -2441: extern const char *index (const char *__s, int __c) -2441: throw () __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * -2441: index (char *__s, int __c) throw () -2441: { -2441: return __builtin_index (__s, __c); -2441: } -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * -2441: index (const char *__s, int __c) throw () -2441: { -2441: return __builtin_index (__s, __c); -2441: } -2441: -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern "C++" -2441: { -2441: extern char *rindex (char *__s, int __c) -2441: throw () __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); -2441: extern const char *rindex (const char *__s, int __c) -2441: throw () __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * -2441: rindex (char *__s, int __c) throw () -2441: { -2441: return __builtin_rindex (__s, __c); -2441: } -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * -2441: rindex (const char *__s, int __c) throw () -2441: { -2441: return __builtin_rindex (__s, __c); -2441: } -2441: -2441: } -2441: # 104 "/usr/include/strings.h" 3 4 -2441: extern int ffs (int __i) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: -2441: -2441: extern int ffsl (long int __l) throw () __attribute__ ((__const__)); -2441: __extension__ extern int ffsll (long long int __ll) -2441: throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: extern int strcasecmp (const char *__s1, const char *__s2) -2441: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: extern int strncasecmp (const char *__s1, const char *__s2, size_t __n) -2441: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int strcasecmp_l (const char *__s1, const char *__s2, locale_t __loc) -2441: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); -2441: -2441: -2441: -2441: extern int strncasecmp_l (const char *__s1, const char *__s2, -2441: size_t __n, locale_t __loc) -2441: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4))); -2441: -2441: -2441: } -2441: -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/strings_fortified.h" 1 3 4 -2441: # 22 "/usr/include/i386-linux-gnu/bits/strings_fortified.h" 3 4 -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void -2441: __attribute__ ((__leaf__)) bcopy (const void *__src, void *__dest, size_t __len) throw () -2441: { -2441: (void) __builtin___memmove_chk (__dest, __src, __len, __builtin_object_size (__dest, 0)); -2441: } -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void -2441: __attribute__ ((__leaf__)) bzero (void *__dest, size_t __len) throw () -2441: { -2441: (void) __builtin___memset_chk (__dest, '\0', __len, __builtin_object_size (__dest, 0)); -2441: } -2441: # 145 "/usr/include/strings.h" 2 3 4 -2441: # 432 "/usr/include/string.h" 2 3 4 -2441: -2441: -2441: -2441: extern void explicit_bzero (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: extern char *strsep (char **__restrict __stringp, -2441: const char *__restrict __delim) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: -2441: -2441: extern char *strsignal (int __sig) throw (); -2441: -2441: -2441: extern char *__stpcpy (char *__restrict __dest, const char *__restrict __src) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: extern char *stpcpy (char *__restrict __dest, const char *__restrict __src) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: -2441: extern char *__stpncpy (char *__restrict __dest, -2441: const char *__restrict __src, size_t __n) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: extern char *stpncpy (char *__restrict __dest, -2441: const char *__restrict __src, size_t __n) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: -2441: -2441: extern int strverscmp (const char *__s1, const char *__s2) -2441: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: extern char *strfry (char *__string) throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern void *memfrob (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern "C++" char *basename (char *__filename) -2441: throw () __asm ("basename") __attribute__ ((__nonnull__ (1))); -2441: extern "C++" const char *basename (const char *__filename) -2441: throw () __asm ("basename") __attribute__ ((__nonnull__ (1))); -2441: # 494 "/usr/include/string.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/string_fortified.h" 1 3 4 -2441: # 30 "/usr/include/i386-linux-gnu/bits/string_fortified.h" 3 4 -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * -2441: __attribute__ ((__leaf__)) memcpy (void *__restrict __dest, const void *__restrict __src, size_t __len) throw () -2441: -2441: { -2441: return __builtin___memcpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 0)); -2441: } -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * -2441: __attribute__ ((__leaf__)) memmove (void *__dest, const void *__src, size_t __len) throw () -2441: { -2441: return __builtin___memmove_chk (__dest, __src, __len, __builtin_object_size (__dest, 0)); -2441: } -2441: -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * -2441: __attribute__ ((__leaf__)) mempcpy (void *__restrict __dest, const void *__restrict __src, size_t __len) throw () -2441: -2441: { -2441: return __builtin___mempcpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 0)); -2441: } -2441: # 58 "/usr/include/i386-linux-gnu/bits/string_fortified.h" 3 4 -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * -2441: __attribute__ ((__leaf__)) memset (void *__dest, int __ch, size_t __len) throw () -2441: { -2441: # 71 "/usr/include/i386-linux-gnu/bits/string_fortified.h" 3 4 -2441: return __builtin___memset_chk (__dest, __ch, __len, __builtin_object_size (__dest, 0)); -2441: } -2441: -2441: -2441: -2441: -2441: void __explicit_bzero_chk (void *__dest, size_t __len, size_t __destlen) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void -2441: __attribute__ ((__leaf__)) explicit_bzero (void *__dest, size_t __len) throw () -2441: { -2441: __explicit_bzero_chk (__dest, __len, __builtin_object_size (__dest, 0)); -2441: } -2441: -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * -2441: __attribute__ ((__leaf__)) strcpy (char *__restrict __dest, const char *__restrict __src) throw () -2441: { -2441: return __builtin___strcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); -2441: } -2441: -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * -2441: __attribute__ ((__leaf__)) stpcpy (char *__restrict __dest, const char *__restrict __src) throw () -2441: { -2441: return __builtin___stpcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); -2441: } -2441: -2441: -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * -2441: __attribute__ ((__leaf__)) strncpy (char *__restrict __dest, const char *__restrict __src, size_t __len) throw () -2441: -2441: { -2441: return __builtin___strncpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 2 > 1)); -2441: } -2441: -2441: -2441: extern char *__stpncpy_chk (char *__dest, const char *__src, size_t __n, -2441: size_t __destlen) throw (); -2441: extern char *__stpncpy_alias (char *__dest, const char *__src, size_t __n) throw () __asm__ ("" "stpncpy") -2441: ; -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * -2441: __attribute__ ((__leaf__)) stpncpy (char *__dest, const char *__src, size_t __n) throw () -2441: { -2441: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1 -2441: && (!__builtin_constant_p (__n) || __n > __builtin_object_size (__dest, 2 > 1))) -2441: return __stpncpy_chk (__dest, __src, __n, __builtin_object_size (__dest, 2 > 1)); -2441: return __stpncpy_alias (__dest, __src, __n); -2441: } -2441: -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * -2441: __attribute__ ((__leaf__)) strcat (char *__restrict __dest, const char *__restrict __src) throw () -2441: { -2441: return __builtin___strcat_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); -2441: } -2441: -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * -2441: __attribute__ ((__leaf__)) strncat (char *__restrict __dest, const char *__restrict __src, size_t __len) throw () -2441: -2441: { -2441: return __builtin___strncat_chk (__dest, __src, __len, __builtin_object_size (__dest, 2 > 1)); -2441: } -2441: # 495 "/usr/include/string.h" 2 3 4 -2441: -2441: -2441: -2441: } -2441: # 43 "/usr/include/c++/8/cstring" 2 3 -2441: # 71 "/usr/include/c++/8/cstring" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: using ::memchr; -2441: using ::memcmp; -2441: using ::memcpy; -2441: using ::memmove; -2441: using ::memset; -2441: using ::strcat; -2441: using ::strcmp; -2441: using ::strcoll; -2441: using ::strcpy; -2441: using ::strcspn; -2441: using ::strerror; -2441: using ::strlen; -2441: using ::strncat; -2441: using ::strncmp; -2441: using ::strncpy; -2441: using ::strspn; -2441: using ::strtok; -2441: using ::strxfrm; -2441: using ::strchr; -2441: using ::strpbrk; -2441: using ::strrchr; -2441: using ::strstr; -2441: # 120 "/usr/include/c++/8/cstring" 3 -2441: -2441: } -2441: # 37 "/usr/include/gmpxx.h" 2 3 4 -2441: # 1 "/usr/include/c++/8/limits" 1 3 4 -2441: # 40 "/usr/include/c++/8/limits" 3 4 -2441: -2441: # 41 "/usr/include/c++/8/limits" 3 -2441: # 158 "/usr/include/c++/8/limits" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: enum float_round_style -2441: { -2441: round_indeterminate = -1, -2441: round_toward_zero = 0, -2441: round_to_nearest = 1, -2441: round_toward_infinity = 2, -2441: round_toward_neg_infinity = 3 -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: enum float_denorm_style -2441: { -2441: -2441: denorm_indeterminate = -1, -2441: -2441: denorm_absent = 0, -2441: -2441: denorm_present = 1 -2441: }; -2441: # 202 "/usr/include/c++/8/limits" 3 -2441: struct __numeric_limits_base -2441: { -2441: -2441: -2441: static constexpr bool is_specialized = false; -2441: -2441: -2441: -2441: -2441: static constexpr int digits = 0; -2441: -2441: -2441: static constexpr int digits10 = 0; -2441: -2441: -2441: -2441: -2441: static constexpr int max_digits10 = 0; -2441: -2441: -2441: -2441: static constexpr bool is_signed = false; -2441: -2441: -2441: static constexpr bool is_integer = false; -2441: -2441: -2441: -2441: -2441: static constexpr bool is_exact = false; -2441: -2441: -2441: -2441: static constexpr int radix = 0; -2441: -2441: -2441: -2441: static constexpr int min_exponent = 0; -2441: -2441: -2441: -2441: static constexpr int min_exponent10 = 0; -2441: -2441: -2441: -2441: -2441: static constexpr int max_exponent = 0; -2441: -2441: -2441: -2441: static constexpr int max_exponent10 = 0; -2441: -2441: -2441: static constexpr bool has_infinity = false; -2441: -2441: -2441: -2441: static constexpr bool has_quiet_NaN = false; -2441: -2441: -2441: -2441: static constexpr bool has_signaling_NaN = false; -2441: -2441: -2441: static constexpr float_denorm_style has_denorm = denorm_absent; -2441: -2441: -2441: -2441: static constexpr bool has_denorm_loss = false; -2441: -2441: -2441: -2441: static constexpr bool is_iec559 = false; -2441: -2441: -2441: -2441: -2441: static constexpr bool is_bounded = false; -2441: # 288 "/usr/include/c++/8/limits" 3 -2441: static constexpr bool is_modulo = false; -2441: -2441: -2441: static constexpr bool traps = false; -2441: -2441: -2441: static constexpr bool tinyness_before = false; -2441: -2441: -2441: -2441: -2441: static constexpr float_round_style round_style = -2441: round_toward_zero; -2441: }; -2441: # 311 "/usr/include/c++/8/limits" 3 -2441: template -2441: struct numeric_limits : public __numeric_limits_base -2441: { -2441: -2441: -2441: static constexpr _Tp -2441: min() noexcept { return _Tp(); } -2441: -2441: -2441: static constexpr _Tp -2441: max() noexcept { return _Tp(); } -2441: -2441: -2441: -2441: -2441: static constexpr _Tp -2441: lowest() noexcept { return _Tp(); } -2441: -2441: -2441: -2441: -2441: static constexpr _Tp -2441: epsilon() noexcept { return _Tp(); } -2441: -2441: -2441: static constexpr _Tp -2441: round_error() noexcept { return _Tp(); } -2441: -2441: -2441: static constexpr _Tp -2441: infinity() noexcept { return _Tp(); } -2441: -2441: -2441: -2441: static constexpr _Tp -2441: quiet_NaN() noexcept { return _Tp(); } -2441: -2441: -2441: -2441: static constexpr _Tp -2441: signaling_NaN() noexcept { return _Tp(); } -2441: -2441: -2441: -2441: -2441: static constexpr _Tp -2441: denorm_min() noexcept { return _Tp(); } -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: struct numeric_limits -2441: : public numeric_limits<_Tp> { }; -2441: -2441: template -2441: struct numeric_limits -2441: : public numeric_limits<_Tp> { }; -2441: -2441: template -2441: struct numeric_limits -2441: : public numeric_limits<_Tp> { }; -2441: # 382 "/usr/include/c++/8/limits" 3 -2441: template<> -2441: struct numeric_limits -2441: { -2441: static constexpr bool is_specialized = true; -2441: -2441: static constexpr bool -2441: min() noexcept { return false; } -2441: -2441: static constexpr bool -2441: max() noexcept { return true; } -2441: -2441: -2441: static constexpr bool -2441: lowest() noexcept { return min(); } -2441: -2441: static constexpr int digits = 1; -2441: static constexpr int digits10 = 0; -2441: -2441: static constexpr int max_digits10 = 0; -2441: -2441: static constexpr bool is_signed = false; -2441: static constexpr bool is_integer = true; -2441: static constexpr bool is_exact = true; -2441: static constexpr int radix = 2; -2441: -2441: static constexpr bool -2441: epsilon() noexcept { return false; } -2441: -2441: static constexpr bool -2441: round_error() noexcept { return false; } -2441: -2441: static constexpr int min_exponent = 0; -2441: static constexpr int min_exponent10 = 0; -2441: static constexpr int max_exponent = 0; -2441: static constexpr int max_exponent10 = 0; -2441: -2441: static constexpr bool has_infinity = false; -2441: static constexpr bool has_quiet_NaN = false; -2441: static constexpr bool has_signaling_NaN = false; -2441: static constexpr float_denorm_style has_denorm -2441: = denorm_absent; -2441: static constexpr bool has_denorm_loss = false; -2441: -2441: static constexpr bool -2441: infinity() noexcept { return false; } -2441: -2441: static constexpr bool -2441: quiet_NaN() noexcept { return false; } -2441: -2441: static constexpr bool -2441: signaling_NaN() noexcept { return false; } -2441: -2441: static constexpr bool -2441: denorm_min() noexcept { return false; } -2441: -2441: static constexpr bool is_iec559 = false; -2441: static constexpr bool is_bounded = true; -2441: static constexpr bool is_modulo = false; -2441: -2441: -2441: -2441: -2441: static constexpr bool traps = true; -2441: static constexpr bool tinyness_before = false; -2441: static constexpr float_round_style round_style -2441: = round_toward_zero; -2441: }; -2441: -2441: -2441: template<> -2441: struct numeric_limits -2441: { -2441: static constexpr bool is_specialized = true; -2441: -2441: static constexpr char -2441: min() noexcept { return (((char)(-1) < 0) ? -(((char)(-1) < 0) ? (((((char)1 << ((sizeof(char) * 8 - ((char)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char)0) - 1 : (char)0); } -2441: -2441: static constexpr char -2441: max() noexcept { return (((char)(-1) < 0) ? (((((char)1 << ((sizeof(char) * 8 - ((char)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char)0); } -2441: -2441: -2441: static constexpr char -2441: lowest() noexcept { return min(); } -2441: -2441: -2441: static constexpr int digits = (sizeof(char) * 8 - ((char)(-1) < 0)); -2441: static constexpr int digits10 = ((sizeof(char) * 8 - ((char)(-1) < 0)) * 643L / 2136); -2441: -2441: static constexpr int max_digits10 = 0; -2441: -2441: static constexpr bool is_signed = ((char)(-1) < 0); -2441: static constexpr bool is_integer = true; -2441: static constexpr bool is_exact = true; -2441: static constexpr int radix = 2; -2441: -2441: static constexpr char -2441: epsilon() noexcept { return 0; } -2441: -2441: static constexpr char -2441: round_error() noexcept { return 0; } -2441: -2441: static constexpr int min_exponent = 0; -2441: static constexpr int min_exponent10 = 0; -2441: static constexpr int max_exponent = 0; -2441: static constexpr int max_exponent10 = 0; -2441: -2441: static constexpr bool has_infinity = false; -2441: static constexpr bool has_quiet_NaN = false; -2441: static constexpr bool has_signaling_NaN = false; -2441: static constexpr float_denorm_style has_denorm -2441: = denorm_absent; -2441: static constexpr bool has_denorm_loss = false; -2441: -2441: static constexpr -2441: char infinity() noexcept { return char(); } -2441: -2441: static constexpr char -2441: quiet_NaN() noexcept { return char(); } -2441: -2441: static constexpr char -2441: signaling_NaN() noexcept { return char(); } -2441: -2441: static constexpr char -2441: denorm_min() noexcept { return static_cast(0); } -2441: -2441: static constexpr bool is_iec559 = false; -2441: static constexpr bool is_bounded = true; -2441: static constexpr bool is_modulo = !is_signed; -2441: -2441: static constexpr bool traps = true; -2441: static constexpr bool tinyness_before = false; -2441: static constexpr float_round_style round_style -2441: = round_toward_zero; -2441: }; -2441: -2441: -2441: template<> -2441: struct numeric_limits -2441: { -2441: static constexpr bool is_specialized = true; -2441: -2441: static constexpr signed char -2441: min() noexcept { return -0x7f - 1; } -2441: -2441: static constexpr signed char -2441: max() noexcept { return 0x7f; } -2441: -2441: -2441: static constexpr signed char -2441: lowest() noexcept { return min(); } -2441: -2441: -2441: static constexpr int digits = (sizeof(signed char) * 8 - ((signed char)(-1) < 0)); -2441: static constexpr int digits10 -2441: = ((sizeof(signed char) * 8 - ((signed char)(-1) < 0)) * 643L / 2136); -2441: -2441: static constexpr int max_digits10 = 0; -2441: -2441: static constexpr bool is_signed = true; -2441: static constexpr bool is_integer = true; -2441: static constexpr bool is_exact = true; -2441: static constexpr int radix = 2; -2441: -2441: static constexpr signed char -2441: epsilon() noexcept { return 0; } -2441: -2441: static constexpr signed char -2441: round_error() noexcept { return 0; } -2441: -2441: static constexpr int min_exponent = 0; -2441: static constexpr int min_exponent10 = 0; -2441: static constexpr int max_exponent = 0; -2441: static constexpr int max_exponent10 = 0; -2441: -2441: static constexpr bool has_infinity = false; -2441: static constexpr bool has_quiet_NaN = false; -2441: static constexpr bool has_signaling_NaN = false; -2441: static constexpr float_denorm_style has_denorm -2441: = denorm_absent; -2441: static constexpr bool has_denorm_loss = false; -2441: -2441: static constexpr signed char -2441: infinity() noexcept { return static_cast(0); } -2441: -2441: static constexpr signed char -2441: quiet_NaN() noexcept { return static_cast(0); } -2441: -2441: static constexpr signed char -2441: signaling_NaN() noexcept -2441: { return static_cast(0); } -2441: -2441: static constexpr signed char -2441: denorm_min() noexcept -2441: { return static_cast(0); } -2441: -2441: static constexpr bool is_iec559 = false; -2441: static constexpr bool is_bounded = true; -2441: static constexpr bool is_modulo = false; -2441: -2441: static constexpr bool traps = true; -2441: static constexpr bool tinyness_before = false; -2441: static constexpr float_round_style round_style -2441: = round_toward_zero; -2441: }; -2441: -2441: -2441: template<> -2441: struct numeric_limits -2441: { -2441: static constexpr bool is_specialized = true; -2441: -2441: static constexpr unsigned char -2441: min() noexcept { return 0; } -2441: -2441: static constexpr unsigned char -2441: max() noexcept { return 0x7f * 2U + 1; } -2441: -2441: -2441: static constexpr unsigned char -2441: lowest() noexcept { return min(); } -2441: -2441: -2441: static constexpr int digits -2441: = (sizeof(unsigned char) * 8 - ((unsigned char)(-1) < 0)); -2441: static constexpr int digits10 -2441: = ((sizeof(unsigned char) * 8 - ((unsigned char)(-1) < 0)) * 643L / 2136); -2441: -2441: static constexpr int max_digits10 = 0; -2441: -2441: static constexpr bool is_signed = false; -2441: static constexpr bool is_integer = true; -2441: static constexpr bool is_exact = true; -2441: static constexpr int radix = 2; -2441: -2441: static constexpr unsigned char -2441: epsilon() noexcept { return 0; } -2441: -2441: static constexpr unsigned char -2441: round_error() noexcept { return 0; } -2441: -2441: static constexpr int min_exponent = 0; -2441: static constexpr int min_exponent10 = 0; -2441: static constexpr int max_exponent = 0; -2441: static constexpr int max_exponent10 = 0; -2441: -2441: static constexpr bool has_infinity = false; -2441: static constexpr bool has_quiet_NaN = false; -2441: static constexpr bool has_signaling_NaN = false; -2441: static constexpr float_denorm_style has_denorm -2441: = denorm_absent; -2441: static constexpr bool has_denorm_loss = false; -2441: -2441: static constexpr unsigned char -2441: infinity() noexcept -2441: { return static_cast(0); } -2441: -2441: static constexpr unsigned char -2441: quiet_NaN() noexcept -2441: { return static_cast(0); } -2441: -2441: static constexpr unsigned char -2441: signaling_NaN() noexcept -2441: { return static_cast(0); } -2441: -2441: static constexpr unsigned char -2441: denorm_min() noexcept -2441: { return static_cast(0); } -2441: -2441: static constexpr bool is_iec559 = false; -2441: static constexpr bool is_bounded = true; -2441: static constexpr bool is_modulo = true; -2441: -2441: static constexpr bool traps = true; -2441: static constexpr bool tinyness_before = false; -2441: static constexpr float_round_style round_style -2441: = round_toward_zero; -2441: }; -2441: -2441: -2441: template<> -2441: struct numeric_limits -2441: { -2441: static constexpr bool is_specialized = true; -2441: -2441: static constexpr wchar_t -2441: min() noexcept { return (((wchar_t)(-1) < 0) ? -(((wchar_t)(-1) < 0) ? (((((wchar_t)1 << ((sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(wchar_t)0) - 1 : (wchar_t)0); } -2441: -2441: static constexpr wchar_t -2441: max() noexcept { return (((wchar_t)(-1) < 0) ? (((((wchar_t)1 << ((sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(wchar_t)0); } -2441: -2441: -2441: static constexpr wchar_t -2441: lowest() noexcept { return min(); } -2441: -2441: -2441: static constexpr int digits = (sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)); -2441: static constexpr int digits10 -2441: = ((sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) * 643L / 2136); -2441: -2441: static constexpr int max_digits10 = 0; -2441: -2441: static constexpr bool is_signed = ((wchar_t)(-1) < 0); -2441: static constexpr bool is_integer = true; -2441: static constexpr bool is_exact = true; -2441: static constexpr int radix = 2; -2441: -2441: static constexpr wchar_t -2441: epsilon() noexcept { return 0; } -2441: -2441: static constexpr wchar_t -2441: round_error() noexcept { return 0; } -2441: -2441: static constexpr int min_exponent = 0; -2441: static constexpr int min_exponent10 = 0; -2441: static constexpr int max_exponent = 0; -2441: static constexpr int max_exponent10 = 0; -2441: -2441: static constexpr bool has_infinity = false; -2441: static constexpr bool has_quiet_NaN = false; -2441: static constexpr bool has_signaling_NaN = false; -2441: static constexpr float_denorm_style has_denorm -2441: = denorm_absent; -2441: static constexpr bool has_denorm_loss = false; -2441: -2441: static constexpr wchar_t -2441: infinity() noexcept { return wchar_t(); } -2441: -2441: static constexpr wchar_t -2441: quiet_NaN() noexcept { return wchar_t(); } -2441: -2441: static constexpr wchar_t -2441: signaling_NaN() noexcept { return wchar_t(); } -2441: -2441: static constexpr wchar_t -2441: denorm_min() noexcept { return wchar_t(); } -2441: -2441: static constexpr bool is_iec559 = false; -2441: static constexpr bool is_bounded = true; -2441: static constexpr bool is_modulo = !is_signed; -2441: -2441: static constexpr bool traps = true; -2441: static constexpr bool tinyness_before = false; -2441: static constexpr float_round_style round_style -2441: = round_toward_zero; -2441: }; -2441: -2441: -2441: -2441: template<> -2441: struct numeric_limits -2441: { -2441: static constexpr bool is_specialized = true; -2441: -2441: static constexpr char16_t -2441: min() noexcept { return (((char16_t)(-1) < 0) ? -(((char16_t)(-1) < 0) ? (((((char16_t)1 << ((sizeof(char16_t) * 8 - ((char16_t)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char16_t)0) - 1 : (char16_t)0); } -2441: -2441: static constexpr char16_t -2441: max() noexcept { return (((char16_t)(-1) < 0) ? (((((char16_t)1 << ((sizeof(char16_t) * 8 - ((char16_t)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char16_t)0); } -2441: -2441: static constexpr char16_t -2441: lowest() noexcept { return min(); } -2441: -2441: static constexpr int digits = (sizeof(char16_t) * 8 - ((char16_t)(-1) < 0)); -2441: static constexpr int digits10 = ((sizeof(char16_t) * 8 - ((char16_t)(-1) < 0)) * 643L / 2136); -2441: static constexpr int max_digits10 = 0; -2441: static constexpr bool is_signed = ((char16_t)(-1) < 0); -2441: static constexpr bool is_integer = true; -2441: static constexpr bool is_exact = true; -2441: static constexpr int radix = 2; -2441: -2441: static constexpr char16_t -2441: epsilon() noexcept { return 0; } -2441: -2441: static constexpr char16_t -2441: round_error() noexcept { return 0; } -2441: -2441: static constexpr int min_exponent = 0; -2441: static constexpr int min_exponent10 = 0; -2441: static constexpr int max_exponent = 0; -2441: static constexpr int max_exponent10 = 0; -2441: -2441: static constexpr bool has_infinity = false; -2441: static constexpr bool has_quiet_NaN = false; -2441: static constexpr bool has_signaling_NaN = false; -2441: static constexpr float_denorm_style has_denorm = denorm_absent; -2441: static constexpr bool has_denorm_loss = false; -2441: -2441: static constexpr char16_t -2441: infinity() noexcept { return char16_t(); } -2441: -2441: static constexpr char16_t -2441: quiet_NaN() noexcept { return char16_t(); } -2441: -2441: static constexpr char16_t -2441: signaling_NaN() noexcept { return char16_t(); } -2441: -2441: static constexpr char16_t -2441: denorm_min() noexcept { return char16_t(); } -2441: -2441: static constexpr bool is_iec559 = false; -2441: static constexpr bool is_bounded = true; -2441: static constexpr bool is_modulo = !is_signed; -2441: -2441: static constexpr bool traps = true; -2441: static constexpr bool tinyness_before = false; -2441: static constexpr float_round_style round_style = round_toward_zero; -2441: }; -2441: -2441: -2441: template<> -2441: struct numeric_limits -2441: { -2441: static constexpr bool is_specialized = true; -2441: -2441: static constexpr char32_t -2441: min() noexcept { return (((char32_t)(-1) < 0) ? -(((char32_t)(-1) < 0) ? (((((char32_t)1 << ((sizeof(char32_t) * 8 - ((char32_t)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char32_t)0) - 1 : (char32_t)0); } -2441: -2441: static constexpr char32_t -2441: max() noexcept { return (((char32_t)(-1) < 0) ? (((((char32_t)1 << ((sizeof(char32_t) * 8 - ((char32_t)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char32_t)0); } -2441: -2441: static constexpr char32_t -2441: lowest() noexcept { return min(); } -2441: -2441: static constexpr int digits = (sizeof(char32_t) * 8 - ((char32_t)(-1) < 0)); -2441: static constexpr int digits10 = ((sizeof(char32_t) * 8 - ((char32_t)(-1) < 0)) * 643L / 2136); -2441: static constexpr int max_digits10 = 0; -2441: static constexpr bool is_signed = ((char32_t)(-1) < 0); -2441: static constexpr bool is_integer = true; -2441: static constexpr bool is_exact = true; -2441: static constexpr int radix = 2; -2441: -2441: static constexpr char32_t -2441: epsilon() noexcept { return 0; } -2441: -2441: static constexpr char32_t -2441: round_error() noexcept { return 0; } -2441: -2441: static constexpr int min_exponent = 0; -2441: static constexpr int min_exponent10 = 0; -2441: static constexpr int max_exponent = 0; -2441: static constexpr int max_exponent10 = 0; -2441: -2441: static constexpr bool has_infinity = false; -2441: static constexpr bool has_quiet_NaN = false; -2441: static constexpr bool has_signaling_NaN = false; -2441: static constexpr float_denorm_style has_denorm = denorm_absent; -2441: static constexpr bool has_denorm_loss = false; -2441: -2441: static constexpr char32_t -2441: infinity() noexcept { return char32_t(); } -2441: -2441: static constexpr char32_t -2441: quiet_NaN() noexcept { return char32_t(); } -2441: -2441: static constexpr char32_t -2441: signaling_NaN() noexcept { return char32_t(); } -2441: -2441: static constexpr char32_t -2441: denorm_min() noexcept { return char32_t(); } -2441: -2441: static constexpr bool is_iec559 = false; -2441: static constexpr bool is_bounded = true; -2441: static constexpr bool is_modulo = !is_signed; -2441: -2441: static constexpr bool traps = true; -2441: static constexpr bool tinyness_before = false; -2441: static constexpr float_round_style round_style = round_toward_zero; -2441: }; -2441: -2441: -2441: -2441: template<> -2441: struct numeric_limits -2441: { -2441: static constexpr bool is_specialized = true; -2441: -2441: static constexpr short -2441: min() noexcept { return -0x7fff - 1; } -2441: -2441: static constexpr short -2441: max() noexcept { return 0x7fff; } -2441: -2441: -2441: static constexpr short -2441: lowest() noexcept { return min(); } -2441: -2441: -2441: static constexpr int digits = (sizeof(short) * 8 - ((short)(-1) < 0)); -2441: static constexpr int digits10 = ((sizeof(short) * 8 - ((short)(-1) < 0)) * 643L / 2136); -2441: -2441: static constexpr int max_digits10 = 0; -2441: -2441: static constexpr bool is_signed = true; -2441: static constexpr bool is_integer = true; -2441: static constexpr bool is_exact = true; -2441: static constexpr int radix = 2; -2441: -2441: static constexpr short -2441: epsilon() noexcept { return 0; } -2441: -2441: static constexpr short -2441: round_error() noexcept { return 0; } -2441: -2441: static constexpr int min_exponent = 0; -2441: static constexpr int min_exponent10 = 0; -2441: static constexpr int max_exponent = 0; -2441: static constexpr int max_exponent10 = 0; -2441: -2441: static constexpr bool has_infinity = false; -2441: static constexpr bool has_quiet_NaN = false; -2441: static constexpr bool has_signaling_NaN = false; -2441: static constexpr float_denorm_style has_denorm -2441: = denorm_absent; -2441: static constexpr bool has_denorm_loss = false; -2441: -2441: static constexpr short -2441: infinity() noexcept { return short(); } -2441: -2441: static constexpr short -2441: quiet_NaN() noexcept { return short(); } -2441: -2441: static constexpr short -2441: signaling_NaN() noexcept { return short(); } -2441: -2441: static constexpr short -2441: denorm_min() noexcept { return short(); } -2441: -2441: static constexpr bool is_iec559 = false; -2441: static constexpr bool is_bounded = true; -2441: static constexpr bool is_modulo = false; -2441: -2441: static constexpr bool traps = true; -2441: static constexpr bool tinyness_before = false; -2441: static constexpr float_round_style round_style -2441: = round_toward_zero; -2441: }; -2441: -2441: -2441: template<> -2441: struct numeric_limits -2441: { -2441: static constexpr bool is_specialized = true; -2441: -2441: static constexpr unsigned short -2441: min() noexcept { return 0; } -2441: -2441: static constexpr unsigned short -2441: max() noexcept { return 0x7fff * 2U + 1; } -2441: -2441: -2441: static constexpr unsigned short -2441: lowest() noexcept { return min(); } -2441: -2441: -2441: static constexpr int digits -2441: = (sizeof(unsigned short) * 8 - ((unsigned short)(-1) < 0)); -2441: static constexpr int digits10 -2441: = ((sizeof(unsigned short) * 8 - ((unsigned short)(-1) < 0)) * 643L / 2136); -2441: -2441: static constexpr int max_digits10 = 0; -2441: -2441: static constexpr bool is_signed = false; -2441: static constexpr bool is_integer = true; -2441: static constexpr bool is_exact = true; -2441: static constexpr int radix = 2; -2441: -2441: static constexpr unsigned short -2441: epsilon() noexcept { return 0; } -2441: -2441: static constexpr unsigned short -2441: round_error() noexcept { return 0; } -2441: -2441: static constexpr int min_exponent = 0; -2441: static constexpr int min_exponent10 = 0; -2441: static constexpr int max_exponent = 0; -2441: static constexpr int max_exponent10 = 0; -2441: -2441: static constexpr bool has_infinity = false; -2441: static constexpr bool has_quiet_NaN = false; -2441: static constexpr bool has_signaling_NaN = false; -2441: static constexpr float_denorm_style has_denorm -2441: = denorm_absent; -2441: static constexpr bool has_denorm_loss = false; -2441: -2441: static constexpr unsigned short -2441: infinity() noexcept -2441: { return static_cast(0); } -2441: -2441: static constexpr unsigned short -2441: quiet_NaN() noexcept -2441: { return static_cast(0); } -2441: -2441: static constexpr unsigned short -2441: signaling_NaN() noexcept -2441: { return static_cast(0); } -2441: -2441: static constexpr unsigned short -2441: denorm_min() noexcept -2441: { return static_cast(0); } -2441: -2441: static constexpr bool is_iec559 = false; -2441: static constexpr bool is_bounded = true; -2441: static constexpr bool is_modulo = true; -2441: -2441: static constexpr bool traps = true; -2441: static constexpr bool tinyness_before = false; -2441: static constexpr float_round_style round_style -2441: = round_toward_zero; -2441: }; -2441: -2441: -2441: template<> -2441: struct numeric_limits -2441: { -2441: static constexpr bool is_specialized = true; -2441: -2441: static constexpr int -2441: min() noexcept { return -0x7fffffff - 1; } -2441: -2441: static constexpr int -2441: max() noexcept { return 0x7fffffff; } -2441: -2441: -2441: static constexpr int -2441: lowest() noexcept { return min(); } -2441: -2441: -2441: static constexpr int digits = (sizeof(int) * 8 - ((int)(-1) < 0)); -2441: static constexpr int digits10 = ((sizeof(int) * 8 - ((int)(-1) < 0)) * 643L / 2136); -2441: -2441: static constexpr int max_digits10 = 0; -2441: -2441: static constexpr bool is_signed = true; -2441: static constexpr bool is_integer = true; -2441: static constexpr bool is_exact = true; -2441: static constexpr int radix = 2; -2441: -2441: static constexpr int -2441: epsilon() noexcept { return 0; } -2441: -2441: static constexpr int -2441: round_error() noexcept { return 0; } -2441: -2441: static constexpr int min_exponent = 0; -2441: static constexpr int min_exponent10 = 0; -2441: static constexpr int max_exponent = 0; -2441: static constexpr int max_exponent10 = 0; -2441: -2441: static constexpr bool has_infinity = false; -2441: static constexpr bool has_quiet_NaN = false; -2441: static constexpr bool has_signaling_NaN = false; -2441: static constexpr float_denorm_style has_denorm -2441: = denorm_absent; -2441: static constexpr bool has_denorm_loss = false; -2441: -2441: static constexpr int -2441: infinity() noexcept { return static_cast(0); } -2441: -2441: static constexpr int -2441: quiet_NaN() noexcept { return static_cast(0); } -2441: -2441: static constexpr int -2441: signaling_NaN() noexcept { return static_cast(0); } -2441: -2441: static constexpr int -2441: denorm_min() noexcept { return static_cast(0); } -2441: -2441: static constexpr bool is_iec559 = false; -2441: static constexpr bool is_bounded = true; -2441: static constexpr bool is_modulo = false; -2441: -2441: static constexpr bool traps = true; -2441: static constexpr bool tinyness_before = false; -2441: static constexpr float_round_style round_style -2441: = round_toward_zero; -2441: }; -2441: -2441: -2441: template<> -2441: struct numeric_limits -2441: { -2441: static constexpr bool is_specialized = true; -2441: -2441: static constexpr unsigned int -2441: min() noexcept { return 0; } -2441: -2441: static constexpr unsigned int -2441: max() noexcept { return 0x7fffffff * 2U + 1; } -2441: -2441: -2441: static constexpr unsigned int -2441: lowest() noexcept { return min(); } -2441: -2441: -2441: static constexpr int digits -2441: = (sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0)); -2441: static constexpr int digits10 -2441: = ((sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0)) * 643L / 2136); -2441: -2441: static constexpr int max_digits10 = 0; -2441: -2441: static constexpr bool is_signed = false; -2441: static constexpr bool is_integer = true; -2441: static constexpr bool is_exact = true; -2441: static constexpr int radix = 2; -2441: -2441: static constexpr unsigned int -2441: epsilon() noexcept { return 0; } -2441: -2441: static constexpr unsigned int -2441: round_error() noexcept { return 0; } -2441: -2441: static constexpr int min_exponent = 0; -2441: static constexpr int min_exponent10 = 0; -2441: static constexpr int max_exponent = 0; -2441: static constexpr int max_exponent10 = 0; -2441: -2441: static constexpr bool has_infinity = false; -2441: static constexpr bool has_quiet_NaN = false; -2441: static constexpr bool has_signaling_NaN = false; -2441: static constexpr float_denorm_style has_denorm -2441: = denorm_absent; -2441: static constexpr bool has_denorm_loss = false; -2441: -2441: static constexpr unsigned int -2441: infinity() noexcept { return static_cast(0); } -2441: -2441: static constexpr unsigned int -2441: quiet_NaN() noexcept -2441: { return static_cast(0); } -2441: -2441: static constexpr unsigned int -2441: signaling_NaN() noexcept -2441: { return static_cast(0); } -2441: -2441: static constexpr unsigned int -2441: denorm_min() noexcept -2441: { return static_cast(0); } -2441: -2441: static constexpr bool is_iec559 = false; -2441: static constexpr bool is_bounded = true; -2441: static constexpr bool is_modulo = true; -2441: -2441: static constexpr bool traps = true; -2441: static constexpr bool tinyness_before = false; -2441: static constexpr float_round_style round_style -2441: = round_toward_zero; -2441: }; -2441: -2441: -2441: template<> -2441: struct numeric_limits -2441: { -2441: static constexpr bool is_specialized = true; -2441: -2441: static constexpr long -2441: min() noexcept { return -0x7fffffffL - 1; } -2441: -2441: static constexpr long -2441: max() noexcept { return 0x7fffffffL; } -2441: -2441: -2441: static constexpr long -2441: lowest() noexcept { return min(); } -2441: -2441: -2441: static constexpr int digits = (sizeof(long) * 8 - ((long)(-1) < 0)); -2441: static constexpr int digits10 = ((sizeof(long) * 8 - ((long)(-1) < 0)) * 643L / 2136); -2441: -2441: static constexpr int max_digits10 = 0; -2441: -2441: static constexpr bool is_signed = true; -2441: static constexpr bool is_integer = true; -2441: static constexpr bool is_exact = true; -2441: static constexpr int radix = 2; -2441: -2441: static constexpr long -2441: epsilon() noexcept { return 0; } -2441: -2441: static constexpr long -2441: round_error() noexcept { return 0; } -2441: -2441: static constexpr int min_exponent = 0; -2441: static constexpr int min_exponent10 = 0; -2441: static constexpr int max_exponent = 0; -2441: static constexpr int max_exponent10 = 0; -2441: -2441: static constexpr bool has_infinity = false; -2441: static constexpr bool has_quiet_NaN = false; -2441: static constexpr bool has_signaling_NaN = false; -2441: static constexpr float_denorm_style has_denorm -2441: = denorm_absent; -2441: static constexpr bool has_denorm_loss = false; -2441: -2441: static constexpr long -2441: infinity() noexcept { return static_cast(0); } -2441: -2441: static constexpr long -2441: quiet_NaN() noexcept { return static_cast(0); } -2441: -2441: static constexpr long -2441: signaling_NaN() noexcept { return static_cast(0); } -2441: -2441: static constexpr long -2441: denorm_min() noexcept { return static_cast(0); } -2441: -2441: static constexpr bool is_iec559 = false; -2441: static constexpr bool is_bounded = true; -2441: static constexpr bool is_modulo = false; -2441: -2441: static constexpr bool traps = true; -2441: static constexpr bool tinyness_before = false; -2441: static constexpr float_round_style round_style -2441: = round_toward_zero; -2441: }; -2441: -2441: -2441: template<> -2441: struct numeric_limits -2441: { -2441: static constexpr bool is_specialized = true; -2441: -2441: static constexpr unsigned long -2441: min() noexcept { return 0; } -2441: -2441: static constexpr unsigned long -2441: max() noexcept { return 0x7fffffffL * 2UL + 1; } -2441: -2441: -2441: static constexpr unsigned long -2441: lowest() noexcept { return min(); } -2441: -2441: -2441: static constexpr int digits -2441: = (sizeof(unsigned long) * 8 - ((unsigned long)(-1) < 0)); -2441: static constexpr int digits10 -2441: = ((sizeof(unsigned long) * 8 - ((unsigned long)(-1) < 0)) * 643L / 2136); -2441: -2441: static constexpr int max_digits10 = 0; -2441: -2441: static constexpr bool is_signed = false; -2441: static constexpr bool is_integer = true; -2441: static constexpr bool is_exact = true; -2441: static constexpr int radix = 2; -2441: -2441: static constexpr unsigned long -2441: epsilon() noexcept { return 0; } -2441: -2441: static constexpr unsigned long -2441: round_error() noexcept { return 0; } -2441: -2441: static constexpr int min_exponent = 0; -2441: static constexpr int min_exponent10 = 0; -2441: static constexpr int max_exponent = 0; -2441: static constexpr int max_exponent10 = 0; -2441: -2441: static constexpr bool has_infinity = false; -2441: static constexpr bool has_quiet_NaN = false; -2441: static constexpr bool has_signaling_NaN = false; -2441: static constexpr float_denorm_style has_denorm -2441: = denorm_absent; -2441: static constexpr bool has_denorm_loss = false; -2441: -2441: static constexpr unsigned long -2441: infinity() noexcept -2441: { return static_cast(0); } -2441: -2441: static constexpr unsigned long -2441: quiet_NaN() noexcept -2441: { return static_cast(0); } -2441: -2441: static constexpr unsigned long -2441: signaling_NaN() noexcept -2441: { return static_cast(0); } -2441: -2441: static constexpr unsigned long -2441: denorm_min() noexcept -2441: { return static_cast(0); } -2441: -2441: static constexpr bool is_iec559 = false; -2441: static constexpr bool is_bounded = true; -2441: static constexpr bool is_modulo = true; -2441: -2441: static constexpr bool traps = true; -2441: static constexpr bool tinyness_before = false; -2441: static constexpr float_round_style round_style -2441: = round_toward_zero; -2441: }; -2441: -2441: -2441: template<> -2441: struct numeric_limits -2441: { -2441: static constexpr bool is_specialized = true; -2441: -2441: static constexpr long long -2441: min() noexcept { return -0x7fffffffffffffffLL - 1; } -2441: -2441: static constexpr long long -2441: max() noexcept { return 0x7fffffffffffffffLL; } -2441: -2441: -2441: static constexpr long long -2441: lowest() noexcept { return min(); } -2441: -2441: -2441: static constexpr int digits -2441: = (sizeof(long long) * 8 - ((long long)(-1) < 0)); -2441: static constexpr int digits10 -2441: = ((sizeof(long long) * 8 - ((long long)(-1) < 0)) * 643L / 2136); -2441: -2441: static constexpr int max_digits10 = 0; -2441: -2441: static constexpr bool is_signed = true; -2441: static constexpr bool is_integer = true; -2441: static constexpr bool is_exact = true; -2441: static constexpr int radix = 2; -2441: -2441: static constexpr long long -2441: epsilon() noexcept { return 0; } -2441: -2441: static constexpr long long -2441: round_error() noexcept { return 0; } -2441: -2441: static constexpr int min_exponent = 0; -2441: static constexpr int min_exponent10 = 0; -2441: static constexpr int max_exponent = 0; -2441: static constexpr int max_exponent10 = 0; -2441: -2441: static constexpr bool has_infinity = false; -2441: static constexpr bool has_quiet_NaN = false; -2441: static constexpr bool has_signaling_NaN = false; -2441: static constexpr float_denorm_style has_denorm -2441: = denorm_absent; -2441: static constexpr bool has_denorm_loss = false; -2441: -2441: static constexpr long long -2441: infinity() noexcept { return static_cast(0); } -2441: -2441: static constexpr long long -2441: quiet_NaN() noexcept { return static_cast(0); } -2441: -2441: static constexpr long long -2441: signaling_NaN() noexcept -2441: { return static_cast(0); } -2441: -2441: static constexpr long long -2441: denorm_min() noexcept { return static_cast(0); } -2441: -2441: static constexpr bool is_iec559 = false; -2441: static constexpr bool is_bounded = true; -2441: static constexpr bool is_modulo = false; -2441: -2441: static constexpr bool traps = true; -2441: static constexpr bool tinyness_before = false; -2441: static constexpr float_round_style round_style -2441: = round_toward_zero; -2441: }; -2441: -2441: -2441: template<> -2441: struct numeric_limits -2441: { -2441: static constexpr bool is_specialized = true; -2441: -2441: static constexpr unsigned long long -2441: min() noexcept { return 0; } -2441: -2441: static constexpr unsigned long long -2441: max() noexcept { return 0x7fffffffffffffffLL * 2ULL + 1; } -2441: -2441: -2441: static constexpr unsigned long long -2441: lowest() noexcept { return min(); } -2441: -2441: -2441: static constexpr int digits -2441: = (sizeof(unsigned long long) * 8 - ((unsigned long long)(-1) < 0)); -2441: static constexpr int digits10 -2441: = ((sizeof(unsigned long long) * 8 - ((unsigned long long)(-1) < 0)) * 643L / 2136); -2441: -2441: static constexpr int max_digits10 = 0; -2441: -2441: static constexpr bool is_signed = false; -2441: static constexpr bool is_integer = true; -2441: static constexpr bool is_exact = true; -2441: static constexpr int radix = 2; -2441: -2441: static constexpr unsigned long long -2441: epsilon() noexcept { return 0; } -2441: -2441: static constexpr unsigned long long -2441: round_error() noexcept { return 0; } -2441: -2441: static constexpr int min_exponent = 0; -2441: static constexpr int min_exponent10 = 0; -2441: static constexpr int max_exponent = 0; -2441: static constexpr int max_exponent10 = 0; -2441: -2441: static constexpr bool has_infinity = false; -2441: static constexpr bool has_quiet_NaN = false; -2441: static constexpr bool has_signaling_NaN = false; -2441: static constexpr float_denorm_style has_denorm -2441: = denorm_absent; -2441: static constexpr bool has_denorm_loss = false; -2441: -2441: static constexpr unsigned long long -2441: infinity() noexcept -2441: { return static_cast(0); } -2441: -2441: static constexpr unsigned long long -2441: quiet_NaN() noexcept -2441: { return static_cast(0); } -2441: -2441: static constexpr unsigned long long -2441: signaling_NaN() noexcept -2441: { return static_cast(0); } -2441: -2441: static constexpr unsigned long long -2441: denorm_min() noexcept -2441: { return static_cast(0); } -2441: -2441: static constexpr bool is_iec559 = false; -2441: static constexpr bool is_bounded = true; -2441: static constexpr bool is_modulo = true; -2441: -2441: static constexpr bool traps = true; -2441: static constexpr bool tinyness_before = false; -2441: static constexpr float_round_style round_style -2441: = round_toward_zero; -2441: }; -2441: # 1593 "/usr/include/c++/8/limits" 3 -2441: template<> -2441: struct numeric_limits -2441: { -2441: static constexpr bool is_specialized = true; -2441: -2441: static constexpr float -2441: min() noexcept { return 1.17549435082228750796873653722224568e-38F; } -2441: -2441: static constexpr float -2441: max() noexcept { return 3.40282346638528859811704183484516925e+38F; } -2441: -2441: -2441: static constexpr float -2441: lowest() noexcept { return -3.40282346638528859811704183484516925e+38F; } -2441: -2441: -2441: static constexpr int digits = 24; -2441: static constexpr int digits10 = 6; -2441: -2441: static constexpr int max_digits10 -2441: = (2 + (24) * 643L / 2136); -2441: -2441: static constexpr bool is_signed = true; -2441: static constexpr bool is_integer = false; -2441: static constexpr bool is_exact = false; -2441: static constexpr int radix = 2; -2441: -2441: static constexpr float -2441: epsilon() noexcept { return 1.19209289550781250000000000000000000e-7F; } -2441: -2441: static constexpr float -2441: round_error() noexcept { return 0.5F; } -2441: -2441: static constexpr int min_exponent = (-125); -2441: static constexpr int min_exponent10 = (-37); -2441: static constexpr int max_exponent = 128; -2441: static constexpr int max_exponent10 = 38; -2441: -2441: static constexpr bool has_infinity = 1; -2441: static constexpr bool has_quiet_NaN = 1; -2441: static constexpr bool has_signaling_NaN = has_quiet_NaN; -2441: static constexpr float_denorm_style has_denorm -2441: = bool(1) ? denorm_present : denorm_absent; -2441: static constexpr bool has_denorm_loss -2441: = false; -2441: -2441: static constexpr float -2441: infinity() noexcept { return __builtin_huge_valf(); } -2441: -2441: static constexpr float -2441: quiet_NaN() noexcept { return __builtin_nanf(""); } -2441: -2441: static constexpr float -2441: signaling_NaN() noexcept { return __builtin_nansf(""); } -2441: -2441: static constexpr float -2441: denorm_min() noexcept { return 1.40129846432481707092372958328991613e-45F; } -2441: -2441: static constexpr bool is_iec559 -2441: = has_infinity && has_quiet_NaN && has_denorm == denorm_present; -2441: static constexpr bool is_bounded = true; -2441: static constexpr bool is_modulo = false; -2441: -2441: static constexpr bool traps = false; -2441: static constexpr bool tinyness_before -2441: = false; -2441: static constexpr float_round_style round_style -2441: = round_to_nearest; -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: template<> -2441: struct numeric_limits -2441: { -2441: static constexpr bool is_specialized = true; -2441: -2441: static constexpr double -2441: min() noexcept { return double(2.22507385850720138309023271733240406e-308L); } -2441: -2441: static constexpr double -2441: max() noexcept { return double(1.79769313486231570814527423731704357e+308L); } -2441: -2441: -2441: static constexpr double -2441: lowest() noexcept { return -double(1.79769313486231570814527423731704357e+308L); } -2441: -2441: -2441: static constexpr int digits = 53; -2441: static constexpr int digits10 = 15; -2441: -2441: static constexpr int max_digits10 -2441: = (2 + (53) * 643L / 2136); -2441: -2441: static constexpr bool is_signed = true; -2441: static constexpr bool is_integer = false; -2441: static constexpr bool is_exact = false; -2441: static constexpr int radix = 2; -2441: -2441: static constexpr double -2441: epsilon() noexcept { return double(2.22044604925031308084726333618164062e-16L); } -2441: -2441: static constexpr double -2441: round_error() noexcept { return 0.5; } -2441: -2441: static constexpr int min_exponent = (-1021); -2441: static constexpr int min_exponent10 = (-307); -2441: static constexpr int max_exponent = 1024; -2441: static constexpr int max_exponent10 = 308; -2441: -2441: static constexpr bool has_infinity = 1; -2441: static constexpr bool has_quiet_NaN = 1; -2441: static constexpr bool has_signaling_NaN = has_quiet_NaN; -2441: static constexpr float_denorm_style has_denorm -2441: = bool(1) ? denorm_present : denorm_absent; -2441: static constexpr bool has_denorm_loss -2441: = false; -2441: -2441: static constexpr double -2441: infinity() noexcept { return __builtin_huge_val(); } -2441: -2441: static constexpr double -2441: quiet_NaN() noexcept { return __builtin_nan(""); } -2441: -2441: static constexpr double -2441: signaling_NaN() noexcept { return __builtin_nans(""); } -2441: -2441: static constexpr double -2441: denorm_min() noexcept { return double(4.94065645841246544176568792868221372e-324L); } -2441: -2441: static constexpr bool is_iec559 -2441: = has_infinity && has_quiet_NaN && has_denorm == denorm_present; -2441: static constexpr bool is_bounded = true; -2441: static constexpr bool is_modulo = false; -2441: -2441: static constexpr bool traps = false; -2441: static constexpr bool tinyness_before -2441: = false; -2441: static constexpr float_round_style round_style -2441: = round_to_nearest; -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: template<> -2441: struct numeric_limits -2441: { -2441: static constexpr bool is_specialized = true; -2441: -2441: static constexpr long double -2441: min() noexcept { return 3.36210314311209350626267781732175260e-4932L; } -2441: -2441: static constexpr long double -2441: max() noexcept { return 1.18973149535723176502126385303097021e+4932L; } -2441: -2441: -2441: static constexpr long double -2441: lowest() noexcept { return -1.18973149535723176502126385303097021e+4932L; } -2441: -2441: -2441: static constexpr int digits = 64; -2441: static constexpr int digits10 = 18; -2441: -2441: static constexpr int max_digits10 -2441: = (2 + (64) * 643L / 2136); -2441: -2441: static constexpr bool is_signed = true; -2441: static constexpr bool is_integer = false; -2441: static constexpr bool is_exact = false; -2441: static constexpr int radix = 2; -2441: -2441: static constexpr long double -2441: epsilon() noexcept { return 1.08420217248550443400745280086994171e-19L; } -2441: -2441: static constexpr long double -2441: round_error() noexcept { return 0.5L; } -2441: -2441: static constexpr int min_exponent = (-16381); -2441: static constexpr int min_exponent10 = (-4931); -2441: static constexpr int max_exponent = 16384; -2441: static constexpr int max_exponent10 = 4932; -2441: -2441: static constexpr bool has_infinity = 1; -2441: static constexpr bool has_quiet_NaN = 1; -2441: static constexpr bool has_signaling_NaN = has_quiet_NaN; -2441: static constexpr float_denorm_style has_denorm -2441: = bool(1) ? denorm_present : denorm_absent; -2441: static constexpr bool has_denorm_loss -2441: = false; -2441: -2441: static constexpr long double -2441: infinity() noexcept { return __builtin_huge_vall(); } -2441: -2441: static constexpr long double -2441: quiet_NaN() noexcept { return __builtin_nanl(""); } -2441: -2441: static constexpr long double -2441: signaling_NaN() noexcept { return __builtin_nansl(""); } -2441: -2441: static constexpr long double -2441: denorm_min() noexcept { return 3.64519953188247460252840593361941982e-4951L; } -2441: -2441: static constexpr bool is_iec559 -2441: = has_infinity && has_quiet_NaN && has_denorm == denorm_present; -2441: static constexpr bool is_bounded = true; -2441: static constexpr bool is_modulo = false; -2441: -2441: static constexpr bool traps = false; -2441: static constexpr bool tinyness_before = -2441: false; -2441: static constexpr float_round_style round_style = -2441: round_to_nearest; -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: } -2441: # 38 "/usr/include/gmpxx.h" 2 3 4 -2441: # 1 "/usr/include/c++/8/utility" 1 3 4 -2441: # 58 "/usr/include/c++/8/utility" 3 4 -2441: -2441: # 59 "/usr/include/c++/8/utility" 3 -2441: # 69 "/usr/include/c++/8/utility" 3 -2441: # 1 "/usr/include/c++/8/bits/stl_relops.h" 1 3 -2441: # 67 "/usr/include/c++/8/bits/stl_relops.h" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: namespace rel_ops -2441: { -2441: # 85 "/usr/include/c++/8/bits/stl_relops.h" 3 -2441: template -2441: inline bool -2441: operator!=(const _Tp& __x, const _Tp& __y) -2441: { return !(__x == __y); } -2441: # 98 "/usr/include/c++/8/bits/stl_relops.h" 3 -2441: template -2441: inline bool -2441: operator>(const _Tp& __x, const _Tp& __y) -2441: { return __y < __x; } -2441: # 111 "/usr/include/c++/8/bits/stl_relops.h" 3 -2441: template -2441: inline bool -2441: operator<=(const _Tp& __x, const _Tp& __y) -2441: { return !(__y < __x); } -2441: # 124 "/usr/include/c++/8/bits/stl_relops.h" 3 -2441: template -2441: inline bool -2441: operator>=(const _Tp& __x, const _Tp& __y) -2441: { return !(__x < __y); } -2441: } -2441: -2441: -2441: } -2441: # 70 "/usr/include/c++/8/utility" 2 3 -2441: # 1 "/usr/include/c++/8/bits/stl_pair.h" 1 3 -2441: # 59 "/usr/include/c++/8/bits/stl_pair.h" 3 -2441: # 1 "/usr/include/c++/8/bits/move.h" 1 3 -2441: # 34 "/usr/include/c++/8/bits/move.h" 3 -2441: # 1 "/usr/include/c++/8/bits/concept_check.h" 1 3 -2441: # 33 "/usr/include/c++/8/bits/concept_check.h" 3 -2441: -2441: # 34 "/usr/include/c++/8/bits/concept_check.h" 3 -2441: # 35 "/usr/include/c++/8/bits/move.h" 2 3 -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline constexpr _Tp* -2441: __addressof(_Tp& __r) noexcept -2441: { return __builtin_addressof(__r); } -2441: -2441: -2441: -2441: -2441: } -2441: -2441: # 1 "/usr/include/c++/8/type_traits" 1 3 -2441: # 32 "/usr/include/c++/8/type_traits" 3 -2441: -2441: # 33 "/usr/include/c++/8/type_traits" 3 -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: # 56 "/usr/include/c++/8/type_traits" 3 -2441: template -2441: struct integral_constant -2441: { -2441: static constexpr _Tp value = __v; -2441: typedef _Tp value_type; -2441: typedef integral_constant<_Tp, __v> type; -2441: constexpr operator value_type() const noexcept { return value; } -2441: -2441: -2441: -2441: -2441: constexpr value_type operator()() const noexcept { return value; } -2441: -2441: }; -2441: -2441: template -2441: constexpr _Tp integral_constant<_Tp, __v>::value; -2441: -2441: -2441: typedef integral_constant true_type; -2441: -2441: -2441: typedef integral_constant false_type; -2441: -2441: template -2441: using __bool_constant = integral_constant; -2441: # 91 "/usr/include/c++/8/type_traits" 3 -2441: template -2441: struct conditional; -2441: -2441: template -2441: struct __or_; -2441: -2441: template<> -2441: struct __or_<> -2441: : public false_type -2441: { }; -2441: -2441: template -2441: struct __or_<_B1> -2441: : public _B1 -2441: { }; -2441: -2441: template -2441: struct __or_<_B1, _B2> -2441: : public conditional<_B1::value, _B1, _B2>::type -2441: { }; -2441: -2441: template -2441: struct __or_<_B1, _B2, _B3, _Bn...> -2441: : public conditional<_B1::value, _B1, __or_<_B2, _B3, _Bn...>>::type -2441: { }; -2441: -2441: template -2441: struct __and_; -2441: -2441: template<> -2441: struct __and_<> -2441: : public true_type -2441: { }; -2441: -2441: template -2441: struct __and_<_B1> -2441: : public _B1 -2441: { }; -2441: -2441: template -2441: struct __and_<_B1, _B2> -2441: : public conditional<_B1::value, _B2, _B1>::type -2441: { }; -2441: -2441: template -2441: struct __and_<_B1, _B2, _B3, _Bn...> -2441: : public conditional<_B1::value, __and_<_B2, _B3, _Bn...>, _B1>::type -2441: { }; -2441: -2441: template -2441: struct __not_ -2441: : public __bool_constant -2441: { }; -2441: # 180 "/usr/include/c++/8/type_traits" 3 -2441: template -2441: struct __success_type -2441: { typedef _Tp type; }; -2441: -2441: struct __failure_type -2441: { }; -2441: -2441: -2441: -2441: template -2441: struct remove_cv; -2441: -2441: template -2441: struct __is_void_helper -2441: : public false_type { }; -2441: -2441: template<> -2441: struct __is_void_helper -2441: : public true_type { }; -2441: -2441: -2441: template -2441: struct is_void -2441: : public __is_void_helper::type>::type -2441: { }; -2441: -2441: template -2441: struct __is_integral_helper -2441: : public false_type { }; -2441: -2441: template<> -2441: struct __is_integral_helper -2441: : public true_type { }; -2441: -2441: template<> -2441: struct __is_integral_helper -2441: : public true_type { }; -2441: -2441: template<> -2441: struct __is_integral_helper -2441: : public true_type { }; -2441: -2441: template<> -2441: struct __is_integral_helper -2441: : public true_type { }; -2441: -2441: -2441: template<> -2441: struct __is_integral_helper -2441: : public true_type { }; -2441: -2441: -2441: template<> -2441: struct __is_integral_helper -2441: : public true_type { }; -2441: -2441: template<> -2441: struct __is_integral_helper -2441: : public true_type { }; -2441: -2441: template<> -2441: struct __is_integral_helper -2441: : public true_type { }; -2441: -2441: template<> -2441: struct __is_integral_helper -2441: : public true_type { }; -2441: -2441: template<> -2441: struct __is_integral_helper -2441: : public true_type { }; -2441: -2441: template<> -2441: struct __is_integral_helper -2441: : public true_type { }; -2441: -2441: template<> -2441: struct __is_integral_helper -2441: : public true_type { }; -2441: -2441: template<> -2441: struct __is_integral_helper -2441: : public true_type { }; -2441: -2441: template<> -2441: struct __is_integral_helper -2441: : public true_type { }; -2441: -2441: template<> -2441: struct __is_integral_helper -2441: : public true_type { }; -2441: # 312 "/usr/include/c++/8/type_traits" 3 -2441: template -2441: struct is_integral -2441: : public __is_integral_helper::type>::type -2441: { }; -2441: -2441: template -2441: struct __is_floating_point_helper -2441: : public false_type { }; -2441: -2441: template<> -2441: struct __is_floating_point_helper -2441: : public true_type { }; -2441: -2441: template<> -2441: struct __is_floating_point_helper -2441: : public true_type { }; -2441: -2441: template<> -2441: struct __is_floating_point_helper -2441: : public true_type { }; -2441: -2441: -2441: template<> -2441: struct __is_floating_point_helper<__float128> -2441: : public true_type { }; -2441: -2441: -2441: -2441: template -2441: struct is_floating_point -2441: : public __is_floating_point_helper::type>::type -2441: { }; -2441: -2441: -2441: template -2441: struct is_array -2441: : public false_type { }; -2441: -2441: template -2441: struct is_array<_Tp[_Size]> -2441: : public true_type { }; -2441: -2441: template -2441: struct is_array<_Tp[]> -2441: : public true_type { }; -2441: -2441: template -2441: struct __is_pointer_helper -2441: : public false_type { }; -2441: -2441: template -2441: struct __is_pointer_helper<_Tp*> -2441: : public true_type { }; -2441: -2441: -2441: template -2441: struct is_pointer -2441: : public __is_pointer_helper::type>::type -2441: { }; -2441: -2441: -2441: template -2441: struct is_lvalue_reference -2441: : public false_type { }; -2441: -2441: template -2441: struct is_lvalue_reference<_Tp&> -2441: : public true_type { }; -2441: -2441: -2441: template -2441: struct is_rvalue_reference -2441: : public false_type { }; -2441: -2441: template -2441: struct is_rvalue_reference<_Tp&&> -2441: : public true_type { }; -2441: -2441: template -2441: struct is_function; -2441: -2441: template -2441: struct __is_member_object_pointer_helper -2441: : public false_type { }; -2441: -2441: template -2441: struct __is_member_object_pointer_helper<_Tp _Cp::*> -2441: : public integral_constant::value> { }; -2441: -2441: -2441: template -2441: struct is_member_object_pointer -2441: : public __is_member_object_pointer_helper< -2441: typename remove_cv<_Tp>::type>::type -2441: { }; -2441: -2441: template -2441: struct __is_member_function_pointer_helper -2441: : public false_type { }; -2441: -2441: template -2441: struct __is_member_function_pointer_helper<_Tp _Cp::*> -2441: : public integral_constant::value> { }; -2441: -2441: -2441: template -2441: struct is_member_function_pointer -2441: : public __is_member_function_pointer_helper< -2441: typename remove_cv<_Tp>::type>::type -2441: { }; -2441: -2441: -2441: template -2441: struct is_enum -2441: : public integral_constant -2441: { }; -2441: -2441: -2441: template -2441: struct is_union -2441: : public integral_constant -2441: { }; -2441: -2441: -2441: template -2441: struct is_class -2441: : public integral_constant -2441: { }; -2441: -2441: -2441: template -2441: struct is_function -2441: : public false_type { }; -2441: -2441: template -2441: struct is_function<_Res(_ArgTypes...) > -2441: : public true_type { }; -2441: -2441: template -2441: struct is_function<_Res(_ArgTypes...) & > -2441: : public true_type { }; -2441: -2441: template -2441: struct is_function<_Res(_ArgTypes...) && > -2441: : public true_type { }; -2441: -2441: template -2441: struct is_function<_Res(_ArgTypes......) > -2441: : public true_type { }; -2441: -2441: template -2441: struct is_function<_Res(_ArgTypes......) & > -2441: : public true_type { }; -2441: -2441: template -2441: struct is_function<_Res(_ArgTypes......) && > -2441: : public true_type { }; -2441: -2441: template -2441: struct is_function<_Res(_ArgTypes...) const > -2441: : public true_type { }; -2441: -2441: template -2441: struct is_function<_Res(_ArgTypes...) const & > -2441: : public true_type { }; -2441: -2441: template -2441: struct is_function<_Res(_ArgTypes...) const && > -2441: : public true_type { }; -2441: -2441: template -2441: struct is_function<_Res(_ArgTypes......) const > -2441: : public true_type { }; -2441: -2441: template -2441: struct is_function<_Res(_ArgTypes......) const & > -2441: : public true_type { }; -2441: -2441: template -2441: struct is_function<_Res(_ArgTypes......) const && > -2441: : public true_type { }; -2441: -2441: template -2441: struct is_function<_Res(_ArgTypes...) volatile > -2441: : public true_type { }; -2441: -2441: template -2441: struct is_function<_Res(_ArgTypes...) volatile & > -2441: : public true_type { }; -2441: -2441: template -2441: struct is_function<_Res(_ArgTypes...) volatile && > -2441: : public true_type { }; -2441: -2441: template -2441: struct is_function<_Res(_ArgTypes......) volatile > -2441: : public true_type { }; -2441: -2441: template -2441: struct is_function<_Res(_ArgTypes......) volatile & > -2441: : public true_type { }; -2441: -2441: template -2441: struct is_function<_Res(_ArgTypes......) volatile && > -2441: : public true_type { }; -2441: -2441: template -2441: struct is_function<_Res(_ArgTypes...) const volatile > -2441: : public true_type { }; -2441: -2441: template -2441: struct is_function<_Res(_ArgTypes...) const volatile & > -2441: : public true_type { }; -2441: -2441: template -2441: struct is_function<_Res(_ArgTypes...) const volatile && > -2441: : public true_type { }; -2441: -2441: template -2441: struct is_function<_Res(_ArgTypes......) const volatile > -2441: : public true_type { }; -2441: -2441: template -2441: struct is_function<_Res(_ArgTypes......) const volatile & > -2441: : public true_type { }; -2441: -2441: template -2441: struct is_function<_Res(_ArgTypes......) const volatile && > -2441: : public true_type { }; -2441: -2441: -2441: -2441: template -2441: struct __is_null_pointer_helper -2441: : public false_type { }; -2441: -2441: template<> -2441: struct __is_null_pointer_helper -2441: : public true_type { }; -2441: -2441: -2441: template -2441: struct is_null_pointer -2441: : public __is_null_pointer_helper::type>::type -2441: { }; -2441: -2441: -2441: template -2441: struct __is_nullptr_t -2441: : public is_null_pointer<_Tp> -2441: { }; -2441: -2441: -2441: -2441: -2441: template -2441: struct is_reference -2441: : public __or_, -2441: is_rvalue_reference<_Tp>>::type -2441: { }; -2441: -2441: -2441: template -2441: struct is_arithmetic -2441: : public __or_, is_floating_point<_Tp>>::type -2441: { }; -2441: -2441: -2441: template -2441: struct is_fundamental -2441: : public __or_, is_void<_Tp>, -2441: is_null_pointer<_Tp>>::type -2441: { }; -2441: -2441: -2441: template -2441: struct is_object -2441: : public __not_<__or_, is_reference<_Tp>, -2441: is_void<_Tp>>>::type -2441: { }; -2441: -2441: template -2441: struct is_member_pointer; -2441: -2441: -2441: template -2441: struct is_scalar -2441: : public __or_, is_enum<_Tp>, is_pointer<_Tp>, -2441: is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type -2441: { }; -2441: -2441: -2441: template -2441: struct is_compound -2441: : public integral_constant::value> { }; -2441: -2441: template -2441: struct __is_member_pointer_helper -2441: : public false_type { }; -2441: -2441: template -2441: struct __is_member_pointer_helper<_Tp _Cp::*> -2441: : public true_type { }; -2441: -2441: -2441: template -2441: struct is_member_pointer -2441: : public __is_member_pointer_helper::type>::type -2441: { }; -2441: -2441: -2441: -2441: template -2441: struct __is_referenceable -2441: : public __or_, is_reference<_Tp>>::type -2441: { }; -2441: -2441: template -2441: struct __is_referenceable<_Res(_Args...) > -2441: : public true_type -2441: { }; -2441: -2441: template -2441: struct __is_referenceable<_Res(_Args......) > -2441: : public true_type -2441: { }; -2441: -2441: -2441: -2441: -2441: template -2441: struct is_const -2441: : public false_type { }; -2441: -2441: template -2441: struct is_const<_Tp const> -2441: : public true_type { }; -2441: -2441: -2441: template -2441: struct is_volatile -2441: : public false_type { }; -2441: -2441: template -2441: struct is_volatile<_Tp volatile> -2441: : public true_type { }; -2441: -2441: -2441: template -2441: struct is_trivial -2441: : public integral_constant -2441: { }; -2441: -2441: -2441: template -2441: struct is_trivially_copyable -2441: : public integral_constant -2441: { }; -2441: -2441: -2441: template -2441: struct is_standard_layout -2441: : public integral_constant -2441: { }; -2441: -2441: -2441: -2441: template -2441: struct is_pod -2441: : public integral_constant -2441: { }; -2441: -2441: -2441: template -2441: struct is_literal_type -2441: : public integral_constant -2441: { }; -2441: -2441: -2441: template -2441: struct is_empty -2441: : public integral_constant -2441: { }; -2441: -2441: -2441: template -2441: struct is_polymorphic -2441: : public integral_constant -2441: { }; -2441: -2441: -2441: -2441: -2441: template -2441: struct is_final -2441: : public integral_constant -2441: { }; -2441: -2441: -2441: -2441: template -2441: struct is_abstract -2441: : public integral_constant -2441: { }; -2441: -2441: template::value> -2441: struct __is_signed_helper -2441: : public false_type { }; -2441: -2441: template -2441: struct __is_signed_helper<_Tp, true> -2441: : public integral_constant -2441: { }; -2441: -2441: -2441: template -2441: struct is_signed -2441: : public __is_signed_helper<_Tp>::type -2441: { }; -2441: -2441: -2441: template -2441: struct is_unsigned -2441: : public __and_, __not_>> -2441: { }; -2441: # 747 "/usr/include/c++/8/type_traits" 3 -2441: template -2441: _Up -2441: __declval(int); -2441: -2441: template -2441: _Tp -2441: __declval(long); -2441: -2441: template -2441: auto declval() noexcept -> decltype(__declval<_Tp>(0)); -2441: -2441: template -2441: struct extent; -2441: -2441: template -2441: struct remove_all_extents; -2441: -2441: template -2441: struct __is_array_known_bounds -2441: : public integral_constant::value > 0)> -2441: { }; -2441: -2441: template -2441: struct __is_array_unknown_bounds -2441: : public __and_, __not_>> -2441: { }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: struct __do_is_destructible_impl -2441: { -2441: template().~_Tp())> -2441: static true_type __test(int); -2441: -2441: template -2441: static false_type __test(...); -2441: }; -2441: -2441: template -2441: struct __is_destructible_impl -2441: : public __do_is_destructible_impl -2441: { -2441: typedef decltype(__test<_Tp>(0)) type; -2441: }; -2441: -2441: template, -2441: __is_array_unknown_bounds<_Tp>, -2441: is_function<_Tp>>::value, -2441: bool = __or_, is_scalar<_Tp>>::value> -2441: struct __is_destructible_safe; -2441: -2441: template -2441: struct __is_destructible_safe<_Tp, false, false> -2441: : public __is_destructible_impl::type>::type -2441: { }; -2441: -2441: template -2441: struct __is_destructible_safe<_Tp, true, false> -2441: : public false_type { }; -2441: -2441: template -2441: struct __is_destructible_safe<_Tp, false, true> -2441: : public true_type { }; -2441: -2441: -2441: template -2441: struct is_destructible -2441: : public __is_destructible_safe<_Tp>::type -2441: { }; -2441: -2441: -2441: -2441: -2441: -2441: struct __do_is_nt_destructible_impl -2441: { -2441: template -2441: static integral_constant().~_Tp())> -2441: __test(int); -2441: -2441: template -2441: static false_type __test(...); -2441: }; -2441: -2441: template -2441: struct __is_nt_destructible_impl -2441: : public __do_is_nt_destructible_impl -2441: { -2441: typedef decltype(__test<_Tp>(0)) type; -2441: }; -2441: -2441: template, -2441: __is_array_unknown_bounds<_Tp>, -2441: is_function<_Tp>>::value, -2441: bool = __or_, is_scalar<_Tp>>::value> -2441: struct __is_nt_destructible_safe; -2441: -2441: template -2441: struct __is_nt_destructible_safe<_Tp, false, false> -2441: : public __is_nt_destructible_impl::type>::type -2441: { }; -2441: -2441: template -2441: struct __is_nt_destructible_safe<_Tp, true, false> -2441: : public false_type { }; -2441: -2441: template -2441: struct __is_nt_destructible_safe<_Tp, false, true> -2441: : public true_type { }; -2441: -2441: -2441: template -2441: struct is_nothrow_destructible -2441: : public __is_nt_destructible_safe<_Tp>::type -2441: { }; -2441: -2441: struct __do_is_default_constructible_impl -2441: { -2441: template -2441: static true_type __test(int); -2441: -2441: template -2441: static false_type __test(...); -2441: }; -2441: -2441: template -2441: struct __is_default_constructible_impl -2441: : public __do_is_default_constructible_impl -2441: { -2441: typedef decltype(__test<_Tp>(0)) type; -2441: }; -2441: -2441: template -2441: struct __is_default_constructible_atom -2441: : public __and_<__not_>, -2441: __is_default_constructible_impl<_Tp>> -2441: { }; -2441: -2441: template::value> -2441: struct __is_default_constructible_safe; -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct __is_default_constructible_safe<_Tp, true> -2441: : public __and_<__is_array_known_bounds<_Tp>, -2441: __is_default_constructible_atom::type>> -2441: { }; -2441: -2441: template -2441: struct __is_default_constructible_safe<_Tp, false> -2441: : public __is_default_constructible_atom<_Tp>::type -2441: { }; -2441: -2441: -2441: template -2441: struct is_default_constructible -2441: : public __is_default_constructible_safe<_Tp>::type -2441: { }; -2441: -2441: -2441: template -2441: struct is_constructible -2441: : public __bool_constant<__is_constructible(_Tp, _Args...)> -2441: { }; -2441: -2441: template::value> -2441: struct __is_copy_constructible_impl; -2441: -2441: template -2441: struct __is_copy_constructible_impl<_Tp, false> -2441: : public false_type { }; -2441: -2441: template -2441: struct __is_copy_constructible_impl<_Tp, true> -2441: : public is_constructible<_Tp, const _Tp&> -2441: { }; -2441: -2441: -2441: template -2441: struct is_copy_constructible -2441: : public __is_copy_constructible_impl<_Tp> -2441: { }; -2441: -2441: template::value> -2441: struct __is_move_constructible_impl; -2441: -2441: template -2441: struct __is_move_constructible_impl<_Tp, false> -2441: : public false_type { }; -2441: -2441: template -2441: struct __is_move_constructible_impl<_Tp, true> -2441: : public is_constructible<_Tp, _Tp&&> -2441: { }; -2441: -2441: -2441: template -2441: struct is_move_constructible -2441: : public __is_move_constructible_impl<_Tp> -2441: { }; -2441: -2441: template -2441: struct __is_nt_default_constructible_atom -2441: : public integral_constant -2441: { }; -2441: -2441: template::value> -2441: struct __is_nt_default_constructible_impl; -2441: -2441: template -2441: struct __is_nt_default_constructible_impl<_Tp, true> -2441: : public __and_<__is_array_known_bounds<_Tp>, -2441: __is_nt_default_constructible_atom::type>> -2441: { }; -2441: -2441: template -2441: struct __is_nt_default_constructible_impl<_Tp, false> -2441: : public __is_nt_default_constructible_atom<_Tp> -2441: { }; -2441: -2441: -2441: template -2441: struct is_nothrow_default_constructible -2441: : public __and_, -2441: __is_nt_default_constructible_impl<_Tp>> -2441: { }; -2441: -2441: template -2441: struct __is_nt_constructible_impl -2441: : public integral_constant()...))> -2441: { }; -2441: -2441: template -2441: struct __is_nt_constructible_impl<_Tp, _Arg> -2441: : public integral_constant(declval<_Arg>()))> -2441: { }; -2441: -2441: template -2441: struct __is_nt_constructible_impl<_Tp> -2441: : public is_nothrow_default_constructible<_Tp> -2441: { }; -2441: -2441: -2441: template -2441: struct is_nothrow_constructible -2441: : public __and_, -2441: __is_nt_constructible_impl<_Tp, _Args...>> -2441: { }; -2441: -2441: template::value> -2441: struct __is_nothrow_copy_constructible_impl; -2441: -2441: template -2441: struct __is_nothrow_copy_constructible_impl<_Tp, false> -2441: : public false_type { }; -2441: -2441: template -2441: struct __is_nothrow_copy_constructible_impl<_Tp, true> -2441: : public is_nothrow_constructible<_Tp, const _Tp&> -2441: { }; -2441: -2441: -2441: template -2441: struct is_nothrow_copy_constructible -2441: : public __is_nothrow_copy_constructible_impl<_Tp> -2441: { }; -2441: -2441: template::value> -2441: struct __is_nothrow_move_constructible_impl; -2441: -2441: template -2441: struct __is_nothrow_move_constructible_impl<_Tp, false> -2441: : public false_type { }; -2441: -2441: template -2441: struct __is_nothrow_move_constructible_impl<_Tp, true> -2441: : public is_nothrow_constructible<_Tp, _Tp&&> -2441: { }; -2441: -2441: -2441: template -2441: struct is_nothrow_move_constructible -2441: : public __is_nothrow_move_constructible_impl<_Tp> -2441: { }; -2441: -2441: -2441: template -2441: struct is_assignable -2441: : public __bool_constant<__is_assignable(_Tp, _Up)> -2441: { }; -2441: -2441: template::value> -2441: struct __is_copy_assignable_impl; -2441: -2441: template -2441: struct __is_copy_assignable_impl<_Tp, false> -2441: : public false_type { }; -2441: -2441: template -2441: struct __is_copy_assignable_impl<_Tp, true> -2441: : public is_assignable<_Tp&, const _Tp&> -2441: { }; -2441: -2441: -2441: template -2441: struct is_copy_assignable -2441: : public __is_copy_assignable_impl<_Tp> -2441: { }; -2441: -2441: template::value> -2441: struct __is_move_assignable_impl; -2441: -2441: template -2441: struct __is_move_assignable_impl<_Tp, false> -2441: : public false_type { }; -2441: -2441: template -2441: struct __is_move_assignable_impl<_Tp, true> -2441: : public is_assignable<_Tp&, _Tp&&> -2441: { }; -2441: -2441: -2441: template -2441: struct is_move_assignable -2441: : public __is_move_assignable_impl<_Tp> -2441: { }; -2441: -2441: template -2441: struct __is_nt_assignable_impl -2441: : public integral_constant() = declval<_Up>())> -2441: { }; -2441: -2441: -2441: template -2441: struct is_nothrow_assignable -2441: : public __and_, -2441: __is_nt_assignable_impl<_Tp, _Up>> -2441: { }; -2441: -2441: template::value> -2441: struct __is_nt_copy_assignable_impl; -2441: -2441: template -2441: struct __is_nt_copy_assignable_impl<_Tp, false> -2441: : public false_type { }; -2441: -2441: template -2441: struct __is_nt_copy_assignable_impl<_Tp, true> -2441: : public is_nothrow_assignable<_Tp&, const _Tp&> -2441: { }; -2441: -2441: -2441: template -2441: struct is_nothrow_copy_assignable -2441: : public __is_nt_copy_assignable_impl<_Tp> -2441: { }; -2441: -2441: template::value> -2441: struct __is_nt_move_assignable_impl; -2441: -2441: template -2441: struct __is_nt_move_assignable_impl<_Tp, false> -2441: : public false_type { }; -2441: -2441: template -2441: struct __is_nt_move_assignable_impl<_Tp, true> -2441: : public is_nothrow_assignable<_Tp&, _Tp&&> -2441: { }; -2441: -2441: -2441: template -2441: struct is_nothrow_move_assignable -2441: : public __is_nt_move_assignable_impl<_Tp> -2441: { }; -2441: -2441: -2441: template -2441: struct is_trivially_constructible -2441: : public __and_, __bool_constant< -2441: __is_trivially_constructible(_Tp, _Args...)>>::type -2441: { }; -2441: -2441: -2441: template -2441: struct is_trivially_default_constructible -2441: : public is_trivially_constructible<_Tp>::type -2441: { }; -2441: -2441: struct __do_is_implicitly_default_constructible_impl -2441: { -2441: template -2441: static void __helper(const _Tp&); -2441: -2441: template -2441: static true_type __test(const _Tp&, -2441: decltype(__helper({}))* = 0); -2441: -2441: static false_type __test(...); -2441: }; -2441: -2441: template -2441: struct __is_implicitly_default_constructible_impl -2441: : public __do_is_implicitly_default_constructible_impl -2441: { -2441: typedef decltype(__test(declval<_Tp>())) type; -2441: }; -2441: -2441: template -2441: struct __is_implicitly_default_constructible_safe -2441: : public __is_implicitly_default_constructible_impl<_Tp>::type -2441: { }; -2441: -2441: template -2441: struct __is_implicitly_default_constructible -2441: : public __and_, -2441: __is_implicitly_default_constructible_safe<_Tp>> -2441: { }; -2441: -2441: -2441: -2441: template::value> -2441: struct __is_trivially_copy_constructible_impl; -2441: -2441: template -2441: struct __is_trivially_copy_constructible_impl<_Tp, false> -2441: : public false_type { }; -2441: -2441: template -2441: struct __is_trivially_copy_constructible_impl<_Tp, true> -2441: : public __and_, -2441: integral_constant> -2441: { }; -2441: -2441: template -2441: struct is_trivially_copy_constructible -2441: : public __is_trivially_copy_constructible_impl<_Tp> -2441: { }; -2441: -2441: -2441: -2441: template::value> -2441: struct __is_trivially_move_constructible_impl; -2441: -2441: template -2441: struct __is_trivially_move_constructible_impl<_Tp, false> -2441: : public false_type { }; -2441: -2441: template -2441: struct __is_trivially_move_constructible_impl<_Tp, true> -2441: : public __and_, -2441: integral_constant> -2441: { }; -2441: -2441: template -2441: struct is_trivially_move_constructible -2441: : public __is_trivially_move_constructible_impl<_Tp> -2441: { }; -2441: -2441: -2441: template -2441: struct is_trivially_assignable -2441: : public __bool_constant<__is_trivially_assignable(_Tp, _Up)> -2441: { }; -2441: -2441: -2441: -2441: template::value> -2441: struct __is_trivially_copy_assignable_impl; -2441: -2441: template -2441: struct __is_trivially_copy_assignable_impl<_Tp, false> -2441: : public false_type { }; -2441: -2441: template -2441: struct __is_trivially_copy_assignable_impl<_Tp, true> -2441: : public __and_, -2441: integral_constant> -2441: { }; -2441: -2441: template -2441: struct is_trivially_copy_assignable -2441: : public __is_trivially_copy_assignable_impl<_Tp> -2441: { }; -2441: -2441: -2441: -2441: template::value> -2441: struct __is_trivially_move_assignable_impl; -2441: -2441: template -2441: struct __is_trivially_move_assignable_impl<_Tp, false> -2441: : public false_type { }; -2441: -2441: template -2441: struct __is_trivially_move_assignable_impl<_Tp, true> -2441: : public __and_, -2441: integral_constant> -2441: { }; -2441: -2441: template -2441: struct is_trivially_move_assignable -2441: : public __is_trivially_move_assignable_impl<_Tp> -2441: { }; -2441: -2441: -2441: template -2441: struct is_trivially_destructible -2441: : public __and_, integral_constant> -2441: { }; -2441: -2441: -2441: -2441: template -2441: struct has_virtual_destructor -2441: : public integral_constant -2441: { }; -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct alignment_of -2441: : public integral_constant { }; -2441: -2441: -2441: template -2441: struct rank -2441: : public integral_constant { }; -2441: -2441: template -2441: struct rank<_Tp[_Size]> -2441: : public integral_constant::value> { }; -2441: -2441: template -2441: struct rank<_Tp[]> -2441: : public integral_constant::value> { }; -2441: -2441: -2441: template -2441: struct extent -2441: : public integral_constant { }; -2441: -2441: template -2441: struct extent<_Tp[_Size], _Uint> -2441: : public integral_constant::value> -2441: { }; -2441: -2441: template -2441: struct extent<_Tp[], _Uint> -2441: : public integral_constant::value> -2441: { }; -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct is_same -2441: : public false_type { }; -2441: -2441: template -2441: struct is_same<_Tp, _Tp> -2441: : public true_type { }; -2441: -2441: -2441: template -2441: struct is_base_of -2441: : public integral_constant -2441: { }; -2441: -2441: template, is_function<_To>, -2441: is_array<_To>>::value> -2441: struct __is_convertible_helper -2441: { typedef typename is_void<_To>::type type; }; -2441: -2441: template -2441: class __is_convertible_helper<_From, _To, false> -2441: { -2441: template -2441: static void __test_aux(_To1); -2441: -2441: template(std::declval<_From1>()))> -2441: static true_type -2441: __test(int); -2441: -2441: template -2441: static false_type -2441: __test(...); -2441: -2441: public: -2441: typedef decltype(__test<_From, _To>(0)) type; -2441: }; -2441: -2441: -2441: -2441: template -2441: struct is_convertible -2441: : public __is_convertible_helper<_From, _To>::type -2441: { }; -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct remove_const -2441: { typedef _Tp type; }; -2441: -2441: template -2441: struct remove_const<_Tp const> -2441: { typedef _Tp type; }; -2441: -2441: -2441: template -2441: struct remove_volatile -2441: { typedef _Tp type; }; -2441: -2441: template -2441: struct remove_volatile<_Tp volatile> -2441: { typedef _Tp type; }; -2441: -2441: -2441: template -2441: struct remove_cv -2441: { -2441: typedef typename -2441: remove_const::type>::type type; -2441: }; -2441: -2441: -2441: template -2441: struct add_const -2441: { typedef _Tp const type; }; -2441: -2441: -2441: template -2441: struct add_volatile -2441: { typedef _Tp volatile type; }; -2441: -2441: -2441: template -2441: struct add_cv -2441: { -2441: typedef typename -2441: add_const::type>::type type; -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: using remove_const_t = typename remove_const<_Tp>::type; -2441: -2441: -2441: template -2441: using remove_volatile_t = typename remove_volatile<_Tp>::type; -2441: -2441: -2441: template -2441: using remove_cv_t = typename remove_cv<_Tp>::type; -2441: -2441: -2441: template -2441: using add_const_t = typename add_const<_Tp>::type; -2441: -2441: -2441: template -2441: using add_volatile_t = typename add_volatile<_Tp>::type; -2441: -2441: -2441: template -2441: using add_cv_t = typename add_cv<_Tp>::type; -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct remove_reference -2441: { typedef _Tp type; }; -2441: -2441: template -2441: struct remove_reference<_Tp&> -2441: { typedef _Tp type; }; -2441: -2441: template -2441: struct remove_reference<_Tp&&> -2441: { typedef _Tp type; }; -2441: -2441: template::value> -2441: struct __add_lvalue_reference_helper -2441: { typedef _Tp type; }; -2441: -2441: template -2441: struct __add_lvalue_reference_helper<_Tp, true> -2441: { typedef _Tp& type; }; -2441: -2441: -2441: template -2441: struct add_lvalue_reference -2441: : public __add_lvalue_reference_helper<_Tp> -2441: { }; -2441: -2441: template::value> -2441: struct __add_rvalue_reference_helper -2441: { typedef _Tp type; }; -2441: -2441: template -2441: struct __add_rvalue_reference_helper<_Tp, true> -2441: { typedef _Tp&& type; }; -2441: -2441: -2441: template -2441: struct add_rvalue_reference -2441: : public __add_rvalue_reference_helper<_Tp> -2441: { }; -2441: -2441: -2441: -2441: template -2441: using remove_reference_t = typename remove_reference<_Tp>::type; -2441: -2441: -2441: template -2441: using add_lvalue_reference_t = typename add_lvalue_reference<_Tp>::type; -2441: -2441: -2441: template -2441: using add_rvalue_reference_t = typename add_rvalue_reference<_Tp>::type; -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct __cv_selector; -2441: -2441: template -2441: struct __cv_selector<_Unqualified, false, false> -2441: { typedef _Unqualified __type; }; -2441: -2441: template -2441: struct __cv_selector<_Unqualified, false, true> -2441: { typedef volatile _Unqualified __type; }; -2441: -2441: template -2441: struct __cv_selector<_Unqualified, true, false> -2441: { typedef const _Unqualified __type; }; -2441: -2441: template -2441: struct __cv_selector<_Unqualified, true, true> -2441: { typedef const volatile _Unqualified __type; }; -2441: -2441: template::value, -2441: bool _IsVol = is_volatile<_Qualified>::value> -2441: class __match_cv_qualifiers -2441: { -2441: typedef __cv_selector<_Unqualified, _IsConst, _IsVol> __match; -2441: -2441: public: -2441: typedef typename __match::__type __type; -2441: }; -2441: -2441: -2441: template -2441: struct __make_unsigned -2441: { typedef _Tp __type; }; -2441: -2441: template<> -2441: struct __make_unsigned -2441: { typedef unsigned char __type; }; -2441: -2441: template<> -2441: struct __make_unsigned -2441: { typedef unsigned char __type; }; -2441: -2441: template<> -2441: struct __make_unsigned -2441: { typedef unsigned short __type; }; -2441: -2441: template<> -2441: struct __make_unsigned -2441: { typedef unsigned int __type; }; -2441: -2441: template<> -2441: struct __make_unsigned -2441: { typedef unsigned long __type; }; -2441: -2441: template<> -2441: struct __make_unsigned -2441: { typedef unsigned long long __type; }; -2441: # 1590 "/usr/include/c++/8/type_traits" 3 -2441: template::value, -2441: bool _IsEnum = is_enum<_Tp>::value> -2441: class __make_unsigned_selector; -2441: -2441: template -2441: class __make_unsigned_selector<_Tp, true, false> -2441: { -2441: typedef __make_unsigned::type> __unsignedt; -2441: typedef typename __unsignedt::__type __unsigned_type; -2441: typedef __match_cv_qualifiers<_Tp, __unsigned_type> __cv_unsigned; -2441: -2441: public: -2441: typedef typename __cv_unsigned::__type __type; -2441: }; -2441: -2441: template -2441: class __make_unsigned_selector<_Tp, false, true> -2441: { -2441: -2441: typedef unsigned char __smallest; -2441: static const bool __b0 = sizeof(_Tp) <= sizeof(__smallest); -2441: static const bool __b1 = sizeof(_Tp) <= sizeof(unsigned short); -2441: static const bool __b2 = sizeof(_Tp) <= sizeof(unsigned int); -2441: static const bool __b3 = sizeof(_Tp) <= sizeof(unsigned long); -2441: typedef conditional<__b3, unsigned long, unsigned long long> __cond3; -2441: typedef typename __cond3::type __cond3_type; -2441: typedef conditional<__b2, unsigned int, __cond3_type> __cond2; -2441: typedef typename __cond2::type __cond2_type; -2441: typedef conditional<__b1, unsigned short, __cond2_type> __cond1; -2441: typedef typename __cond1::type __cond1_type; -2441: -2441: typedef typename conditional<__b0, __smallest, __cond1_type>::type -2441: __unsigned_type; -2441: typedef __match_cv_qualifiers<_Tp, __unsigned_type> __cv_unsigned; -2441: -2441: public: -2441: typedef typename __cv_unsigned::__type __type; -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct make_unsigned -2441: { typedef typename __make_unsigned_selector<_Tp>::__type type; }; -2441: -2441: -2441: template<> -2441: struct make_unsigned; -2441: -2441: -2441: -2441: template -2441: struct __make_signed -2441: { typedef _Tp __type; }; -2441: -2441: template<> -2441: struct __make_signed -2441: { typedef signed char __type; }; -2441: -2441: template<> -2441: struct __make_signed -2441: { typedef signed char __type; }; -2441: -2441: template<> -2441: struct __make_signed -2441: { typedef signed short __type; }; -2441: -2441: template<> -2441: struct __make_signed -2441: { typedef signed int __type; }; -2441: -2441: template<> -2441: struct __make_signed -2441: { typedef signed long __type; }; -2441: -2441: template<> -2441: struct __make_signed -2441: { typedef signed long long __type; }; -2441: # 1694 "/usr/include/c++/8/type_traits" 3 -2441: template::value, -2441: bool _IsEnum = is_enum<_Tp>::value> -2441: class __make_signed_selector; -2441: -2441: template -2441: class __make_signed_selector<_Tp, true, false> -2441: { -2441: typedef __make_signed::type> __signedt; -2441: typedef typename __signedt::__type __signed_type; -2441: typedef __match_cv_qualifiers<_Tp, __signed_type> __cv_signed; -2441: -2441: public: -2441: typedef typename __cv_signed::__type __type; -2441: }; -2441: -2441: template -2441: class __make_signed_selector<_Tp, false, true> -2441: { -2441: typedef typename __make_unsigned_selector<_Tp>::__type __unsigned_type; -2441: -2441: public: -2441: typedef typename __make_signed_selector<__unsigned_type>::__type __type; -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct make_signed -2441: { typedef typename __make_signed_selector<_Tp>::__type type; }; -2441: -2441: -2441: template<> -2441: struct make_signed; -2441: -2441: -2441: -2441: template -2441: using make_signed_t = typename make_signed<_Tp>::type; -2441: -2441: -2441: template -2441: using make_unsigned_t = typename make_unsigned<_Tp>::type; -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct remove_extent -2441: { typedef _Tp type; }; -2441: -2441: template -2441: struct remove_extent<_Tp[_Size]> -2441: { typedef _Tp type; }; -2441: -2441: template -2441: struct remove_extent<_Tp[]> -2441: { typedef _Tp type; }; -2441: -2441: -2441: template -2441: struct remove_all_extents -2441: { typedef _Tp type; }; -2441: -2441: template -2441: struct remove_all_extents<_Tp[_Size]> -2441: { typedef typename remove_all_extents<_Tp>::type type; }; -2441: -2441: template -2441: struct remove_all_extents<_Tp[]> -2441: { typedef typename remove_all_extents<_Tp>::type type; }; -2441: -2441: -2441: -2441: template -2441: using remove_extent_t = typename remove_extent<_Tp>::type; -2441: -2441: -2441: template -2441: using remove_all_extents_t = typename remove_all_extents<_Tp>::type; -2441: -2441: -2441: -2441: -2441: template -2441: struct __remove_pointer_helper -2441: { typedef _Tp type; }; -2441: -2441: template -2441: struct __remove_pointer_helper<_Tp, _Up*> -2441: { typedef _Up type; }; -2441: -2441: -2441: template -2441: struct remove_pointer -2441: : public __remove_pointer_helper<_Tp, typename remove_cv<_Tp>::type> -2441: { }; -2441: -2441: -2441: template, -2441: is_void<_Tp>>::value> -2441: struct __add_pointer_helper -2441: { typedef _Tp type; }; -2441: -2441: template -2441: struct __add_pointer_helper<_Tp, true> -2441: { typedef typename remove_reference<_Tp>::type* type; }; -2441: -2441: template -2441: struct add_pointer -2441: : public __add_pointer_helper<_Tp> -2441: { }; -2441: -2441: -2441: -2441: template -2441: using remove_pointer_t = typename remove_pointer<_Tp>::type; -2441: -2441: -2441: template -2441: using add_pointer_t = typename add_pointer<_Tp>::type; -2441: -2441: -2441: template -2441: struct __aligned_storage_msa -2441: { -2441: union __type -2441: { -2441: unsigned char __data[_Len]; -2441: struct __attribute__((__aligned__)) { } __align; -2441: }; -2441: }; -2441: # 1840 "/usr/include/c++/8/type_traits" 3 -2441: template::__type)> -2441: struct aligned_storage -2441: { -2441: union type -2441: { -2441: unsigned char __data[_Len]; -2441: struct __attribute__((__aligned__((_Align)))) { } __align; -2441: }; -2441: }; -2441: -2441: template -2441: struct __strictest_alignment -2441: { -2441: static const size_t _S_alignment = 0; -2441: static const size_t _S_size = 0; -2441: }; -2441: -2441: template -2441: struct __strictest_alignment<_Tp, _Types...> -2441: { -2441: static const size_t _S_alignment = -2441: alignof(_Tp) > __strictest_alignment<_Types...>::_S_alignment -2441: ? alignof(_Tp) : __strictest_alignment<_Types...>::_S_alignment; -2441: static const size_t _S_size = -2441: sizeof(_Tp) > __strictest_alignment<_Types...>::_S_size -2441: ? sizeof(_Tp) : __strictest_alignment<_Types...>::_S_size; -2441: }; -2441: # 1879 "/usr/include/c++/8/type_traits" 3 -2441: template -2441: struct aligned_union -2441: { -2441: private: -2441: static_assert(sizeof...(_Types) != 0, "At least one type is required"); -2441: -2441: using __strictest = __strictest_alignment<_Types...>; -2441: static const size_t _S_len = _Len > __strictest::_S_size -2441: ? _Len : __strictest::_S_size; -2441: public: -2441: -2441: static const size_t alignment_value = __strictest::_S_alignment; -2441: -2441: typedef typename aligned_storage<_S_len, alignment_value>::type type; -2441: }; -2441: -2441: template -2441: const size_t aligned_union<_Len, _Types...>::alignment_value; -2441: -2441: -2441: -2441: template::value, -2441: bool _IsFunction = is_function<_Up>::value> -2441: struct __decay_selector; -2441: -2441: -2441: template -2441: struct __decay_selector<_Up, false, false> -2441: { typedef typename remove_cv<_Up>::type __type; }; -2441: -2441: template -2441: struct __decay_selector<_Up, true, false> -2441: { typedef typename remove_extent<_Up>::type* __type; }; -2441: -2441: template -2441: struct __decay_selector<_Up, false, true> -2441: { typedef typename add_pointer<_Up>::type __type; }; -2441: -2441: -2441: template -2441: class decay -2441: { -2441: typedef typename remove_reference<_Tp>::type __remove_type; -2441: -2441: public: -2441: typedef typename __decay_selector<__remove_type>::__type type; -2441: }; -2441: -2441: template -2441: class reference_wrapper; -2441: -2441: -2441: template -2441: struct __strip_reference_wrapper -2441: { -2441: typedef _Tp __type; -2441: }; -2441: -2441: template -2441: struct __strip_reference_wrapper > -2441: { -2441: typedef _Tp& __type; -2441: }; -2441: -2441: template -2441: struct __decay_and_strip -2441: { -2441: typedef typename __strip_reference_wrapper< -2441: typename decay<_Tp>::type>::__type __type; -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: struct enable_if -2441: { }; -2441: -2441: -2441: template -2441: struct enable_if -2441: { typedef _Tp type; }; -2441: -2441: template -2441: using _Require = typename enable_if<__and_<_Cond...>::value>::type; -2441: -2441: -2441: -2441: template -2441: struct conditional -2441: { typedef _Iftrue type; }; -2441: -2441: -2441: template -2441: struct conditional -2441: { typedef _Iffalse type; }; -2441: -2441: -2441: template -2441: struct common_type; -2441: -2441: -2441: -2441: struct __do_common_type_impl -2441: { -2441: template -2441: static __success_type() -2441: : std::declval<_Up>())>::type> _S_test(int); -2441: -2441: template -2441: static __failure_type _S_test(...); -2441: }; -2441: -2441: template -2441: struct __common_type_impl -2441: : private __do_common_type_impl -2441: { -2441: typedef decltype(_S_test<_Tp, _Up>(0)) type; -2441: }; -2441: -2441: struct __do_member_type_wrapper -2441: { -2441: template -2441: static __success_type _S_test(int); -2441: -2441: template -2441: static __failure_type _S_test(...); -2441: }; -2441: -2441: template -2441: struct __member_type_wrapper -2441: : private __do_member_type_wrapper -2441: { -2441: typedef decltype(_S_test<_Tp>(0)) type; -2441: }; -2441: -2441: template -2441: struct __expanded_common_type_wrapper -2441: { -2441: typedef common_type type; -2441: }; -2441: -2441: template -2441: struct __expanded_common_type_wrapper<__failure_type, _Args...> -2441: { typedef __failure_type type; }; -2441: -2441: template -2441: struct common_type<_Tp> -2441: { typedef typename decay<_Tp>::type type; }; -2441: -2441: template -2441: struct common_type<_Tp, _Up> -2441: : public __common_type_impl<_Tp, _Up>::type -2441: { }; -2441: -2441: template -2441: struct common_type<_Tp, _Up, _Vp...> -2441: : public __expanded_common_type_wrapper>::type, _Vp...>::type -2441: { }; -2441: -2441: -2441: template -2441: struct underlying_type -2441: { -2441: typedef __underlying_type(_Tp) type; -2441: }; -2441: -2441: template -2441: struct __declval_protector -2441: { -2441: static const bool __stop = false; -2441: }; -2441: -2441: template -2441: auto declval() noexcept -> decltype(__declval<_Tp>(0)) -2441: { -2441: static_assert(__declval_protector<_Tp>::__stop, -2441: "declval() must not be used!"); -2441: return __declval<_Tp>(0); -2441: } -2441: # 2072 "/usr/include/c++/8/type_traits" 3 -2441: template<> -2441: struct __make_unsigned -2441: { -2441: using __type -2441: = typename __make_unsigned_selector::__type; -2441: }; -2441: -2441: template<> -2441: struct __make_signed -2441: { -2441: using __type -2441: = typename __make_signed_selector::__type; -2441: }; -2441: -2441: -2441: template<> -2441: struct __make_unsigned -2441: { -2441: using __type -2441: = typename __make_unsigned_selector::__type; -2441: }; -2441: -2441: template<> -2441: struct __make_signed -2441: { -2441: using __type -2441: = typename __make_signed_selector::__type; -2441: }; -2441: -2441: template<> -2441: struct __make_unsigned -2441: { -2441: using __type -2441: = typename __make_unsigned_selector::__type; -2441: }; -2441: -2441: template<> -2441: struct __make_signed -2441: { -2441: using __type -2441: = typename __make_signed_selector::__type; -2441: }; -2441: -2441: -2441: -2441: template -2441: class result_of; -2441: -2441: -2441: -2441: -2441: -2441: struct __invoke_memfun_ref { }; -2441: struct __invoke_memfun_deref { }; -2441: struct __invoke_memobj_ref { }; -2441: struct __invoke_memobj_deref { }; -2441: struct __invoke_other { }; -2441: -2441: -2441: template -2441: struct __result_of_success : __success_type<_Tp> -2441: { using __invoke_type = _Tag; }; -2441: -2441: -2441: struct __result_of_memfun_ref_impl -2441: { -2441: template -2441: static __result_of_success().*std::declval<_Fp>())(std::declval<_Args>()...) -2441: ), __invoke_memfun_ref> _S_test(int); -2441: -2441: template -2441: static __failure_type _S_test(...); -2441: }; -2441: -2441: template -2441: struct __result_of_memfun_ref -2441: : private __result_of_memfun_ref_impl -2441: { -2441: typedef decltype(_S_test<_MemPtr, _Arg, _Args...>(0)) type; -2441: }; -2441: -2441: -2441: struct __result_of_memfun_deref_impl -2441: { -2441: template -2441: static __result_of_success()).*std::declval<_Fp>())(std::declval<_Args>()...) -2441: ), __invoke_memfun_deref> _S_test(int); -2441: -2441: template -2441: static __failure_type _S_test(...); -2441: }; -2441: -2441: template -2441: struct __result_of_memfun_deref -2441: : private __result_of_memfun_deref_impl -2441: { -2441: typedef decltype(_S_test<_MemPtr, _Arg, _Args...>(0)) type; -2441: }; -2441: -2441: -2441: struct __result_of_memobj_ref_impl -2441: { -2441: template -2441: static __result_of_success().*std::declval<_Fp>() -2441: ), __invoke_memobj_ref> _S_test(int); -2441: -2441: template -2441: static __failure_type _S_test(...); -2441: }; -2441: -2441: template -2441: struct __result_of_memobj_ref -2441: : private __result_of_memobj_ref_impl -2441: { -2441: typedef decltype(_S_test<_MemPtr, _Arg>(0)) type; -2441: }; -2441: -2441: -2441: struct __result_of_memobj_deref_impl -2441: { -2441: template -2441: static __result_of_success()).*std::declval<_Fp>() -2441: ), __invoke_memobj_deref> _S_test(int); -2441: -2441: template -2441: static __failure_type _S_test(...); -2441: }; -2441: -2441: template -2441: struct __result_of_memobj_deref -2441: : private __result_of_memobj_deref_impl -2441: { -2441: typedef decltype(_S_test<_MemPtr, _Arg>(0)) type; -2441: }; -2441: -2441: template -2441: struct __result_of_memobj; -2441: -2441: template -2441: struct __result_of_memobj<_Res _Class::*, _Arg> -2441: { -2441: typedef typename remove_cv::type>::type _Argval; -2441: typedef _Res _Class::* _MemPtr; -2441: typedef typename conditional<__or_, -2441: is_base_of<_Class, _Argval>>::value, -2441: __result_of_memobj_ref<_MemPtr, _Arg>, -2441: __result_of_memobj_deref<_MemPtr, _Arg> -2441: >::type::type type; -2441: }; -2441: -2441: template -2441: struct __result_of_memfun; -2441: -2441: template -2441: struct __result_of_memfun<_Res _Class::*, _Arg, _Args...> -2441: { -2441: typedef typename remove_cv::type>::type _Argval; -2441: typedef _Res _Class::* _MemPtr; -2441: typedef typename conditional<__or_, -2441: is_base_of<_Class, _Argval>>::value, -2441: __result_of_memfun_ref<_MemPtr, _Arg, _Args...>, -2441: __result_of_memfun_deref<_MemPtr, _Arg, _Args...> -2441: >::type::type type; -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: template::type> -2441: struct __inv_unwrap -2441: { -2441: using type = _Tp; -2441: }; -2441: -2441: template -2441: struct __inv_unwrap<_Tp, reference_wrapper<_Up>> -2441: { -2441: using type = _Up&; -2441: }; -2441: -2441: template -2441: struct __result_of_impl -2441: { -2441: typedef __failure_type type; -2441: }; -2441: -2441: template -2441: struct __result_of_impl -2441: : public __result_of_memobj::type, -2441: typename __inv_unwrap<_Arg>::type> -2441: { }; -2441: -2441: template -2441: struct __result_of_impl -2441: : public __result_of_memfun::type, -2441: typename __inv_unwrap<_Arg>::type, _Args...> -2441: { }; -2441: -2441: -2441: struct __result_of_other_impl -2441: { -2441: template -2441: static __result_of_success()(std::declval<_Args>()...) -2441: ), __invoke_other> _S_test(int); -2441: -2441: template -2441: static __failure_type _S_test(...); -2441: }; -2441: -2441: template -2441: struct __result_of_impl -2441: : private __result_of_other_impl -2441: { -2441: typedef decltype(_S_test<_Functor, _ArgTypes...>(0)) type; -2441: }; -2441: -2441: -2441: template -2441: struct __invoke_result -2441: : public __result_of_impl< -2441: is_member_object_pointer< -2441: typename remove_reference<_Functor>::type -2441: >::value, -2441: is_member_function_pointer< -2441: typename remove_reference<_Functor>::type -2441: >::value, -2441: _Functor, _ArgTypes... -2441: >::type -2441: { }; -2441: -2441: template -2441: struct result_of<_Functor(_ArgTypes...)> -2441: : public __invoke_result<_Functor, _ArgTypes...> -2441: { }; -2441: -2441: -2441: -2441: template::__type)> -2441: using aligned_storage_t = typename aligned_storage<_Len, _Align>::type; -2441: -2441: template -2441: using aligned_union_t = typename aligned_union<_Len, _Types...>::type; -2441: -2441: -2441: template -2441: using decay_t = typename decay<_Tp>::type; -2441: -2441: -2441: template -2441: using enable_if_t = typename enable_if<_Cond, _Tp>::type; -2441: -2441: -2441: template -2441: using conditional_t = typename conditional<_Cond, _Iftrue, _Iffalse>::type; -2441: -2441: -2441: template -2441: using common_type_t = typename common_type<_Tp...>::type; -2441: -2441: -2441: template -2441: using underlying_type_t = typename underlying_type<_Tp>::type; -2441: -2441: -2441: template -2441: using result_of_t = typename result_of<_Tp>::type; -2441: -2441: -2441: -2441: template -2441: using __enable_if_t = typename enable_if<_Cond, _Tp>::type; -2441: -2441: -2441: template using __void_t = void; -2441: -2441: -2441: -2441: -2441: template using void_t = void; -2441: -2441: -2441: -2441: template class _Op, typename... _Args> -2441: struct __detector -2441: { -2441: using value_t = false_type; -2441: using type = _Default; -2441: }; -2441: -2441: -2441: template class _Op, -2441: typename... _Args> -2441: struct __detector<_Default, __void_t<_Op<_Args...>>, _Op, _Args...> -2441: { -2441: using value_t = true_type; -2441: using type = _Op<_Args...>; -2441: }; -2441: -2441: -2441: template class _Op, -2441: typename... _Args> -2441: using __detected_or = __detector<_Default, void, _Op, _Args...>; -2441: -2441: -2441: template class _Op, -2441: typename... _Args> -2441: using __detected_or_t -2441: = typename __detected_or<_Default, _Op, _Args...>::type; -2441: # 2408 "/usr/include/c++/8/type_traits" 3 -2441: template -2441: struct __is_swappable; -2441: -2441: template -2441: struct __is_nothrow_swappable; -2441: -2441: template -2441: class tuple; -2441: -2441: template -2441: struct __is_tuple_like_impl : false_type -2441: { }; -2441: -2441: template -2441: struct __is_tuple_like_impl> : true_type -2441: { }; -2441: -2441: -2441: template -2441: struct __is_tuple_like -2441: : public __is_tuple_like_impl::type>::type>::type -2441: { }; -2441: -2441: template -2441: inline -2441: typename enable_if<__and_<__not_<__is_tuple_like<_Tp>>, -2441: is_move_constructible<_Tp>, -2441: is_move_assignable<_Tp>>::value>::type -2441: swap(_Tp&, _Tp&) -2441: noexcept(__and_, -2441: is_nothrow_move_assignable<_Tp>>::value); -2441: -2441: template -2441: inline -2441: typename enable_if<__is_swappable<_Tp>::value>::type -2441: swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) -2441: noexcept(__is_nothrow_swappable<_Tp>::value); -2441: -2441: namespace __swappable_details { -2441: using std::swap; -2441: -2441: struct __do_is_swappable_impl -2441: { -2441: template(), std::declval<_Tp&>()))> -2441: static true_type __test(int); -2441: -2441: template -2441: static false_type __test(...); -2441: }; -2441: -2441: struct __do_is_nothrow_swappable_impl -2441: { -2441: template -2441: static __bool_constant< -2441: noexcept(swap(std::declval<_Tp&>(), std::declval<_Tp&>())) -2441: > __test(int); -2441: -2441: template -2441: static false_type __test(...); -2441: }; -2441: -2441: } -2441: -2441: template -2441: struct __is_swappable_impl -2441: : public __swappable_details::__do_is_swappable_impl -2441: { -2441: typedef decltype(__test<_Tp>(0)) type; -2441: }; -2441: -2441: template -2441: struct __is_nothrow_swappable_impl -2441: : public __swappable_details::__do_is_nothrow_swappable_impl -2441: { -2441: typedef decltype(__test<_Tp>(0)) type; -2441: }; -2441: -2441: template -2441: struct __is_swappable -2441: : public __is_swappable_impl<_Tp>::type -2441: { }; -2441: -2441: template -2441: struct __is_nothrow_swappable -2441: : public __is_nothrow_swappable_impl<_Tp>::type -2441: { }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct is_swappable -2441: : public __is_swappable_impl<_Tp>::type -2441: { }; -2441: -2441: -2441: template -2441: struct is_nothrow_swappable -2441: : public __is_nothrow_swappable_impl<_Tp>::type -2441: { }; -2441: -2441: -2441: -2441: template -2441: constexpr bool is_swappable_v = -2441: is_swappable<_Tp>::value; -2441: -2441: -2441: template -2441: constexpr bool is_nothrow_swappable_v = -2441: is_nothrow_swappable<_Tp>::value; -2441: -2441: -2441: namespace __swappable_with_details { -2441: using std::swap; -2441: -2441: struct __do_is_swappable_with_impl -2441: { -2441: template(), std::declval<_Up>())), -2441: typename -2441: = decltype(swap(std::declval<_Up>(), std::declval<_Tp>()))> -2441: static true_type __test(int); -2441: -2441: template -2441: static false_type __test(...); -2441: }; -2441: -2441: struct __do_is_nothrow_swappable_with_impl -2441: { -2441: template -2441: static __bool_constant< -2441: noexcept(swap(std::declval<_Tp>(), std::declval<_Up>())) -2441: && -2441: noexcept(swap(std::declval<_Up>(), std::declval<_Tp>())) -2441: > __test(int); -2441: -2441: template -2441: static false_type __test(...); -2441: }; -2441: -2441: } -2441: -2441: template -2441: struct __is_swappable_with_impl -2441: : public __swappable_with_details::__do_is_swappable_with_impl -2441: { -2441: typedef decltype(__test<_Tp, _Up>(0)) type; -2441: }; -2441: -2441: -2441: template -2441: struct __is_swappable_with_impl<_Tp&, _Tp&> -2441: : public __swappable_details::__do_is_swappable_impl -2441: { -2441: typedef decltype(__test<_Tp&>(0)) type; -2441: }; -2441: -2441: template -2441: struct __is_nothrow_swappable_with_impl -2441: : public __swappable_with_details::__do_is_nothrow_swappable_with_impl -2441: { -2441: typedef decltype(__test<_Tp, _Up>(0)) type; -2441: }; -2441: -2441: -2441: template -2441: struct __is_nothrow_swappable_with_impl<_Tp&, _Tp&> -2441: : public __swappable_details::__do_is_nothrow_swappable_impl -2441: { -2441: typedef decltype(__test<_Tp&>(0)) type; -2441: }; -2441: -2441: -2441: template -2441: struct is_swappable_with -2441: : public __is_swappable_with_impl<_Tp, _Up>::type -2441: { }; -2441: -2441: -2441: template -2441: struct is_nothrow_swappable_with -2441: : public __is_nothrow_swappable_with_impl<_Tp, _Up>::type -2441: { }; -2441: -2441: -2441: -2441: template -2441: constexpr bool is_swappable_with_v = -2441: is_swappable_with<_Tp, _Up>::value; -2441: -2441: -2441: template -2441: constexpr bool is_nothrow_swappable_with_v = -2441: is_nothrow_swappable_with<_Tp, _Up>::value; -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct __is_invocable_impl : false_type { }; -2441: -2441: template -2441: struct __is_invocable_impl<_Result, _Ret, __void_t> -2441: : __or_, is_convertible>::type -2441: { }; -2441: -2441: template -2441: struct __is_invocable -2441: : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>::type -2441: { }; -2441: -2441: template -2441: constexpr bool __call_is_nt(__invoke_memfun_ref) -2441: { -2441: using _Up = typename __inv_unwrap<_Tp>::type; -2441: return noexcept((std::declval<_Up>().*std::declval<_Fn>())( -2441: std::declval<_Args>()...)); -2441: } -2441: -2441: template -2441: constexpr bool __call_is_nt(__invoke_memfun_deref) -2441: { -2441: return noexcept(((*std::declval<_Tp>()).*std::declval<_Fn>())( -2441: std::declval<_Args>()...)); -2441: } -2441: -2441: template -2441: constexpr bool __call_is_nt(__invoke_memobj_ref) -2441: { -2441: using _Up = typename __inv_unwrap<_Tp>::type; -2441: return noexcept(std::declval<_Up>().*std::declval<_Fn>()); -2441: } -2441: -2441: template -2441: constexpr bool __call_is_nt(__invoke_memobj_deref) -2441: { -2441: return noexcept((*std::declval<_Tp>()).*std::declval<_Fn>()); -2441: } -2441: -2441: template -2441: constexpr bool __call_is_nt(__invoke_other) -2441: { -2441: return noexcept(std::declval<_Fn>()(std::declval<_Args>()...)); -2441: } -2441: -2441: template -2441: struct __call_is_nothrow -2441: : __bool_constant< -2441: std::__call_is_nt<_Fn, _Args...>(typename _Result::__invoke_type{}) -2441: > -2441: { }; -2441: -2441: template -2441: using __call_is_nothrow_ -2441: = __call_is_nothrow<__invoke_result<_Fn, _Args...>, _Fn, _Args...>; -2441: -2441: -2441: template -2441: struct __is_nothrow_invocable -2441: : __and_<__is_invocable<_Fn, _Args...>, -2441: __call_is_nothrow_<_Fn, _Args...>>::type -2441: { }; -2441: -2441: struct __nonesuch { -2441: __nonesuch() = delete; -2441: ~__nonesuch() = delete; -2441: __nonesuch(__nonesuch const&) = delete; -2441: void operator=(__nonesuch const&) = delete; -2441: }; -2441: # 2973 "/usr/include/c++/8/type_traits" 3 -2441: -2441: } -2441: # 56 "/usr/include/c++/8/bits/move.h" 2 3 -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: # 72 "/usr/include/c++/8/bits/move.h" 3 -2441: template -2441: constexpr _Tp&& -2441: forward(typename std::remove_reference<_Tp>::type& __t) noexcept -2441: { return static_cast<_Tp&&>(__t); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: constexpr _Tp&& -2441: forward(typename std::remove_reference<_Tp>::type&& __t) noexcept -2441: { -2441: static_assert(!std::is_lvalue_reference<_Tp>::value, "template argument" -2441: " substituting _Tp is an lvalue reference type"); -2441: return static_cast<_Tp&&>(__t); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: constexpr typename std::remove_reference<_Tp>::type&& -2441: move(_Tp&& __t) noexcept -2441: { return static_cast::type&&>(__t); } -2441: -2441: -2441: template -2441: struct __move_if_noexcept_cond -2441: : public __and_<__not_>, -2441: is_copy_constructible<_Tp>>::type { }; -2441: # 116 "/usr/include/c++/8/bits/move.h" 3 -2441: template -2441: constexpr typename -2441: conditional<__move_if_noexcept_cond<_Tp>::value, const _Tp&, _Tp&&>::type -2441: move_if_noexcept(_Tp& __x) noexcept -2441: { return std::move(__x); } -2441: # 136 "/usr/include/c++/8/bits/move.h" 3 -2441: template -2441: inline _Tp* -2441: addressof(_Tp& __r) noexcept -2441: { return std::__addressof(__r); } -2441: -2441: -2441: -2441: template -2441: const _Tp* addressof(const _Tp&&) = delete; -2441: -2441: -2441: template -2441: inline _Tp -2441: __exchange(_Tp& __obj, _Up&& __new_val) -2441: { -2441: _Tp __old_val = std::move(__obj); -2441: __obj = std::forward<_Up>(__new_val); -2441: return __old_val; -2441: } -2441: # 176 "/usr/include/c++/8/bits/move.h" 3 -2441: template -2441: inline -2441: -2441: typename enable_if<__and_<__not_<__is_tuple_like<_Tp>>, -2441: is_move_constructible<_Tp>, -2441: is_move_assignable<_Tp>>::value>::type -2441: swap(_Tp& __a, _Tp& __b) -2441: noexcept(__and_, -2441: is_nothrow_move_assignable<_Tp>>::value) -2441: -2441: -2441: -2441: -2441: { -2441: -2441: -2441: -2441: _Tp __tmp = std::move(__a); -2441: __a = std::move(__b); -2441: __b = std::move(__tmp); -2441: } -2441: -2441: -2441: -2441: -2441: template -2441: inline -2441: -2441: typename enable_if<__is_swappable<_Tp>::value>::type -2441: swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) -2441: noexcept(__is_nothrow_swappable<_Tp>::value) -2441: -2441: -2441: -2441: -2441: { -2441: for (size_t __n = 0; __n < _Nm; ++__n) -2441: swap(__a[__n], __b[__n]); -2441: } -2441: -2441: -2441: -2441: } -2441: # 60 "/usr/include/c++/8/bits/stl_pair.h" 2 3 -2441: -2441: -2441: -2441: -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: # 76 "/usr/include/c++/8/bits/stl_pair.h" 3 -2441: struct piecewise_construct_t { explicit piecewise_construct_t() = default; }; -2441: -2441: -2441: constexpr piecewise_construct_t piecewise_construct = -2441: piecewise_construct_t(); -2441: -2441: -2441: template -2441: class tuple; -2441: -2441: template -2441: struct _Index_tuple; -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct _PCC -2441: { -2441: template -2441: static constexpr bool _ConstructiblePair() -2441: { -2441: return __and_, -2441: is_constructible<_T2, const _U2&>>::value; -2441: } -2441: -2441: template -2441: static constexpr bool _ImplicitlyConvertiblePair() -2441: { -2441: return __and_, -2441: is_convertible>::value; -2441: } -2441: -2441: template -2441: static constexpr bool _MoveConstructiblePair() -2441: { -2441: return __and_, -2441: is_constructible<_T2, _U2&&>>::value; -2441: } -2441: -2441: template -2441: static constexpr bool _ImplicitlyMoveConvertiblePair() -2441: { -2441: return __and_, -2441: is_convertible<_U2&&, _T2>>::value; -2441: } -2441: -2441: template -2441: static constexpr bool _CopyMovePair() -2441: { -2441: using __do_converts = __and_, -2441: is_convertible<_U2&&, _T2>>; -2441: using __converts = typename conditional<__implicit, -2441: __do_converts, -2441: __not_<__do_converts>>::type; -2441: return __and_, -2441: is_constructible<_T2, _U2&&>, -2441: __converts -2441: >::value; -2441: } -2441: -2441: template -2441: static constexpr bool _MoveCopyPair() -2441: { -2441: using __do_converts = __and_, -2441: is_convertible>; -2441: using __converts = typename conditional<__implicit, -2441: __do_converts, -2441: __not_<__do_converts>>::type; -2441: return __and_, -2441: is_constructible<_T2, const _U2&&>, -2441: __converts -2441: >::value; -2441: } -2441: }; -2441: -2441: template -2441: struct _PCC -2441: { -2441: template -2441: static constexpr bool _ConstructiblePair() -2441: { -2441: return false; -2441: } -2441: -2441: template -2441: static constexpr bool _ImplicitlyConvertiblePair() -2441: { -2441: return false; -2441: } -2441: -2441: template -2441: static constexpr bool _MoveConstructiblePair() -2441: { -2441: return false; -2441: } -2441: -2441: template -2441: static constexpr bool _ImplicitlyMoveConvertiblePair() -2441: { -2441: return false; -2441: } -2441: }; -2441: -2441: -2441: -2441: -2441: struct __nonesuch_no_braces : std::__nonesuch { -2441: explicit __nonesuch_no_braces(const __nonesuch&) = delete; -2441: }; -2441: -2441: -2441: template class __pair_base -2441: { -2441: -2441: template friend struct pair; -2441: __pair_base() = default; -2441: ~__pair_base() = default; -2441: __pair_base(const __pair_base&) = default; -2441: __pair_base& operator=(const __pair_base&) = delete; -2441: -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct pair -2441: : private __pair_base<_T1, _T2> -2441: { -2441: typedef _T1 first_type; -2441: typedef _T2 second_type; -2441: -2441: _T1 first; -2441: _T2 second; -2441: -2441: -2441: -2441: -2441: -2441: -2441: template , -2441: __is_implicitly_default_constructible<_U2>> -2441: ::value, bool>::type = true> -2441: -2441: constexpr pair() -2441: : first(), second() { } -2441: -2441: -2441: template , -2441: is_default_constructible<_U2>, -2441: __not_< -2441: __and_<__is_implicitly_default_constructible<_U1>, -2441: __is_implicitly_default_constructible<_U2>>>> -2441: ::value, bool>::type = false> -2441: explicit constexpr pair() -2441: : first(), second() { } -2441: # 252 "/usr/include/c++/8/bits/stl_pair.h" 3 -2441: using _PCCP = _PCC; -2441: -2441: template() -2441: && _PCCP::template -2441: _ImplicitlyConvertiblePair<_U1, _U2>(), -2441: bool>::type=true> -2441: constexpr pair(const _T1& __a, const _T2& __b) -2441: : first(__a), second(__b) { } -2441: -2441: template() -2441: && !_PCCP::template -2441: _ImplicitlyConvertiblePair<_U1, _U2>(), -2441: bool>::type=false> -2441: explicit constexpr pair(const _T1& __a, const _T2& __b) -2441: : first(__a), second(__b) { } -2441: # 280 "/usr/include/c++/8/bits/stl_pair.h" 3 -2441: template -2441: using _PCCFP = _PCC::value -2441: || !is_same<_T2, _U2>::value, -2441: _T1, _T2>; -2441: -2441: template::template -2441: _ConstructiblePair<_U1, _U2>() -2441: && _PCCFP<_U1, _U2>::template -2441: _ImplicitlyConvertiblePair<_U1, _U2>(), -2441: bool>::type=true> -2441: constexpr pair(const pair<_U1, _U2>& __p) -2441: : first(__p.first), second(__p.second) { } -2441: -2441: template::template -2441: _ConstructiblePair<_U1, _U2>() -2441: && !_PCCFP<_U1, _U2>::template -2441: _ImplicitlyConvertiblePair<_U1, _U2>(), -2441: bool>::type=false> -2441: explicit constexpr pair(const pair<_U1, _U2>& __p) -2441: : first(__p.first), second(__p.second) { } -2441: -2441: constexpr pair(const pair&) = default; -2441: constexpr pair(pair&&) = default; -2441: -2441: -2441: template(), -2441: bool>::type=true> -2441: constexpr pair(_U1&& __x, const _T2& __y) -2441: : first(std::forward<_U1>(__x)), second(__y) { } -2441: -2441: template(), -2441: bool>::type=false> -2441: explicit constexpr pair(_U1&& __x, const _T2& __y) -2441: : first(std::forward<_U1>(__x)), second(__y) { } -2441: -2441: template(), -2441: bool>::type=true> -2441: constexpr pair(const _T1& __x, _U2&& __y) -2441: : first(__x), second(std::forward<_U2>(__y)) { } -2441: -2441: template(), -2441: bool>::type=false> -2441: explicit pair(const _T1& __x, _U2&& __y) -2441: : first(__x), second(std::forward<_U2>(__y)) { } -2441: -2441: template() -2441: && _PCCP::template -2441: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), -2441: bool>::type=true> -2441: constexpr pair(_U1&& __x, _U2&& __y) -2441: : first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) { } -2441: -2441: template() -2441: && !_PCCP::template -2441: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), -2441: bool>::type=false> -2441: explicit constexpr pair(_U1&& __x, _U2&& __y) -2441: : first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) { } -2441: -2441: -2441: template::template -2441: _MoveConstructiblePair<_U1, _U2>() -2441: && _PCCFP<_U1, _U2>::template -2441: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), -2441: bool>::type=true> -2441: constexpr pair(pair<_U1, _U2>&& __p) -2441: : first(std::forward<_U1>(__p.first)), -2441: second(std::forward<_U2>(__p.second)) { } -2441: -2441: template::template -2441: _MoveConstructiblePair<_U1, _U2>() -2441: && !_PCCFP<_U1, _U2>::template -2441: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), -2441: bool>::type=false> -2441: explicit constexpr pair(pair<_U1, _U2>&& __p) -2441: : first(std::forward<_U1>(__p.first)), -2441: second(std::forward<_U2>(__p.second)) { } -2441: -2441: template -2441: pair(piecewise_construct_t, tuple<_Args1...>, tuple<_Args2...>); -2441: -2441: pair& -2441: operator=(typename conditional< -2441: __and_, -2441: is_copy_assignable<_T2>>::value, -2441: const pair&, const __nonesuch_no_braces&>::type __p) -2441: { -2441: first = __p.first; -2441: second = __p.second; -2441: return *this; -2441: } -2441: -2441: pair& -2441: operator=(typename conditional< -2441: __and_, -2441: is_move_assignable<_T2>>::value, -2441: pair&&, __nonesuch_no_braces&&>::type __p) -2441: noexcept(__and_, -2441: is_nothrow_move_assignable<_T2>>::value) -2441: { -2441: first = std::forward(__p.first); -2441: second = std::forward(__p.second); -2441: return *this; -2441: } -2441: -2441: template -2441: typename enable_if<__and_, -2441: is_assignable<_T2&, const _U2&>>::value, -2441: pair&>::type -2441: operator=(const pair<_U1, _U2>& __p) -2441: { -2441: first = __p.first; -2441: second = __p.second; -2441: return *this; -2441: } -2441: -2441: template -2441: typename enable_if<__and_, -2441: is_assignable<_T2&, _U2&&>>::value, -2441: pair&>::type -2441: operator=(pair<_U1, _U2>&& __p) -2441: { -2441: first = std::forward<_U1>(__p.first); -2441: second = std::forward<_U2>(__p.second); -2441: return *this; -2441: } -2441: -2441: void -2441: swap(pair& __p) -2441: noexcept(__and_<__is_nothrow_swappable<_T1>, -2441: __is_nothrow_swappable<_T2>>::value) -2441: { -2441: using std::swap; -2441: swap(first, __p.first); -2441: swap(second, __p.second); -2441: } -2441: -2441: private: -2441: template -2441: pair(tuple<_Args1...>&, tuple<_Args2...>&, -2441: _Index_tuple<_Indexes1...>, _Index_tuple<_Indexes2...>); -2441: -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline constexpr bool -2441: operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) -2441: { return __x.first == __y.first && __x.second == __y.second; } -2441: -2441: -2441: template -2441: inline constexpr bool -2441: operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) -2441: { return __x.first < __y.first -2441: || (!(__y.first < __x.first) && __x.second < __y.second); } -2441: -2441: -2441: template -2441: inline constexpr bool -2441: operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) -2441: { return !(__x == __y); } -2441: -2441: -2441: template -2441: inline constexpr bool -2441: operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) -2441: { return __y < __x; } -2441: -2441: -2441: template -2441: inline constexpr bool -2441: operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) -2441: { return !(__y < __x); } -2441: -2441: -2441: template -2441: inline constexpr bool -2441: operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) -2441: { return !(__x < __y); } -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline -2441: -2441: -2441: typename enable_if<__and_<__is_swappable<_T1>, -2441: __is_swappable<_T2>>::value>::type -2441: -2441: -2441: -2441: swap(pair<_T1, _T2>& __x, pair<_T1, _T2>& __y) -2441: noexcept(noexcept(__x.swap(__y))) -2441: { __x.swap(__y); } -2441: -2441: -2441: template -2441: typename enable_if, -2441: __is_swappable<_T2>>::value>::type -2441: swap(pair<_T1, _T2>&, pair<_T1, _T2>&) = delete; -2441: # 521 "/usr/include/c++/8/bits/stl_pair.h" 3 -2441: template -2441: constexpr pair::__type, -2441: typename __decay_and_strip<_T2>::__type> -2441: make_pair(_T1&& __x, _T2&& __y) -2441: { -2441: typedef typename __decay_and_strip<_T1>::__type __ds_type1; -2441: typedef typename __decay_and_strip<_T2>::__type __ds_type2; -2441: typedef pair<__ds_type1, __ds_type2> __pair_type; -2441: return __pair_type(std::forward<_T1>(__x), std::forward<_T2>(__y)); -2441: } -2441: # 540 "/usr/include/c++/8/bits/stl_pair.h" 3 -2441: -2441: } -2441: # 71 "/usr/include/c++/8/utility" 2 3 -2441: -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/c++/8/initializer_list" 1 3 -2441: # 33 "/usr/include/c++/8/initializer_list" 3 -2441: -2441: # 34 "/usr/include/c++/8/initializer_list" 3 -2441: -2441: -2441: -2441: -2441: -2441: #pragma GCC visibility push(default) -2441: -2441: -2441: -2441: namespace std -2441: { -2441: -2441: template -2441: class initializer_list -2441: { -2441: public: -2441: typedef _E value_type; -2441: typedef const _E& reference; -2441: typedef const _E& const_reference; -2441: typedef size_t size_type; -2441: typedef const _E* iterator; -2441: typedef const _E* const_iterator; -2441: -2441: private: -2441: iterator _M_array; -2441: size_type _M_len; -2441: -2441: -2441: constexpr initializer_list(const_iterator __a, size_type __l) -2441: : _M_array(__a), _M_len(__l) { } -2441: -2441: public: -2441: constexpr initializer_list() noexcept -2441: : _M_array(0), _M_len(0) { } -2441: -2441: -2441: constexpr size_type -2441: size() const noexcept { return _M_len; } -2441: -2441: -2441: constexpr const_iterator -2441: begin() const noexcept { return _M_array; } -2441: -2441: -2441: constexpr const_iterator -2441: end() const noexcept { return begin() + size(); } -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: constexpr const _Tp* -2441: begin(initializer_list<_Tp> __ils) noexcept -2441: { return __ils.begin(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: constexpr const _Tp* -2441: end(initializer_list<_Tp> __ils) noexcept -2441: { return __ils.end(); } -2441: } -2441: -2441: #pragma GCC visibility pop -2441: # 77 "/usr/include/c++/8/utility" 2 3 -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: template -2441: struct tuple_size; -2441: -2441: -2441: -2441: -2441: -2441: template::type, -2441: typename = typename enable_if::value>::type, -2441: size_t = tuple_size<_Tp>::value> -2441: using __enable_if_has_tuple_size = _Tp; -2441: -2441: template -2441: struct tuple_size> -2441: : public tuple_size<_Tp> { }; -2441: -2441: template -2441: struct tuple_size> -2441: : public tuple_size<_Tp> { }; -2441: -2441: template -2441: struct tuple_size> -2441: : public tuple_size<_Tp> { }; -2441: -2441: -2441: template -2441: struct tuple_element; -2441: -2441: -2441: template -2441: using __tuple_element_t = typename tuple_element<__i, _Tp>::type; -2441: -2441: template -2441: struct tuple_element<__i, const _Tp> -2441: { -2441: typedef typename add_const<__tuple_element_t<__i, _Tp>>::type type; -2441: }; -2441: -2441: template -2441: struct tuple_element<__i, volatile _Tp> -2441: { -2441: typedef typename add_volatile<__tuple_element_t<__i, _Tp>>::type type; -2441: }; -2441: -2441: template -2441: struct tuple_element<__i, const volatile _Tp> -2441: { -2441: typedef typename add_cv<__tuple_element_t<__i, _Tp>>::type type; -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: using tuple_element_t = typename tuple_element<__i, _Tp>::type; -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct __is_tuple_like_impl> : true_type -2441: { }; -2441: -2441: -2441: template -2441: struct tuple_size> -2441: : public integral_constant { }; -2441: -2441: -2441: template -2441: struct tuple_element<0, std::pair<_Tp1, _Tp2>> -2441: { typedef _Tp1 type; }; -2441: -2441: -2441: template -2441: struct tuple_element<1, std::pair<_Tp1, _Tp2>> -2441: { typedef _Tp2 type; }; -2441: -2441: template -2441: struct __pair_get; -2441: -2441: template<> -2441: struct __pair_get<0> -2441: { -2441: template -2441: static constexpr _Tp1& -2441: __get(std::pair<_Tp1, _Tp2>& __pair) noexcept -2441: { return __pair.first; } -2441: -2441: template -2441: static constexpr _Tp1&& -2441: __move_get(std::pair<_Tp1, _Tp2>&& __pair) noexcept -2441: { return std::forward<_Tp1>(__pair.first); } -2441: -2441: template -2441: static constexpr const _Tp1& -2441: __const_get(const std::pair<_Tp1, _Tp2>& __pair) noexcept -2441: { return __pair.first; } -2441: -2441: template -2441: static constexpr const _Tp1&& -2441: __const_move_get(const std::pair<_Tp1, _Tp2>&& __pair) noexcept -2441: { return std::forward(__pair.first); } -2441: }; -2441: -2441: template<> -2441: struct __pair_get<1> -2441: { -2441: template -2441: static constexpr _Tp2& -2441: __get(std::pair<_Tp1, _Tp2>& __pair) noexcept -2441: { return __pair.second; } -2441: -2441: template -2441: static constexpr _Tp2&& -2441: __move_get(std::pair<_Tp1, _Tp2>&& __pair) noexcept -2441: { return std::forward<_Tp2>(__pair.second); } -2441: -2441: template -2441: static constexpr const _Tp2& -2441: __const_get(const std::pair<_Tp1, _Tp2>& __pair) noexcept -2441: { return __pair.second; } -2441: -2441: template -2441: static constexpr const _Tp2&& -2441: __const_move_get(const std::pair<_Tp1, _Tp2>&& __pair) noexcept -2441: { return std::forward(__pair.second); } -2441: }; -2441: -2441: template -2441: constexpr typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type& -2441: get(std::pair<_Tp1, _Tp2>& __in) noexcept -2441: { return __pair_get<_Int>::__get(__in); } -2441: -2441: template -2441: constexpr typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type&& -2441: get(std::pair<_Tp1, _Tp2>&& __in) noexcept -2441: { return __pair_get<_Int>::__move_get(std::move(__in)); } -2441: -2441: template -2441: constexpr const typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type& -2441: get(const std::pair<_Tp1, _Tp2>& __in) noexcept -2441: { return __pair_get<_Int>::__const_get(__in); } -2441: -2441: template -2441: constexpr const typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type&& -2441: get(const std::pair<_Tp1, _Tp2>&& __in) noexcept -2441: { return __pair_get<_Int>::__const_move_get(std::move(__in)); } -2441: -2441: -2441: -2441: -2441: -2441: template -2441: constexpr _Tp& -2441: get(pair<_Tp, _Up>& __p) noexcept -2441: { return __p.first; } -2441: -2441: template -2441: constexpr const _Tp& -2441: get(const pair<_Tp, _Up>& __p) noexcept -2441: { return __p.first; } -2441: -2441: template -2441: constexpr _Tp&& -2441: get(pair<_Tp, _Up>&& __p) noexcept -2441: { return std::move(__p.first); } -2441: -2441: template -2441: constexpr const _Tp&& -2441: get(const pair<_Tp, _Up>&& __p) noexcept -2441: { return std::move(__p.first); } -2441: -2441: template -2441: constexpr _Tp& -2441: get(pair<_Up, _Tp>& __p) noexcept -2441: { return __p.second; } -2441: -2441: template -2441: constexpr const _Tp& -2441: get(const pair<_Up, _Tp>& __p) noexcept -2441: { return __p.second; } -2441: -2441: template -2441: constexpr _Tp&& -2441: get(pair<_Up, _Tp>&& __p) noexcept -2441: { return std::move(__p.second); } -2441: -2441: template -2441: constexpr const _Tp&& -2441: get(const pair<_Up, _Tp>&& __p) noexcept -2441: { return std::move(__p.second); } -2441: -2441: -2441: -2441: -2441: template -2441: inline _Tp -2441: exchange(_Tp& __obj, _Up&& __new_val) -2441: { return std::__exchange(__obj, std::forward<_Up>(__new_val)); } -2441: -2441: -2441: -2441: -2441: template struct _Index_tuple { }; -2441: # 298 "/usr/include/c++/8/utility" 3 -2441: template -2441: struct _Build_index_tuple -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: using __type = _Index_tuple<__integer_pack(_Num)...>; -2441: -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct integer_sequence -2441: { -2441: typedef _Tp value_type; -2441: static constexpr size_t size() noexcept { return sizeof...(_Idx); } -2441: }; -2441: -2441: -2441: template -2441: using make_integer_sequence -2441: -2441: -2441: -2441: = integer_sequence<_Tp, __integer_pack(_Num)...>; -2441: -2441: -2441: -2441: -2441: -2441: template -2441: using index_sequence = integer_sequence; -2441: -2441: -2441: template -2441: using make_index_sequence = make_integer_sequence; -2441: -2441: -2441: template -2441: using index_sequence_for = make_index_sequence; -2441: # 393 "/usr/include/c++/8/utility" 3 -2441: -2441: } -2441: # 39 "/usr/include/gmpxx.h" 2 3 4 -2441: # 1 "/usr/include/c++/8/algorithm" 1 3 4 -2441: # 58 "/usr/include/c++/8/algorithm" 3 4 -2441: -2441: # 59 "/usr/include/c++/8/algorithm" 3 -2441: -2441: -2441: # 1 "/usr/include/c++/8/bits/stl_algobase.h" 1 3 -2441: # 60 "/usr/include/c++/8/bits/stl_algobase.h" 3 -2441: # 1 "/usr/include/c++/8/bits/functexcept.h" 1 3 -2441: # 40 "/usr/include/c++/8/bits/functexcept.h" 3 -2441: # 1 "/usr/include/c++/8/bits/exception_defines.h" 1 3 -2441: # 41 "/usr/include/c++/8/bits/functexcept.h" 2 3 -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: void -2441: __throw_bad_exception(void) __attribute__((__noreturn__)); -2441: -2441: -2441: void -2441: __throw_bad_alloc(void) __attribute__((__noreturn__)); -2441: -2441: -2441: void -2441: __throw_bad_cast(void) __attribute__((__noreturn__)); -2441: -2441: void -2441: __throw_bad_typeid(void) __attribute__((__noreturn__)); -2441: -2441: -2441: void -2441: __throw_logic_error(const char*) __attribute__((__noreturn__)); -2441: -2441: void -2441: __throw_domain_error(const char*) __attribute__((__noreturn__)); -2441: -2441: void -2441: __throw_invalid_argument(const char*) __attribute__((__noreturn__)); -2441: -2441: void -2441: __throw_length_error(const char*) __attribute__((__noreturn__)); -2441: -2441: void -2441: __throw_out_of_range(const char*) __attribute__((__noreturn__)); -2441: -2441: void -2441: __throw_out_of_range_fmt(const char*, ...) __attribute__((__noreturn__)) -2441: __attribute__((__format__(__gnu_printf__, 1, 2))); -2441: -2441: void -2441: __throw_runtime_error(const char*) __attribute__((__noreturn__)); -2441: -2441: void -2441: __throw_range_error(const char*) __attribute__((__noreturn__)); -2441: -2441: void -2441: __throw_overflow_error(const char*) __attribute__((__noreturn__)); -2441: -2441: void -2441: __throw_underflow_error(const char*) __attribute__((__noreturn__)); -2441: -2441: -2441: void -2441: __throw_ios_failure(const char*) __attribute__((__noreturn__)); -2441: -2441: void -2441: __throw_system_error(int) __attribute__((__noreturn__)); -2441: -2441: void -2441: __throw_future_error(int) __attribute__((__noreturn__)); -2441: -2441: -2441: void -2441: __throw_bad_function_call() __attribute__((__noreturn__)); -2441: -2441: -2441: } -2441: # 61 "/usr/include/c++/8/bits/stl_algobase.h" 2 3 -2441: # 1 "/usr/include/c++/8/bits/cpp_type_traits.h" 1 3 -2441: # 35 "/usr/include/c++/8/bits/cpp_type_traits.h" 3 -2441: -2441: # 36 "/usr/include/c++/8/bits/cpp_type_traits.h" 3 -2441: # 67 "/usr/include/c++/8/bits/cpp_type_traits.h" 3 -2441: extern "C++" { -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: struct __true_type { }; -2441: struct __false_type { }; -2441: -2441: template -2441: struct __truth_type -2441: { typedef __false_type __type; }; -2441: -2441: template<> -2441: struct __truth_type -2441: { typedef __true_type __type; }; -2441: -2441: -2441: -2441: template -2441: struct __traitor -2441: { -2441: enum { __value = bool(_Sp::__value) || bool(_Tp::__value) }; -2441: typedef typename __truth_type<__value>::__type __type; -2441: }; -2441: -2441: -2441: template -2441: struct __are_same -2441: { -2441: enum { __value = 0 }; -2441: typedef __false_type __type; -2441: }; -2441: -2441: template -2441: struct __are_same<_Tp, _Tp> -2441: { -2441: enum { __value = 1 }; -2441: typedef __true_type __type; -2441: }; -2441: -2441: -2441: template -2441: struct __is_void -2441: { -2441: enum { __value = 0 }; -2441: typedef __false_type __type; -2441: }; -2441: -2441: template<> -2441: struct __is_void -2441: { -2441: enum { __value = 1 }; -2441: typedef __true_type __type; -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: struct __is_integer -2441: { -2441: enum { __value = 0 }; -2441: typedef __false_type __type; -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: template<> -2441: struct __is_integer -2441: { -2441: enum { __value = 1 }; -2441: typedef __true_type __type; -2441: }; -2441: -2441: template<> -2441: struct __is_integer -2441: { -2441: enum { __value = 1 }; -2441: typedef __true_type __type; -2441: }; -2441: -2441: template<> -2441: struct __is_integer -2441: { -2441: enum { __value = 1 }; -2441: typedef __true_type __type; -2441: }; -2441: -2441: template<> -2441: struct __is_integer -2441: { -2441: enum { __value = 1 }; -2441: typedef __true_type __type; -2441: }; -2441: -2441: -2441: template<> -2441: struct __is_integer -2441: { -2441: enum { __value = 1 }; -2441: typedef __true_type __type; -2441: }; -2441: -2441: -2441: -2441: template<> -2441: struct __is_integer -2441: { -2441: enum { __value = 1 }; -2441: typedef __true_type __type; -2441: }; -2441: -2441: template<> -2441: struct __is_integer -2441: { -2441: enum { __value = 1 }; -2441: typedef __true_type __type; -2441: }; -2441: -2441: -2441: template<> -2441: struct __is_integer -2441: { -2441: enum { __value = 1 }; -2441: typedef __true_type __type; -2441: }; -2441: -2441: template<> -2441: struct __is_integer -2441: { -2441: enum { __value = 1 }; -2441: typedef __true_type __type; -2441: }; -2441: -2441: template<> -2441: struct __is_integer -2441: { -2441: enum { __value = 1 }; -2441: typedef __true_type __type; -2441: }; -2441: -2441: template<> -2441: struct __is_integer -2441: { -2441: enum { __value = 1 }; -2441: typedef __true_type __type; -2441: }; -2441: -2441: template<> -2441: struct __is_integer -2441: { -2441: enum { __value = 1 }; -2441: typedef __true_type __type; -2441: }; -2441: -2441: template<> -2441: struct __is_integer -2441: { -2441: enum { __value = 1 }; -2441: typedef __true_type __type; -2441: }; -2441: -2441: template<> -2441: struct __is_integer -2441: { -2441: enum { __value = 1 }; -2441: typedef __true_type __type; -2441: }; -2441: -2441: template<> -2441: struct __is_integer -2441: { -2441: enum { __value = 1 }; -2441: typedef __true_type __type; -2441: }; -2441: # 278 "/usr/include/c++/8/bits/cpp_type_traits.h" 3 -2441: template -2441: struct __is_floating -2441: { -2441: enum { __value = 0 }; -2441: typedef __false_type __type; -2441: }; -2441: -2441: -2441: template<> -2441: struct __is_floating -2441: { -2441: enum { __value = 1 }; -2441: typedef __true_type __type; -2441: }; -2441: -2441: template<> -2441: struct __is_floating -2441: { -2441: enum { __value = 1 }; -2441: typedef __true_type __type; -2441: }; -2441: -2441: template<> -2441: struct __is_floating -2441: { -2441: enum { __value = 1 }; -2441: typedef __true_type __type; -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: struct __is_pointer -2441: { -2441: enum { __value = 0 }; -2441: typedef __false_type __type; -2441: }; -2441: -2441: template -2441: struct __is_pointer<_Tp*> -2441: { -2441: enum { __value = 1 }; -2441: typedef __true_type __type; -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: struct __is_arithmetic -2441: : public __traitor<__is_integer<_Tp>, __is_floating<_Tp> > -2441: { }; -2441: -2441: -2441: -2441: -2441: template -2441: struct __is_scalar -2441: : public __traitor<__is_arithmetic<_Tp>, __is_pointer<_Tp> > -2441: { }; -2441: -2441: -2441: -2441: -2441: template -2441: struct __is_char -2441: { -2441: enum { __value = 0 }; -2441: typedef __false_type __type; -2441: }; -2441: -2441: template<> -2441: struct __is_char -2441: { -2441: enum { __value = 1 }; -2441: typedef __true_type __type; -2441: }; -2441: -2441: -2441: template<> -2441: struct __is_char -2441: { -2441: enum { __value = 1 }; -2441: typedef __true_type __type; -2441: }; -2441: -2441: -2441: template -2441: struct __is_byte -2441: { -2441: enum { __value = 0 }; -2441: typedef __false_type __type; -2441: }; -2441: -2441: template<> -2441: struct __is_byte -2441: { -2441: enum { __value = 1 }; -2441: typedef __true_type __type; -2441: }; -2441: -2441: template<> -2441: struct __is_byte -2441: { -2441: enum { __value = 1 }; -2441: typedef __true_type __type; -2441: }; -2441: -2441: template<> -2441: struct __is_byte -2441: { -2441: enum { __value = 1 }; -2441: typedef __true_type __type; -2441: }; -2441: # 408 "/usr/include/c++/8/bits/cpp_type_traits.h" 3 -2441: template -2441: struct __is_move_iterator -2441: { -2441: enum { __value = 0 }; -2441: typedef __false_type __type; -2441: }; -2441: -2441: -2441: -2441: template -2441: inline _Iterator -2441: __miter_base(_Iterator __it) -2441: { return __it; } -2441: -2441: -2441: } -2441: } -2441: # 62 "/usr/include/c++/8/bits/stl_algobase.h" 2 3 -2441: # 1 "/usr/include/c++/8/ext/type_traits.h" 1 3 -2441: # 32 "/usr/include/c++/8/ext/type_traits.h" 3 -2441: -2441: # 33 "/usr/include/c++/8/ext/type_traits.h" 3 -2441: -2441: -2441: -2441: -2441: extern "C++" { -2441: -2441: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: template -2441: struct __enable_if -2441: { }; -2441: -2441: template -2441: struct __enable_if -2441: { typedef _Tp __type; }; -2441: -2441: -2441: -2441: template -2441: struct __conditional_type -2441: { typedef _Iftrue __type; }; -2441: -2441: template -2441: struct __conditional_type -2441: { typedef _Iffalse __type; }; -2441: -2441: -2441: -2441: template -2441: struct __add_unsigned -2441: { -2441: private: -2441: typedef __enable_if::__value, _Tp> __if_type; -2441: -2441: public: -2441: typedef typename __if_type::__type __type; -2441: }; -2441: -2441: template<> -2441: struct __add_unsigned -2441: { typedef unsigned char __type; }; -2441: -2441: template<> -2441: struct __add_unsigned -2441: { typedef unsigned char __type; }; -2441: -2441: template<> -2441: struct __add_unsigned -2441: { typedef unsigned short __type; }; -2441: -2441: template<> -2441: struct __add_unsigned -2441: { typedef unsigned int __type; }; -2441: -2441: template<> -2441: struct __add_unsigned -2441: { typedef unsigned long __type; }; -2441: -2441: template<> -2441: struct __add_unsigned -2441: { typedef unsigned long long __type; }; -2441: -2441: -2441: template<> -2441: struct __add_unsigned; -2441: -2441: template<> -2441: struct __add_unsigned; -2441: -2441: -2441: -2441: template -2441: struct __remove_unsigned -2441: { -2441: private: -2441: typedef __enable_if::__value, _Tp> __if_type; -2441: -2441: public: -2441: typedef typename __if_type::__type __type; -2441: }; -2441: -2441: template<> -2441: struct __remove_unsigned -2441: { typedef signed char __type; }; -2441: -2441: template<> -2441: struct __remove_unsigned -2441: { typedef signed char __type; }; -2441: -2441: template<> -2441: struct __remove_unsigned -2441: { typedef short __type; }; -2441: -2441: template<> -2441: struct __remove_unsigned -2441: { typedef int __type; }; -2441: -2441: template<> -2441: struct __remove_unsigned -2441: { typedef long __type; }; -2441: -2441: template<> -2441: struct __remove_unsigned -2441: { typedef long long __type; }; -2441: -2441: -2441: template<> -2441: struct __remove_unsigned; -2441: -2441: template<> -2441: struct __remove_unsigned; -2441: -2441: -2441: -2441: template -2441: inline bool -2441: __is_null_pointer(_Type* __ptr) -2441: { return __ptr == 0; } -2441: -2441: template -2441: inline bool -2441: __is_null_pointer(_Type) -2441: { return false; } -2441: -2441: -2441: inline bool -2441: __is_null_pointer(std::nullptr_t) -2441: { return true; } -2441: -2441: -2441: -2441: template::__value> -2441: struct __promote -2441: { typedef double __type; }; -2441: -2441: -2441: -2441: -2441: template -2441: struct __promote<_Tp, false> -2441: { }; -2441: -2441: template<> -2441: struct __promote -2441: { typedef long double __type; }; -2441: -2441: template<> -2441: struct __promote -2441: { typedef double __type; }; -2441: -2441: template<> -2441: struct __promote -2441: { typedef float __type; }; -2441: -2441: template::__type, -2441: typename _Up2 = typename __promote<_Up>::__type> -2441: struct __promote_2 -2441: { -2441: typedef __typeof__(_Tp2() + _Up2()) __type; -2441: }; -2441: -2441: template::__type, -2441: typename _Up2 = typename __promote<_Up>::__type, -2441: typename _Vp2 = typename __promote<_Vp>::__type> -2441: struct __promote_3 -2441: { -2441: typedef __typeof__(_Tp2() + _Up2() + _Vp2()) __type; -2441: }; -2441: -2441: template::__type, -2441: typename _Up2 = typename __promote<_Up>::__type, -2441: typename _Vp2 = typename __promote<_Vp>::__type, -2441: typename _Wp2 = typename __promote<_Wp>::__type> -2441: struct __promote_4 -2441: { -2441: typedef __typeof__(_Tp2() + _Up2() + _Vp2() + _Wp2()) __type; -2441: }; -2441: -2441: -2441: } -2441: } -2441: # 63 "/usr/include/c++/8/bits/stl_algobase.h" 2 3 -2441: # 1 "/usr/include/c++/8/ext/numeric_traits.h" 1 3 -2441: # 32 "/usr/include/c++/8/ext/numeric_traits.h" 3 -2441: -2441: # 33 "/usr/include/c++/8/ext/numeric_traits.h" 3 -2441: -2441: -2441: -2441: -2441: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: # 54 "/usr/include/c++/8/ext/numeric_traits.h" 3 -2441: template -2441: struct __numeric_traits_integer -2441: { -2441: -2441: static const _Value __min = (((_Value)(-1) < 0) ? (_Value)1 << (sizeof(_Value) * 8 - ((_Value)(-1) < 0)) : (_Value)0); -2441: static const _Value __max = (((_Value)(-1) < 0) ? (((((_Value)1 << ((sizeof(_Value) * 8 - ((_Value)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(_Value)0); -2441: -2441: -2441: -2441: static const bool __is_signed = ((_Value)(-1) < 0); -2441: static const int __digits = (sizeof(_Value) * 8 - ((_Value)(-1) < 0)); -2441: }; -2441: -2441: template -2441: const _Value __numeric_traits_integer<_Value>::__min; -2441: -2441: template -2441: const _Value __numeric_traits_integer<_Value>::__max; -2441: -2441: template -2441: const bool __numeric_traits_integer<_Value>::__is_signed; -2441: -2441: template -2441: const int __numeric_traits_integer<_Value>::__digits; -2441: # 99 "/usr/include/c++/8/ext/numeric_traits.h" 3 -2441: template -2441: struct __numeric_traits_floating -2441: { -2441: -2441: static const int __max_digits10 = (2 + (std::__are_same<_Value, float>::__value ? 24 : std::__are_same<_Value, double>::__value ? 53 : 64) * 643L / 2136); -2441: -2441: -2441: static const bool __is_signed = true; -2441: static const int __digits10 = (std::__are_same<_Value, float>::__value ? 6 : std::__are_same<_Value, double>::__value ? 15 : 18); -2441: static const int __max_exponent10 = (std::__are_same<_Value, float>::__value ? 38 : std::__are_same<_Value, double>::__value ? 308 : 4932); -2441: }; -2441: -2441: template -2441: const int __numeric_traits_floating<_Value>::__max_digits10; -2441: -2441: template -2441: const bool __numeric_traits_floating<_Value>::__is_signed; -2441: -2441: template -2441: const int __numeric_traits_floating<_Value>::__digits10; -2441: -2441: template -2441: const int __numeric_traits_floating<_Value>::__max_exponent10; -2441: -2441: template -2441: struct __numeric_traits -2441: : public __conditional_type::__value, -2441: __numeric_traits_integer<_Value>, -2441: __numeric_traits_floating<_Value> >::__type -2441: { }; -2441: -2441: -2441: } -2441: # 64 "/usr/include/c++/8/bits/stl_algobase.h" 2 3 -2441: -2441: # 1 "/usr/include/c++/8/bits/stl_iterator_base_types.h" 1 3 -2441: # 62 "/usr/include/c++/8/bits/stl_iterator_base_types.h" 3 -2441: -2441: # 63 "/usr/include/c++/8/bits/stl_iterator_base_types.h" 3 -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: # 89 "/usr/include/c++/8/bits/stl_iterator_base_types.h" 3 -2441: struct input_iterator_tag { }; -2441: -2441: -2441: struct output_iterator_tag { }; -2441: -2441: -2441: struct forward_iterator_tag : public input_iterator_tag { }; -2441: -2441: -2441: -2441: struct bidirectional_iterator_tag : public forward_iterator_tag { }; -2441: -2441: -2441: -2441: struct random_access_iterator_tag : public bidirectional_iterator_tag { }; -2441: # 116 "/usr/include/c++/8/bits/stl_iterator_base_types.h" 3 -2441: template -2441: struct iterator -2441: { -2441: -2441: typedef _Category iterator_category; -2441: -2441: typedef _Tp value_type; -2441: -2441: typedef _Distance difference_type; -2441: -2441: typedef _Pointer pointer; -2441: -2441: typedef _Reference reference; -2441: }; -2441: # 143 "/usr/include/c++/8/bits/stl_iterator_base_types.h" 3 -2441: template> -2441: struct __iterator_traits { }; -2441: -2441: template -2441: struct __iterator_traits<_Iterator, -2441: __void_t> -2441: { -2441: typedef typename _Iterator::iterator_category iterator_category; -2441: typedef typename _Iterator::value_type value_type; -2441: typedef typename _Iterator::difference_type difference_type; -2441: typedef typename _Iterator::pointer pointer; -2441: typedef typename _Iterator::reference reference; -2441: }; -2441: -2441: template -2441: struct iterator_traits -2441: : public __iterator_traits<_Iterator> { }; -2441: # 177 "/usr/include/c++/8/bits/stl_iterator_base_types.h" 3 -2441: template -2441: struct iterator_traits<_Tp*> -2441: { -2441: typedef random_access_iterator_tag iterator_category; -2441: typedef _Tp value_type; -2441: typedef ptrdiff_t difference_type; -2441: typedef _Tp* pointer; -2441: typedef _Tp& reference; -2441: }; -2441: -2441: -2441: template -2441: struct iterator_traits -2441: { -2441: typedef random_access_iterator_tag iterator_category; -2441: typedef _Tp value_type; -2441: typedef ptrdiff_t difference_type; -2441: typedef const _Tp* pointer; -2441: typedef const _Tp& reference; -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline constexpr -2441: typename iterator_traits<_Iter>::iterator_category -2441: __iterator_category(const _Iter&) -2441: { return typename iterator_traits<_Iter>::iterator_category(); } -2441: # 231 "/usr/include/c++/8/bits/stl_iterator_base_types.h" 3 -2441: template -2441: using _RequireInputIter = typename -2441: enable_if::iterator_category, -2441: input_iterator_tag>::value>::type; -2441: -2441: -2441: -2441: } -2441: # 66 "/usr/include/c++/8/bits/stl_algobase.h" 2 3 -2441: # 1 "/usr/include/c++/8/bits/stl_iterator_base_funcs.h" 1 3 -2441: # 62 "/usr/include/c++/8/bits/stl_iterator_base_funcs.h" 3 -2441: -2441: # 63 "/usr/include/c++/8/bits/stl_iterator_base_funcs.h" 3 -2441: -2441: -2441: # 1 "/usr/include/c++/8/debug/assertions.h" 1 3 -2441: # 66 "/usr/include/c++/8/bits/stl_iterator_base_funcs.h" 2 3 -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: -2441: template struct _List_iterator; -2441: template struct _List_const_iterator; -2441: -2441: -2441: template -2441: inline constexpr -2441: typename iterator_traits<_InputIterator>::difference_type -2441: __distance(_InputIterator __first, _InputIterator __last, -2441: input_iterator_tag) -2441: { -2441: -2441: -2441: -2441: typename iterator_traits<_InputIterator>::difference_type __n = 0; -2441: while (__first != __last) -2441: { -2441: ++__first; -2441: ++__n; -2441: } -2441: return __n; -2441: } -2441: -2441: template -2441: inline constexpr -2441: typename iterator_traits<_RandomAccessIterator>::difference_type -2441: __distance(_RandomAccessIterator __first, _RandomAccessIterator __last, -2441: random_access_iterator_tag) -2441: { -2441: -2441: -2441: -2441: return __last - __first; -2441: } -2441: -2441: -2441: -2441: template -2441: ptrdiff_t -2441: __distance(std::_List_iterator<_Tp>, -2441: std::_List_iterator<_Tp>, -2441: input_iterator_tag); -2441: -2441: template -2441: ptrdiff_t -2441: __distance(std::_List_const_iterator<_Tp>, -2441: std::_List_const_iterator<_Tp>, -2441: input_iterator_tag); -2441: # 135 "/usr/include/c++/8/bits/stl_iterator_base_funcs.h" 3 -2441: template -2441: inline -2441: typename iterator_traits<_InputIterator>::difference_type -2441: distance(_InputIterator __first, _InputIterator __last) -2441: { -2441: -2441: return std::__distance(__first, __last, -2441: std::__iterator_category(__first)); -2441: } -2441: -2441: template -2441: inline constexpr void -2441: __advance(_InputIterator& __i, _Distance __n, input_iterator_tag) -2441: { -2441: -2441: -2441: ; -2441: while (__n--) -2441: ++__i; -2441: } -2441: -2441: template -2441: inline constexpr void -2441: __advance(_BidirectionalIterator& __i, _Distance __n, -2441: bidirectional_iterator_tag) -2441: { -2441: -2441: -2441: -2441: if (__n > 0) -2441: while (__n--) -2441: ++__i; -2441: else -2441: while (__n++) -2441: --__i; -2441: } -2441: -2441: template -2441: inline constexpr void -2441: __advance(_RandomAccessIterator& __i, _Distance __n, -2441: random_access_iterator_tag) -2441: { -2441: -2441: -2441: -2441: if (__builtin_constant_p(__n) && __n == 1) -2441: ++__i; -2441: else if (__builtin_constant_p(__n) && __n == -1) -2441: --__i; -2441: else -2441: __i += __n; -2441: } -2441: # 200 "/usr/include/c++/8/bits/stl_iterator_base_funcs.h" 3 -2441: template -2441: inline void -2441: advance(_InputIterator& __i, _Distance __n) -2441: { -2441: -2441: typename iterator_traits<_InputIterator>::difference_type __d = __n; -2441: std::__advance(__i, __d, std::__iterator_category(__i)); -2441: } -2441: -2441: -2441: -2441: template -2441: inline _InputIterator -2441: next(_InputIterator __x, typename -2441: iterator_traits<_InputIterator>::difference_type __n = 1) -2441: { -2441: -2441: -2441: std::advance(__x, __n); -2441: return __x; -2441: } -2441: -2441: template -2441: inline _BidirectionalIterator -2441: prev(_BidirectionalIterator __x, typename -2441: iterator_traits<_BidirectionalIterator>::difference_type __n = 1) -2441: { -2441: -2441: -2441: -2441: std::advance(__x, -__n); -2441: return __x; -2441: } -2441: -2441: -2441: -2441: -2441: } -2441: # 67 "/usr/include/c++/8/bits/stl_algobase.h" 2 3 -2441: # 1 "/usr/include/c++/8/bits/stl_iterator.h" 1 3 -2441: # 66 "/usr/include/c++/8/bits/stl_iterator.h" 3 -2441: # 1 "/usr/include/c++/8/bits/ptr_traits.h" 1 3 -2441: # 37 "/usr/include/c++/8/bits/ptr_traits.h" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: class __undefined; -2441: -2441: -2441: template -2441: struct __get_first_arg -2441: { using type = __undefined; }; -2441: -2441: template class _Template, typename _Tp, -2441: typename... _Types> -2441: struct __get_first_arg<_Template<_Tp, _Types...>> -2441: { using type = _Tp; }; -2441: -2441: template -2441: using __get_first_arg_t = typename __get_first_arg<_Tp>::type; -2441: -2441: -2441: template -2441: struct __replace_first_arg -2441: { }; -2441: -2441: template class _Template, typename _Up, -2441: typename _Tp, typename... _Types> -2441: struct __replace_first_arg<_Template<_Tp, _Types...>, _Up> -2441: { using type = _Template<_Up, _Types...>; }; -2441: -2441: template -2441: using __replace_first_arg_t = typename __replace_first_arg<_Tp, _Up>::type; -2441: -2441: template -2441: using __make_not_void -2441: = typename conditional::value, __undefined, _Tp>::type; -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct pointer_traits -2441: { -2441: private: -2441: template -2441: using __element_type = typename _Tp::element_type; -2441: -2441: template -2441: using __difference_type = typename _Tp::difference_type; -2441: -2441: template -2441: struct __rebind : __replace_first_arg<_Tp, _Up> { }; -2441: -2441: template -2441: struct __rebind<_Tp, _Up, __void_t>> -2441: { using type = typename _Tp::template rebind<_Up>; }; -2441: -2441: public: -2441: -2441: using pointer = _Ptr; -2441: -2441: -2441: using element_type -2441: = __detected_or_t<__get_first_arg_t<_Ptr>, __element_type, _Ptr>; -2441: -2441: -2441: using difference_type -2441: = __detected_or_t; -2441: -2441: -2441: template -2441: using rebind = typename __rebind<_Ptr, _Up>::type; -2441: -2441: static _Ptr -2441: pointer_to(__make_not_void& __e) -2441: { return _Ptr::pointer_to(__e); } -2441: -2441: static_assert(!is_same::value, -2441: "pointer type defines element_type or is like SomePointer"); -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct pointer_traits<_Tp*> -2441: { -2441: -2441: typedef _Tp* pointer; -2441: -2441: typedef _Tp element_type; -2441: -2441: typedef ptrdiff_t difference_type; -2441: -2441: template -2441: using rebind = _Up*; -2441: -2441: -2441: -2441: -2441: -2441: -2441: static pointer -2441: pointer_to(__make_not_void& __r) noexcept -2441: { return std::addressof(__r); } -2441: }; -2441: -2441: -2441: template -2441: using __ptr_rebind = typename pointer_traits<_Ptr>::template rebind<_Tp>; -2441: -2441: template -2441: constexpr _Tp* -2441: __to_address(_Tp* __ptr) noexcept -2441: { -2441: static_assert(!std::is_function<_Tp>::value, "not a function pointer"); -2441: return __ptr; -2441: } -2441: -2441: -2441: template -2441: constexpr typename std::pointer_traits<_Ptr>::element_type* -2441: __to_address(const _Ptr& __ptr) -2441: { return std::__to_address(__ptr.operator->()); } -2441: # 198 "/usr/include/c++/8/bits/ptr_traits.h" 3 -2441: -2441: } -2441: # 67 "/usr/include/c++/8/bits/stl_iterator.h" 2 3 -2441: -2441: -2441: -2441: -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: # 100 "/usr/include/c++/8/bits/stl_iterator.h" 3 -2441: template -2441: class reverse_iterator -2441: : public iterator::iterator_category, -2441: typename iterator_traits<_Iterator>::value_type, -2441: typename iterator_traits<_Iterator>::difference_type, -2441: typename iterator_traits<_Iterator>::pointer, -2441: typename iterator_traits<_Iterator>::reference> -2441: { -2441: protected: -2441: _Iterator current; -2441: -2441: typedef iterator_traits<_Iterator> __traits_type; -2441: -2441: public: -2441: typedef _Iterator iterator_type; -2441: typedef typename __traits_type::difference_type difference_type; -2441: typedef typename __traits_type::pointer pointer; -2441: typedef typename __traits_type::reference reference; -2441: # 126 "/usr/include/c++/8/bits/stl_iterator.h" 3 -2441: -2441: reverse_iterator() : current() { } -2441: -2441: -2441: -2441: -2441: explicit -2441: reverse_iterator(iterator_type __x) : current(__x) { } -2441: -2441: -2441: -2441: -2441: -2441: reverse_iterator(const reverse_iterator& __x) -2441: : current(__x.current) { } -2441: -2441: -2441: -2441: -2441: -2441: template -2441: -2441: reverse_iterator(const reverse_iterator<_Iter>& __x) -2441: : current(__x.base()) { } -2441: -2441: -2441: -2441: -2441: iterator_type -2441: base() const -2441: { return current; } -2441: # 168 "/usr/include/c++/8/bits/stl_iterator.h" 3 -2441: reference -2441: operator*() const -2441: { -2441: _Iterator __tmp = current; -2441: return *--__tmp; -2441: } -2441: # 182 "/usr/include/c++/8/bits/stl_iterator.h" 3 -2441: pointer -2441: operator->() const -2441: { return std::__addressof(operator*()); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: reverse_iterator& -2441: operator++() -2441: { -2441: --current; -2441: return *this; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: reverse_iterator -2441: operator++(int) -2441: { -2441: reverse_iterator __tmp = *this; -2441: --current; -2441: return __tmp; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: reverse_iterator& -2441: operator--() -2441: { -2441: ++current; -2441: return *this; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: reverse_iterator -2441: operator--(int) -2441: { -2441: reverse_iterator __tmp = *this; -2441: ++current; -2441: return __tmp; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: reverse_iterator -2441: operator+(difference_type __n) const -2441: { return reverse_iterator(current - __n); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: reverse_iterator& -2441: operator+=(difference_type __n) -2441: { -2441: current -= __n; -2441: return *this; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: reverse_iterator -2441: operator-(difference_type __n) const -2441: { return reverse_iterator(current + __n); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: reverse_iterator& -2441: operator-=(difference_type __n) -2441: { -2441: current += __n; -2441: return *this; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: reference -2441: operator[](difference_type __n) const -2441: { return *(*this + __n); } -2441: }; -2441: # 300 "/usr/include/c++/8/bits/stl_iterator.h" 3 -2441: template -2441: inline bool -2441: operator==(const reverse_iterator<_Iterator>& __x, -2441: const reverse_iterator<_Iterator>& __y) -2441: { return __x.base() == __y.base(); } -2441: -2441: template -2441: inline bool -2441: operator<(const reverse_iterator<_Iterator>& __x, -2441: const reverse_iterator<_Iterator>& __y) -2441: { return __y.base() < __x.base(); } -2441: -2441: template -2441: inline bool -2441: operator!=(const reverse_iterator<_Iterator>& __x, -2441: const reverse_iterator<_Iterator>& __y) -2441: { return !(__x == __y); } -2441: -2441: template -2441: inline bool -2441: operator>(const reverse_iterator<_Iterator>& __x, -2441: const reverse_iterator<_Iterator>& __y) -2441: { return __y < __x; } -2441: -2441: template -2441: inline bool -2441: operator<=(const reverse_iterator<_Iterator>& __x, -2441: const reverse_iterator<_Iterator>& __y) -2441: { return !(__y < __x); } -2441: -2441: template -2441: inline bool -2441: operator>=(const reverse_iterator<_Iterator>& __x, -2441: const reverse_iterator<_Iterator>& __y) -2441: { return !(__x < __y); } -2441: -2441: -2441: -2441: template -2441: inline bool -2441: operator==(const reverse_iterator<_IteratorL>& __x, -2441: const reverse_iterator<_IteratorR>& __y) -2441: { return __x.base() == __y.base(); } -2441: -2441: template -2441: inline bool -2441: operator<(const reverse_iterator<_IteratorL>& __x, -2441: const reverse_iterator<_IteratorR>& __y) -2441: { return __y.base() < __x.base(); } -2441: -2441: template -2441: inline bool -2441: operator!=(const reverse_iterator<_IteratorL>& __x, -2441: const reverse_iterator<_IteratorR>& __y) -2441: { return !(__x == __y); } -2441: -2441: template -2441: inline bool -2441: operator>(const reverse_iterator<_IteratorL>& __x, -2441: const reverse_iterator<_IteratorR>& __y) -2441: { return __y < __x; } -2441: -2441: template -2441: inline bool -2441: operator<=(const reverse_iterator<_IteratorL>& __x, -2441: const reverse_iterator<_IteratorR>& __y) -2441: { return !(__y < __x); } -2441: -2441: template -2441: inline bool -2441: operator>=(const reverse_iterator<_IteratorL>& __x, -2441: const reverse_iterator<_IteratorR>& __y) -2441: { return !(__x < __y); } -2441: # 390 "/usr/include/c++/8/bits/stl_iterator.h" 3 -2441: template -2441: inline auto -2441: operator-(const reverse_iterator<_IteratorL>& __x, -2441: const reverse_iterator<_IteratorR>& __y) -2441: -> decltype(__y.base() - __x.base()) -2441: { return __y.base() - __x.base(); } -2441: -2441: -2441: template -2441: inline reverse_iterator<_Iterator> -2441: operator+(typename reverse_iterator<_Iterator>::difference_type __n, -2441: const reverse_iterator<_Iterator>& __x) -2441: { return reverse_iterator<_Iterator>(__x.base() - __n); } -2441: -2441: -2441: -2441: template -2441: inline reverse_iterator<_Iterator> -2441: __make_reverse_iterator(_Iterator __i) -2441: { return reverse_iterator<_Iterator>(__i); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline reverse_iterator<_Iterator> -2441: make_reverse_iterator(_Iterator __i) -2441: { return reverse_iterator<_Iterator>(__i); } -2441: -2441: -2441: -2441: -2441: template -2441: auto -2441: __niter_base(reverse_iterator<_Iterator> __it) -2441: -> decltype(__make_reverse_iterator(__niter_base(__it.base()))) -2441: { return __make_reverse_iterator(__niter_base(__it.base())); } -2441: -2441: template -2441: struct __is_move_iterator > -2441: : __is_move_iterator<_Iterator> -2441: { }; -2441: -2441: template -2441: auto -2441: __miter_base(reverse_iterator<_Iterator> __it) -2441: -> decltype(__make_reverse_iterator(__miter_base(__it.base()))) -2441: { return __make_reverse_iterator(__miter_base(__it.base())); } -2441: # 454 "/usr/include/c++/8/bits/stl_iterator.h" 3 -2441: template -2441: class back_insert_iterator -2441: : public iterator -2441: { -2441: protected: -2441: _Container* container; -2441: -2441: public: -2441: -2441: typedef _Container container_type; -2441: -2441: -2441: explicit -2441: back_insert_iterator(_Container& __x) -2441: : container(std::__addressof(__x)) { } -2441: # 489 "/usr/include/c++/8/bits/stl_iterator.h" 3 -2441: back_insert_iterator& -2441: operator=(const typename _Container::value_type& __value) -2441: { -2441: container->push_back(__value); -2441: return *this; -2441: } -2441: -2441: back_insert_iterator& -2441: operator=(typename _Container::value_type&& __value) -2441: { -2441: container->push_back(std::move(__value)); -2441: return *this; -2441: } -2441: -2441: -2441: -2441: back_insert_iterator& -2441: operator*() -2441: { return *this; } -2441: -2441: -2441: back_insert_iterator& -2441: operator++() -2441: { return *this; } -2441: -2441: -2441: back_insert_iterator -2441: operator++(int) -2441: { return *this; } -2441: }; -2441: # 531 "/usr/include/c++/8/bits/stl_iterator.h" 3 -2441: template -2441: inline back_insert_iterator<_Container> -2441: back_inserter(_Container& __x) -2441: { return back_insert_iterator<_Container>(__x); } -2441: # 546 "/usr/include/c++/8/bits/stl_iterator.h" 3 -2441: template -2441: class front_insert_iterator -2441: : public iterator -2441: { -2441: protected: -2441: _Container* container; -2441: -2441: public: -2441: -2441: typedef _Container container_type; -2441: -2441: -2441: explicit front_insert_iterator(_Container& __x) -2441: : container(std::__addressof(__x)) { } -2441: # 580 "/usr/include/c++/8/bits/stl_iterator.h" 3 -2441: front_insert_iterator& -2441: operator=(const typename _Container::value_type& __value) -2441: { -2441: container->push_front(__value); -2441: return *this; -2441: } -2441: -2441: front_insert_iterator& -2441: operator=(typename _Container::value_type&& __value) -2441: { -2441: container->push_front(std::move(__value)); -2441: return *this; -2441: } -2441: -2441: -2441: -2441: front_insert_iterator& -2441: operator*() -2441: { return *this; } -2441: -2441: -2441: front_insert_iterator& -2441: operator++() -2441: { return *this; } -2441: -2441: -2441: front_insert_iterator -2441: operator++(int) -2441: { return *this; } -2441: }; -2441: # 622 "/usr/include/c++/8/bits/stl_iterator.h" 3 -2441: template -2441: inline front_insert_iterator<_Container> -2441: front_inserter(_Container& __x) -2441: { return front_insert_iterator<_Container>(__x); } -2441: # 641 "/usr/include/c++/8/bits/stl_iterator.h" 3 -2441: template -2441: class insert_iterator -2441: : public iterator -2441: { -2441: protected: -2441: _Container* container; -2441: typename _Container::iterator iter; -2441: -2441: public: -2441: -2441: typedef _Container container_type; -2441: -2441: -2441: -2441: -2441: -2441: insert_iterator(_Container& __x, typename _Container::iterator __i) -2441: : container(std::__addressof(__x)), iter(__i) {} -2441: # 692 "/usr/include/c++/8/bits/stl_iterator.h" 3 -2441: insert_iterator& -2441: operator=(const typename _Container::value_type& __value) -2441: { -2441: iter = container->insert(iter, __value); -2441: ++iter; -2441: return *this; -2441: } -2441: -2441: insert_iterator& -2441: operator=(typename _Container::value_type&& __value) -2441: { -2441: iter = container->insert(iter, std::move(__value)); -2441: ++iter; -2441: return *this; -2441: } -2441: -2441: -2441: -2441: insert_iterator& -2441: operator*() -2441: { return *this; } -2441: -2441: -2441: insert_iterator& -2441: operator++() -2441: { return *this; } -2441: -2441: -2441: insert_iterator& -2441: operator++(int) -2441: { return *this; } -2441: }; -2441: # 737 "/usr/include/c++/8/bits/stl_iterator.h" 3 -2441: template -2441: inline insert_iterator<_Container> -2441: inserter(_Container& __x, _Iterator __i) -2441: { -2441: return insert_iterator<_Container>(__x, -2441: typename _Container::iterator(__i)); -2441: } -2441: -2441: -2441: -2441: -2441: } -2441: -2441: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: # 761 "/usr/include/c++/8/bits/stl_iterator.h" 3 -2441: using std::iterator_traits; -2441: using std::iterator; -2441: template -2441: class __normal_iterator -2441: { -2441: protected: -2441: _Iterator _M_current; -2441: -2441: typedef iterator_traits<_Iterator> __traits_type; -2441: -2441: public: -2441: typedef _Iterator iterator_type; -2441: typedef typename __traits_type::iterator_category iterator_category; -2441: typedef typename __traits_type::value_type value_type; -2441: typedef typename __traits_type::difference_type difference_type; -2441: typedef typename __traits_type::reference reference; -2441: typedef typename __traits_type::pointer pointer; -2441: -2441: constexpr __normal_iterator() noexcept -2441: : _M_current(_Iterator()) { } -2441: -2441: explicit -2441: __normal_iterator(const _Iterator& __i) noexcept -2441: : _M_current(__i) { } -2441: -2441: -2441: template -2441: __normal_iterator(const __normal_iterator<_Iter, -2441: typename __enable_if< -2441: (std::__are_same<_Iter, typename _Container::pointer>::__value), -2441: _Container>::__type>& __i) noexcept -2441: : _M_current(__i.base()) { } -2441: -2441: -2441: reference -2441: operator*() const noexcept -2441: { return *_M_current; } -2441: -2441: pointer -2441: operator->() const noexcept -2441: { return _M_current; } -2441: -2441: __normal_iterator& -2441: operator++() noexcept -2441: { -2441: ++_M_current; -2441: return *this; -2441: } -2441: -2441: __normal_iterator -2441: operator++(int) noexcept -2441: { return __normal_iterator(_M_current++); } -2441: -2441: -2441: __normal_iterator& -2441: operator--() noexcept -2441: { -2441: --_M_current; -2441: return *this; -2441: } -2441: -2441: __normal_iterator -2441: operator--(int) noexcept -2441: { return __normal_iterator(_M_current--); } -2441: -2441: -2441: reference -2441: operator[](difference_type __n) const noexcept -2441: { return _M_current[__n]; } -2441: -2441: __normal_iterator& -2441: operator+=(difference_type __n) noexcept -2441: { _M_current += __n; return *this; } -2441: -2441: __normal_iterator -2441: operator+(difference_type __n) const noexcept -2441: { return __normal_iterator(_M_current + __n); } -2441: -2441: __normal_iterator& -2441: operator-=(difference_type __n) noexcept -2441: { _M_current -= __n; return *this; } -2441: -2441: __normal_iterator -2441: operator-(difference_type __n) const noexcept -2441: { return __normal_iterator(_M_current - __n); } -2441: -2441: const _Iterator& -2441: base() const noexcept -2441: { return _M_current; } -2441: }; -2441: # 861 "/usr/include/c++/8/bits/stl_iterator.h" 3 -2441: template -2441: inline bool -2441: operator==(const __normal_iterator<_IteratorL, _Container>& __lhs, -2441: const __normal_iterator<_IteratorR, _Container>& __rhs) -2441: noexcept -2441: { return __lhs.base() == __rhs.base(); } -2441: -2441: template -2441: inline bool -2441: operator==(const __normal_iterator<_Iterator, _Container>& __lhs, -2441: const __normal_iterator<_Iterator, _Container>& __rhs) -2441: noexcept -2441: { return __lhs.base() == __rhs.base(); } -2441: -2441: template -2441: inline bool -2441: operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs, -2441: const __normal_iterator<_IteratorR, _Container>& __rhs) -2441: noexcept -2441: { return __lhs.base() != __rhs.base(); } -2441: -2441: template -2441: inline bool -2441: operator!=(const __normal_iterator<_Iterator, _Container>& __lhs, -2441: const __normal_iterator<_Iterator, _Container>& __rhs) -2441: noexcept -2441: { return __lhs.base() != __rhs.base(); } -2441: -2441: -2441: template -2441: inline bool -2441: operator<(const __normal_iterator<_IteratorL, _Container>& __lhs, -2441: const __normal_iterator<_IteratorR, _Container>& __rhs) -2441: noexcept -2441: { return __lhs.base() < __rhs.base(); } -2441: -2441: template -2441: inline bool -2441: operator<(const __normal_iterator<_Iterator, _Container>& __lhs, -2441: const __normal_iterator<_Iterator, _Container>& __rhs) -2441: noexcept -2441: { return __lhs.base() < __rhs.base(); } -2441: -2441: template -2441: inline bool -2441: operator>(const __normal_iterator<_IteratorL, _Container>& __lhs, -2441: const __normal_iterator<_IteratorR, _Container>& __rhs) -2441: noexcept -2441: { return __lhs.base() > __rhs.base(); } -2441: -2441: template -2441: inline bool -2441: operator>(const __normal_iterator<_Iterator, _Container>& __lhs, -2441: const __normal_iterator<_Iterator, _Container>& __rhs) -2441: noexcept -2441: { return __lhs.base() > __rhs.base(); } -2441: -2441: template -2441: inline bool -2441: operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs, -2441: const __normal_iterator<_IteratorR, _Container>& __rhs) -2441: noexcept -2441: { return __lhs.base() <= __rhs.base(); } -2441: -2441: template -2441: inline bool -2441: operator<=(const __normal_iterator<_Iterator, _Container>& __lhs, -2441: const __normal_iterator<_Iterator, _Container>& __rhs) -2441: noexcept -2441: { return __lhs.base() <= __rhs.base(); } -2441: -2441: template -2441: inline bool -2441: operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs, -2441: const __normal_iterator<_IteratorR, _Container>& __rhs) -2441: noexcept -2441: { return __lhs.base() >= __rhs.base(); } -2441: -2441: template -2441: inline bool -2441: operator>=(const __normal_iterator<_Iterator, _Container>& __lhs, -2441: const __normal_iterator<_Iterator, _Container>& __rhs) -2441: noexcept -2441: { return __lhs.base() >= __rhs.base(); } -2441: -2441: -2441: -2441: -2441: -2441: template -2441: -2441: -2441: inline auto -2441: operator-(const __normal_iterator<_IteratorL, _Container>& __lhs, -2441: const __normal_iterator<_IteratorR, _Container>& __rhs) noexcept -2441: -> decltype(__lhs.base() - __rhs.base()) -2441: -2441: -2441: -2441: -2441: -2441: { return __lhs.base() - __rhs.base(); } -2441: -2441: template -2441: inline typename __normal_iterator<_Iterator, _Container>::difference_type -2441: operator-(const __normal_iterator<_Iterator, _Container>& __lhs, -2441: const __normal_iterator<_Iterator, _Container>& __rhs) -2441: noexcept -2441: { return __lhs.base() - __rhs.base(); } -2441: -2441: template -2441: inline __normal_iterator<_Iterator, _Container> -2441: operator+(typename __normal_iterator<_Iterator, _Container>::difference_type -2441: __n, const __normal_iterator<_Iterator, _Container>& __i) -2441: noexcept -2441: { return __normal_iterator<_Iterator, _Container>(__i.base() + __n); } -2441: -2441: -2441: } -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: template -2441: _Iterator -2441: __niter_base(__gnu_cxx::__normal_iterator<_Iterator, _Container> __it) -2441: { return __it.base(); } -2441: # 1006 "/usr/include/c++/8/bits/stl_iterator.h" 3 -2441: template -2441: class move_iterator -2441: { -2441: protected: -2441: _Iterator _M_current; -2441: -2441: typedef iterator_traits<_Iterator> __traits_type; -2441: typedef typename __traits_type::reference __base_ref; -2441: -2441: public: -2441: typedef _Iterator iterator_type; -2441: typedef typename __traits_type::iterator_category iterator_category; -2441: typedef typename __traits_type::value_type value_type; -2441: typedef typename __traits_type::difference_type difference_type; -2441: -2441: typedef _Iterator pointer; -2441: -2441: -2441: typedef typename conditional::value, -2441: typename remove_reference<__base_ref>::type&&, -2441: __base_ref>::type reference; -2441: -2441: -2441: move_iterator() -2441: : _M_current() { } -2441: -2441: explicit -2441: move_iterator(iterator_type __i) -2441: : _M_current(__i) { } -2441: -2441: template -2441: -2441: move_iterator(const move_iterator<_Iter>& __i) -2441: : _M_current(__i.base()) { } -2441: -2441: iterator_type -2441: base() const -2441: { return _M_current; } -2441: -2441: reference -2441: operator*() const -2441: { return static_cast(*_M_current); } -2441: -2441: pointer -2441: operator->() const -2441: { return _M_current; } -2441: -2441: move_iterator& -2441: operator++() -2441: { -2441: ++_M_current; -2441: return *this; -2441: } -2441: -2441: move_iterator -2441: operator++(int) -2441: { -2441: move_iterator __tmp = *this; -2441: ++_M_current; -2441: return __tmp; -2441: } -2441: -2441: move_iterator& -2441: operator--() -2441: { -2441: --_M_current; -2441: return *this; -2441: } -2441: -2441: move_iterator -2441: operator--(int) -2441: { -2441: move_iterator __tmp = *this; -2441: --_M_current; -2441: return __tmp; -2441: } -2441: -2441: move_iterator -2441: operator+(difference_type __n) const -2441: { return move_iterator(_M_current + __n); } -2441: -2441: move_iterator& -2441: operator+=(difference_type __n) -2441: { -2441: _M_current += __n; -2441: return *this; -2441: } -2441: -2441: move_iterator -2441: operator-(difference_type __n) const -2441: { return move_iterator(_M_current - __n); } -2441: -2441: move_iterator& -2441: operator-=(difference_type __n) -2441: { -2441: _M_current -= __n; -2441: return *this; -2441: } -2441: -2441: reference -2441: operator[](difference_type __n) const -2441: { return std::move(_M_current[__n]); } -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: inline bool -2441: operator==(const move_iterator<_IteratorL>& __x, -2441: const move_iterator<_IteratorR>& __y) -2441: { return __x.base() == __y.base(); } -2441: -2441: template -2441: inline bool -2441: operator==(const move_iterator<_Iterator>& __x, -2441: const move_iterator<_Iterator>& __y) -2441: { return __x.base() == __y.base(); } -2441: -2441: template -2441: inline bool -2441: operator!=(const move_iterator<_IteratorL>& __x, -2441: const move_iterator<_IteratorR>& __y) -2441: { return !(__x == __y); } -2441: -2441: template -2441: inline bool -2441: operator!=(const move_iterator<_Iterator>& __x, -2441: const move_iterator<_Iterator>& __y) -2441: { return !(__x == __y); } -2441: -2441: template -2441: inline bool -2441: operator<(const move_iterator<_IteratorL>& __x, -2441: const move_iterator<_IteratorR>& __y) -2441: { return __x.base() < __y.base(); } -2441: -2441: template -2441: inline bool -2441: operator<(const move_iterator<_Iterator>& __x, -2441: const move_iterator<_Iterator>& __y) -2441: { return __x.base() < __y.base(); } -2441: -2441: template -2441: inline bool -2441: operator<=(const move_iterator<_IteratorL>& __x, -2441: const move_iterator<_IteratorR>& __y) -2441: { return !(__y < __x); } -2441: -2441: template -2441: inline bool -2441: operator<=(const move_iterator<_Iterator>& __x, -2441: const move_iterator<_Iterator>& __y) -2441: { return !(__y < __x); } -2441: -2441: template -2441: inline bool -2441: operator>(const move_iterator<_IteratorL>& __x, -2441: const move_iterator<_IteratorR>& __y) -2441: { return __y < __x; } -2441: -2441: template -2441: inline bool -2441: operator>(const move_iterator<_Iterator>& __x, -2441: const move_iterator<_Iterator>& __y) -2441: { return __y < __x; } -2441: -2441: template -2441: inline bool -2441: operator>=(const move_iterator<_IteratorL>& __x, -2441: const move_iterator<_IteratorR>& __y) -2441: { return !(__x < __y); } -2441: -2441: template -2441: inline bool -2441: operator>=(const move_iterator<_Iterator>& __x, -2441: const move_iterator<_Iterator>& __y) -2441: { return !(__x < __y); } -2441: -2441: -2441: template -2441: inline auto -2441: operator-(const move_iterator<_IteratorL>& __x, -2441: const move_iterator<_IteratorR>& __y) -2441: -> decltype(__x.base() - __y.base()) -2441: { return __x.base() - __y.base(); } -2441: -2441: template -2441: inline move_iterator<_Iterator> -2441: operator+(typename move_iterator<_Iterator>::difference_type __n, -2441: const move_iterator<_Iterator>& __x) -2441: { return __x + __n; } -2441: -2441: template -2441: inline move_iterator<_Iterator> -2441: make_move_iterator(_Iterator __i) -2441: { return move_iterator<_Iterator>(__i); } -2441: -2441: template::value_type>::value, -2441: _Iterator, move_iterator<_Iterator>>::type> -2441: inline _ReturnType -2441: __make_move_if_noexcept_iterator(_Iterator __i) -2441: { return _ReturnType(__i); } -2441: -2441: -2441: -2441: template::value, -2441: const _Tp*, move_iterator<_Tp*>>::type> -2441: inline _ReturnType -2441: __make_move_if_noexcept_iterator(_Tp* __i) -2441: { return _ReturnType(__i); } -2441: -2441: -2441: -2441: template -2441: auto -2441: __niter_base(move_iterator<_Iterator> __it) -2441: -> decltype(make_move_iterator(__niter_base(__it.base()))) -2441: { return make_move_iterator(__niter_base(__it.base())); } -2441: -2441: template -2441: struct __is_move_iterator > -2441: { -2441: enum { __value = 1 }; -2441: typedef __true_type __type; -2441: }; -2441: -2441: template -2441: auto -2441: __miter_base(move_iterator<_Iterator> __it) -2441: -> decltype(__miter_base(__it.base())) -2441: { return __miter_base(__it.base()); } -2441: # 1271 "/usr/include/c++/8/bits/stl_iterator.h" 3 -2441: -2441: } -2441: # 68 "/usr/include/c++/8/bits/stl_algobase.h" 2 3 -2441: -2441: # 1 "/usr/include/c++/8/debug/debug.h" 1 3 -2441: # 48 "/usr/include/c++/8/debug/debug.h" 3 -2441: namespace std -2441: { -2441: namespace __debug { } -2441: } -2441: -2441: -2441: -2441: -2441: namespace __gnu_debug -2441: { -2441: using namespace std::__debug; -2441: } -2441: # 70 "/usr/include/c++/8/bits/stl_algobase.h" 2 3 -2441: -2441: # 1 "/usr/include/c++/8/bits/predefined_ops.h" 1 3 -2441: # 33 "/usr/include/c++/8/bits/predefined_ops.h" 3 -2441: namespace __gnu_cxx -2441: { -2441: namespace __ops -2441: { -2441: struct _Iter_less_iter -2441: { -2441: template -2441: constexpr -2441: bool -2441: operator()(_Iterator1 __it1, _Iterator2 __it2) const -2441: { return *__it1 < *__it2; } -2441: }; -2441: -2441: constexpr -2441: inline _Iter_less_iter -2441: __iter_less_iter() -2441: { return _Iter_less_iter(); } -2441: -2441: struct _Iter_less_val -2441: { -2441: -2441: constexpr _Iter_less_val() = default; -2441: -2441: -2441: -2441: -2441: explicit -2441: _Iter_less_val(_Iter_less_iter) { } -2441: -2441: template -2441: bool -2441: operator()(_Iterator __it, _Value& __val) const -2441: { return *__it < __val; } -2441: }; -2441: -2441: inline _Iter_less_val -2441: __iter_less_val() -2441: { return _Iter_less_val(); } -2441: -2441: inline _Iter_less_val -2441: __iter_comp_val(_Iter_less_iter) -2441: { return _Iter_less_val(); } -2441: -2441: struct _Val_less_iter -2441: { -2441: -2441: constexpr _Val_less_iter() = default; -2441: -2441: -2441: -2441: -2441: explicit -2441: _Val_less_iter(_Iter_less_iter) { } -2441: -2441: template -2441: bool -2441: operator()(_Value& __val, _Iterator __it) const -2441: { return __val < *__it; } -2441: }; -2441: -2441: inline _Val_less_iter -2441: __val_less_iter() -2441: { return _Val_less_iter(); } -2441: -2441: inline _Val_less_iter -2441: __val_comp_iter(_Iter_less_iter) -2441: { return _Val_less_iter(); } -2441: -2441: struct _Iter_equal_to_iter -2441: { -2441: template -2441: bool -2441: operator()(_Iterator1 __it1, _Iterator2 __it2) const -2441: { return *__it1 == *__it2; } -2441: }; -2441: -2441: inline _Iter_equal_to_iter -2441: __iter_equal_to_iter() -2441: { return _Iter_equal_to_iter(); } -2441: -2441: struct _Iter_equal_to_val -2441: { -2441: template -2441: bool -2441: operator()(_Iterator __it, _Value& __val) const -2441: { return *__it == __val; } -2441: }; -2441: -2441: inline _Iter_equal_to_val -2441: __iter_equal_to_val() -2441: { return _Iter_equal_to_val(); } -2441: -2441: inline _Iter_equal_to_val -2441: __iter_comp_val(_Iter_equal_to_iter) -2441: { return _Iter_equal_to_val(); } -2441: -2441: template -2441: struct _Iter_comp_iter -2441: { -2441: _Compare _M_comp; -2441: -2441: explicit constexpr -2441: _Iter_comp_iter(_Compare __comp) -2441: : _M_comp(std::move(__comp)) -2441: { } -2441: -2441: template -2441: constexpr -2441: bool -2441: operator()(_Iterator1 __it1, _Iterator2 __it2) -2441: { return bool(_M_comp(*__it1, *__it2)); } -2441: }; -2441: -2441: template -2441: constexpr -2441: inline _Iter_comp_iter<_Compare> -2441: __iter_comp_iter(_Compare __comp) -2441: { return _Iter_comp_iter<_Compare>(std::move(__comp)); } -2441: -2441: template -2441: struct _Iter_comp_val -2441: { -2441: _Compare _M_comp; -2441: -2441: explicit -2441: _Iter_comp_val(_Compare __comp) -2441: : _M_comp(std::move(__comp)) -2441: { } -2441: -2441: explicit -2441: _Iter_comp_val(const _Iter_comp_iter<_Compare>& __comp) -2441: : _M_comp(__comp._M_comp) -2441: { } -2441: -2441: -2441: explicit -2441: _Iter_comp_val(_Iter_comp_iter<_Compare>&& __comp) -2441: : _M_comp(std::move(__comp._M_comp)) -2441: { } -2441: -2441: -2441: template -2441: bool -2441: operator()(_Iterator __it, _Value& __val) -2441: { return bool(_M_comp(*__it, __val)); } -2441: }; -2441: -2441: template -2441: inline _Iter_comp_val<_Compare> -2441: __iter_comp_val(_Compare __comp) -2441: { return _Iter_comp_val<_Compare>(std::move(__comp)); } -2441: -2441: template -2441: inline _Iter_comp_val<_Compare> -2441: __iter_comp_val(_Iter_comp_iter<_Compare> __comp) -2441: { return _Iter_comp_val<_Compare>(std::move(__comp)); } -2441: -2441: template -2441: struct _Val_comp_iter -2441: { -2441: _Compare _M_comp; -2441: -2441: explicit -2441: _Val_comp_iter(_Compare __comp) -2441: : _M_comp(std::move(__comp)) -2441: { } -2441: -2441: explicit -2441: _Val_comp_iter(const _Iter_comp_iter<_Compare>& __comp) -2441: : _M_comp(__comp._M_comp) -2441: { } -2441: -2441: -2441: explicit -2441: _Val_comp_iter(_Iter_comp_iter<_Compare>&& __comp) -2441: : _M_comp(std::move(__comp._M_comp)) -2441: { } -2441: -2441: -2441: template -2441: bool -2441: operator()(_Value& __val, _Iterator __it) -2441: { return bool(_M_comp(__val, *__it)); } -2441: }; -2441: -2441: template -2441: inline _Val_comp_iter<_Compare> -2441: __val_comp_iter(_Compare __comp) -2441: { return _Val_comp_iter<_Compare>(std::move(__comp)); } -2441: -2441: template -2441: inline _Val_comp_iter<_Compare> -2441: __val_comp_iter(_Iter_comp_iter<_Compare> __comp) -2441: { return _Val_comp_iter<_Compare>(std::move(__comp)); } -2441: -2441: template -2441: struct _Iter_equals_val -2441: { -2441: _Value& _M_value; -2441: -2441: explicit -2441: _Iter_equals_val(_Value& __value) -2441: : _M_value(__value) -2441: { } -2441: -2441: template -2441: bool -2441: operator()(_Iterator __it) -2441: { return *__it == _M_value; } -2441: }; -2441: -2441: template -2441: inline _Iter_equals_val<_Value> -2441: __iter_equals_val(_Value& __val) -2441: { return _Iter_equals_val<_Value>(__val); } -2441: -2441: template -2441: struct _Iter_equals_iter -2441: { -2441: _Iterator1 _M_it1; -2441: -2441: explicit -2441: _Iter_equals_iter(_Iterator1 __it1) -2441: : _M_it1(__it1) -2441: { } -2441: -2441: template -2441: bool -2441: operator()(_Iterator2 __it2) -2441: { return *__it2 == *_M_it1; } -2441: }; -2441: -2441: template -2441: inline _Iter_equals_iter<_Iterator> -2441: __iter_comp_iter(_Iter_equal_to_iter, _Iterator __it) -2441: { return _Iter_equals_iter<_Iterator>(__it); } -2441: -2441: template -2441: struct _Iter_pred -2441: { -2441: _Predicate _M_pred; -2441: -2441: explicit -2441: _Iter_pred(_Predicate __pred) -2441: : _M_pred(std::move(__pred)) -2441: { } -2441: -2441: template -2441: bool -2441: operator()(_Iterator __it) -2441: { return bool(_M_pred(*__it)); } -2441: }; -2441: -2441: template -2441: inline _Iter_pred<_Predicate> -2441: __pred_iter(_Predicate __pred) -2441: { return _Iter_pred<_Predicate>(std::move(__pred)); } -2441: -2441: template -2441: struct _Iter_comp_to_val -2441: { -2441: _Compare _M_comp; -2441: _Value& _M_value; -2441: -2441: _Iter_comp_to_val(_Compare __comp, _Value& __value) -2441: : _M_comp(std::move(__comp)), _M_value(__value) -2441: { } -2441: -2441: template -2441: bool -2441: operator()(_Iterator __it) -2441: { return bool(_M_comp(*__it, _M_value)); } -2441: }; -2441: -2441: template -2441: _Iter_comp_to_val<_Compare, _Value> -2441: __iter_comp_val(_Compare __comp, _Value &__val) -2441: { -2441: return _Iter_comp_to_val<_Compare, _Value>(std::move(__comp), __val); -2441: } -2441: -2441: template -2441: struct _Iter_comp_to_iter -2441: { -2441: _Compare _M_comp; -2441: _Iterator1 _M_it1; -2441: -2441: _Iter_comp_to_iter(_Compare __comp, _Iterator1 __it1) -2441: : _M_comp(std::move(__comp)), _M_it1(__it1) -2441: { } -2441: -2441: template -2441: bool -2441: operator()(_Iterator2 __it2) -2441: { return bool(_M_comp(*__it2, *_M_it1)); } -2441: }; -2441: -2441: template -2441: inline _Iter_comp_to_iter<_Compare, _Iterator> -2441: __iter_comp_iter(_Iter_comp_iter<_Compare> __comp, _Iterator __it) -2441: { -2441: return _Iter_comp_to_iter<_Compare, _Iterator>( -2441: std::move(__comp._M_comp), __it); -2441: } -2441: -2441: template -2441: struct _Iter_negate -2441: { -2441: _Predicate _M_pred; -2441: -2441: explicit -2441: _Iter_negate(_Predicate __pred) -2441: : _M_pred(std::move(__pred)) -2441: { } -2441: -2441: template -2441: bool -2441: operator()(_Iterator __it) -2441: { return !bool(_M_pred(*__it)); } -2441: }; -2441: -2441: template -2441: inline _Iter_negate<_Predicate> -2441: __negate(_Iter_pred<_Predicate> __pred) -2441: { return _Iter_negate<_Predicate>(std::move(__pred._M_pred)); } -2441: -2441: } -2441: } -2441: # 72 "/usr/include/c++/8/bits/stl_algobase.h" 2 3 -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: # 118 "/usr/include/c++/8/bits/stl_algobase.h" 3 -2441: template -2441: inline void -2441: iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) -2441: { -2441: -2441: -2441: -2441: -2441: # 148 "/usr/include/c++/8/bits/stl_algobase.h" 3 -2441: swap(*__a, *__b); -2441: -2441: } -2441: # 164 "/usr/include/c++/8/bits/stl_algobase.h" 3 -2441: template -2441: _ForwardIterator2 -2441: swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1, -2441: _ForwardIterator2 __first2) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: for (; __first1 != __last1; ++__first1, (void)++__first2) -2441: std::iter_swap(__first1, __first2); -2441: return __first2; -2441: } -2441: # 192 "/usr/include/c++/8/bits/stl_algobase.h" 3 -2441: template -2441: constexpr -2441: inline const _Tp& -2441: min(const _Tp& __a, const _Tp& __b) -2441: { -2441: -2441: -2441: -2441: if (__b < __a) -2441: return __b; -2441: return __a; -2441: } -2441: # 216 "/usr/include/c++/8/bits/stl_algobase.h" 3 -2441: template -2441: constexpr -2441: inline const _Tp& -2441: max(const _Tp& __a, const _Tp& __b) -2441: { -2441: -2441: -2441: -2441: if (__a < __b) -2441: return __b; -2441: return __a; -2441: } -2441: # 240 "/usr/include/c++/8/bits/stl_algobase.h" 3 -2441: template -2441: constexpr -2441: inline const _Tp& -2441: min(const _Tp& __a, const _Tp& __b, _Compare __comp) -2441: { -2441: -2441: if (__comp(__b, __a)) -2441: return __b; -2441: return __a; -2441: } -2441: # 262 "/usr/include/c++/8/bits/stl_algobase.h" 3 -2441: template -2441: constexpr -2441: inline const _Tp& -2441: max(const _Tp& __a, const _Tp& __b, _Compare __comp) -2441: { -2441: -2441: if (__comp(__a, __b)) -2441: return __b; -2441: return __a; -2441: } -2441: -2441: -2441: -2441: template -2441: inline _Iterator -2441: __niter_base(_Iterator __it) -2441: { return __it; } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct __copy_move -2441: { -2441: template -2441: static _OI -2441: __copy_m(_II __first, _II __last, _OI __result) -2441: { -2441: for (; __first != __last; ++__result, (void)++__first) -2441: *__result = *__first; -2441: return __result; -2441: } -2441: }; -2441: -2441: -2441: template -2441: struct __copy_move -2441: { -2441: template -2441: static _OI -2441: __copy_m(_II __first, _II __last, _OI __result) -2441: { -2441: for (; __first != __last; ++__result, (void)++__first) -2441: *__result = std::move(*__first); -2441: return __result; -2441: } -2441: }; -2441: -2441: -2441: template<> -2441: struct __copy_move -2441: { -2441: template -2441: static _OI -2441: __copy_m(_II __first, _II __last, _OI __result) -2441: { -2441: typedef typename iterator_traits<_II>::difference_type _Distance; -2441: for(_Distance __n = __last - __first; __n > 0; --__n) -2441: { -2441: *__result = *__first; -2441: ++__first; -2441: ++__result; -2441: } -2441: return __result; -2441: } -2441: }; -2441: -2441: -2441: template<> -2441: struct __copy_move -2441: { -2441: template -2441: static _OI -2441: __copy_m(_II __first, _II __last, _OI __result) -2441: { -2441: typedef typename iterator_traits<_II>::difference_type _Distance; -2441: for(_Distance __n = __last - __first; __n > 0; --__n) -2441: { -2441: *__result = std::move(*__first); -2441: ++__first; -2441: ++__result; -2441: } -2441: return __result; -2441: } -2441: }; -2441: -2441: -2441: template -2441: struct __copy_move<_IsMove, true, random_access_iterator_tag> -2441: { -2441: template -2441: static _Tp* -2441: __copy_m(const _Tp* __first, const _Tp* __last, _Tp* __result) -2441: { -2441: -2441: using __assignable = conditional<_IsMove, -2441: is_move_assignable<_Tp>, -2441: is_copy_assignable<_Tp>>; -2441: -2441: static_assert( __assignable::type::value, "type is not assignable" ); -2441: -2441: const ptrdiff_t _Num = __last - __first; -2441: if (_Num) -2441: __builtin_memmove(__result, __first, sizeof(_Tp) * _Num); -2441: return __result + _Num; -2441: } -2441: }; -2441: -2441: template -2441: inline _OI -2441: __copy_move_a(_II __first, _II __last, _OI __result) -2441: { -2441: typedef typename iterator_traits<_II>::value_type _ValueTypeI; -2441: typedef typename iterator_traits<_OI>::value_type _ValueTypeO; -2441: typedef typename iterator_traits<_II>::iterator_category _Category; -2441: const bool __simple = (__is_trivial(_ValueTypeI) -2441: && __is_pointer<_II>::__value -2441: && __is_pointer<_OI>::__value -2441: && __are_same<_ValueTypeI, _ValueTypeO>::__value); -2441: -2441: return std::__copy_move<_IsMove, __simple, -2441: _Category>::__copy_m(__first, __last, __result); -2441: } -2441: -2441: -2441: -2441: template -2441: struct char_traits; -2441: -2441: template -2441: class istreambuf_iterator; -2441: -2441: template -2441: class ostreambuf_iterator; -2441: -2441: template -2441: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, -2441: ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type -2441: __copy_move_a2(_CharT*, _CharT*, -2441: ostreambuf_iterator<_CharT, char_traits<_CharT> >); -2441: -2441: template -2441: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, -2441: ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type -2441: __copy_move_a2(const _CharT*, const _CharT*, -2441: ostreambuf_iterator<_CharT, char_traits<_CharT> >); -2441: -2441: template -2441: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, -2441: _CharT*>::__type -2441: __copy_move_a2(istreambuf_iterator<_CharT, char_traits<_CharT> >, -2441: istreambuf_iterator<_CharT, char_traits<_CharT> >, _CharT*); -2441: -2441: template -2441: inline _OI -2441: __copy_move_a2(_II __first, _II __last, _OI __result) -2441: { -2441: return _OI(std::__copy_move_a<_IsMove>(std::__niter_base(__first), -2441: std::__niter_base(__last), -2441: std::__niter_base(__result))); -2441: } -2441: # 444 "/usr/include/c++/8/bits/stl_algobase.h" 3 -2441: template -2441: inline _OI -2441: copy(_II __first, _II __last, _OI __result) -2441: { -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: return (std::__copy_move_a2<__is_move_iterator<_II>::__value> -2441: (std::__miter_base(__first), std::__miter_base(__last), -2441: __result)); -2441: } -2441: # 477 "/usr/include/c++/8/bits/stl_algobase.h" 3 -2441: template -2441: inline _OI -2441: move(_II __first, _II __last, _OI __result) -2441: { -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: return std::__copy_move_a2(std::__miter_base(__first), -2441: std::__miter_base(__last), __result); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct __copy_move_backward -2441: { -2441: template -2441: static _BI2 -2441: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) -2441: { -2441: while (__first != __last) -2441: *--__result = *--__last; -2441: return __result; -2441: } -2441: }; -2441: -2441: -2441: template -2441: struct __copy_move_backward -2441: { -2441: template -2441: static _BI2 -2441: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) -2441: { -2441: while (__first != __last) -2441: *--__result = std::move(*--__last); -2441: return __result; -2441: } -2441: }; -2441: -2441: -2441: template<> -2441: struct __copy_move_backward -2441: { -2441: template -2441: static _BI2 -2441: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) -2441: { -2441: typename iterator_traits<_BI1>::difference_type __n; -2441: for (__n = __last - __first; __n > 0; --__n) -2441: *--__result = *--__last; -2441: return __result; -2441: } -2441: }; -2441: -2441: -2441: template<> -2441: struct __copy_move_backward -2441: { -2441: template -2441: static _BI2 -2441: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) -2441: { -2441: typename iterator_traits<_BI1>::difference_type __n; -2441: for (__n = __last - __first; __n > 0; --__n) -2441: *--__result = std::move(*--__last); -2441: return __result; -2441: } -2441: }; -2441: -2441: -2441: template -2441: struct __copy_move_backward<_IsMove, true, random_access_iterator_tag> -2441: { -2441: template -2441: static _Tp* -2441: __copy_move_b(const _Tp* __first, const _Tp* __last, _Tp* __result) -2441: { -2441: -2441: using __assignable = conditional<_IsMove, -2441: is_move_assignable<_Tp>, -2441: is_copy_assignable<_Tp>>; -2441: -2441: static_assert( __assignable::type::value, "type is not assignable" ); -2441: -2441: const ptrdiff_t _Num = __last - __first; -2441: if (_Num) -2441: __builtin_memmove(__result - _Num, __first, sizeof(_Tp) * _Num); -2441: return __result - _Num; -2441: } -2441: }; -2441: -2441: template -2441: inline _BI2 -2441: __copy_move_backward_a(_BI1 __first, _BI1 __last, _BI2 __result) -2441: { -2441: typedef typename iterator_traits<_BI1>::value_type _ValueType1; -2441: typedef typename iterator_traits<_BI2>::value_type _ValueType2; -2441: typedef typename iterator_traits<_BI1>::iterator_category _Category; -2441: const bool __simple = (__is_trivial(_ValueType1) -2441: && __is_pointer<_BI1>::__value -2441: && __is_pointer<_BI2>::__value -2441: && __are_same<_ValueType1, _ValueType2>::__value); -2441: -2441: return std::__copy_move_backward<_IsMove, __simple, -2441: _Category>::__copy_move_b(__first, -2441: __last, -2441: __result); -2441: } -2441: -2441: template -2441: inline _BI2 -2441: __copy_move_backward_a2(_BI1 __first, _BI1 __last, _BI2 __result) -2441: { -2441: return _BI2(std::__copy_move_backward_a<_IsMove> -2441: (std::__niter_base(__first), std::__niter_base(__last), -2441: std::__niter_base(__result))); -2441: } -2441: # 620 "/usr/include/c++/8/bits/stl_algobase.h" 3 -2441: template -2441: inline _BI2 -2441: copy_backward(_BI1 __first, _BI1 __last, _BI2 __result) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: return (std::__copy_move_backward_a2<__is_move_iterator<_BI1>::__value> -2441: (std::__miter_base(__first), std::__miter_base(__last), -2441: __result)); -2441: } -2441: # 656 "/usr/include/c++/8/bits/stl_algobase.h" 3 -2441: template -2441: inline _BI2 -2441: move_backward(_BI1 __first, _BI1 __last, _BI2 __result) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: return std::__copy_move_backward_a2(std::__miter_base(__first), -2441: std::__miter_base(__last), -2441: __result); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline typename -2441: __gnu_cxx::__enable_if::__value, void>::__type -2441: __fill_a(_ForwardIterator __first, _ForwardIterator __last, -2441: const _Tp& __value) -2441: { -2441: for (; __first != __last; ++__first) -2441: *__first = __value; -2441: } -2441: -2441: template -2441: inline typename -2441: __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, void>::__type -2441: __fill_a(_ForwardIterator __first, _ForwardIterator __last, -2441: const _Tp& __value) -2441: { -2441: const _Tp __tmp = __value; -2441: for (; __first != __last; ++__first) -2441: *__first = __tmp; -2441: } -2441: -2441: -2441: template -2441: inline typename -2441: __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, void>::__type -2441: __fill_a(_Tp* __first, _Tp* __last, const _Tp& __c) -2441: { -2441: const _Tp __tmp = __c; -2441: if (const size_t __len = __last - __first) -2441: __builtin_memset(__first, static_cast(__tmp), __len); -2441: } -2441: # 722 "/usr/include/c++/8/bits/stl_algobase.h" 3 -2441: template -2441: inline void -2441: fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) -2441: { -2441: -2441: -2441: -2441: ; -2441: -2441: std::__fill_a(std::__niter_base(__first), std::__niter_base(__last), -2441: __value); -2441: } -2441: -2441: template -2441: inline typename -2441: __gnu_cxx::__enable_if::__value, _OutputIterator>::__type -2441: __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value) -2441: { -2441: for (__decltype(__n + 0) __niter = __n; -2441: __niter > 0; --__niter, (void) ++__first) -2441: *__first = __value; -2441: return __first; -2441: } -2441: -2441: template -2441: inline typename -2441: __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, _OutputIterator>::__type -2441: __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value) -2441: { -2441: const _Tp __tmp = __value; -2441: for (__decltype(__n + 0) __niter = __n; -2441: __niter > 0; --__niter, (void) ++__first) -2441: *__first = __tmp; -2441: return __first; -2441: } -2441: -2441: template -2441: inline typename -2441: __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, _Tp*>::__type -2441: __fill_n_a(_Tp* __first, _Size __n, const _Tp& __c) -2441: { -2441: std::__fill_a(__first, __first + __n, __c); -2441: return __first + __n; -2441: } -2441: # 782 "/usr/include/c++/8/bits/stl_algobase.h" 3 -2441: template -2441: inline _OI -2441: fill_n(_OI __first, _Size __n, const _Tp& __value) -2441: { -2441: -2441: -2441: -2441: return _OI(std::__fill_n_a(std::__niter_base(__first), __n, __value)); -2441: } -2441: -2441: template -2441: struct __equal -2441: { -2441: template -2441: static bool -2441: equal(_II1 __first1, _II1 __last1, _II2 __first2) -2441: { -2441: for (; __first1 != __last1; ++__first1, (void) ++__first2) -2441: if (!(*__first1 == *__first2)) -2441: return false; -2441: return true; -2441: } -2441: }; -2441: -2441: template<> -2441: struct __equal -2441: { -2441: template -2441: static bool -2441: equal(const _Tp* __first1, const _Tp* __last1, const _Tp* __first2) -2441: { -2441: if (const size_t __len = (__last1 - __first1)) -2441: return !__builtin_memcmp(__first1, __first2, sizeof(_Tp) * __len); -2441: return true; -2441: } -2441: }; -2441: -2441: template -2441: inline bool -2441: __equal_aux(_II1 __first1, _II1 __last1, _II2 __first2) -2441: { -2441: typedef typename iterator_traits<_II1>::value_type _ValueType1; -2441: typedef typename iterator_traits<_II2>::value_type _ValueType2; -2441: const bool __simple = ((__is_integer<_ValueType1>::__value -2441: || __is_pointer<_ValueType1>::__value) -2441: && __is_pointer<_II1>::__value -2441: && __is_pointer<_II2>::__value -2441: && __are_same<_ValueType1, _ValueType2>::__value); -2441: -2441: return std::__equal<__simple>::equal(__first1, __last1, __first2); -2441: } -2441: -2441: template -2441: struct __lc_rai -2441: { -2441: template -2441: static _II1 -2441: __newlast1(_II1, _II1 __last1, _II2, _II2) -2441: { return __last1; } -2441: -2441: template -2441: static bool -2441: __cnd2(_II __first, _II __last) -2441: { return __first != __last; } -2441: }; -2441: -2441: template<> -2441: struct __lc_rai -2441: { -2441: template -2441: static _RAI1 -2441: __newlast1(_RAI1 __first1, _RAI1 __last1, -2441: _RAI2 __first2, _RAI2 __last2) -2441: { -2441: const typename iterator_traits<_RAI1>::difference_type -2441: __diff1 = __last1 - __first1; -2441: const typename iterator_traits<_RAI2>::difference_type -2441: __diff2 = __last2 - __first2; -2441: return __diff2 < __diff1 ? __first1 + __diff2 : __last1; -2441: } -2441: -2441: template -2441: static bool -2441: __cnd2(_RAI, _RAI) -2441: { return true; } -2441: }; -2441: -2441: template -2441: bool -2441: __lexicographical_compare_impl(_II1 __first1, _II1 __last1, -2441: _II2 __first2, _II2 __last2, -2441: _Compare __comp) -2441: { -2441: typedef typename iterator_traits<_II1>::iterator_category _Category1; -2441: typedef typename iterator_traits<_II2>::iterator_category _Category2; -2441: typedef std::__lc_rai<_Category1, _Category2> __rai_type; -2441: -2441: __last1 = __rai_type::__newlast1(__first1, __last1, __first2, __last2); -2441: for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2); -2441: ++__first1, (void)++__first2) -2441: { -2441: if (__comp(__first1, __first2)) -2441: return true; -2441: if (__comp(__first2, __first1)) -2441: return false; -2441: } -2441: return __first1 == __last1 && __first2 != __last2; -2441: } -2441: -2441: template -2441: struct __lexicographical_compare -2441: { -2441: template -2441: static bool __lc(_II1, _II1, _II2, _II2); -2441: }; -2441: -2441: template -2441: template -2441: bool -2441: __lexicographical_compare<_BoolType>:: -2441: __lc(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) -2441: { -2441: return std::__lexicographical_compare_impl(__first1, __last1, -2441: __first2, __last2, -2441: __gnu_cxx::__ops::__iter_less_iter()); -2441: } -2441: -2441: template<> -2441: struct __lexicographical_compare -2441: { -2441: template -2441: static bool -2441: __lc(const _Tp* __first1, const _Tp* __last1, -2441: const _Up* __first2, const _Up* __last2) -2441: { -2441: const size_t __len1 = __last1 - __first1; -2441: const size_t __len2 = __last2 - __first2; -2441: if (const size_t __len = std::min(__len1, __len2)) -2441: if (int __result = __builtin_memcmp(__first1, __first2, __len)) -2441: return __result < 0; -2441: return __len1 < __len2; -2441: } -2441: }; -2441: -2441: template -2441: inline bool -2441: __lexicographical_compare_aux(_II1 __first1, _II1 __last1, -2441: _II2 __first2, _II2 __last2) -2441: { -2441: typedef typename iterator_traits<_II1>::value_type _ValueType1; -2441: typedef typename iterator_traits<_II2>::value_type _ValueType2; -2441: const bool __simple = -2441: (__is_byte<_ValueType1>::__value && __is_byte<_ValueType2>::__value -2441: && !__gnu_cxx::__numeric_traits<_ValueType1>::__is_signed -2441: && !__gnu_cxx::__numeric_traits<_ValueType2>::__is_signed -2441: && __is_pointer<_II1>::__value -2441: && __is_pointer<_II2>::__value); -2441: -2441: return std::__lexicographical_compare<__simple>::__lc(__first1, __last1, -2441: __first2, __last2); -2441: } -2441: -2441: template -2441: _ForwardIterator -2441: __lower_bound(_ForwardIterator __first, _ForwardIterator __last, -2441: const _Tp& __val, _Compare __comp) -2441: { -2441: typedef typename iterator_traits<_ForwardIterator>::difference_type -2441: _DistanceType; -2441: -2441: _DistanceType __len = std::distance(__first, __last); -2441: -2441: while (__len > 0) -2441: { -2441: _DistanceType __half = __len >> 1; -2441: _ForwardIterator __middle = __first; -2441: std::advance(__middle, __half); -2441: if (__comp(__middle, __val)) -2441: { -2441: __first = __middle; -2441: ++__first; -2441: __len = __len - __half - 1; -2441: } -2441: else -2441: __len = __half; -2441: } -2441: return __first; -2441: } -2441: # 982 "/usr/include/c++/8/bits/stl_algobase.h" 3 -2441: template -2441: inline _ForwardIterator -2441: lower_bound(_ForwardIterator __first, _ForwardIterator __last, -2441: const _Tp& __val) -2441: { -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: return std::__lower_bound(__first, __last, __val, -2441: __gnu_cxx::__ops::__iter_less_val()); -2441: } -2441: -2441: -2441: -2441: inline constexpr int -2441: __lg(int __n) -2441: { return sizeof(int) * 8 - 1 - __builtin_clz(__n); } -2441: -2441: inline constexpr unsigned -2441: __lg(unsigned __n) -2441: { return sizeof(int) * 8 - 1 - __builtin_clz(__n); } -2441: -2441: inline constexpr long -2441: __lg(long __n) -2441: { return sizeof(long) * 8 - 1 - __builtin_clzl(__n); } -2441: -2441: inline constexpr unsigned long -2441: __lg(unsigned long __n) -2441: { return sizeof(long) * 8 - 1 - __builtin_clzl(__n); } -2441: -2441: inline constexpr long long -2441: __lg(long long __n) -2441: { return sizeof(long long) * 8 - 1 - __builtin_clzll(__n); } -2441: -2441: inline constexpr unsigned long long -2441: __lg(unsigned long long __n) -2441: { return sizeof(long long) * 8 - 1 - __builtin_clzll(__n); } -2441: -2441: -2441: # 1037 "/usr/include/c++/8/bits/stl_algobase.h" 3 -2441: template -2441: inline bool -2441: equal(_II1 __first1, _II1 __last1, _II2 __first2) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: return std::__equal_aux(std::__niter_base(__first1), -2441: std::__niter_base(__last1), -2441: std::__niter_base(__first2)); -2441: } -2441: # 1069 "/usr/include/c++/8/bits/stl_algobase.h" 3 -2441: template -2441: inline bool -2441: equal(_IIter1 __first1, _IIter1 __last1, -2441: _IIter2 __first2, _BinaryPredicate __binary_pred) -2441: { -2441: -2441: -2441: -2441: ; -2441: -2441: for (; __first1 != __last1; ++__first1, (void)++__first2) -2441: if (!bool(__binary_pred(*__first1, *__first2))) -2441: return false; -2441: return true; -2441: } -2441: -2441: -2441: -2441: template -2441: inline bool -2441: __equal4(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) -2441: { -2441: using _RATag = random_access_iterator_tag; -2441: using _Cat1 = typename iterator_traits<_II1>::iterator_category; -2441: using _Cat2 = typename iterator_traits<_II2>::iterator_category; -2441: using _RAIters = __and_, is_same<_Cat2, _RATag>>; -2441: if (_RAIters()) -2441: { -2441: auto __d1 = std::distance(__first1, __last1); -2441: auto __d2 = std::distance(__first2, __last2); -2441: if (__d1 != __d2) -2441: return false; -2441: return std::equal(__first1, __last1, __first2); -2441: } -2441: -2441: for (; __first1 != __last1 && __first2 != __last2; -2441: ++__first1, (void)++__first2) -2441: if (!(*__first1 == *__first2)) -2441: return false; -2441: return __first1 == __last1 && __first2 == __last2; -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: __equal4(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2, -2441: _BinaryPredicate __binary_pred) -2441: { -2441: using _RATag = random_access_iterator_tag; -2441: using _Cat1 = typename iterator_traits<_II1>::iterator_category; -2441: using _Cat2 = typename iterator_traits<_II2>::iterator_category; -2441: using _RAIters = __and_, is_same<_Cat2, _RATag>>; -2441: if (_RAIters()) -2441: { -2441: auto __d1 = std::distance(__first1, __last1); -2441: auto __d2 = std::distance(__first2, __last2); -2441: if (__d1 != __d2) -2441: return false; -2441: return std::equal(__first1, __last1, __first2, -2441: __binary_pred); -2441: } -2441: -2441: for (; __first1 != __last1 && __first2 != __last2; -2441: ++__first1, (void)++__first2) -2441: if (!bool(__binary_pred(*__first1, *__first2))) -2441: return false; -2441: return __first1 == __last1 && __first2 == __last2; -2441: } -2441: # 1156 "/usr/include/c++/8/bits/stl_algobase.h" 3 -2441: template -2441: inline bool -2441: equal(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: return std::__equal4(__first1, __last1, __first2, __last2); -2441: } -2441: # 1188 "/usr/include/c++/8/bits/stl_algobase.h" 3 -2441: template -2441: inline bool -2441: equal(_IIter1 __first1, _IIter1 __last1, -2441: _IIter2 __first2, _IIter2 __last2, _BinaryPredicate __binary_pred) -2441: { -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: return std::__equal4(__first1, __last1, __first2, __last2, -2441: __binary_pred); -2441: } -2441: # 1219 "/usr/include/c++/8/bits/stl_algobase.h" 3 -2441: template -2441: inline bool -2441: lexicographical_compare(_II1 __first1, _II1 __last1, -2441: _II2 __first2, _II2 __last2) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: return std::__lexicographical_compare_aux(std::__niter_base(__first1), -2441: std::__niter_base(__last1), -2441: std::__niter_base(__first2), -2441: std::__niter_base(__last2)); -2441: } -2441: # 1255 "/usr/include/c++/8/bits/stl_algobase.h" 3 -2441: template -2441: inline bool -2441: lexicographical_compare(_II1 __first1, _II1 __last1, -2441: _II2 __first2, _II2 __last2, _Compare __comp) -2441: { -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: return std::__lexicographical_compare_impl -2441: (__first1, __last1, __first2, __last2, -2441: __gnu_cxx::__ops::__iter_comp_iter(__comp)); -2441: } -2441: -2441: template -2441: pair<_InputIterator1, _InputIterator2> -2441: __mismatch(_InputIterator1 __first1, _InputIterator1 __last1, -2441: _InputIterator2 __first2, _BinaryPredicate __binary_pred) -2441: { -2441: while (__first1 != __last1 && __binary_pred(__first1, __first2)) -2441: { -2441: ++__first1; -2441: ++__first2; -2441: } -2441: return pair<_InputIterator1, _InputIterator2>(__first1, __first2); -2441: } -2441: # 1298 "/usr/include/c++/8/bits/stl_algobase.h" 3 -2441: template -2441: inline pair<_InputIterator1, _InputIterator2> -2441: mismatch(_InputIterator1 __first1, _InputIterator1 __last1, -2441: _InputIterator2 __first2) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: return std::__mismatch(__first1, __last1, __first2, -2441: __gnu_cxx::__ops::__iter_equal_to_iter()); -2441: } -2441: # 1331 "/usr/include/c++/8/bits/stl_algobase.h" 3 -2441: template -2441: inline pair<_InputIterator1, _InputIterator2> -2441: mismatch(_InputIterator1 __first1, _InputIterator1 __last1, -2441: _InputIterator2 __first2, _BinaryPredicate __binary_pred) -2441: { -2441: -2441: -2441: -2441: ; -2441: -2441: return std::__mismatch(__first1, __last1, __first2, -2441: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); -2441: } -2441: -2441: -2441: -2441: template -2441: pair<_InputIterator1, _InputIterator2> -2441: __mismatch(_InputIterator1 __first1, _InputIterator1 __last1, -2441: _InputIterator2 __first2, _InputIterator2 __last2, -2441: _BinaryPredicate __binary_pred) -2441: { -2441: while (__first1 != __last1 && __first2 != __last2 -2441: && __binary_pred(__first1, __first2)) -2441: { -2441: ++__first1; -2441: ++__first2; -2441: } -2441: return pair<_InputIterator1, _InputIterator2>(__first1, __first2); -2441: } -2441: # 1378 "/usr/include/c++/8/bits/stl_algobase.h" 3 -2441: template -2441: inline pair<_InputIterator1, _InputIterator2> -2441: mismatch(_InputIterator1 __first1, _InputIterator1 __last1, -2441: _InputIterator2 __first2, _InputIterator2 __last2) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: return std::__mismatch(__first1, __last1, __first2, __last2, -2441: __gnu_cxx::__ops::__iter_equal_to_iter()); -2441: } -2441: # 1413 "/usr/include/c++/8/bits/stl_algobase.h" 3 -2441: template -2441: inline pair<_InputIterator1, _InputIterator2> -2441: mismatch(_InputIterator1 __first1, _InputIterator1 __last1, -2441: _InputIterator2 __first2, _InputIterator2 __last2, -2441: _BinaryPredicate __binary_pred) -2441: { -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: return std::__mismatch(__first1, __last1, __first2, __last2, -2441: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); -2441: } -2441: -2441: -2441: -2441: -2441: } -2441: # 62 "/usr/include/c++/8/algorithm" 2 3 -2441: # 1 "/usr/include/c++/8/bits/stl_algo.h" 1 3 -2441: # 59 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: # 1 "/usr/include/c++/8/cstdlib" 1 3 -2441: # 39 "/usr/include/c++/8/cstdlib" 3 -2441: -2441: # 40 "/usr/include/c++/8/cstdlib" 3 -2441: # 75 "/usr/include/c++/8/cstdlib" 3 -2441: # 1 "/usr/include/stdlib.h" 1 3 4 -2441: # 25 "/usr/include/stdlib.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/libc-header-start.h" 1 3 4 -2441: # 26 "/usr/include/stdlib.h" 2 3 4 -2441: -2441: -2441: -2441: -2441: -2441: # 1 "/usr/lib/gcc/i686-linux-gnu/8/include/stddef.h" 1 3 4 -2441: # 32 "/usr/include/stdlib.h" 2 3 4 -2441: -2441: extern "C" { -2441: -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/waitflags.h" 1 3 4 -2441: # 52 "/usr/include/i386-linux-gnu/bits/waitflags.h" 3 4 -2441: typedef enum -2441: { -2441: P_ALL, -2441: P_PID, -2441: P_PGID -2441: } idtype_t; -2441: # 40 "/usr/include/stdlib.h" 2 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/waitstatus.h" 1 3 4 -2441: # 41 "/usr/include/stdlib.h" 2 3 4 -2441: # 58 "/usr/include/stdlib.h" 3 4 -2441: typedef struct -2441: { -2441: int quot; -2441: int rem; -2441: } div_t; -2441: -2441: -2441: -2441: typedef struct -2441: { -2441: long int quot; -2441: long int rem; -2441: } ldiv_t; -2441: -2441: -2441: -2441: -2441: -2441: __extension__ typedef struct -2441: { -2441: long long int quot; -2441: long long int rem; -2441: } lldiv_t; -2441: # 97 "/usr/include/stdlib.h" 3 4 -2441: extern size_t __ctype_get_mb_cur_max (void) throw () __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: extern double atof (const char *__nptr) -2441: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); -2441: -2441: extern int atoi (const char *__nptr) -2441: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); -2441: -2441: extern long int atol (const char *__nptr) -2441: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: __extension__ extern long long int atoll (const char *__nptr) -2441: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: extern double strtod (const char *__restrict __nptr, -2441: char **__restrict __endptr) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: extern float strtof (const char *__restrict __nptr, -2441: char **__restrict __endptr) throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: extern long double strtold (const char *__restrict __nptr, -2441: char **__restrict __endptr) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: # 140 "/usr/include/stdlib.h" 3 4 -2441: extern _Float32 strtof32 (const char *__restrict __nptr, -2441: char **__restrict __endptr) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: extern _Float64 strtof64 (const char *__restrict __nptr, -2441: char **__restrict __endptr) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: extern _Float128 strtof128 (const char *__restrict __nptr, -2441: char **__restrict __endptr) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: extern _Float32x strtof32x (const char *__restrict __nptr, -2441: char **__restrict __endptr) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: extern _Float64x strtof64x (const char *__restrict __nptr, -2441: char **__restrict __endptr) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: # 176 "/usr/include/stdlib.h" 3 4 -2441: extern long int strtol (const char *__restrict __nptr, -2441: char **__restrict __endptr, int __base) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: extern unsigned long int strtoul (const char *__restrict __nptr, -2441: char **__restrict __endptr, int __base) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: __extension__ -2441: extern long long int strtoq (const char *__restrict __nptr, -2441: char **__restrict __endptr, int __base) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: __extension__ -2441: extern unsigned long long int strtouq (const char *__restrict __nptr, -2441: char **__restrict __endptr, int __base) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: -2441: __extension__ -2441: extern long long int strtoll (const char *__restrict __nptr, -2441: char **__restrict __endptr, int __base) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: __extension__ -2441: extern unsigned long long int strtoull (const char *__restrict __nptr, -2441: char **__restrict __endptr, int __base) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: -2441: extern int strfromd (char *__dest, size_t __size, const char *__format, -2441: double __f) -2441: throw () __attribute__ ((__nonnull__ (3))); -2441: -2441: extern int strfromf (char *__dest, size_t __size, const char *__format, -2441: float __f) -2441: throw () __attribute__ ((__nonnull__ (3))); -2441: -2441: extern int strfroml (char *__dest, size_t __size, const char *__format, -2441: long double __f) -2441: throw () __attribute__ ((__nonnull__ (3))); -2441: # 232 "/usr/include/stdlib.h" 3 4 -2441: extern int strfromf32 (char *__dest, size_t __size, const char * __format, -2441: _Float32 __f) -2441: throw () __attribute__ ((__nonnull__ (3))); -2441: -2441: -2441: -2441: extern int strfromf64 (char *__dest, size_t __size, const char * __format, -2441: _Float64 __f) -2441: throw () __attribute__ ((__nonnull__ (3))); -2441: -2441: -2441: -2441: extern int strfromf128 (char *__dest, size_t __size, const char * __format, -2441: _Float128 __f) -2441: throw () __attribute__ ((__nonnull__ (3))); -2441: -2441: -2441: -2441: extern int strfromf32x (char *__dest, size_t __size, const char * __format, -2441: _Float32x __f) -2441: throw () __attribute__ ((__nonnull__ (3))); -2441: -2441: -2441: -2441: extern int strfromf64x (char *__dest, size_t __size, const char * __format, -2441: _Float64x __f) -2441: throw () __attribute__ ((__nonnull__ (3))); -2441: # 274 "/usr/include/stdlib.h" 3 4 -2441: extern long int strtol_l (const char *__restrict __nptr, -2441: char **__restrict __endptr, int __base, -2441: locale_t __loc) throw () __attribute__ ((__nonnull__ (1, 4))); -2441: -2441: extern unsigned long int strtoul_l (const char *__restrict __nptr, -2441: char **__restrict __endptr, -2441: int __base, locale_t __loc) -2441: throw () __attribute__ ((__nonnull__ (1, 4))); -2441: -2441: __extension__ -2441: extern long long int strtoll_l (const char *__restrict __nptr, -2441: char **__restrict __endptr, int __base, -2441: locale_t __loc) -2441: throw () __attribute__ ((__nonnull__ (1, 4))); -2441: -2441: __extension__ -2441: extern unsigned long long int strtoull_l (const char *__restrict __nptr, -2441: char **__restrict __endptr, -2441: int __base, locale_t __loc) -2441: throw () __attribute__ ((__nonnull__ (1, 4))); -2441: -2441: extern double strtod_l (const char *__restrict __nptr, -2441: char **__restrict __endptr, locale_t __loc) -2441: throw () __attribute__ ((__nonnull__ (1, 3))); -2441: -2441: extern float strtof_l (const char *__restrict __nptr, -2441: char **__restrict __endptr, locale_t __loc) -2441: throw () __attribute__ ((__nonnull__ (1, 3))); -2441: -2441: extern long double strtold_l (const char *__restrict __nptr, -2441: char **__restrict __endptr, -2441: locale_t __loc) -2441: throw () __attribute__ ((__nonnull__ (1, 3))); -2441: # 316 "/usr/include/stdlib.h" 3 4 -2441: extern _Float32 strtof32_l (const char *__restrict __nptr, -2441: char **__restrict __endptr, -2441: locale_t __loc) -2441: throw () __attribute__ ((__nonnull__ (1, 3))); -2441: -2441: -2441: -2441: extern _Float64 strtof64_l (const char *__restrict __nptr, -2441: char **__restrict __endptr, -2441: locale_t __loc) -2441: throw () __attribute__ ((__nonnull__ (1, 3))); -2441: -2441: -2441: -2441: extern _Float128 strtof128_l (const char *__restrict __nptr, -2441: char **__restrict __endptr, -2441: locale_t __loc) -2441: throw () __attribute__ ((__nonnull__ (1, 3))); -2441: -2441: -2441: -2441: extern _Float32x strtof32x_l (const char *__restrict __nptr, -2441: char **__restrict __endptr, -2441: locale_t __loc) -2441: throw () __attribute__ ((__nonnull__ (1, 3))); -2441: -2441: -2441: -2441: extern _Float64x strtof64x_l (const char *__restrict __nptr, -2441: char **__restrict __endptr, -2441: locale_t __loc) -2441: throw () __attribute__ ((__nonnull__ (1, 3))); -2441: # 360 "/usr/include/stdlib.h" 3 4 -2441: extern __inline __attribute__ ((__gnu_inline__)) int -2441: __attribute__ ((__leaf__)) atoi (const char *__nptr) throw () -2441: { -2441: return (int) strtol (__nptr, (char **) __null, 10); -2441: } -2441: extern __inline __attribute__ ((__gnu_inline__)) long int -2441: __attribute__ ((__leaf__)) atol (const char *__nptr) throw () -2441: { -2441: return strtol (__nptr, (char **) __null, 10); -2441: } -2441: -2441: -2441: __extension__ extern __inline __attribute__ ((__gnu_inline__)) long long int -2441: __attribute__ ((__leaf__)) atoll (const char *__nptr) throw () -2441: { -2441: return strtoll (__nptr, (char **) __null, 10); -2441: } -2441: # 385 "/usr/include/stdlib.h" 3 4 -2441: extern char *l64a (long int __n) throw () __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: extern long int a64l (const char *__s) -2441: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/sys/types.h" 1 3 4 -2441: # 27 "/usr/include/i386-linux-gnu/sys/types.h" 3 4 -2441: extern "C" { -2441: -2441: -2441: -2441: -2441: -2441: typedef __u_char u_char; -2441: typedef __u_short u_short; -2441: typedef __u_int u_int; -2441: typedef __u_long u_long; -2441: typedef __quad_t quad_t; -2441: typedef __u_quad_t u_quad_t; -2441: typedef __fsid_t fsid_t; -2441: -2441: -2441: typedef __loff_t loff_t; -2441: -2441: -2441: -2441: -2441: typedef __ino_t ino_t; -2441: -2441: -2441: -2441: -2441: -2441: -2441: typedef __ino64_t ino64_t; -2441: -2441: -2441: -2441: -2441: typedef __dev_t dev_t; -2441: -2441: -2441: -2441: -2441: typedef __gid_t gid_t; -2441: -2441: -2441: -2441: -2441: typedef __mode_t mode_t; -2441: -2441: -2441: -2441: -2441: typedef __nlink_t nlink_t; -2441: -2441: -2441: -2441: -2441: typedef __uid_t uid_t; -2441: -2441: -2441: -2441: -2441: -2441: typedef __off_t off_t; -2441: -2441: -2441: -2441: -2441: -2441: -2441: typedef __off64_t off64_t; -2441: -2441: -2441: -2441: -2441: typedef __pid_t pid_t; -2441: -2441: -2441: -2441: -2441: -2441: typedef __id_t id_t; -2441: -2441: -2441: -2441: -2441: typedef __ssize_t ssize_t; -2441: -2441: -2441: -2441: -2441: -2441: typedef __daddr_t daddr_t; -2441: typedef __caddr_t caddr_t; -2441: -2441: -2441: -2441: -2441: -2441: typedef __key_t key_t; -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/types/clock_t.h" 1 3 4 -2441: -2441: -2441: -2441: -2441: -2441: -2441: typedef __clock_t clock_t; -2441: # 127 "/usr/include/i386-linux-gnu/sys/types.h" 2 3 4 -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/types/clockid_t.h" 1 3 4 -2441: -2441: -2441: -2441: -2441: -2441: -2441: typedef __clockid_t clockid_t; -2441: # 129 "/usr/include/i386-linux-gnu/sys/types.h" 2 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/types/time_t.h" 1 3 4 -2441: -2441: -2441: -2441: -2441: -2441: -2441: typedef __time_t time_t; -2441: # 130 "/usr/include/i386-linux-gnu/sys/types.h" 2 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/types/timer_t.h" 1 3 4 -2441: -2441: -2441: -2441: -2441: -2441: -2441: typedef __timer_t timer_t; -2441: # 131 "/usr/include/i386-linux-gnu/sys/types.h" 2 3 4 -2441: -2441: -2441: -2441: typedef __useconds_t useconds_t; -2441: -2441: -2441: -2441: typedef __suseconds_t suseconds_t; -2441: -2441: -2441: -2441: -2441: -2441: # 1 "/usr/lib/gcc/i686-linux-gnu/8/include/stddef.h" 1 3 4 -2441: # 145 "/usr/include/i386-linux-gnu/sys/types.h" 2 3 4 -2441: -2441: -2441: -2441: typedef unsigned long int ulong; -2441: typedef unsigned short int ushort; -2441: typedef unsigned int uint; -2441: # 177 "/usr/include/i386-linux-gnu/sys/types.h" 3 4 -2441: typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__))); -2441: typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__))); -2441: typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__))); -2441: typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__))); -2441: -2441: typedef int register_t __attribute__ ((__mode__ (__word__))); -2441: # 193 "/usr/include/i386-linux-gnu/sys/types.h" 3 4 -2441: # 1 "/usr/include/endian.h" 1 3 4 -2441: # 36 "/usr/include/endian.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/endian.h" 1 3 4 -2441: # 37 "/usr/include/endian.h" 2 3 4 -2441: # 60 "/usr/include/endian.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/byteswap.h" 1 3 4 -2441: # 33 "/usr/include/i386-linux-gnu/bits/byteswap.h" 3 4 -2441: static __inline __uint16_t -2441: __bswap_16 (__uint16_t __bsx) -2441: { -2441: -2441: return __builtin_bswap16 (__bsx); -2441: -2441: -2441: -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: static __inline __uint32_t -2441: __bswap_32 (__uint32_t __bsx) -2441: { -2441: -2441: return __builtin_bswap32 (__bsx); -2441: -2441: -2441: -2441: } -2441: # 69 "/usr/include/i386-linux-gnu/bits/byteswap.h" 3 4 -2441: __extension__ static __inline __uint64_t -2441: __bswap_64 (__uint64_t __bsx) -2441: { -2441: -2441: return __builtin_bswap64 (__bsx); -2441: -2441: -2441: -2441: } -2441: # 61 "/usr/include/endian.h" 2 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/uintn-identity.h" 1 3 4 -2441: # 32 "/usr/include/i386-linux-gnu/bits/uintn-identity.h" 3 4 -2441: static __inline __uint16_t -2441: __uint16_identity (__uint16_t __x) -2441: { -2441: return __x; -2441: } -2441: -2441: static __inline __uint32_t -2441: __uint32_identity (__uint32_t __x) -2441: { -2441: return __x; -2441: } -2441: -2441: static __inline __uint64_t -2441: __uint64_identity (__uint64_t __x) -2441: { -2441: return __x; -2441: } -2441: # 62 "/usr/include/endian.h" 2 3 4 -2441: # 194 "/usr/include/i386-linux-gnu/sys/types.h" 2 3 4 -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/sys/select.h" 1 3 4 -2441: # 30 "/usr/include/i386-linux-gnu/sys/select.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/select.h" 1 3 4 -2441: # 22 "/usr/include/i386-linux-gnu/bits/select.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/wordsize.h" 1 3 4 -2441: # 23 "/usr/include/i386-linux-gnu/bits/select.h" 2 3 4 -2441: # 31 "/usr/include/i386-linux-gnu/sys/select.h" 2 3 4 -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/types/sigset_t.h" 1 3 4 -2441: -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/types/__sigset_t.h" 1 3 4 -2441: -2441: -2441: -2441: -2441: typedef struct -2441: { -2441: unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))]; -2441: } __sigset_t; -2441: # 5 "/usr/include/i386-linux-gnu/bits/types/sigset_t.h" 2 3 4 -2441: -2441: -2441: typedef __sigset_t sigset_t; -2441: # 34 "/usr/include/i386-linux-gnu/sys/select.h" 2 3 4 -2441: -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/types/struct_timeval.h" 1 3 4 -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: struct timeval -2441: { -2441: __time_t tv_sec; -2441: __suseconds_t tv_usec; -2441: }; -2441: # 38 "/usr/include/i386-linux-gnu/sys/select.h" 2 3 4 -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/types/struct_timespec.h" 1 3 4 -2441: # 9 "/usr/include/i386-linux-gnu/bits/types/struct_timespec.h" 3 4 -2441: struct timespec -2441: { -2441: __time_t tv_sec; -2441: __syscall_slong_t tv_nsec; -2441: }; -2441: # 40 "/usr/include/i386-linux-gnu/sys/select.h" 2 3 4 -2441: # 49 "/usr/include/i386-linux-gnu/sys/select.h" 3 4 -2441: typedef long int __fd_mask; -2441: # 59 "/usr/include/i386-linux-gnu/sys/select.h" 3 4 -2441: typedef struct -2441: { -2441: -2441: -2441: -2441: __fd_mask fds_bits[1024 / (8 * (int) sizeof (__fd_mask))]; -2441: -2441: -2441: -2441: -2441: -2441: } fd_set; -2441: -2441: -2441: -2441: -2441: -2441: -2441: typedef __fd_mask fd_mask; -2441: # 91 "/usr/include/i386-linux-gnu/sys/select.h" 3 4 -2441: extern "C" { -2441: # 101 "/usr/include/i386-linux-gnu/sys/select.h" 3 4 -2441: extern int select (int __nfds, fd_set *__restrict __readfds, -2441: fd_set *__restrict __writefds, -2441: fd_set *__restrict __exceptfds, -2441: struct timeval *__restrict __timeout); -2441: # 113 "/usr/include/i386-linux-gnu/sys/select.h" 3 4 -2441: extern int pselect (int __nfds, fd_set *__restrict __readfds, -2441: fd_set *__restrict __writefds, -2441: fd_set *__restrict __exceptfds, -2441: const struct timespec *__restrict __timeout, -2441: const __sigset_t *__restrict __sigmask); -2441: -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/select2.h" 1 3 4 -2441: # 24 "/usr/include/i386-linux-gnu/bits/select2.h" 3 4 -2441: extern long int __fdelt_chk (long int __d); -2441: extern long int __fdelt_warn (long int __d) -2441: __attribute__((__warning__ ("bit outside of fd_set selected"))); -2441: # 124 "/usr/include/i386-linux-gnu/sys/select.h" 2 3 4 -2441: -2441: -2441: } -2441: # 197 "/usr/include/i386-linux-gnu/sys/types.h" 2 3 4 -2441: -2441: -2441: -2441: -2441: -2441: typedef __blksize_t blksize_t; -2441: -2441: -2441: -2441: -2441: -2441: -2441: typedef __blkcnt_t blkcnt_t; -2441: -2441: -2441: -2441: typedef __fsblkcnt_t fsblkcnt_t; -2441: -2441: -2441: -2441: typedef __fsfilcnt_t fsfilcnt_t; -2441: # 236 "/usr/include/i386-linux-gnu/sys/types.h" 3 4 -2441: typedef __blkcnt64_t blkcnt64_t; -2441: typedef __fsblkcnt64_t fsblkcnt64_t; -2441: typedef __fsfilcnt64_t fsfilcnt64_t; -2441: -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/pthreadtypes.h" 1 3 4 -2441: # 23 "/usr/include/i386-linux-gnu/bits/pthreadtypes.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/thread-shared-types.h" 1 3 4 -2441: # 77 "/usr/include/i386-linux-gnu/bits/thread-shared-types.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/pthreadtypes-arch.h" 1 3 4 -2441: # 21 "/usr/include/i386-linux-gnu/bits/pthreadtypes-arch.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/wordsize.h" 1 3 4 -2441: # 22 "/usr/include/i386-linux-gnu/bits/pthreadtypes-arch.h" 2 3 4 -2441: # 65 "/usr/include/i386-linux-gnu/bits/pthreadtypes-arch.h" 3 4 -2441: struct __pthread_rwlock_arch_t -2441: { -2441: unsigned int __readers; -2441: unsigned int __writers; -2441: unsigned int __wrphase_futex; -2441: unsigned int __writers_futex; -2441: unsigned int __pad3; -2441: unsigned int __pad4; -2441: # 92 "/usr/include/i386-linux-gnu/bits/pthreadtypes-arch.h" 3 4 -2441: unsigned char __flags; -2441: unsigned char __shared; -2441: signed char __rwelision; -2441: -2441: unsigned char __pad2; -2441: int __cur_writer; -2441: -2441: }; -2441: # 78 "/usr/include/i386-linux-gnu/bits/thread-shared-types.h" 2 3 4 -2441: # 88 "/usr/include/i386-linux-gnu/bits/thread-shared-types.h" 3 4 -2441: typedef struct __pthread_internal_slist -2441: { -2441: struct __pthread_internal_slist *__next; -2441: } __pthread_slist_t; -2441: # 118 "/usr/include/i386-linux-gnu/bits/thread-shared-types.h" 3 4 -2441: struct __pthread_mutex_s -2441: { -2441: int __lock ; -2441: unsigned int __count; -2441: int __owner; -2441: # 148 "/usr/include/i386-linux-gnu/bits/thread-shared-types.h" 3 4 -2441: int __kind; -2441: -2441: -2441: unsigned int __nusers; -2441: -2441: -2441: -2441: -2441: -2441: -2441: __extension__ union -2441: { -2441: struct { short __espins; short __eelision; } __elision_data; -2441: __pthread_slist_t __list; -2441: }; -2441: -2441: -2441: -2441: }; -2441: -2441: -2441: -2441: -2441: struct __pthread_cond_s -2441: { -2441: __extension__ union -2441: { -2441: __extension__ unsigned long long int __wseq; -2441: struct -2441: { -2441: unsigned int __low; -2441: unsigned int __high; -2441: } __wseq32; -2441: }; -2441: __extension__ union -2441: { -2441: __extension__ unsigned long long int __g1_start; -2441: struct -2441: { -2441: unsigned int __low; -2441: unsigned int __high; -2441: } __g1_start32; -2441: }; -2441: unsigned int __g_refs[2] ; -2441: unsigned int __g_size[2]; -2441: unsigned int __g1_orig_size; -2441: unsigned int __wrefs; -2441: unsigned int __g_signals[2]; -2441: }; -2441: # 24 "/usr/include/i386-linux-gnu/bits/pthreadtypes.h" 2 3 4 -2441: -2441: -2441: -2441: typedef unsigned long int pthread_t; -2441: -2441: -2441: -2441: -2441: typedef union -2441: { -2441: char __size[4]; -2441: int __align; -2441: } pthread_mutexattr_t; -2441: -2441: -2441: -2441: -2441: typedef union -2441: { -2441: char __size[4]; -2441: int __align; -2441: } pthread_condattr_t; -2441: -2441: -2441: -2441: typedef unsigned int pthread_key_t; -2441: -2441: -2441: -2441: typedef int pthread_once_t; -2441: -2441: -2441: union pthread_attr_t -2441: { -2441: char __size[36]; -2441: long int __align; -2441: }; -2441: -2441: typedef union pthread_attr_t pthread_attr_t; -2441: -2441: -2441: -2441: -2441: typedef union -2441: { -2441: struct __pthread_mutex_s __data; -2441: char __size[24]; -2441: long int __align; -2441: } pthread_mutex_t; -2441: -2441: -2441: typedef union -2441: { -2441: struct __pthread_cond_s __data; -2441: char __size[48]; -2441: __extension__ long long int __align; -2441: } pthread_cond_t; -2441: -2441: -2441: -2441: -2441: -2441: typedef union -2441: { -2441: struct __pthread_rwlock_arch_t __data; -2441: char __size[32]; -2441: long int __align; -2441: } pthread_rwlock_t; -2441: -2441: typedef union -2441: { -2441: char __size[8]; -2441: long int __align; -2441: } pthread_rwlockattr_t; -2441: -2441: -2441: -2441: -2441: -2441: typedef volatile int pthread_spinlock_t; -2441: -2441: -2441: -2441: -2441: typedef union -2441: { -2441: char __size[20]; -2441: long int __align; -2441: } pthread_barrier_t; -2441: -2441: typedef union -2441: { -2441: char __size[4]; -2441: int __align; -2441: } pthread_barrierattr_t; -2441: # 245 "/usr/include/i386-linux-gnu/sys/types.h" 2 3 4 -2441: -2441: -2441: } -2441: # 395 "/usr/include/stdlib.h" 2 3 4 -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern long int random (void) throw (); -2441: -2441: -2441: extern void srandom (unsigned int __seed) throw (); -2441: -2441: -2441: -2441: -2441: -2441: extern char *initstate (unsigned int __seed, char *__statebuf, -2441: size_t __statelen) throw () __attribute__ ((__nonnull__ (2))); -2441: -2441: -2441: -2441: extern char *setstate (char *__statebuf) throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: struct random_data -2441: { -2441: int32_t *fptr; -2441: int32_t *rptr; -2441: int32_t *state; -2441: int rand_type; -2441: int rand_deg; -2441: int rand_sep; -2441: int32_t *end_ptr; -2441: }; -2441: -2441: extern int random_r (struct random_data *__restrict __buf, -2441: int32_t *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: extern int srandom_r (unsigned int __seed, struct random_data *__buf) -2441: throw () __attribute__ ((__nonnull__ (2))); -2441: -2441: extern int initstate_r (unsigned int __seed, char *__restrict __statebuf, -2441: size_t __statelen, -2441: struct random_data *__restrict __buf) -2441: throw () __attribute__ ((__nonnull__ (2, 4))); -2441: -2441: extern int setstate_r (char *__restrict __statebuf, -2441: struct random_data *__restrict __buf) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: -2441: -2441: -2441: extern int rand (void) throw (); -2441: -2441: extern void srand (unsigned int __seed) throw (); -2441: -2441: -2441: -2441: extern int rand_r (unsigned int *__seed) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern double drand48 (void) throw (); -2441: extern double erand48 (unsigned short int __xsubi[3]) throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern long int lrand48 (void) throw (); -2441: extern long int nrand48 (unsigned short int __xsubi[3]) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern long int mrand48 (void) throw (); -2441: extern long int jrand48 (unsigned short int __xsubi[3]) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern void srand48 (long int __seedval) throw (); -2441: extern unsigned short int *seed48 (unsigned short int __seed16v[3]) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: extern void lcong48 (unsigned short int __param[7]) throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: -2441: -2441: struct drand48_data -2441: { -2441: unsigned short int __x[3]; -2441: unsigned short int __old_x[3]; -2441: unsigned short int __c; -2441: unsigned short int __init; -2441: __extension__ unsigned long long int __a; -2441: -2441: }; -2441: -2441: -2441: extern int drand48_r (struct drand48_data *__restrict __buffer, -2441: double *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2))); -2441: extern int erand48_r (unsigned short int __xsubi[3], -2441: struct drand48_data *__restrict __buffer, -2441: double *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: extern int lrand48_r (struct drand48_data *__restrict __buffer, -2441: long int *__restrict __result) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: extern int nrand48_r (unsigned short int __xsubi[3], -2441: struct drand48_data *__restrict __buffer, -2441: long int *__restrict __result) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: extern int mrand48_r (struct drand48_data *__restrict __buffer, -2441: long int *__restrict __result) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: extern int jrand48_r (unsigned short int __xsubi[3], -2441: struct drand48_data *__restrict __buffer, -2441: long int *__restrict __result) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: extern int srand48_r (long int __seedval, struct drand48_data *__buffer) -2441: throw () __attribute__ ((__nonnull__ (2))); -2441: -2441: extern int seed48_r (unsigned short int __seed16v[3], -2441: struct drand48_data *__buffer) throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: extern int lcong48_r (unsigned short int __param[7], -2441: struct drand48_data *__buffer) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: -2441: -2441: extern void *malloc (size_t __size) throw () __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)); -2441: -2441: extern void *calloc (size_t __nmemb, size_t __size) -2441: throw () __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern void *realloc (void *__ptr, size_t __size) -2441: throw () __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size) -2441: throw () __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: extern void free (void *__ptr) throw (); -2441: -2441: -2441: # 1 "/usr/include/alloca.h" 1 3 4 -2441: # 24 "/usr/include/alloca.h" 3 4 -2441: # 1 "/usr/lib/gcc/i686-linux-gnu/8/include/stddef.h" 1 3 4 -2441: # 25 "/usr/include/alloca.h" 2 3 4 -2441: -2441: extern "C" { -2441: -2441: -2441: -2441: -2441: -2441: extern void *alloca (size_t __size) throw (); -2441: -2441: -2441: -2441: -2441: -2441: } -2441: # 567 "/usr/include/stdlib.h" 2 3 4 -2441: -2441: -2441: -2441: -2441: -2441: extern void *valloc (size_t __size) throw () __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size) -2441: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: extern void *aligned_alloc (size_t __alignment, size_t __size) -2441: throw () __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (2))) __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: extern void abort (void) throw () __attribute__ ((__noreturn__)); -2441: -2441: -2441: -2441: extern int atexit (void (*__func) (void)) throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: -2441: extern "C++" int at_quick_exit (void (*__func) (void)) -2441: throw () __asm ("at_quick_exit") __attribute__ ((__nonnull__ (1))); -2441: # 607 "/usr/include/stdlib.h" 3 4 -2441: extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: -2441: -2441: extern void exit (int __status) throw () __attribute__ ((__noreturn__)); -2441: -2441: -2441: -2441: -2441: -2441: extern void quick_exit (int __status) throw () __attribute__ ((__noreturn__)); -2441: -2441: -2441: -2441: -2441: -2441: extern void _Exit (int __status) throw () __attribute__ ((__noreturn__)); -2441: -2441: -2441: -2441: -2441: extern char *getenv (const char *__name) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: extern char *secure_getenv (const char *__name) -2441: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int putenv (char *__string) throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: -2441: -2441: extern int setenv (const char *__name, const char *__value, int __replace) -2441: throw () __attribute__ ((__nonnull__ (2))); -2441: -2441: -2441: extern int unsetenv (const char *__name) throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int clearenv (void) throw (); -2441: # 672 "/usr/include/stdlib.h" 3 4 -2441: extern char *mktemp (char *__template) throw () __attribute__ ((__nonnull__ (1))); -2441: # 685 "/usr/include/stdlib.h" 3 4 -2441: extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); -2441: # 695 "/usr/include/stdlib.h" 3 4 -2441: extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); -2441: # 707 "/usr/include/stdlib.h" 3 4 -2441: extern int mkstemps (char *__template, int __suffixlen) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); -2441: # 717 "/usr/include/stdlib.h" 3 4 -2441: extern int mkstemps64 (char *__template, int __suffixlen) -2441: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); -2441: # 728 "/usr/include/stdlib.h" 3 4 -2441: extern char *mkdtemp (char *__template) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); -2441: # 739 "/usr/include/stdlib.h" 3 4 -2441: extern int mkostemp (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); -2441: # 749 "/usr/include/stdlib.h" 3 4 -2441: extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); -2441: # 759 "/usr/include/stdlib.h" 3 4 -2441: extern int mkostemps (char *__template, int __suffixlen, int __flags) -2441: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); -2441: # 771 "/usr/include/stdlib.h" 3 4 -2441: extern int mkostemps64 (char *__template, int __suffixlen, int __flags) -2441: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); -2441: # 781 "/usr/include/stdlib.h" 3 4 -2441: extern int system (const char *__command) __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: -2441: extern char *canonicalize_file_name (const char *__name) -2441: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); -2441: # 797 "/usr/include/stdlib.h" 3 4 -2441: extern char *realpath (const char *__restrict __name, -2441: char *__restrict __resolved) throw () __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: -2441: -2441: typedef int (*__compar_fn_t) (const void *, const void *); -2441: -2441: -2441: typedef __compar_fn_t comparison_fn_t; -2441: -2441: -2441: -2441: typedef int (*__compar_d_fn_t) (const void *, const void *, void *); -2441: -2441: -2441: -2441: -2441: extern void *bsearch (const void *__key, const void *__base, -2441: size_t __nmemb, size_t __size, __compar_fn_t __compar) -2441: __attribute__ ((__nonnull__ (1, 2, 5))) __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/stdlib-bsearch.h" 1 3 4 -2441: # 19 "/usr/include/i386-linux-gnu/bits/stdlib-bsearch.h" 3 4 -2441: extern __inline __attribute__ ((__gnu_inline__)) void * -2441: bsearch (const void *__key, const void *__base, size_t __nmemb, size_t __size, -2441: __compar_fn_t __compar) -2441: { -2441: size_t __l, __u, __idx; -2441: const void *__p; -2441: int __comparison; -2441: -2441: __l = 0; -2441: __u = __nmemb; -2441: while (__l < __u) -2441: { -2441: __idx = (__l + __u) / 2; -2441: __p = (void *) (((const char *) __base) + (__idx * __size)); -2441: __comparison = (*__compar) (__key, __p); -2441: if (__comparison < 0) -2441: __u = __idx; -2441: else if (__comparison > 0) -2441: __l = __idx + 1; -2441: else -2441: return (void *) __p; -2441: } -2441: -2441: return __null; -2441: } -2441: # 823 "/usr/include/stdlib.h" 2 3 4 -2441: -2441: -2441: -2441: -2441: extern void qsort (void *__base, size_t __nmemb, size_t __size, -2441: __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4))); -2441: -2441: extern void qsort_r (void *__base, size_t __nmemb, size_t __size, -2441: __compar_d_fn_t __compar, void *__arg) -2441: __attribute__ ((__nonnull__ (1, 4))); -2441: -2441: -2441: -2441: -2441: extern int abs (int __x) throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); -2441: extern long int labs (long int __x) throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: __extension__ extern long long int llabs (long long int __x) -2441: throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern div_t div (int __numer, int __denom) -2441: throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); -2441: extern ldiv_t ldiv (long int __numer, long int __denom) -2441: throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: __extension__ extern lldiv_t lldiv (long long int __numer, -2441: long long int __denom) -2441: throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); -2441: # 869 "/usr/include/stdlib.h" 3 4 -2441: extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, -2441: int *__restrict __sign) throw () __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, -2441: int *__restrict __sign) throw () __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: extern char *gcvt (double __value, int __ndigit, char *__buf) -2441: throw () __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: extern char *qecvt (long double __value, int __ndigit, -2441: int *__restrict __decpt, int *__restrict __sign) -2441: throw () __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); -2441: extern char *qfcvt (long double __value, int __ndigit, -2441: int *__restrict __decpt, int *__restrict __sign) -2441: throw () __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); -2441: extern char *qgcvt (long double __value, int __ndigit, char *__buf) -2441: throw () __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt, -2441: int *__restrict __sign, char *__restrict __buf, -2441: size_t __len) throw () __attribute__ ((__nonnull__ (3, 4, 5))); -2441: extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt, -2441: int *__restrict __sign, char *__restrict __buf, -2441: size_t __len) throw () __attribute__ ((__nonnull__ (3, 4, 5))); -2441: -2441: extern int qecvt_r (long double __value, int __ndigit, -2441: int *__restrict __decpt, int *__restrict __sign, -2441: char *__restrict __buf, size_t __len) -2441: throw () __attribute__ ((__nonnull__ (3, 4, 5))); -2441: extern int qfcvt_r (long double __value, int __ndigit, -2441: int *__restrict __decpt, int *__restrict __sign, -2441: char *__restrict __buf, size_t __len) -2441: throw () __attribute__ ((__nonnull__ (3, 4, 5))); -2441: -2441: -2441: -2441: -2441: -2441: extern int mblen (const char *__s, size_t __n) throw (); -2441: -2441: -2441: extern int mbtowc (wchar_t *__restrict __pwc, -2441: const char *__restrict __s, size_t __n) throw (); -2441: -2441: -2441: extern int wctomb (char *__s, wchar_t __wchar) throw (); -2441: -2441: -2441: -2441: extern size_t mbstowcs (wchar_t *__restrict __pwcs, -2441: const char *__restrict __s, size_t __n) throw (); -2441: -2441: extern size_t wcstombs (char *__restrict __s, -2441: const wchar_t *__restrict __pwcs, size_t __n) -2441: throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int rpmatch (const char *__response) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); -2441: # 954 "/usr/include/stdlib.h" 3 4 -2441: extern int getsubopt (char **__restrict __optionp, -2441: char *const *__restrict __tokens, -2441: char **__restrict __valuep) -2441: throw () __attribute__ ((__nonnull__ (1, 2, 3))) __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int posix_openpt (int __oflag) __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int grantpt (int __fd) throw (); -2441: -2441: -2441: -2441: extern int unlockpt (int __fd) throw (); -2441: -2441: -2441: -2441: -2441: extern char *ptsname (int __fd) throw () __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int ptsname_r (int __fd, char *__buf, size_t __buflen) -2441: throw () __attribute__ ((__nonnull__ (2))); -2441: -2441: -2441: extern int getpt (void); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int getloadavg (double __loadavg[], int __nelem) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: # 1010 "/usr/include/stdlib.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/stdlib-float.h" 1 3 4 -2441: # 24 "/usr/include/i386-linux-gnu/bits/stdlib-float.h" 3 4 -2441: extern __inline __attribute__ ((__gnu_inline__)) double -2441: __attribute__ ((__leaf__)) atof (const char *__nptr) throw () -2441: { -2441: return strtod (__nptr, (char **) __null); -2441: } -2441: # 1011 "/usr/include/stdlib.h" 2 3 4 -2441: -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/stdlib.h" 1 3 4 -2441: # 23 "/usr/include/i386-linux-gnu/bits/stdlib.h" 3 4 -2441: extern char *__realpath_chk (const char *__restrict __name, -2441: char *__restrict __resolved, -2441: size_t __resolvedlen) throw () __attribute__ ((__warn_unused_result__)); -2441: extern char *__realpath_alias (const char *__restrict __name, char *__restrict __resolved) throw () __asm__ ("" "realpath") -2441: -2441: __attribute__ ((__warn_unused_result__)); -2441: extern char *__realpath_chk_warn (const char *__restrict __name, char *__restrict __resolved, size_t __resolvedlen) throw () __asm__ ("" "__realpath_chk") -2441: -2441: -2441: __attribute__ ((__warn_unused_result__)) -2441: __attribute__((__warning__ ("second argument of realpath must be either NULL or at " "least PATH_MAX bytes long buffer"))) -2441: ; -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * -2441: __attribute__ ((__leaf__)) realpath (const char *__restrict __name, char *__restrict __resolved) throw () -2441: { -2441: if (__builtin_object_size (__resolved, 2 > 1) != (size_t) -1) -2441: { -2441: -2441: -2441: -2441: -2441: return __realpath_chk (__name, __resolved, __builtin_object_size (__resolved, 2 > 1)); -2441: } -2441: -2441: return __realpath_alias (__name, __resolved); -2441: } -2441: -2441: -2441: extern int __ptsname_r_chk (int __fd, char *__buf, size_t __buflen, -2441: size_t __nreal) throw () __attribute__ ((__nonnull__ (2))); -2441: extern int __ptsname_r_alias (int __fd, char *__buf, size_t __buflen) throw () __asm__ ("" "ptsname_r") -2441: -2441: __attribute__ ((__nonnull__ (2))); -2441: extern int __ptsname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) throw () __asm__ ("" "__ptsname_r_chk") -2441: -2441: -2441: __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ptsname_r called with buflen bigger than " "size of buf"))) -2441: ; -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int -2441: __attribute__ ((__leaf__)) ptsname_r (int __fd, char *__buf, size_t __buflen) throw () -2441: { -2441: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) -2441: { -2441: if (!__builtin_constant_p (__buflen)) -2441: return __ptsname_r_chk (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)); -2441: if (__buflen > __builtin_object_size (__buf, 2 > 1)) -2441: return __ptsname_r_chk_warn (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)); -2441: } -2441: return __ptsname_r_alias (__fd, __buf, __buflen); -2441: } -2441: -2441: -2441: extern int __wctomb_chk (char *__s, wchar_t __wchar, size_t __buflen) -2441: throw () __attribute__ ((__warn_unused_result__)); -2441: extern int __wctomb_alias (char *__s, wchar_t __wchar) throw () __asm__ ("" "wctomb") -2441: __attribute__ ((__warn_unused_result__)); -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) int -2441: __attribute__ ((__leaf__)) wctomb (char *__s, wchar_t __wchar) throw () -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 && 16 > __builtin_object_size (__s, 2 > 1)) -2441: return __wctomb_chk (__s, __wchar, __builtin_object_size (__s, 2 > 1)); -2441: return __wctomb_alias (__s, __wchar); -2441: } -2441: -2441: -2441: extern size_t __mbstowcs_chk (wchar_t *__restrict __dst, -2441: const char *__restrict __src, -2441: size_t __len, size_t __dstlen) throw (); -2441: extern size_t __mbstowcs_alias (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len) throw () __asm__ ("" "mbstowcs") -2441: -2441: -2441: ; -2441: extern size_t __mbstowcs_chk_warn (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len, size_t __dstlen) throw () __asm__ ("" "__mbstowcs_chk") -2441: -2441: -2441: -2441: __attribute__((__warning__ ("mbstowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) -2441: ; -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t -2441: __attribute__ ((__leaf__)) mbstowcs (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len) throw () -2441: -2441: { -2441: if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1) -2441: { -2441: if (!__builtin_constant_p (__len)) -2441: return __mbstowcs_chk (__dst, __src, __len, -2441: __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)); -2441: -2441: if (__len > __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)) -2441: return __mbstowcs_chk_warn (__dst, __src, __len, -2441: __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)); -2441: } -2441: return __mbstowcs_alias (__dst, __src, __len); -2441: } -2441: -2441: -2441: extern size_t __wcstombs_chk (char *__restrict __dst, -2441: const wchar_t *__restrict __src, -2441: size_t __len, size_t __dstlen) throw (); -2441: extern size_t __wcstombs_alias (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len) throw () __asm__ ("" "wcstombs") -2441: -2441: -2441: ; -2441: extern size_t __wcstombs_chk_warn (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len, size_t __dstlen) throw () __asm__ ("" "__wcstombs_chk") -2441: -2441: -2441: -2441: __attribute__((__warning__ ("wcstombs called with dst buffer smaller than len"))); -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t -2441: __attribute__ ((__leaf__)) wcstombs (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len) throw () -2441: -2441: { -2441: if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1) -2441: { -2441: if (!__builtin_constant_p (__len)) -2441: return __wcstombs_chk (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1)); -2441: if (__len > __builtin_object_size (__dst, 2 > 1)) -2441: return __wcstombs_chk_warn (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1)); -2441: } -2441: return __wcstombs_alias (__dst, __src, __len); -2441: } -2441: # 1015 "/usr/include/stdlib.h" 2 3 4 -2441: -2441: -2441: -2441: -2441: -2441: } -2441: # 76 "/usr/include/c++/8/cstdlib" 2 3 -2441: -2441: # 1 "/usr/include/c++/8/bits/std_abs.h" 1 3 -2441: # 33 "/usr/include/c++/8/bits/std_abs.h" 3 -2441: -2441: # 34 "/usr/include/c++/8/bits/std_abs.h" 3 -2441: # 46 "/usr/include/c++/8/bits/std_abs.h" 3 -2441: extern "C++" -2441: { -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: using ::abs; -2441: -2441: -2441: inline long -2441: abs(long __i) { return __builtin_labs(__i); } -2441: -2441: -2441: -2441: inline long long -2441: abs(long long __x) { return __builtin_llabs (__x); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: inline constexpr double -2441: abs(double __x) -2441: { return __builtin_fabs(__x); } -2441: -2441: inline constexpr float -2441: abs(float __x) -2441: { return __builtin_fabsf(__x); } -2441: -2441: inline constexpr long double -2441: abs(long double __x) -2441: { return __builtin_fabsl(__x); } -2441: # 100 "/usr/include/c++/8/bits/std_abs.h" 3 -2441: inline constexpr -2441: __float128 -2441: abs(__float128 __x) -2441: { return __x < 0 ? -__x : __x; } -2441: -2441: -2441: -2441: } -2441: } -2441: # 78 "/usr/include/c++/8/cstdlib" 2 3 -2441: # 121 "/usr/include/c++/8/cstdlib" 3 -2441: extern "C++" -2441: { -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: using ::div_t; -2441: using ::ldiv_t; -2441: -2441: using ::abort; -2441: -2441: -2441: -2441: using ::atexit; -2441: -2441: -2441: using ::at_quick_exit; -2441: -2441: -2441: using ::atof; -2441: using ::atoi; -2441: using ::atol; -2441: using ::bsearch; -2441: using ::calloc; -2441: using ::div; -2441: using ::exit; -2441: using ::free; -2441: using ::getenv; -2441: using ::labs; -2441: using ::ldiv; -2441: using ::malloc; -2441: -2441: using ::mblen; -2441: using ::mbstowcs; -2441: using ::mbtowc; -2441: -2441: using ::qsort; -2441: -2441: -2441: using ::quick_exit; -2441: -2441: -2441: using ::rand; -2441: using ::realloc; -2441: using ::srand; -2441: using ::strtod; -2441: using ::strtol; -2441: using ::strtoul; -2441: using ::system; -2441: -2441: using ::wcstombs; -2441: using ::wctomb; -2441: -2441: -2441: -2441: inline ldiv_t -2441: div(long __i, long __j) { return ldiv(__i, __j); } -2441: -2441: -2441: -2441: -2441: } -2441: # 195 "/usr/include/c++/8/cstdlib" 3 -2441: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: using ::lldiv_t; -2441: -2441: -2441: -2441: -2441: -2441: using ::_Exit; -2441: -2441: -2441: -2441: using ::llabs; -2441: -2441: inline lldiv_t -2441: div(long long __n, long long __d) -2441: { lldiv_t __q; __q.quot = __n / __d; __q.rem = __n % __d; return __q; } -2441: -2441: using ::lldiv; -2441: # 227 "/usr/include/c++/8/cstdlib" 3 -2441: using ::atoll; -2441: using ::strtoll; -2441: using ::strtoull; -2441: -2441: using ::strtof; -2441: using ::strtold; -2441: -2441: -2441: } -2441: -2441: namespace std -2441: { -2441: -2441: using ::__gnu_cxx::lldiv_t; -2441: -2441: using ::__gnu_cxx::_Exit; -2441: -2441: using ::__gnu_cxx::llabs; -2441: using ::__gnu_cxx::div; -2441: using ::__gnu_cxx::lldiv; -2441: -2441: using ::__gnu_cxx::atoll; -2441: using ::__gnu_cxx::strtof; -2441: using ::__gnu_cxx::strtoll; -2441: using ::__gnu_cxx::strtoull; -2441: using ::__gnu_cxx::strtold; -2441: } -2441: -2441: -2441: -2441: } -2441: # 60 "/usr/include/c++/8/bits/stl_algo.h" 2 3 -2441: # 1 "/usr/include/c++/8/bits/algorithmfwd.h" 1 3 -2441: # 33 "/usr/include/c++/8/bits/algorithmfwd.h" 3 -2441: -2441: # 34 "/usr/include/c++/8/bits/algorithmfwd.h" 3 -2441: # 42 "/usr/include/c++/8/bits/algorithmfwd.h" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: # 195 "/usr/include/c++/8/bits/algorithmfwd.h" 3 -2441: template -2441: bool -2441: all_of(_IIter, _IIter, _Predicate); -2441: -2441: template -2441: bool -2441: any_of(_IIter, _IIter, _Predicate); -2441: -2441: -2441: template -2441: bool -2441: binary_search(_FIter, _FIter, const _Tp&); -2441: -2441: template -2441: bool -2441: binary_search(_FIter, _FIter, const _Tp&, _Compare); -2441: # 224 "/usr/include/c++/8/bits/algorithmfwd.h" 3 -2441: template -2441: _OIter -2441: copy(_IIter, _IIter, _OIter); -2441: -2441: template -2441: _BIter2 -2441: copy_backward(_BIter1, _BIter1, _BIter2); -2441: -2441: -2441: template -2441: _OIter -2441: copy_if(_IIter, _IIter, _OIter, _Predicate); -2441: -2441: template -2441: _OIter -2441: copy_n(_IIter, _Size, _OIter); -2441: -2441: -2441: -2441: -2441: -2441: template -2441: pair<_FIter, _FIter> -2441: equal_range(_FIter, _FIter, const _Tp&); -2441: -2441: template -2441: pair<_FIter, _FIter> -2441: equal_range(_FIter, _FIter, const _Tp&, _Compare); -2441: -2441: template -2441: void -2441: fill(_FIter, _FIter, const _Tp&); -2441: -2441: template -2441: _OIter -2441: fill_n(_OIter, _Size, const _Tp&); -2441: -2441: -2441: -2441: template -2441: _FIter1 -2441: find_end(_FIter1, _FIter1, _FIter2, _FIter2); -2441: -2441: template -2441: _FIter1 -2441: find_end(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); -2441: -2441: -2441: -2441: -2441: -2441: template -2441: _IIter -2441: find_if_not(_IIter, _IIter, _Predicate); -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: bool -2441: includes(_IIter1, _IIter1, _IIter2, _IIter2); -2441: -2441: template -2441: bool -2441: includes(_IIter1, _IIter1, _IIter2, _IIter2, _Compare); -2441: -2441: template -2441: void -2441: inplace_merge(_BIter, _BIter, _BIter); -2441: -2441: template -2441: void -2441: inplace_merge(_BIter, _BIter, _BIter, _Compare); -2441: -2441: -2441: template -2441: bool -2441: is_heap(_RAIter, _RAIter); -2441: -2441: template -2441: bool -2441: is_heap(_RAIter, _RAIter, _Compare); -2441: -2441: template -2441: _RAIter -2441: is_heap_until(_RAIter, _RAIter); -2441: -2441: template -2441: _RAIter -2441: is_heap_until(_RAIter, _RAIter, _Compare); -2441: -2441: template -2441: bool -2441: is_partitioned(_IIter, _IIter, _Predicate); -2441: -2441: template -2441: bool -2441: is_permutation(_FIter1, _FIter1, _FIter2); -2441: -2441: template -2441: bool -2441: is_permutation(_FIter1, _FIter1, _FIter2, _BinaryPredicate); -2441: -2441: template -2441: bool -2441: is_sorted(_FIter, _FIter); -2441: -2441: template -2441: bool -2441: is_sorted(_FIter, _FIter, _Compare); -2441: -2441: template -2441: _FIter -2441: is_sorted_until(_FIter, _FIter); -2441: -2441: template -2441: _FIter -2441: is_sorted_until(_FIter, _FIter, _Compare); -2441: -2441: -2441: template -2441: void -2441: iter_swap(_FIter1, _FIter2); -2441: -2441: template -2441: _FIter -2441: lower_bound(_FIter, _FIter, const _Tp&); -2441: -2441: template -2441: _FIter -2441: lower_bound(_FIter, _FIter, const _Tp&, _Compare); -2441: -2441: template -2441: void -2441: make_heap(_RAIter, _RAIter); -2441: -2441: template -2441: void -2441: make_heap(_RAIter, _RAIter, _Compare); -2441: -2441: template -2441: constexpr -2441: const _Tp& -2441: max(const _Tp&, const _Tp&); -2441: -2441: template -2441: constexpr -2441: const _Tp& -2441: max(const _Tp&, const _Tp&, _Compare); -2441: -2441: -2441: -2441: -2441: template -2441: constexpr -2441: const _Tp& -2441: min(const _Tp&, const _Tp&); -2441: -2441: template -2441: constexpr -2441: const _Tp& -2441: min(const _Tp&, const _Tp&, _Compare); -2441: -2441: -2441: -2441: -2441: template -2441: constexpr -2441: pair -2441: minmax(const _Tp&, const _Tp&); -2441: -2441: template -2441: constexpr -2441: pair -2441: minmax(const _Tp&, const _Tp&, _Compare); -2441: -2441: template -2441: constexpr -2441: pair<_FIter, _FIter> -2441: minmax_element(_FIter, _FIter); -2441: -2441: template -2441: constexpr -2441: pair<_FIter, _FIter> -2441: minmax_element(_FIter, _FIter, _Compare); -2441: -2441: template -2441: constexpr -2441: _Tp -2441: min(initializer_list<_Tp>); -2441: -2441: template -2441: constexpr -2441: _Tp -2441: min(initializer_list<_Tp>, _Compare); -2441: -2441: template -2441: constexpr -2441: _Tp -2441: max(initializer_list<_Tp>); -2441: -2441: template -2441: constexpr -2441: _Tp -2441: max(initializer_list<_Tp>, _Compare); -2441: -2441: template -2441: constexpr -2441: pair<_Tp, _Tp> -2441: minmax(initializer_list<_Tp>); -2441: -2441: template -2441: constexpr -2441: pair<_Tp, _Tp> -2441: minmax(initializer_list<_Tp>, _Compare); -2441: -2441: -2441: -2441: -2441: template -2441: bool -2441: next_permutation(_BIter, _BIter); -2441: -2441: template -2441: bool -2441: next_permutation(_BIter, _BIter, _Compare); -2441: -2441: -2441: template -2441: bool -2441: none_of(_IIter, _IIter, _Predicate); -2441: -2441: -2441: -2441: -2441: -2441: template -2441: _RAIter -2441: partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter); -2441: -2441: template -2441: _RAIter -2441: partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter, _Compare); -2441: -2441: -2441: -2441: -2441: template -2441: pair<_OIter1, _OIter2> -2441: partition_copy(_IIter, _IIter, _OIter1, _OIter2, _Predicate); -2441: -2441: template -2441: _FIter -2441: partition_point(_FIter, _FIter, _Predicate); -2441: -2441: -2441: template -2441: void -2441: pop_heap(_RAIter, _RAIter); -2441: -2441: template -2441: void -2441: pop_heap(_RAIter, _RAIter, _Compare); -2441: -2441: template -2441: bool -2441: prev_permutation(_BIter, _BIter); -2441: -2441: template -2441: bool -2441: prev_permutation(_BIter, _BIter, _Compare); -2441: -2441: template -2441: void -2441: push_heap(_RAIter, _RAIter); -2441: -2441: template -2441: void -2441: push_heap(_RAIter, _RAIter, _Compare); -2441: -2441: -2441: -2441: template -2441: _FIter -2441: remove(_FIter, _FIter, const _Tp&); -2441: -2441: template -2441: _FIter -2441: remove_if(_FIter, _FIter, _Predicate); -2441: -2441: template -2441: _OIter -2441: remove_copy(_IIter, _IIter, _OIter, const _Tp&); -2441: -2441: template -2441: _OIter -2441: remove_copy_if(_IIter, _IIter, _OIter, _Predicate); -2441: -2441: -2441: -2441: template -2441: _OIter -2441: replace_copy(_IIter, _IIter, _OIter, const _Tp&, const _Tp&); -2441: -2441: template -2441: _OIter -2441: replace_copy_if(_Iter, _Iter, _OIter, _Predicate, const _Tp&); -2441: -2441: -2441: -2441: template -2441: void -2441: reverse(_BIter, _BIter); -2441: -2441: template -2441: _OIter -2441: reverse_copy(_BIter, _BIter, _OIter); -2441: -2441: inline namespace _V2 -2441: { -2441: template -2441: _FIter -2441: rotate(_FIter, _FIter, _FIter); -2441: } -2441: -2441: template -2441: _OIter -2441: rotate_copy(_FIter, _FIter, _FIter, _OIter); -2441: # 565 "/usr/include/c++/8/bits/algorithmfwd.h" 3 -2441: template -2441: void -2441: shuffle(_RAIter, _RAIter, _UGenerator&&); -2441: -2441: -2441: template -2441: void -2441: sort_heap(_RAIter, _RAIter); -2441: -2441: template -2441: void -2441: sort_heap(_RAIter, _RAIter, _Compare); -2441: -2441: template -2441: _BIter -2441: stable_partition(_BIter, _BIter, _Predicate); -2441: # 594 "/usr/include/c++/8/bits/algorithmfwd.h" 3 -2441: template -2441: _FIter2 -2441: swap_ranges(_FIter1, _FIter1, _FIter2); -2441: -2441: -2441: -2441: template -2441: _FIter -2441: unique(_FIter, _FIter); -2441: -2441: template -2441: _FIter -2441: unique(_FIter, _FIter, _BinaryPredicate); -2441: -2441: -2441: -2441: template -2441: _FIter -2441: upper_bound(_FIter, _FIter, const _Tp&); -2441: -2441: template -2441: _FIter -2441: upper_bound(_FIter, _FIter, const _Tp&, _Compare); -2441: -2441: -2441: -2441: template -2441: _FIter -2441: adjacent_find(_FIter, _FIter); -2441: -2441: template -2441: _FIter -2441: adjacent_find(_FIter, _FIter, _BinaryPredicate); -2441: -2441: template -2441: typename iterator_traits<_IIter>::difference_type -2441: count(_IIter, _IIter, const _Tp&); -2441: -2441: template -2441: typename iterator_traits<_IIter>::difference_type -2441: count_if(_IIter, _IIter, _Predicate); -2441: -2441: template -2441: bool -2441: equal(_IIter1, _IIter1, _IIter2); -2441: -2441: template -2441: bool -2441: equal(_IIter1, _IIter1, _IIter2, _BinaryPredicate); -2441: -2441: template -2441: _IIter -2441: find(_IIter, _IIter, const _Tp&); -2441: -2441: template -2441: _FIter1 -2441: find_first_of(_FIter1, _FIter1, _FIter2, _FIter2); -2441: -2441: template -2441: _FIter1 -2441: find_first_of(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); -2441: -2441: template -2441: _IIter -2441: find_if(_IIter, _IIter, _Predicate); -2441: -2441: template -2441: _Funct -2441: for_each(_IIter, _IIter, _Funct); -2441: -2441: template -2441: void -2441: generate(_FIter, _FIter, _Generator); -2441: -2441: template -2441: _OIter -2441: generate_n(_OIter, _Size, _Generator); -2441: -2441: template -2441: bool -2441: lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2); -2441: -2441: template -2441: bool -2441: lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Compare); -2441: -2441: template -2441: constexpr -2441: _FIter -2441: max_element(_FIter, _FIter); -2441: -2441: template -2441: constexpr -2441: _FIter -2441: max_element(_FIter, _FIter, _Compare); -2441: -2441: template -2441: _OIter -2441: merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); -2441: -2441: template -2441: _OIter -2441: merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); -2441: -2441: template -2441: constexpr -2441: _FIter -2441: min_element(_FIter, _FIter); -2441: -2441: template -2441: constexpr -2441: _FIter -2441: min_element(_FIter, _FIter, _Compare); -2441: -2441: template -2441: pair<_IIter1, _IIter2> -2441: mismatch(_IIter1, _IIter1, _IIter2); -2441: -2441: template -2441: pair<_IIter1, _IIter2> -2441: mismatch(_IIter1, _IIter1, _IIter2, _BinaryPredicate); -2441: -2441: template -2441: void -2441: nth_element(_RAIter, _RAIter, _RAIter); -2441: -2441: template -2441: void -2441: nth_element(_RAIter, _RAIter, _RAIter, _Compare); -2441: -2441: template -2441: void -2441: partial_sort(_RAIter, _RAIter, _RAIter); -2441: -2441: template -2441: void -2441: partial_sort(_RAIter, _RAIter, _RAIter, _Compare); -2441: -2441: template -2441: _BIter -2441: partition(_BIter, _BIter, _Predicate); -2441: -2441: template -2441: void -2441: random_shuffle(_RAIter, _RAIter); -2441: -2441: template -2441: void -2441: random_shuffle(_RAIter, _RAIter, -2441: -2441: _Generator&&); -2441: -2441: -2441: -2441: -2441: template -2441: void -2441: replace(_FIter, _FIter, const _Tp&, const _Tp&); -2441: -2441: template -2441: void -2441: replace_if(_FIter, _FIter, _Predicate, const _Tp&); -2441: -2441: template -2441: _FIter1 -2441: search(_FIter1, _FIter1, _FIter2, _FIter2); -2441: -2441: template -2441: _FIter1 -2441: search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); -2441: -2441: template -2441: _FIter -2441: search_n(_FIter, _FIter, _Size, const _Tp&); -2441: -2441: template -2441: _FIter -2441: search_n(_FIter, _FIter, _Size, const _Tp&, _BinaryPredicate); -2441: -2441: template -2441: _OIter -2441: set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); -2441: -2441: template -2441: _OIter -2441: set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); -2441: -2441: template -2441: _OIter -2441: set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); -2441: -2441: template -2441: _OIter -2441: set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); -2441: -2441: template -2441: _OIter -2441: set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); -2441: -2441: template -2441: _OIter -2441: set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, -2441: _OIter, _Compare); -2441: -2441: template -2441: _OIter -2441: set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); -2441: -2441: template -2441: _OIter -2441: set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); -2441: -2441: template -2441: void -2441: sort(_RAIter, _RAIter); -2441: -2441: template -2441: void -2441: sort(_RAIter, _RAIter, _Compare); -2441: -2441: template -2441: void -2441: stable_sort(_RAIter, _RAIter); -2441: -2441: template -2441: void -2441: stable_sort(_RAIter, _RAIter, _Compare); -2441: -2441: template -2441: _OIter -2441: transform(_IIter, _IIter, _OIter, _UnaryOperation); -2441: -2441: template -2441: _OIter -2441: transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation); -2441: -2441: template -2441: _OIter -2441: unique_copy(_IIter, _IIter, _OIter); -2441: -2441: template -2441: _OIter -2441: unique_copy(_IIter, _IIter, _OIter, _BinaryPredicate); -2441: -2441: -2441: -2441: } -2441: # 61 "/usr/include/c++/8/bits/stl_algo.h" 2 3 -2441: # 1 "/usr/include/c++/8/bits/stl_heap.h" 1 3 -2441: # 62 "/usr/include/c++/8/bits/stl_heap.h" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: _Distance -2441: __is_heap_until(_RandomAccessIterator __first, _Distance __n, -2441: _Compare& __comp) -2441: { -2441: _Distance __parent = 0; -2441: for (_Distance __child = 1; __child < __n; ++__child) -2441: { -2441: if (__comp(__first + __parent, __first + __child)) -2441: return __child; -2441: if ((__child & 1) == 0) -2441: ++__parent; -2441: } -2441: return __n; -2441: } -2441: -2441: -2441: -2441: template -2441: inline bool -2441: __is_heap(_RandomAccessIterator __first, _Distance __n) -2441: { -2441: __gnu_cxx::__ops::_Iter_less_iter __comp; -2441: return std::__is_heap_until(__first, __n, __comp) == __n; -2441: } -2441: -2441: template -2441: inline bool -2441: __is_heap(_RandomAccessIterator __first, _Compare __comp, _Distance __n) -2441: { -2441: typedef __decltype(__comp) _Cmp; -2441: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); -2441: return std::__is_heap_until(__first, __n, __cmp) == __n; -2441: } -2441: -2441: template -2441: inline bool -2441: __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) -2441: { return std::__is_heap(__first, std::distance(__first, __last)); } -2441: -2441: template -2441: inline bool -2441: __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, -2441: _Compare __comp) -2441: { -2441: return std::__is_heap(__first, std::move(__comp), -2441: std::distance(__first, __last)); -2441: } -2441: -2441: -2441: -2441: -2441: template -2441: void -2441: __push_heap(_RandomAccessIterator __first, -2441: _Distance __holeIndex, _Distance __topIndex, _Tp __value, -2441: _Compare& __comp) -2441: { -2441: _Distance __parent = (__holeIndex - 1) / 2; -2441: while (__holeIndex > __topIndex && __comp(__first + __parent, __value)) -2441: { -2441: *(__first + __holeIndex) = std::move(*(__first + __parent)); -2441: __holeIndex = __parent; -2441: __parent = (__holeIndex - 1) / 2; -2441: } -2441: *(__first + __holeIndex) = std::move(__value); -2441: } -2441: # 152 "/usr/include/c++/8/bits/stl_heap.h" 3 -2441: template -2441: inline void -2441: push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) -2441: { -2441: typedef typename iterator_traits<_RandomAccessIterator>::value_type -2441: _ValueType; -2441: typedef typename iterator_traits<_RandomAccessIterator>::difference_type -2441: _DistanceType; -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: ; -2441: -2441: __gnu_cxx::__ops::_Iter_less_val __comp; -2441: _ValueType __value = std::move(*(__last - 1)); -2441: std::__push_heap(__first, _DistanceType((__last - __first) - 1), -2441: _DistanceType(0), std::move(__value), __comp); -2441: } -2441: # 187 "/usr/include/c++/8/bits/stl_heap.h" 3 -2441: template -2441: inline void -2441: push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, -2441: _Compare __comp) -2441: { -2441: typedef typename iterator_traits<_RandomAccessIterator>::value_type -2441: _ValueType; -2441: typedef typename iterator_traits<_RandomAccessIterator>::difference_type -2441: _DistanceType; -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: ; -2441: -2441: __decltype(__gnu_cxx::__ops::__iter_comp_val(std::move(__comp))) -2441: __cmp(std::move(__comp)); -2441: _ValueType __value = std::move(*(__last - 1)); -2441: std::__push_heap(__first, _DistanceType((__last - __first) - 1), -2441: _DistanceType(0), std::move(__value), __cmp); -2441: } -2441: -2441: template -2441: void -2441: __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, -2441: _Distance __len, _Tp __value, _Compare __comp) -2441: { -2441: const _Distance __topIndex = __holeIndex; -2441: _Distance __secondChild = __holeIndex; -2441: while (__secondChild < (__len - 1) / 2) -2441: { -2441: __secondChild = 2 * (__secondChild + 1); -2441: if (__comp(__first + __secondChild, -2441: __first + (__secondChild - 1))) -2441: __secondChild--; -2441: *(__first + __holeIndex) = std::move(*(__first + __secondChild)); -2441: __holeIndex = __secondChild; -2441: } -2441: if ((__len & 1) == 0 && __secondChild == (__len - 2) / 2) -2441: { -2441: __secondChild = 2 * (__secondChild + 1); -2441: *(__first + __holeIndex) = std::move(*(__first + (__secondChild - 1))) -2441: ; -2441: __holeIndex = __secondChild - 1; -2441: } -2441: __decltype(__gnu_cxx::__ops::__iter_comp_val(std::move(__comp))) -2441: __cmp(std::move(__comp)); -2441: std::__push_heap(__first, __holeIndex, __topIndex, -2441: std::move(__value), __cmp); -2441: } -2441: -2441: template -2441: inline void -2441: __pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, -2441: _RandomAccessIterator __result, _Compare& __comp) -2441: { -2441: typedef typename iterator_traits<_RandomAccessIterator>::value_type -2441: _ValueType; -2441: typedef typename iterator_traits<_RandomAccessIterator>::difference_type -2441: _DistanceType; -2441: -2441: _ValueType __value = std::move(*__result); -2441: *__result = std::move(*__first); -2441: std::__adjust_heap(__first, _DistanceType(0), -2441: _DistanceType(__last - __first), -2441: std::move(__value), __comp); -2441: } -2441: # 269 "/usr/include/c++/8/bits/stl_heap.h" 3 -2441: template -2441: inline void -2441: pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: ; -2441: ; -2441: -2441: if (__last - __first > 1) -2441: { -2441: --__last; -2441: __gnu_cxx::__ops::_Iter_less_iter __comp; -2441: std::__pop_heap(__first, __last, __last, __comp); -2441: } -2441: } -2441: # 302 "/usr/include/c++/8/bits/stl_heap.h" 3 -2441: template -2441: inline void -2441: pop_heap(_RandomAccessIterator __first, -2441: _RandomAccessIterator __last, _Compare __comp) -2441: { -2441: -2441: -2441: -2441: ; -2441: ; -2441: ; -2441: ; -2441: -2441: if (__last - __first > 1) -2441: { -2441: typedef __decltype(__comp) _Cmp; -2441: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); -2441: --__last; -2441: std::__pop_heap(__first, __last, __last, __cmp); -2441: } -2441: } -2441: -2441: template -2441: void -2441: __make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, -2441: _Compare& __comp) -2441: { -2441: typedef typename iterator_traits<_RandomAccessIterator>::value_type -2441: _ValueType; -2441: typedef typename iterator_traits<_RandomAccessIterator>::difference_type -2441: _DistanceType; -2441: -2441: if (__last - __first < 2) -2441: return; -2441: -2441: const _DistanceType __len = __last - __first; -2441: _DistanceType __parent = (__len - 2) / 2; -2441: while (true) -2441: { -2441: _ValueType __value = std::move(*(__first + __parent)); -2441: std::__adjust_heap(__first, __parent, __len, std::move(__value), -2441: __comp); -2441: if (__parent == 0) -2441: return; -2441: __parent--; -2441: } -2441: } -2441: # 358 "/usr/include/c++/8/bits/stl_heap.h" 3 -2441: template -2441: inline void -2441: make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: __gnu_cxx::__ops::_Iter_less_iter __comp; -2441: std::__make_heap(__first, __last, __comp); -2441: } -2441: # 384 "/usr/include/c++/8/bits/stl_heap.h" 3 -2441: template -2441: inline void -2441: make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, -2441: _Compare __comp) -2441: { -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: typedef __decltype(__comp) _Cmp; -2441: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); -2441: std::__make_heap(__first, __last, __cmp); -2441: } -2441: -2441: template -2441: void -2441: __sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, -2441: _Compare& __comp) -2441: { -2441: while (__last - __first > 1) -2441: { -2441: --__last; -2441: std::__pop_heap(__first, __last, __last, __comp); -2441: } -2441: } -2441: # 420 "/usr/include/c++/8/bits/stl_heap.h" 3 -2441: template -2441: inline void -2441: sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: ; -2441: -2441: __gnu_cxx::__ops::_Iter_less_iter __comp; -2441: std::__sort_heap(__first, __last, __comp); -2441: } -2441: # 447 "/usr/include/c++/8/bits/stl_heap.h" 3 -2441: template -2441: inline void -2441: sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, -2441: _Compare __comp) -2441: { -2441: -2441: -2441: -2441: ; -2441: ; -2441: ; -2441: -2441: typedef __decltype(__comp) _Cmp; -2441: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); -2441: std::__sort_heap(__first, __last, __cmp); -2441: } -2441: # 475 "/usr/include/c++/8/bits/stl_heap.h" 3 -2441: template -2441: inline _RandomAccessIterator -2441: is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: __gnu_cxx::__ops::_Iter_less_iter __comp; -2441: return __first + -2441: std::__is_heap_until(__first, std::distance(__first, __last), __comp); -2441: } -2441: # 503 "/usr/include/c++/8/bits/stl_heap.h" 3 -2441: template -2441: inline _RandomAccessIterator -2441: is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last, -2441: _Compare __comp) -2441: { -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: typedef __decltype(__comp) _Cmp; -2441: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); -2441: return __first -2441: + std::__is_heap_until(__first, std::distance(__first, __last), __cmp); -2441: } -2441: # 527 "/usr/include/c++/8/bits/stl_heap.h" 3 -2441: template -2441: inline bool -2441: is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) -2441: { return std::is_heap_until(__first, __last) == __last; } -2441: # 540 "/usr/include/c++/8/bits/stl_heap.h" 3 -2441: template -2441: inline bool -2441: is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, -2441: _Compare __comp) -2441: { -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: const auto __dist = std::distance(__first, __last); -2441: typedef __decltype(__comp) _Cmp; -2441: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); -2441: return std::__is_heap_until(__first, __dist, __cmp) == __dist; -2441: } -2441: -2441: -2441: -2441: } -2441: # 62 "/usr/include/c++/8/bits/stl_algo.h" 2 3 -2441: # 1 "/usr/include/c++/8/bits/stl_tempbuf.h" 1 3 -2441: # 60 "/usr/include/c++/8/bits/stl_tempbuf.h" 3 -2441: # 1 "/usr/include/c++/8/bits/stl_construct.h" 1 3 -2441: # 59 "/usr/include/c++/8/bits/stl_construct.h" 3 -2441: # 1 "/usr/include/c++/8/new" 1 3 -2441: # 37 "/usr/include/c++/8/new" 3 -2441: -2441: # 38 "/usr/include/c++/8/new" 3 -2441: -2441: -2441: # 1 "/usr/include/c++/8/exception" 1 3 -2441: # 33 "/usr/include/c++/8/exception" 3 -2441: -2441: # 34 "/usr/include/c++/8/exception" 3 -2441: -2441: #pragma GCC visibility push(default) -2441: -2441: -2441: # 1 "/usr/include/c++/8/bits/exception.h" 1 3 -2441: # 34 "/usr/include/c++/8/bits/exception.h" 3 -2441: -2441: # 35 "/usr/include/c++/8/bits/exception.h" 3 -2441: -2441: #pragma GCC visibility push(default) -2441: -2441: -2441: -2441: extern "C++" { -2441: -2441: namespace std -2441: { -2441: # 60 "/usr/include/c++/8/bits/exception.h" 3 -2441: class exception -2441: { -2441: public: -2441: exception() noexcept { } -2441: virtual ~exception() noexcept; -2441: -2441: -2441: -2441: virtual const char* -2441: what() const noexcept; -2441: }; -2441: -2441: } -2441: -2441: } -2441: -2441: #pragma GCC visibility pop -2441: # 39 "/usr/include/c++/8/exception" 2 3 -2441: -2441: extern "C++" { -2441: -2441: namespace std -2441: { -2441: -2441: -2441: class bad_exception : public exception -2441: { -2441: public: -2441: bad_exception() noexcept { } -2441: -2441: -2441: -2441: virtual ~bad_exception() noexcept; -2441: -2441: -2441: virtual const char* -2441: what() const noexcept; -2441: }; -2441: -2441: -2441: typedef void (*terminate_handler) (); -2441: -2441: -2441: typedef void (*unexpected_handler) (); -2441: -2441: -2441: terminate_handler set_terminate(terminate_handler) noexcept; -2441: -2441: -2441: -2441: terminate_handler get_terminate() noexcept; -2441: -2441: -2441: -2441: -2441: void terminate() noexcept __attribute__ ((__noreturn__)); -2441: -2441: -2441: unexpected_handler set_unexpected(unexpected_handler) noexcept; -2441: -2441: -2441: -2441: unexpected_handler get_unexpected() noexcept; -2441: -2441: -2441: -2441: -2441: void unexpected() __attribute__ ((__noreturn__)); -2441: # 101 "/usr/include/c++/8/exception" 3 -2441: -2441: bool uncaught_exception() noexcept __attribute__ ((__pure__)); -2441: -2441: -2441: -2441: -2441: int uncaught_exceptions() noexcept __attribute__ ((__pure__)); -2441: -2441: -2441: -2441: } -2441: -2441: namespace __gnu_cxx -2441: { -2441: -2441: # 133 "/usr/include/c++/8/exception" 3 -2441: void __verbose_terminate_handler(); -2441: -2441: -2441: } -2441: -2441: } -2441: -2441: #pragma GCC visibility pop -2441: -2441: -2441: # 1 "/usr/include/c++/8/bits/exception_ptr.h" 1 3 -2441: # 34 "/usr/include/c++/8/bits/exception_ptr.h" 3 -2441: #pragma GCC visibility push(default) -2441: -2441: -2441: -2441: # 1 "/usr/include/c++/8/bits/cxxabi_init_exception.h" 1 3 -2441: # 34 "/usr/include/c++/8/bits/cxxabi_init_exception.h" 3 -2441: -2441: # 35 "/usr/include/c++/8/bits/cxxabi_init_exception.h" 3 -2441: -2441: #pragma GCC visibility push(default) -2441: -2441: # 1 "/usr/lib/gcc/i686-linux-gnu/8/include/stddef.h" 1 3 4 -2441: # 149 "/usr/lib/gcc/i686-linux-gnu/8/include/stddef.h" 3 4 -2441: typedef int ptrdiff_t; -2441: # 426 "/usr/lib/gcc/i686-linux-gnu/8/include/stddef.h" 3 4 -2441: typedef struct { -2441: long long __max_align_ll __attribute__((__aligned__(__alignof__(long long)))); -2441: long double __max_align_ld __attribute__((__aligned__(__alignof__(long double)))); -2441: -2441: -2441: -2441: -2441: -2441: -2441: __float128 __max_align_f128 __attribute__((__aligned__(__alignof(__float128)))); -2441: -2441: } max_align_t; -2441: -2441: -2441: -2441: -2441: -2441: -2441: typedef decltype(nullptr) nullptr_t; -2441: # 39 "/usr/include/c++/8/bits/cxxabi_init_exception.h" 2 3 -2441: # 50 "/usr/include/c++/8/bits/cxxabi_init_exception.h" 3 -2441: namespace std -2441: { -2441: class type_info; -2441: } -2441: -2441: namespace __cxxabiv1 -2441: { -2441: struct __cxa_refcounted_exception; -2441: -2441: extern "C" -2441: { -2441: -2441: void* -2441: __cxa_allocate_exception(size_t) noexcept; -2441: -2441: void -2441: __cxa_free_exception(void*) noexcept; -2441: -2441: -2441: __cxa_refcounted_exception* -2441: __cxa_init_primary_exception(void *object, std::type_info *tinfo, -2441: void ( *dest) (void *)) noexcept; -2441: -2441: } -2441: } -2441: -2441: -2441: -2441: #pragma GCC visibility pop -2441: # 39 "/usr/include/c++/8/bits/exception_ptr.h" 2 3 -2441: # 1 "/usr/include/c++/8/typeinfo" 1 3 -2441: # 32 "/usr/include/c++/8/typeinfo" 3 -2441: -2441: # 33 "/usr/include/c++/8/typeinfo" 3 -2441: -2441: -2441: -2441: # 1 "/usr/include/c++/8/bits/hash_bytes.h" 1 3 -2441: # 33 "/usr/include/c++/8/bits/hash_bytes.h" 3 -2441: -2441: # 34 "/usr/include/c++/8/bits/hash_bytes.h" 3 -2441: -2441: -2441: -2441: namespace std -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: size_t -2441: _Hash_bytes(const void* __ptr, size_t __len, size_t __seed); -2441: -2441: -2441: -2441: -2441: -2441: size_t -2441: _Fnv_hash_bytes(const void* __ptr, size_t __len, size_t __seed); -2441: -2441: -2441: } -2441: # 37 "/usr/include/c++/8/typeinfo" 2 3 -2441: -2441: -2441: #pragma GCC visibility push(default) -2441: -2441: extern "C++" { -2441: -2441: namespace __cxxabiv1 -2441: { -2441: class __class_type_info; -2441: } -2441: # 80 "/usr/include/c++/8/typeinfo" 3 -2441: namespace std -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: class type_info -2441: { -2441: public: -2441: -2441: -2441: -2441: -2441: virtual ~type_info(); -2441: -2441: -2441: -2441: const char* name() const noexcept -2441: { return __name[0] == '*' ? __name + 1 : __name; } -2441: # 115 "/usr/include/c++/8/typeinfo" 3 -2441: bool before(const type_info& __arg) const noexcept -2441: { return (__name[0] == '*' && __arg.__name[0] == '*') -2441: ? __name < __arg.__name -2441: : __builtin_strcmp (__name, __arg.__name) < 0; } -2441: -2441: bool operator==(const type_info& __arg) const noexcept -2441: { -2441: return ((__name == __arg.__name) -2441: || (__name[0] != '*' && -2441: __builtin_strcmp (__name, __arg.__name) == 0)); -2441: } -2441: # 136 "/usr/include/c++/8/typeinfo" 3 -2441: bool operator!=(const type_info& __arg) const noexcept -2441: { return !operator==(__arg); } -2441: -2441: -2441: size_t hash_code() const noexcept -2441: { -2441: -2441: return _Hash_bytes(name(), __builtin_strlen(name()), -2441: static_cast(0xc70f6907UL)); -2441: -2441: -2441: -2441: } -2441: -2441: -2441: -2441: virtual bool __is_pointer_p() const; -2441: -2441: -2441: virtual bool __is_function_p() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual bool __do_catch(const type_info *__thr_type, void **__thr_obj, -2441: unsigned __outer) const; -2441: -2441: -2441: virtual bool __do_upcast(const __cxxabiv1::__class_type_info *__target, -2441: void **__obj_ptr) const; -2441: -2441: protected: -2441: const char *__name; -2441: -2441: explicit type_info(const char *__n): __name(__n) { } -2441: -2441: private: -2441: -2441: type_info& operator=(const type_info&); -2441: type_info(const type_info&); -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: class bad_cast : public exception -2441: { -2441: public: -2441: bad_cast() noexcept { } -2441: -2441: -2441: -2441: virtual ~bad_cast() noexcept; -2441: -2441: -2441: virtual const char* what() const noexcept; -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: class bad_typeid : public exception -2441: { -2441: public: -2441: bad_typeid () noexcept { } -2441: -2441: -2441: -2441: virtual ~bad_typeid() noexcept; -2441: -2441: -2441: virtual const char* what() const noexcept; -2441: }; -2441: } -2441: -2441: } -2441: -2441: #pragma GCC visibility pop -2441: # 40 "/usr/include/c++/8/bits/exception_ptr.h" 2 3 -2441: # 1 "/usr/include/c++/8/new" 1 3 -2441: # 41 "/usr/include/c++/8/bits/exception_ptr.h" 2 3 -2441: -2441: extern "C++" { -2441: -2441: namespace std -2441: { -2441: class type_info; -2441: -2441: -2441: -2441: -2441: -2441: namespace __exception_ptr -2441: { -2441: class exception_ptr; -2441: } -2441: -2441: using __exception_ptr::exception_ptr; -2441: -2441: -2441: -2441: -2441: -2441: exception_ptr current_exception() noexcept; -2441: -2441: template -2441: exception_ptr make_exception_ptr(_Ex) noexcept; -2441: -2441: -2441: void rethrow_exception(exception_ptr) __attribute__ ((__noreturn__)); -2441: -2441: namespace __exception_ptr -2441: { -2441: using std::rethrow_exception; -2441: -2441: -2441: -2441: -2441: -2441: class exception_ptr -2441: { -2441: void* _M_exception_object; -2441: -2441: explicit exception_ptr(void* __e) noexcept; -2441: -2441: void _M_addref() noexcept; -2441: void _M_release() noexcept; -2441: -2441: void *_M_get() const noexcept __attribute__ ((__pure__)); -2441: -2441: friend exception_ptr std::current_exception() noexcept; -2441: friend void std::rethrow_exception(exception_ptr); -2441: template -2441: friend exception_ptr std::make_exception_ptr(_Ex) noexcept; -2441: -2441: public: -2441: exception_ptr() noexcept; -2441: -2441: exception_ptr(const exception_ptr&) noexcept; -2441: -2441: -2441: exception_ptr(nullptr_t) noexcept -2441: : _M_exception_object(0) -2441: { } -2441: -2441: exception_ptr(exception_ptr&& __o) noexcept -2441: : _M_exception_object(__o._M_exception_object) -2441: { __o._M_exception_object = 0; } -2441: # 117 "/usr/include/c++/8/bits/exception_ptr.h" 3 -2441: exception_ptr& -2441: operator=(const exception_ptr&) noexcept; -2441: -2441: -2441: exception_ptr& -2441: operator=(exception_ptr&& __o) noexcept -2441: { -2441: exception_ptr(static_cast(__o)).swap(*this); -2441: return *this; -2441: } -2441: -2441: -2441: ~exception_ptr() noexcept; -2441: -2441: void -2441: swap(exception_ptr&) noexcept; -2441: # 144 "/usr/include/c++/8/bits/exception_ptr.h" 3 -2441: explicit operator bool() const -2441: { return _M_exception_object; } -2441: -2441: -2441: friend bool -2441: operator==(const exception_ptr&, const exception_ptr&) -2441: noexcept __attribute__ ((__pure__)); -2441: -2441: const class std::type_info* -2441: __cxa_exception_type() const noexcept -2441: __attribute__ ((__pure__)); -2441: }; -2441: -2441: bool -2441: operator==(const exception_ptr&, const exception_ptr&) -2441: noexcept __attribute__ ((__pure__)); -2441: -2441: bool -2441: operator!=(const exception_ptr&, const exception_ptr&) -2441: noexcept __attribute__ ((__pure__)); -2441: -2441: inline void -2441: swap(exception_ptr& __lhs, exception_ptr& __rhs) -2441: { __lhs.swap(__rhs); } -2441: -2441: template -2441: inline void -2441: __dest_thunk(void* __x) -2441: { static_cast<_Ex*>(__x)->~_Ex(); } -2441: -2441: } -2441: -2441: -2441: template -2441: exception_ptr -2441: make_exception_ptr(_Ex __ex) noexcept -2441: { -2441: -2441: void* __e = __cxxabiv1::__cxa_allocate_exception(sizeof(_Ex)); -2441: (void) __cxxabiv1::__cxa_init_primary_exception( -2441: __e, const_cast(&typeid(__ex)), -2441: __exception_ptr::__dest_thunk<_Ex>); -2441: try -2441: { -2441: ::new (__e) _Ex(__ex); -2441: return exception_ptr(__e); -2441: } -2441: catch(...) -2441: { -2441: __cxxabiv1::__cxa_free_exception(__e); -2441: return current_exception(); -2441: } -2441: # 208 "/usr/include/c++/8/bits/exception_ptr.h" 3 -2441: } -2441: -2441: -2441: } -2441: -2441: } -2441: -2441: #pragma GCC visibility pop -2441: # 144 "/usr/include/c++/8/exception" 2 3 -2441: # 1 "/usr/include/c++/8/bits/nested_exception.h" 1 3 -2441: # 33 "/usr/include/c++/8/bits/nested_exception.h" 3 -2441: #pragma GCC visibility push(default) -2441: # 42 "/usr/include/c++/8/bits/nested_exception.h" 3 -2441: extern "C++" { -2441: -2441: namespace std -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: class nested_exception -2441: { -2441: exception_ptr _M_ptr; -2441: -2441: public: -2441: nested_exception() noexcept : _M_ptr(current_exception()) { } -2441: -2441: nested_exception(const nested_exception&) noexcept = default; -2441: -2441: nested_exception& operator=(const nested_exception&) noexcept = default; -2441: -2441: virtual ~nested_exception() noexcept; -2441: -2441: [[noreturn]] -2441: void -2441: rethrow_nested() const -2441: { -2441: if (_M_ptr) -2441: rethrow_exception(_M_ptr); -2441: std::terminate(); -2441: } -2441: -2441: exception_ptr -2441: nested_ptr() const noexcept -2441: { return _M_ptr; } -2441: }; -2441: -2441: template -2441: struct _Nested_exception : public _Except, public nested_exception -2441: { -2441: explicit _Nested_exception(const _Except& __ex) -2441: : _Except(__ex) -2441: { } -2441: -2441: explicit _Nested_exception(_Except&& __ex) -2441: : _Except(static_cast<_Except&&>(__ex)) -2441: { } -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: [[noreturn]] -2441: inline void -2441: __throw_with_nested_impl(_Tp&& __t, true_type) -2441: { -2441: using _Up = typename remove_reference<_Tp>::type; -2441: throw _Nested_exception<_Up>{std::forward<_Tp>(__t)}; -2441: } -2441: -2441: template -2441: [[noreturn]] -2441: inline void -2441: __throw_with_nested_impl(_Tp&& __t, false_type) -2441: { throw std::forward<_Tp>(__t); } -2441: -2441: -2441: -2441: template -2441: [[noreturn]] -2441: inline void -2441: throw_with_nested(_Tp&& __t) -2441: { -2441: using _Up = typename decay<_Tp>::type; -2441: using _CopyConstructible -2441: = __and_, is_move_constructible<_Up>>; -2441: static_assert(_CopyConstructible::value, -2441: "throw_with_nested argument must be CopyConstructible"); -2441: using __nest = __and_, __bool_constant, -2441: __not_>>; -2441: std::__throw_with_nested_impl(std::forward<_Tp>(__t), __nest{}); -2441: } -2441: -2441: -2441: template -2441: using __rethrow_if_nested_cond = typename enable_if< -2441: __and_, -2441: __or_<__not_>, -2441: is_convertible<_Tp*, nested_exception*>>>::value -2441: >::type; -2441: -2441: -2441: template -2441: inline __rethrow_if_nested_cond<_Ex> -2441: __rethrow_if_nested_impl(const _Ex* __ptr) -2441: { -2441: if (auto __ne_ptr = dynamic_cast(__ptr)) -2441: __ne_ptr->rethrow_nested(); -2441: } -2441: -2441: -2441: inline void -2441: __rethrow_if_nested_impl(const void*) -2441: { } -2441: -2441: -2441: template -2441: inline void -2441: rethrow_if_nested(const _Ex& __ex) -2441: { std::__rethrow_if_nested_impl(std::__addressof(__ex)); } -2441: -2441: -2441: } -2441: -2441: } -2441: -2441: -2441: -2441: #pragma GCC visibility pop -2441: # 145 "/usr/include/c++/8/exception" 2 3 -2441: # 41 "/usr/include/c++/8/new" 2 3 -2441: -2441: #pragma GCC visibility push(default) -2441: -2441: extern "C++" { -2441: -2441: namespace std -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: class bad_alloc : public exception -2441: { -2441: public: -2441: bad_alloc() throw() { } -2441: -2441: -2441: -2441: virtual ~bad_alloc() throw(); -2441: -2441: -2441: virtual const char* what() const throw(); -2441: }; -2441: -2441: -2441: class bad_array_new_length : public bad_alloc -2441: { -2441: public: -2441: bad_array_new_length() throw() { } -2441: -2441: -2441: -2441: virtual ~bad_array_new_length() throw(); -2441: -2441: -2441: virtual const char* what() const throw(); -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: struct nothrow_t -2441: { -2441: -2441: explicit nothrow_t() = default; -2441: -2441: }; -2441: -2441: extern const nothrow_t nothrow; -2441: -2441: -2441: -2441: typedef void (*new_handler)(); -2441: -2441: -2441: -2441: new_handler set_new_handler(new_handler) throw(); -2441: -2441: -2441: -2441: new_handler get_new_handler() noexcept; -2441: -2441: } -2441: # 120 "/usr/include/c++/8/new" 3 -2441: void* operator new(std::size_t) -2441: __attribute__((__externally_visible__)); -2441: void* operator new[](std::size_t) -2441: __attribute__((__externally_visible__)); -2441: void operator delete(void*) noexcept -2441: __attribute__((__externally_visible__)); -2441: void operator delete[](void*) noexcept -2441: __attribute__((__externally_visible__)); -2441: -2441: void operator delete(void*, std::size_t) noexcept -2441: __attribute__((__externally_visible__)); -2441: void operator delete[](void*, std::size_t) noexcept -2441: __attribute__((__externally_visible__)); -2441: -2441: void* operator new(std::size_t, const std::nothrow_t&) noexcept -2441: __attribute__((__externally_visible__)); -2441: void* operator new[](std::size_t, const std::nothrow_t&) noexcept -2441: __attribute__((__externally_visible__)); -2441: void operator delete(void*, const std::nothrow_t&) noexcept -2441: __attribute__((__externally_visible__)); -2441: void operator delete[](void*, const std::nothrow_t&) noexcept -2441: __attribute__((__externally_visible__)); -2441: # 168 "/usr/include/c++/8/new" 3 -2441: inline void* operator new(std::size_t, void* __p) noexcept -2441: { return __p; } -2441: inline void* operator new[](std::size_t, void* __p) noexcept -2441: { return __p; } -2441: -2441: -2441: inline void operator delete (void*, void*) noexcept { } -2441: inline void operator delete[](void*, void*) noexcept { } -2441: -2441: } -2441: # 216 "/usr/include/c++/8/new" 3 -2441: #pragma GCC visibility pop -2441: # 60 "/usr/include/c++/8/bits/stl_construct.h" 2 3 -2441: -2441: # 1 "/usr/include/c++/8/ext/alloc_traits.h" 1 3 -2441: # 32 "/usr/include/c++/8/ext/alloc_traits.h" 3 -2441: -2441: # 33 "/usr/include/c++/8/ext/alloc_traits.h" 3 -2441: -2441: -2441: -2441: # 1 "/usr/include/c++/8/bits/alloc_traits.h" 1 3 -2441: # 41 "/usr/include/c++/8/bits/alloc_traits.h" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: struct __allocator_traits_base -2441: { -2441: template -2441: struct __rebind : __replace_first_arg<_Tp, _Up> { }; -2441: -2441: template -2441: struct __rebind<_Tp, _Up, -2441: __void_t::other>> -2441: { using type = typename _Tp::template rebind<_Up>::other; }; -2441: -2441: protected: -2441: template -2441: using __pointer = typename _Tp::pointer; -2441: template -2441: using __c_pointer = typename _Tp::const_pointer; -2441: template -2441: using __v_pointer = typename _Tp::void_pointer; -2441: template -2441: using __cv_pointer = typename _Tp::const_void_pointer; -2441: template -2441: using __pocca = typename _Tp::propagate_on_container_copy_assignment; -2441: template -2441: using __pocma = typename _Tp::propagate_on_container_move_assignment; -2441: template -2441: using __pocs = typename _Tp::propagate_on_container_swap; -2441: template -2441: using __equal = typename _Tp::is_always_equal; -2441: }; -2441: -2441: template -2441: using __alloc_rebind -2441: = typename __allocator_traits_base::template __rebind<_Alloc, _Up>::type; -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct allocator_traits : __allocator_traits_base -2441: { -2441: -2441: typedef _Alloc allocator_type; -2441: -2441: typedef typename _Alloc::value_type value_type; -2441: -2441: -2441: -2441: -2441: -2441: -2441: using pointer = __detected_or_t; -2441: -2441: private: -2441: -2441: template class _Func, typename _Tp, typename = void> -2441: struct _Ptr -2441: { -2441: using type = typename pointer_traits::template rebind<_Tp>; -2441: }; -2441: -2441: template class _Func, typename _Tp> -2441: struct _Ptr<_Func, _Tp, __void_t<_Func<_Alloc>>> -2441: { -2441: using type = _Func<_Alloc>; -2441: }; -2441: -2441: -2441: template -2441: struct _Diff -2441: { using type = typename pointer_traits<_PtrT>::difference_type; }; -2441: -2441: template -2441: struct _Diff<_A2, _PtrT, __void_t> -2441: { using type = typename _A2::difference_type; }; -2441: -2441: -2441: template -2441: struct _Size : make_unsigned<_DiffT> { }; -2441: -2441: template -2441: struct _Size<_A2, _DiffT, __void_t> -2441: { using type = typename _A2::size_type; }; -2441: -2441: public: -2441: -2441: -2441: -2441: -2441: -2441: -2441: using const_pointer = typename _Ptr<__c_pointer, const value_type>::type; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: using void_pointer = typename _Ptr<__v_pointer, void>::type; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: using const_void_pointer = typename _Ptr<__cv_pointer, const void>::type; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: using difference_type = typename _Diff<_Alloc, pointer>::type; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: using size_type = typename _Size<_Alloc, difference_type>::type; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: using propagate_on_container_copy_assignment -2441: = __detected_or_t; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: using propagate_on_container_move_assignment -2441: = __detected_or_t; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: using propagate_on_container_swap -2441: = __detected_or_t; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: using is_always_equal -2441: = __detected_or_t::type, __equal, _Alloc>; -2441: -2441: template -2441: using rebind_alloc = __alloc_rebind<_Alloc, _Tp>; -2441: template -2441: using rebind_traits = allocator_traits>; -2441: -2441: private: -2441: template -2441: static auto -2441: _S_allocate(_Alloc2& __a, size_type __n, const_void_pointer __hint, int) -2441: -> decltype(__a.allocate(__n, __hint)) -2441: { return __a.allocate(__n, __hint); } -2441: -2441: template -2441: static pointer -2441: _S_allocate(_Alloc2& __a, size_type __n, const_void_pointer, ...) -2441: { return __a.allocate(__n); } -2441: -2441: template -2441: struct __construct_helper -2441: { -2441: template()->construct( -2441: std::declval<_Tp*>(), std::declval<_Args>()...))> -2441: static true_type __test(int); -2441: -2441: template -2441: static false_type __test(...); -2441: -2441: using type = decltype(__test<_Alloc>(0)); -2441: }; -2441: -2441: template -2441: using __has_construct -2441: = typename __construct_helper<_Tp, _Args...>::type; -2441: -2441: template -2441: static _Require<__has_construct<_Tp, _Args...>> -2441: _S_construct(_Alloc& __a, _Tp* __p, _Args&&... __args) -2441: { __a.construct(__p, std::forward<_Args>(__args)...); } -2441: -2441: template -2441: static -2441: _Require<__and_<__not_<__has_construct<_Tp, _Args...>>, -2441: is_constructible<_Tp, _Args...>>> -2441: _S_construct(_Alloc&, _Tp* __p, _Args&&... __args) -2441: { ::new((void*)__p) _Tp(std::forward<_Args>(__args)...); } -2441: -2441: template -2441: static auto -2441: _S_destroy(_Alloc2& __a, _Tp* __p, int) -2441: -> decltype(__a.destroy(__p)) -2441: { __a.destroy(__p); } -2441: -2441: template -2441: static void -2441: _S_destroy(_Alloc2&, _Tp* __p, ...) -2441: { __p->~_Tp(); } -2441: -2441: template -2441: static auto -2441: _S_max_size(_Alloc2& __a, int) -2441: -> decltype(__a.max_size()) -2441: { return __a.max_size(); } -2441: -2441: template -2441: static size_type -2441: _S_max_size(_Alloc2&, ...) -2441: { -2441: -2441: -2441: return __gnu_cxx::__numeric_traits::__max -2441: / sizeof(value_type); -2441: } -2441: -2441: template -2441: static auto -2441: _S_select(_Alloc2& __a, int) -2441: -> decltype(__a.select_on_container_copy_construction()) -2441: { return __a.select_on_container_copy_construction(); } -2441: -2441: template -2441: static _Alloc2 -2441: _S_select(_Alloc2& __a, ...) -2441: { return __a; } -2441: -2441: public: -2441: # 299 "/usr/include/c++/8/bits/alloc_traits.h" 3 -2441: static pointer -2441: allocate(_Alloc& __a, size_type __n) -2441: { return __a.allocate(__n); } -2441: # 314 "/usr/include/c++/8/bits/alloc_traits.h" 3 -2441: static pointer -2441: allocate(_Alloc& __a, size_type __n, const_void_pointer __hint) -2441: { return _S_allocate(__a, __n, __hint, 0); } -2441: # 326 "/usr/include/c++/8/bits/alloc_traits.h" 3 -2441: static void -2441: deallocate(_Alloc& __a, pointer __p, size_type __n) -2441: { __a.deallocate(__p, __n); } -2441: # 341 "/usr/include/c++/8/bits/alloc_traits.h" 3 -2441: template -2441: static auto construct(_Alloc& __a, _Tp* __p, _Args&&... __args) -2441: -> decltype(_S_construct(__a, __p, std::forward<_Args>(__args)...)) -2441: { _S_construct(__a, __p, std::forward<_Args>(__args)...); } -2441: # 354 "/usr/include/c++/8/bits/alloc_traits.h" 3 -2441: template -2441: static void destroy(_Alloc& __a, _Tp* __p) -2441: { _S_destroy(__a, __p, 0); } -2441: # 366 "/usr/include/c++/8/bits/alloc_traits.h" 3 -2441: static size_type max_size(const _Alloc& __a) noexcept -2441: { return _S_max_size(__a, 0); } -2441: # 377 "/usr/include/c++/8/bits/alloc_traits.h" 3 -2441: static _Alloc -2441: select_on_container_copy_construction(const _Alloc& __rhs) -2441: { return _S_select(__rhs, 0); } -2441: }; -2441: -2441: -2441: template -2441: struct allocator_traits> -2441: { -2441: -2441: using allocator_type = allocator<_Tp>; -2441: -2441: using value_type = _Tp; -2441: -2441: -2441: using pointer = _Tp*; -2441: -2441: -2441: using const_pointer = const _Tp*; -2441: -2441: -2441: using void_pointer = void*; -2441: -2441: -2441: using const_void_pointer = const void*; -2441: -2441: -2441: using difference_type = std::ptrdiff_t; -2441: -2441: -2441: using size_type = std::size_t; -2441: -2441: -2441: using propagate_on_container_copy_assignment = false_type; -2441: -2441: -2441: using propagate_on_container_move_assignment = true_type; -2441: -2441: -2441: using propagate_on_container_swap = false_type; -2441: -2441: -2441: using is_always_equal = true_type; -2441: -2441: template -2441: using rebind_alloc = allocator<_Up>; -2441: -2441: template -2441: using rebind_traits = allocator_traits>; -2441: # 434 "/usr/include/c++/8/bits/alloc_traits.h" 3 -2441: static pointer -2441: allocate(allocator_type& __a, size_type __n) -2441: { return __a.allocate(__n); } -2441: # 448 "/usr/include/c++/8/bits/alloc_traits.h" 3 -2441: static pointer -2441: allocate(allocator_type& __a, size_type __n, const_void_pointer __hint) -2441: { return __a.allocate(__n, __hint); } -2441: # 460 "/usr/include/c++/8/bits/alloc_traits.h" 3 -2441: static void -2441: deallocate(allocator_type& __a, pointer __p, size_type __n) -2441: { __a.deallocate(__p, __n); } -2441: # 472 "/usr/include/c++/8/bits/alloc_traits.h" 3 -2441: template -2441: static void -2441: construct(allocator_type& __a, _Up* __p, _Args&&... __args) -2441: { __a.construct(__p, std::forward<_Args>(__args)...); } -2441: # 484 "/usr/include/c++/8/bits/alloc_traits.h" 3 -2441: template -2441: static void -2441: destroy(allocator_type& __a, _Up* __p) -2441: { __a.destroy(__p); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: static size_type -2441: max_size(const allocator_type& __a) noexcept -2441: { return __a.max_size(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: static allocator_type -2441: select_on_container_copy_construction(const allocator_type& __rhs) -2441: { return __rhs; } -2441: }; -2441: -2441: -2441: template -2441: inline void -2441: __do_alloc_on_copy(_Alloc& __one, const _Alloc& __two, true_type) -2441: { __one = __two; } -2441: -2441: template -2441: inline void -2441: __do_alloc_on_copy(_Alloc&, const _Alloc&, false_type) -2441: { } -2441: -2441: template -2441: inline void __alloc_on_copy(_Alloc& __one, const _Alloc& __two) -2441: { -2441: typedef allocator_traits<_Alloc> __traits; -2441: typedef typename __traits::propagate_on_container_copy_assignment __pocca; -2441: __do_alloc_on_copy(__one, __two, __pocca()); -2441: } -2441: -2441: template -2441: inline _Alloc __alloc_on_copy(const _Alloc& __a) -2441: { -2441: typedef allocator_traits<_Alloc> __traits; -2441: return __traits::select_on_container_copy_construction(__a); -2441: } -2441: -2441: template -2441: inline void __do_alloc_on_move(_Alloc& __one, _Alloc& __two, true_type) -2441: { __one = std::move(__two); } -2441: -2441: template -2441: inline void __do_alloc_on_move(_Alloc&, _Alloc&, false_type) -2441: { } -2441: -2441: template -2441: inline void __alloc_on_move(_Alloc& __one, _Alloc& __two) -2441: { -2441: typedef allocator_traits<_Alloc> __traits; -2441: typedef typename __traits::propagate_on_container_move_assignment __pocma; -2441: __do_alloc_on_move(__one, __two, __pocma()); -2441: } -2441: -2441: template -2441: inline void __do_alloc_on_swap(_Alloc& __one, _Alloc& __two, true_type) -2441: { -2441: using std::swap; -2441: swap(__one, __two); -2441: } -2441: -2441: template -2441: inline void __do_alloc_on_swap(_Alloc&, _Alloc&, false_type) -2441: { } -2441: -2441: template -2441: inline void __alloc_on_swap(_Alloc& __one, _Alloc& __two) -2441: { -2441: typedef allocator_traits<_Alloc> __traits; -2441: typedef typename __traits::propagate_on_container_swap __pocs; -2441: __do_alloc_on_swap(__one, __two, __pocs()); -2441: } -2441: -2441: template -2441: class __is_copy_insertable_impl -2441: { -2441: typedef allocator_traits<_Alloc> _Traits; -2441: -2441: template(), -2441: std::declval<_Up*>(), -2441: std::declval()))> -2441: static true_type -2441: _M_select(int); -2441: -2441: template -2441: static false_type -2441: _M_select(...); -2441: -2441: public: -2441: typedef decltype(_M_select(0)) type; -2441: }; -2441: -2441: -2441: template -2441: struct __is_copy_insertable -2441: : __is_copy_insertable_impl<_Alloc>::type -2441: { }; -2441: -2441: -2441: template -2441: struct __is_copy_insertable> -2441: : is_copy_constructible<_Tp> -2441: { }; -2441: -2441: -2441: template -2441: struct __is_allocator : false_type { }; -2441: -2441: template -2441: struct __is_allocator<_Alloc, -2441: __void_t().allocate(size_t{}))>> -2441: : true_type { }; -2441: -2441: template -2441: using _RequireAllocator -2441: = typename enable_if<__is_allocator<_Alloc>::value, _Alloc>::type; -2441: -2441: -2441: } -2441: # 37 "/usr/include/c++/8/ext/alloc_traits.h" 2 3 -2441: -2441: -2441: -2441: -2441: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct __alloc_traits -2441: -2441: : std::allocator_traits<_Alloc> -2441: -2441: { -2441: typedef _Alloc allocator_type; -2441: -2441: typedef std::allocator_traits<_Alloc> _Base_type; -2441: typedef typename _Base_type::value_type value_type; -2441: typedef typename _Base_type::pointer pointer; -2441: typedef typename _Base_type::const_pointer const_pointer; -2441: typedef typename _Base_type::size_type size_type; -2441: typedef typename _Base_type::difference_type difference_type; -2441: -2441: typedef value_type& reference; -2441: typedef const value_type& const_reference; -2441: using _Base_type::allocate; -2441: using _Base_type::deallocate; -2441: using _Base_type::construct; -2441: using _Base_type::destroy; -2441: using _Base_type::max_size; -2441: -2441: private: -2441: template -2441: using __is_custom_pointer -2441: = std::__and_, -2441: std::__not_>>; -2441: -2441: public: -2441: -2441: template -2441: static typename std::enable_if<__is_custom_pointer<_Ptr>::value>::type -2441: construct(_Alloc& __a, _Ptr __p, _Args&&... __args) -2441: { -2441: _Base_type::construct(__a, std::__to_address(__p), -2441: std::forward<_Args>(__args)...); -2441: } -2441: -2441: -2441: template -2441: static typename std::enable_if<__is_custom_pointer<_Ptr>::value>::type -2441: destroy(_Alloc& __a, _Ptr __p) -2441: { _Base_type::destroy(__a, std::__to_address(__p)); } -2441: -2441: static _Alloc _S_select_on_copy(const _Alloc& __a) -2441: { return _Base_type::select_on_container_copy_construction(__a); } -2441: -2441: static void _S_on_swap(_Alloc& __a, _Alloc& __b) -2441: { std::__alloc_on_swap(__a, __b); } -2441: -2441: static constexpr bool _S_propagate_on_copy_assign() -2441: { return _Base_type::propagate_on_container_copy_assignment::value; } -2441: -2441: static constexpr bool _S_propagate_on_move_assign() -2441: { return _Base_type::propagate_on_container_move_assignment::value; } -2441: -2441: static constexpr bool _S_propagate_on_swap() -2441: { return _Base_type::propagate_on_container_swap::value; } -2441: -2441: static constexpr bool _S_always_equal() -2441: { return _Base_type::is_always_equal::value; } -2441: -2441: static constexpr bool _S_nothrow_move() -2441: { return _S_propagate_on_move_assign() || _S_always_equal(); } -2441: -2441: template -2441: struct rebind -2441: { typedef typename _Base_type::template rebind_alloc<_Tp> other; }; -2441: # 158 "/usr/include/c++/8/ext/alloc_traits.h" 3 -2441: }; -2441: -2441: -2441: } -2441: # 62 "/usr/include/c++/8/bits/stl_construct.h" 2 3 -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline void -2441: _Construct(_T1* __p, _Args&&... __args) -2441: { ::new(static_cast(__p)) _T1(std::forward<_Args>(__args)...); } -2441: # 87 "/usr/include/c++/8/bits/stl_construct.h" 3 -2441: template -2441: inline void -2441: _Construct_novalue(_T1* __p) -2441: { ::new(static_cast(__p)) _T1; } -2441: -2441: -2441: -2441: -2441: template -2441: inline void -2441: _Destroy(_Tp* __pointer) -2441: { __pointer->~_Tp(); } -2441: -2441: template -2441: struct _Destroy_aux -2441: { -2441: template -2441: static void -2441: __destroy(_ForwardIterator __first, _ForwardIterator __last) -2441: { -2441: for (; __first != __last; ++__first) -2441: std::_Destroy(std::__addressof(*__first)); -2441: } -2441: }; -2441: -2441: template<> -2441: struct _Destroy_aux -2441: { -2441: template -2441: static void -2441: __destroy(_ForwardIterator, _ForwardIterator) { } -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline void -2441: _Destroy(_ForwardIterator __first, _ForwardIterator __last) -2441: { -2441: typedef typename iterator_traits<_ForwardIterator>::value_type -2441: _Value_type; -2441: -2441: -2441: static_assert(is_destructible<_Value_type>::value, -2441: "value type is destructible"); -2441: -2441: std::_Destroy_aux<__has_trivial_destructor(_Value_type)>:: -2441: __destroy(__first, __last); -2441: } -2441: -2441: template -2441: struct _Destroy_n_aux -2441: { -2441: template -2441: static _ForwardIterator -2441: __destroy_n(_ForwardIterator __first, _Size __count) -2441: { -2441: for (; __count > 0; (void)++__first, --__count) -2441: std::_Destroy(std::__addressof(*__first)); -2441: return __first; -2441: } -2441: }; -2441: -2441: template<> -2441: struct _Destroy_n_aux -2441: { -2441: template -2441: static _ForwardIterator -2441: __destroy_n(_ForwardIterator __first, _Size __count) -2441: { -2441: std::advance(__first, __count); -2441: return __first; -2441: } -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline _ForwardIterator -2441: _Destroy_n(_ForwardIterator __first, _Size __count) -2441: { -2441: typedef typename iterator_traits<_ForwardIterator>::value_type -2441: _Value_type; -2441: -2441: -2441: static_assert(is_destructible<_Value_type>::value, -2441: "value type is destructible"); -2441: -2441: return std::_Destroy_n_aux<__has_trivial_destructor(_Value_type)>:: -2441: __destroy_n(__first, __count); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: void -2441: _Destroy(_ForwardIterator __first, _ForwardIterator __last, -2441: _Allocator& __alloc) -2441: { -2441: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; -2441: for (; __first != __last; ++__first) -2441: __traits::destroy(__alloc, std::__addressof(*__first)); -2441: } -2441: -2441: template -2441: inline void -2441: _Destroy(_ForwardIterator __first, _ForwardIterator __last, -2441: allocator<_Tp>&) -2441: { -2441: _Destroy(__first, __last); -2441: } -2441: # 232 "/usr/include/c++/8/bits/stl_construct.h" 3 -2441: -2441: } -2441: # 61 "/usr/include/c++/8/bits/stl_tempbuf.h" 2 3 -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: # 83 "/usr/include/c++/8/bits/stl_tempbuf.h" 3 -2441: template -2441: pair<_Tp*, ptrdiff_t> -2441: get_temporary_buffer(ptrdiff_t __len) noexcept -2441: { -2441: const ptrdiff_t __max = -2441: __gnu_cxx::__numeric_traits::__max / sizeof(_Tp); -2441: if (__len > __max) -2441: __len = __max; -2441: -2441: while (__len > 0) -2441: { -2441: _Tp* __tmp = static_cast<_Tp*>(::operator new(__len * sizeof(_Tp), -2441: std::nothrow)); -2441: if (__tmp != 0) -2441: return std::pair<_Tp*, ptrdiff_t>(__tmp, __len); -2441: __len /= 2; -2441: } -2441: return std::pair<_Tp*, ptrdiff_t>(static_cast<_Tp*>(0), 0); -2441: } -2441: # 110 "/usr/include/c++/8/bits/stl_tempbuf.h" 3 -2441: template -2441: inline void -2441: return_temporary_buffer(_Tp* __p) -2441: { ::operator delete(__p, std::nothrow); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: class _Temporary_buffer -2441: { -2441: -2441: -2441: -2441: public: -2441: typedef _Tp value_type; -2441: typedef value_type* pointer; -2441: typedef pointer iterator; -2441: typedef ptrdiff_t size_type; -2441: -2441: protected: -2441: size_type _M_original_len; -2441: size_type _M_len; -2441: pointer _M_buffer; -2441: -2441: public: -2441: -2441: size_type -2441: size() const -2441: { return _M_len; } -2441: -2441: -2441: size_type -2441: requested_size() const -2441: { return _M_original_len; } -2441: -2441: -2441: iterator -2441: begin() -2441: { return _M_buffer; } -2441: -2441: -2441: iterator -2441: end() -2441: { return _M_buffer + _M_len; } -2441: -2441: -2441: -2441: -2441: -2441: _Temporary_buffer(_ForwardIterator __first, _ForwardIterator __last); -2441: -2441: ~_Temporary_buffer() -2441: { -2441: std::_Destroy(_M_buffer, _M_buffer + _M_len); -2441: std::return_temporary_buffer(_M_buffer); -2441: } -2441: -2441: private: -2441: -2441: _Temporary_buffer(const _Temporary_buffer&); -2441: -2441: void -2441: operator=(const _Temporary_buffer&); -2441: }; -2441: -2441: -2441: template -2441: struct __uninitialized_construct_buf_dispatch -2441: { -2441: template -2441: static void -2441: __ucr(_Pointer __first, _Pointer __last, -2441: _ForwardIterator __seed) -2441: { -2441: if(__first == __last) -2441: return; -2441: -2441: _Pointer __cur = __first; -2441: try -2441: { -2441: std::_Construct(std::__addressof(*__first), -2441: std::move(*__seed)); -2441: _Pointer __prev = __cur; -2441: ++__cur; -2441: for(; __cur != __last; ++__cur, ++__prev) -2441: std::_Construct(std::__addressof(*__cur), -2441: std::move(*__prev)); -2441: *__seed = std::move(*__prev); -2441: } -2441: catch(...) -2441: { -2441: std::_Destroy(__first, __cur); -2441: throw; -2441: } -2441: } -2441: }; -2441: -2441: template<> -2441: struct __uninitialized_construct_buf_dispatch -2441: { -2441: template -2441: static void -2441: __ucr(_Pointer, _Pointer, _ForwardIterator) { } -2441: }; -2441: # 229 "/usr/include/c++/8/bits/stl_tempbuf.h" 3 -2441: template -2441: inline void -2441: __uninitialized_construct_buf(_Pointer __first, _Pointer __last, -2441: _ForwardIterator __seed) -2441: { -2441: typedef typename std::iterator_traits<_Pointer>::value_type -2441: _ValueType; -2441: -2441: std::__uninitialized_construct_buf_dispatch< -2441: __has_trivial_constructor(_ValueType)>:: -2441: __ucr(__first, __last, __seed); -2441: } -2441: -2441: template -2441: _Temporary_buffer<_ForwardIterator, _Tp>:: -2441: _Temporary_buffer(_ForwardIterator __first, _ForwardIterator __last) -2441: : _M_original_len(std::distance(__first, __last)), -2441: _M_len(0), _M_buffer(0) -2441: { -2441: try -2441: { -2441: std::pair __p(std::get_temporary_buffer< -2441: value_type>(_M_original_len)); -2441: _M_buffer = __p.first; -2441: _M_len = __p.second; -2441: if (_M_buffer) -2441: std::__uninitialized_construct_buf(_M_buffer, _M_buffer + _M_len, -2441: __first); -2441: } -2441: catch(...) -2441: { -2441: std::return_temporary_buffer(_M_buffer); -2441: _M_buffer = 0; -2441: _M_len = 0; -2441: throw; -2441: } -2441: } -2441: -2441: -2441: } -2441: # 63 "/usr/include/c++/8/bits/stl_algo.h" 2 3 -2441: -2441: -2441: -2441: # 1 "/usr/include/c++/8/bits/uniform_int_dist.h" 1 3 -2441: # 37 "/usr/include/c++/8/bits/uniform_int_dist.h" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: namespace __detail -2441: { -2441: -2441: template -2441: inline bool -2441: _Power_of_2(_Tp __x) -2441: { -2441: return ((__x - 1) & __x) == 0; -2441: } -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: class uniform_int_distribution -2441: { -2441: static_assert(std::is_integral<_IntType>::value, -2441: "template argument must be an integral type"); -2441: -2441: public: -2441: -2441: typedef _IntType result_type; -2441: -2441: struct param_type -2441: { -2441: typedef uniform_int_distribution<_IntType> distribution_type; -2441: -2441: explicit -2441: param_type(_IntType __a = 0, -2441: _IntType __b = std::numeric_limits<_IntType>::max()) -2441: : _M_a(__a), _M_b(__b) -2441: { -2441: ; -2441: } -2441: -2441: result_type -2441: a() const -2441: { return _M_a; } -2441: -2441: result_type -2441: b() const -2441: { return _M_b; } -2441: -2441: friend bool -2441: operator==(const param_type& __p1, const param_type& __p2) -2441: { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } -2441: -2441: friend bool -2441: operator!=(const param_type& __p1, const param_type& __p2) -2441: { return !(__p1 == __p2); } -2441: -2441: private: -2441: _IntType _M_a; -2441: _IntType _M_b; -2441: }; -2441: -2441: public: -2441: -2441: -2441: -2441: explicit -2441: uniform_int_distribution(_IntType __a = 0, -2441: _IntType __b = std::numeric_limits<_IntType>::max()) -2441: : _M_param(__a, __b) -2441: { } -2441: -2441: explicit -2441: uniform_int_distribution(const param_type& __p) -2441: : _M_param(__p) -2441: { } -2441: -2441: -2441: -2441: -2441: -2441: -2441: void -2441: reset() { } -2441: -2441: result_type -2441: a() const -2441: { return _M_param.a(); } -2441: -2441: result_type -2441: b() const -2441: { return _M_param.b(); } -2441: -2441: -2441: -2441: -2441: param_type -2441: param() const -2441: { return _M_param; } -2441: -2441: -2441: -2441: -2441: -2441: void -2441: param(const param_type& __param) -2441: { _M_param = __param; } -2441: -2441: -2441: -2441: -2441: result_type -2441: min() const -2441: { return this->a(); } -2441: -2441: -2441: -2441: -2441: result_type -2441: max() const -2441: { return this->b(); } -2441: -2441: -2441: -2441: -2441: template -2441: result_type -2441: operator()(_UniformRandomNumberGenerator& __urng) -2441: { return this->operator()(__urng, _M_param); } -2441: -2441: template -2441: result_type -2441: operator()(_UniformRandomNumberGenerator& __urng, -2441: const param_type& __p); -2441: -2441: template -2441: void -2441: __generate(_ForwardIterator __f, _ForwardIterator __t, -2441: _UniformRandomNumberGenerator& __urng) -2441: { this->__generate(__f, __t, __urng, _M_param); } -2441: -2441: template -2441: void -2441: __generate(_ForwardIterator __f, _ForwardIterator __t, -2441: _UniformRandomNumberGenerator& __urng, -2441: const param_type& __p) -2441: { this->__generate_impl(__f, __t, __urng, __p); } -2441: -2441: template -2441: void -2441: __generate(result_type* __f, result_type* __t, -2441: _UniformRandomNumberGenerator& __urng, -2441: const param_type& __p) -2441: { this->__generate_impl(__f, __t, __urng, __p); } -2441: -2441: -2441: -2441: -2441: -2441: friend bool -2441: operator==(const uniform_int_distribution& __d1, -2441: const uniform_int_distribution& __d2) -2441: { return __d1._M_param == __d2._M_param; } -2441: -2441: private: -2441: template -2441: void -2441: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, -2441: _UniformRandomNumberGenerator& __urng, -2441: const param_type& __p); -2441: -2441: param_type _M_param; -2441: }; -2441: -2441: template -2441: template -2441: typename uniform_int_distribution<_IntType>::result_type -2441: uniform_int_distribution<_IntType>:: -2441: operator()(_UniformRandomNumberGenerator& __urng, -2441: const param_type& __param) -2441: { -2441: typedef typename _UniformRandomNumberGenerator::result_type -2441: _Gresult_type; -2441: typedef typename std::make_unsigned::type __utype; -2441: typedef typename std::common_type<_Gresult_type, __utype>::type -2441: __uctype; -2441: -2441: const __uctype __urngmin = __urng.min(); -2441: const __uctype __urngmax = __urng.max(); -2441: const __uctype __urngrange = __urngmax - __urngmin; -2441: const __uctype __urange -2441: = __uctype(__param.b()) - __uctype(__param.a()); -2441: -2441: __uctype __ret; -2441: -2441: if (__urngrange > __urange) -2441: { -2441: -2441: const __uctype __uerange = __urange + 1; -2441: const __uctype __scaling = __urngrange / __uerange; -2441: const __uctype __past = __uerange * __scaling; -2441: do -2441: __ret = __uctype(__urng()) - __urngmin; -2441: while (__ret >= __past); -2441: __ret /= __scaling; -2441: } -2441: else if (__urngrange < __urange) -2441: { -2441: # 264 "/usr/include/c++/8/bits/uniform_int_dist.h" 3 -2441: __uctype __tmp; -2441: do -2441: { -2441: const __uctype __uerngrange = __urngrange + 1; -2441: __tmp = (__uerngrange * operator() -2441: (__urng, param_type(0, __urange / __uerngrange))); -2441: __ret = __tmp + (__uctype(__urng()) - __urngmin); -2441: } -2441: while (__ret > __urange || __ret < __tmp); -2441: } -2441: else -2441: __ret = __uctype(__urng()) - __urngmin; -2441: -2441: return __ret + __param.a(); -2441: } -2441: -2441: -2441: template -2441: template -2441: void -2441: uniform_int_distribution<_IntType>:: -2441: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, -2441: _UniformRandomNumberGenerator& __urng, -2441: const param_type& __param) -2441: { -2441: -2441: typedef typename _UniformRandomNumberGenerator::result_type -2441: _Gresult_type; -2441: typedef typename std::make_unsigned::type __utype; -2441: typedef typename std::common_type<_Gresult_type, __utype>::type -2441: __uctype; -2441: -2441: const __uctype __urngmin = __urng.min(); -2441: const __uctype __urngmax = __urng.max(); -2441: const __uctype __urngrange = __urngmax - __urngmin; -2441: const __uctype __urange -2441: = __uctype(__param.b()) - __uctype(__param.a()); -2441: -2441: __uctype __ret; -2441: -2441: if (__urngrange > __urange) -2441: { -2441: if (__detail::_Power_of_2(__urngrange + 1) -2441: && __detail::_Power_of_2(__urange + 1)) -2441: { -2441: while (__f != __t) -2441: { -2441: __ret = __uctype(__urng()) - __urngmin; -2441: *__f++ = (__ret & __urange) + __param.a(); -2441: } -2441: } -2441: else -2441: { -2441: -2441: const __uctype __uerange = __urange + 1; -2441: const __uctype __scaling = __urngrange / __uerange; -2441: const __uctype __past = __uerange * __scaling; -2441: while (__f != __t) -2441: { -2441: do -2441: __ret = __uctype(__urng()) - __urngmin; -2441: while (__ret >= __past); -2441: *__f++ = __ret / __scaling + __param.a(); -2441: } -2441: } -2441: } -2441: else if (__urngrange < __urange) -2441: { -2441: # 348 "/usr/include/c++/8/bits/uniform_int_dist.h" 3 -2441: __uctype __tmp; -2441: while (__f != __t) -2441: { -2441: do -2441: { -2441: const __uctype __uerngrange = __urngrange + 1; -2441: __tmp = (__uerngrange * operator() -2441: (__urng, param_type(0, __urange / __uerngrange))); -2441: __ret = __tmp + (__uctype(__urng()) - __urngmin); -2441: } -2441: while (__ret > __urange || __ret < __tmp); -2441: *__f++ = __ret; -2441: } -2441: } -2441: else -2441: while (__f != __t) -2441: *__f++ = __uctype(__urng()) - __urngmin + __param.a(); -2441: } -2441: -2441: -2441: -2441: -2441: } -2441: # 67 "/usr/include/c++/8/bits/stl_algo.h" 2 3 -2441: -2441: -2441: -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: template -2441: void -2441: __move_median_to_first(_Iterator __result,_Iterator __a, _Iterator __b, -2441: _Iterator __c, _Compare __comp) -2441: { -2441: if (__comp(__a, __b)) -2441: { -2441: if (__comp(__b, __c)) -2441: std::iter_swap(__result, __b); -2441: else if (__comp(__a, __c)) -2441: std::iter_swap(__result, __c); -2441: else -2441: std::iter_swap(__result, __a); -2441: } -2441: else if (__comp(__a, __c)) -2441: std::iter_swap(__result, __a); -2441: else if (__comp(__b, __c)) -2441: std::iter_swap(__result, __c); -2441: else -2441: std::iter_swap(__result, __b); -2441: } -2441: -2441: -2441: template -2441: inline _InputIterator -2441: __find_if(_InputIterator __first, _InputIterator __last, -2441: _Predicate __pred, input_iterator_tag) -2441: { -2441: while (__first != __last && !__pred(__first)) -2441: ++__first; -2441: return __first; -2441: } -2441: -2441: -2441: template -2441: _RandomAccessIterator -2441: __find_if(_RandomAccessIterator __first, _RandomAccessIterator __last, -2441: _Predicate __pred, random_access_iterator_tag) -2441: { -2441: typename iterator_traits<_RandomAccessIterator>::difference_type -2441: __trip_count = (__last - __first) >> 2; -2441: -2441: for (; __trip_count > 0; --__trip_count) -2441: { -2441: if (__pred(__first)) -2441: return __first; -2441: ++__first; -2441: -2441: if (__pred(__first)) -2441: return __first; -2441: ++__first; -2441: -2441: if (__pred(__first)) -2441: return __first; -2441: ++__first; -2441: -2441: if (__pred(__first)) -2441: return __first; -2441: ++__first; -2441: } -2441: -2441: switch (__last - __first) -2441: { -2441: case 3: -2441: if (__pred(__first)) -2441: return __first; -2441: ++__first; -2441: case 2: -2441: if (__pred(__first)) -2441: return __first; -2441: ++__first; -2441: case 1: -2441: if (__pred(__first)) -2441: return __first; -2441: ++__first; -2441: case 0: -2441: default: -2441: return __last; -2441: } -2441: } -2441: -2441: template -2441: inline _Iterator -2441: __find_if(_Iterator __first, _Iterator __last, _Predicate __pred) -2441: { -2441: return __find_if(__first, __last, __pred, -2441: std::__iterator_category(__first)); -2441: } -2441: -2441: -2441: template -2441: inline _InputIterator -2441: __find_if_not(_InputIterator __first, _InputIterator __last, -2441: _Predicate __pred) -2441: { -2441: return std::__find_if(__first, __last, -2441: __gnu_cxx::__ops::__negate(__pred), -2441: std::__iterator_category(__first)); -2441: } -2441: -2441: -2441: -2441: -2441: template -2441: _InputIterator -2441: __find_if_not_n(_InputIterator __first, _Distance& __len, _Predicate __pred) -2441: { -2441: for (; __len; --__len, (void) ++__first) -2441: if (!__pred(__first)) -2441: break; -2441: return __first; -2441: } -2441: # 202 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: _ForwardIterator1 -2441: __search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, -2441: _ForwardIterator2 __first2, _ForwardIterator2 __last2, -2441: _BinaryPredicate __predicate) -2441: { -2441: -2441: if (__first1 == __last1 || __first2 == __last2) -2441: return __first1; -2441: -2441: -2441: _ForwardIterator2 __p1(__first2); -2441: if (++__p1 == __last2) -2441: return std::__find_if(__first1, __last1, -2441: __gnu_cxx::__ops::__iter_comp_iter(__predicate, __first2)); -2441: -2441: -2441: _ForwardIterator2 __p; -2441: _ForwardIterator1 __current = __first1; -2441: -2441: for (;;) -2441: { -2441: __first1 = -2441: std::__find_if(__first1, __last1, -2441: __gnu_cxx::__ops::__iter_comp_iter(__predicate, __first2)); -2441: -2441: if (__first1 == __last1) -2441: return __last1; -2441: -2441: __p = __p1; -2441: __current = __first1; -2441: if (++__current == __last1) -2441: return __last1; -2441: -2441: while (__predicate(__current, __p)) -2441: { -2441: if (++__p == __last2) -2441: return __first1; -2441: if (++__current == __last1) -2441: return __last1; -2441: } -2441: ++__first1; -2441: } -2441: return __first1; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: _ForwardIterator -2441: __search_n_aux(_ForwardIterator __first, _ForwardIterator __last, -2441: _Integer __count, _UnaryPredicate __unary_pred, -2441: std::forward_iterator_tag) -2441: { -2441: __first = std::__find_if(__first, __last, __unary_pred); -2441: while (__first != __last) -2441: { -2441: typename iterator_traits<_ForwardIterator>::difference_type -2441: __n = __count; -2441: _ForwardIterator __i = __first; -2441: ++__i; -2441: while (__i != __last && __n != 1 && __unary_pred(__i)) -2441: { -2441: ++__i; -2441: --__n; -2441: } -2441: if (__n == 1) -2441: return __first; -2441: if (__i == __last) -2441: return __last; -2441: __first = std::__find_if(++__i, __last, __unary_pred); -2441: } -2441: return __last; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: template -2441: _RandomAccessIter -2441: __search_n_aux(_RandomAccessIter __first, _RandomAccessIter __last, -2441: _Integer __count, _UnaryPredicate __unary_pred, -2441: std::random_access_iterator_tag) -2441: { -2441: typedef typename std::iterator_traits<_RandomAccessIter>::difference_type -2441: _DistanceType; -2441: -2441: _DistanceType __tailSize = __last - __first; -2441: _DistanceType __remainder = __count; -2441: -2441: while (__remainder <= __tailSize) -2441: { -2441: __first += __remainder; -2441: __tailSize -= __remainder; -2441: -2441: -2441: _RandomAccessIter __backTrack = __first; -2441: while (__unary_pred(--__backTrack)) -2441: { -2441: if (--__remainder == 0) -2441: return (__first - __count); -2441: } -2441: __remainder = __count + 1 - (__first - __backTrack); -2441: } -2441: return __last; -2441: } -2441: -2441: template -2441: _ForwardIterator -2441: __search_n(_ForwardIterator __first, _ForwardIterator __last, -2441: _Integer __count, -2441: _UnaryPredicate __unary_pred) -2441: { -2441: if (__count <= 0) -2441: return __first; -2441: -2441: if (__count == 1) -2441: return std::__find_if(__first, __last, __unary_pred); -2441: -2441: return std::__search_n_aux(__first, __last, __count, __unary_pred, -2441: std::__iterator_category(__first)); -2441: } -2441: -2441: -2441: template -2441: _ForwardIterator1 -2441: __find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, -2441: _ForwardIterator2 __first2, _ForwardIterator2 __last2, -2441: forward_iterator_tag, forward_iterator_tag, -2441: _BinaryPredicate __comp) -2441: { -2441: if (__first2 == __last2) -2441: return __last1; -2441: -2441: _ForwardIterator1 __result = __last1; -2441: while (1) -2441: { -2441: _ForwardIterator1 __new_result -2441: = std::__search(__first1, __last1, __first2, __last2, __comp); -2441: if (__new_result == __last1) -2441: return __result; -2441: else -2441: { -2441: __result = __new_result; -2441: __first1 = __new_result; -2441: ++__first1; -2441: } -2441: } -2441: } -2441: -2441: -2441: template -2441: _BidirectionalIterator1 -2441: __find_end(_BidirectionalIterator1 __first1, -2441: _BidirectionalIterator1 __last1, -2441: _BidirectionalIterator2 __first2, -2441: _BidirectionalIterator2 __last2, -2441: bidirectional_iterator_tag, bidirectional_iterator_tag, -2441: _BinaryPredicate __comp) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: typedef reverse_iterator<_BidirectionalIterator1> _RevIterator1; -2441: typedef reverse_iterator<_BidirectionalIterator2> _RevIterator2; -2441: -2441: _RevIterator1 __rlast1(__first1); -2441: _RevIterator2 __rlast2(__first2); -2441: _RevIterator1 __rresult = std::__search(_RevIterator1(__last1), __rlast1, -2441: _RevIterator2(__last2), __rlast2, -2441: __comp); -2441: -2441: if (__rresult == __rlast1) -2441: return __last1; -2441: else -2441: { -2441: _BidirectionalIterator1 __result = __rresult.base(); -2441: std::advance(__result, -std::distance(__first2, __last2)); -2441: return __result; -2441: } -2441: } -2441: # 423 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _ForwardIterator1 -2441: find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, -2441: _ForwardIterator2 __first2, _ForwardIterator2 __last2) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: return std::__find_end(__first1, __last1, __first2, __last2, -2441: std::__iterator_category(__first1), -2441: std::__iterator_category(__first2), -2441: __gnu_cxx::__ops::__iter_equal_to_iter()); -2441: } -2441: # 471 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _ForwardIterator1 -2441: find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, -2441: _ForwardIterator2 __first2, _ForwardIterator2 __last2, -2441: _BinaryPredicate __comp) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: return std::__find_end(__first1, __last1, __first2, __last2, -2441: std::__iterator_category(__first1), -2441: std::__iterator_category(__first2), -2441: __gnu_cxx::__ops::__iter_comp_iter(__comp)); -2441: } -2441: # 506 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline bool -2441: all_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) -2441: { return __last == std::find_if_not(__first, __last, __pred); } -2441: # 523 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline bool -2441: none_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) -2441: { return __last == std::find_if(__first, __last, __pred); } -2441: # 541 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline bool -2441: any_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) -2441: { return !std::none_of(__first, __last, __pred); } -2441: # 556 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _InputIterator -2441: find_if_not(_InputIterator __first, _InputIterator __last, -2441: _Predicate __pred) -2441: { -2441: -2441: -2441: -2441: -2441: ; -2441: return std::__find_if_not(__first, __last, -2441: __gnu_cxx::__ops::__pred_iter(__pred)); -2441: } -2441: # 580 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline bool -2441: is_partitioned(_InputIterator __first, _InputIterator __last, -2441: _Predicate __pred) -2441: { -2441: __first = std::find_if_not(__first, __last, __pred); -2441: if (__first == __last) -2441: return true; -2441: ++__first; -2441: return std::none_of(__first, __last, __pred); -2441: } -2441: # 601 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: _ForwardIterator -2441: partition_point(_ForwardIterator __first, _ForwardIterator __last, -2441: _Predicate __pred) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: typedef typename iterator_traits<_ForwardIterator>::difference_type -2441: _DistanceType; -2441: -2441: _DistanceType __len = std::distance(__first, __last); -2441: _DistanceType __half; -2441: _ForwardIterator __middle; -2441: -2441: while (__len > 0) -2441: { -2441: __half = __len >> 1; -2441: __middle = __first; -2441: std::advance(__middle, __half); -2441: if (__pred(*__middle)) -2441: { -2441: __first = __middle; -2441: ++__first; -2441: __len = __len - __half - 1; -2441: } -2441: else -2441: __len = __half; -2441: } -2441: return __first; -2441: } -2441: -2441: -2441: template -2441: _OutputIterator -2441: __remove_copy_if(_InputIterator __first, _InputIterator __last, -2441: _OutputIterator __result, _Predicate __pred) -2441: { -2441: for (; __first != __last; ++__first) -2441: if (!__pred(__first)) -2441: { -2441: *__result = *__first; -2441: ++__result; -2441: } -2441: return __result; -2441: } -2441: # 668 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _OutputIterator -2441: remove_copy(_InputIterator __first, _InputIterator __last, -2441: _OutputIterator __result, const _Tp& __value) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: return std::__remove_copy_if(__first, __last, __result, -2441: __gnu_cxx::__ops::__iter_equals_val(__value)); -2441: } -2441: # 700 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _OutputIterator -2441: remove_copy_if(_InputIterator __first, _InputIterator __last, -2441: _OutputIterator __result, _Predicate __pred) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: return std::__remove_copy_if(__first, __last, __result, -2441: __gnu_cxx::__ops::__pred_iter(__pred)); -2441: } -2441: # 734 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: _OutputIterator -2441: copy_if(_InputIterator __first, _InputIterator __last, -2441: _OutputIterator __result, _Predicate __pred) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: for (; __first != __last; ++__first) -2441: if (__pred(*__first)) -2441: { -2441: *__result = *__first; -2441: ++__result; -2441: } -2441: return __result; -2441: } -2441: -2441: template -2441: _OutputIterator -2441: __copy_n(_InputIterator __first, _Size __n, -2441: _OutputIterator __result, input_iterator_tag) -2441: { -2441: if (__n > 0) -2441: { -2441: while (true) -2441: { -2441: *__result = *__first; -2441: ++__result; -2441: if (--__n > 0) -2441: ++__first; -2441: else -2441: break; -2441: } -2441: } -2441: return __result; -2441: } -2441: -2441: template -2441: inline _OutputIterator -2441: __copy_n(_RandomAccessIterator __first, _Size __n, -2441: _OutputIterator __result, random_access_iterator_tag) -2441: { return std::copy(__first, __first + __n, __result); } -2441: # 797 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _OutputIterator -2441: copy_n(_InputIterator __first, _Size __n, _OutputIterator __result) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: return std::__copy_n(__first, __n, __result, -2441: std::__iterator_category(__first)); -2441: } -2441: # 825 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: pair<_OutputIterator1, _OutputIterator2> -2441: partition_copy(_InputIterator __first, _InputIterator __last, -2441: _OutputIterator1 __out_true, _OutputIterator2 __out_false, -2441: _Predicate __pred) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: for (; __first != __last; ++__first) -2441: if (__pred(*__first)) -2441: { -2441: *__out_true = *__first; -2441: ++__out_true; -2441: } -2441: else -2441: { -2441: *__out_false = *__first; -2441: ++__out_false; -2441: } -2441: -2441: return pair<_OutputIterator1, _OutputIterator2>(__out_true, __out_false); -2441: } -2441: -2441: -2441: template -2441: _ForwardIterator -2441: __remove_if(_ForwardIterator __first, _ForwardIterator __last, -2441: _Predicate __pred) -2441: { -2441: __first = std::__find_if(__first, __last, __pred); -2441: if (__first == __last) -2441: return __first; -2441: _ForwardIterator __result = __first; -2441: ++__first; -2441: for (; __first != __last; ++__first) -2441: if (!__pred(__first)) -2441: { -2441: *__result = std::move(*__first); -2441: ++__result; -2441: } -2441: return __result; -2441: } -2441: # 894 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _ForwardIterator -2441: remove(_ForwardIterator __first, _ForwardIterator __last, -2441: const _Tp& __value) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: return std::__remove_if(__first, __last, -2441: __gnu_cxx::__ops::__iter_equals_val(__value)); -2441: } -2441: # 927 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _ForwardIterator -2441: remove_if(_ForwardIterator __first, _ForwardIterator __last, -2441: _Predicate __pred) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: return std::__remove_if(__first, __last, -2441: __gnu_cxx::__ops::__pred_iter(__pred)); -2441: } -2441: -2441: template -2441: _ForwardIterator -2441: __adjacent_find(_ForwardIterator __first, _ForwardIterator __last, -2441: _BinaryPredicate __binary_pred) -2441: { -2441: if (__first == __last) -2441: return __last; -2441: _ForwardIterator __next = __first; -2441: while (++__next != __last) -2441: { -2441: if (__binary_pred(__first, __next)) -2441: return __first; -2441: __first = __next; -2441: } -2441: return __last; -2441: } -2441: -2441: template -2441: _ForwardIterator -2441: __unique(_ForwardIterator __first, _ForwardIterator __last, -2441: _BinaryPredicate __binary_pred) -2441: { -2441: -2441: __first = std::__adjacent_find(__first, __last, __binary_pred); -2441: if (__first == __last) -2441: return __last; -2441: -2441: -2441: _ForwardIterator __dest = __first; -2441: ++__first; -2441: while (++__first != __last) -2441: if (!__binary_pred(__dest, __first)) -2441: *++__dest = std::move(*__first); -2441: return ++__dest; -2441: } -2441: # 993 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _ForwardIterator -2441: unique(_ForwardIterator __first, _ForwardIterator __last) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: return std::__unique(__first, __last, -2441: __gnu_cxx::__ops::__iter_equal_to_iter()); -2441: } -2441: # 1023 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _ForwardIterator -2441: unique(_ForwardIterator __first, _ForwardIterator __last, -2441: _BinaryPredicate __binary_pred) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: return std::__unique(__first, __last, -2441: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: _OutputIterator -2441: __unique_copy(_ForwardIterator __first, _ForwardIterator __last, -2441: _OutputIterator __result, _BinaryPredicate __binary_pred, -2441: forward_iterator_tag, output_iterator_tag) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: _ForwardIterator __next = __first; -2441: *__result = *__first; -2441: while (++__next != __last) -2441: if (!__binary_pred(__first, __next)) -2441: { -2441: __first = __next; -2441: *++__result = *__first; -2441: } -2441: return ++__result; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: _OutputIterator -2441: __unique_copy(_InputIterator __first, _InputIterator __last, -2441: _OutputIterator __result, _BinaryPredicate __binary_pred, -2441: input_iterator_tag, output_iterator_tag) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: typename iterator_traits<_InputIterator>::value_type __value = *__first; -2441: __decltype(__gnu_cxx::__ops::__iter_comp_val(__binary_pred)) -2441: __rebound_pred -2441: = __gnu_cxx::__ops::__iter_comp_val(__binary_pred); -2441: *__result = __value; -2441: while (++__first != __last) -2441: if (!__rebound_pred(__first, __value)) -2441: { -2441: __value = *__first; -2441: *++__result = __value; -2441: } -2441: return ++__result; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: _ForwardIterator -2441: __unique_copy(_InputIterator __first, _InputIterator __last, -2441: _ForwardIterator __result, _BinaryPredicate __binary_pred, -2441: input_iterator_tag, forward_iterator_tag) -2441: { -2441: -2441: -2441: -2441: -2441: *__result = *__first; -2441: while (++__first != __last) -2441: if (!__binary_pred(__result, __first)) -2441: *++__result = *__first; -2441: return ++__result; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: void -2441: __reverse(_BidirectionalIterator __first, _BidirectionalIterator __last, -2441: bidirectional_iterator_tag) -2441: { -2441: while (true) -2441: if (__first == __last || __first == --__last) -2441: return; -2441: else -2441: { -2441: std::iter_swap(__first, __last); -2441: ++__first; -2441: } -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: void -2441: __reverse(_RandomAccessIterator __first, _RandomAccessIterator __last, -2441: random_access_iterator_tag) -2441: { -2441: if (__first == __last) -2441: return; -2441: --__last; -2441: while (__first < __last) -2441: { -2441: std::iter_swap(__first, __last); -2441: ++__first; -2441: --__last; -2441: } -2441: } -2441: # 1178 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline void -2441: reverse(_BidirectionalIterator __first, _BidirectionalIterator __last) -2441: { -2441: -2441: -2441: -2441: ; -2441: std::__reverse(__first, __last, std::__iterator_category(__first)); -2441: } -2441: # 1205 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: _OutputIterator -2441: reverse_copy(_BidirectionalIterator __first, _BidirectionalIterator __last, -2441: _OutputIterator __result) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: while (__first != __last) -2441: { -2441: --__last; -2441: *__result = *__last; -2441: ++__result; -2441: } -2441: return __result; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: template -2441: _EuclideanRingElement -2441: __gcd(_EuclideanRingElement __m, _EuclideanRingElement __n) -2441: { -2441: while (__n != 0) -2441: { -2441: _EuclideanRingElement __t = __m % __n; -2441: __m = __n; -2441: __n = __t; -2441: } -2441: return __m; -2441: } -2441: -2441: inline namespace _V2 -2441: { -2441: -2441: -2441: template -2441: _ForwardIterator -2441: __rotate(_ForwardIterator __first, -2441: _ForwardIterator __middle, -2441: _ForwardIterator __last, -2441: forward_iterator_tag) -2441: { -2441: if (__first == __middle) -2441: return __last; -2441: else if (__last == __middle) -2441: return __first; -2441: -2441: _ForwardIterator __first2 = __middle; -2441: do -2441: { -2441: std::iter_swap(__first, __first2); -2441: ++__first; -2441: ++__first2; -2441: if (__first == __middle) -2441: __middle = __first2; -2441: } -2441: while (__first2 != __last); -2441: -2441: _ForwardIterator __ret = __first; -2441: -2441: __first2 = __middle; -2441: -2441: while (__first2 != __last) -2441: { -2441: std::iter_swap(__first, __first2); -2441: ++__first; -2441: ++__first2; -2441: if (__first == __middle) -2441: __middle = __first2; -2441: else if (__first2 == __last) -2441: __first2 = __middle; -2441: } -2441: return __ret; -2441: } -2441: -2441: -2441: template -2441: _BidirectionalIterator -2441: __rotate(_BidirectionalIterator __first, -2441: _BidirectionalIterator __middle, -2441: _BidirectionalIterator __last, -2441: bidirectional_iterator_tag) -2441: { -2441: -2441: -2441: -2441: -2441: if (__first == __middle) -2441: return __last; -2441: else if (__last == __middle) -2441: return __first; -2441: -2441: std::__reverse(__first, __middle, bidirectional_iterator_tag()); -2441: std::__reverse(__middle, __last, bidirectional_iterator_tag()); -2441: -2441: while (__first != __middle && __middle != __last) -2441: { -2441: std::iter_swap(__first, --__last); -2441: ++__first; -2441: } -2441: -2441: if (__first == __middle) -2441: { -2441: std::__reverse(__middle, __last, bidirectional_iterator_tag()); -2441: return __last; -2441: } -2441: else -2441: { -2441: std::__reverse(__first, __middle, bidirectional_iterator_tag()); -2441: return __first; -2441: } -2441: } -2441: -2441: -2441: template -2441: _RandomAccessIterator -2441: __rotate(_RandomAccessIterator __first, -2441: _RandomAccessIterator __middle, -2441: _RandomAccessIterator __last, -2441: random_access_iterator_tag) -2441: { -2441: -2441: -2441: -2441: -2441: if (__first == __middle) -2441: return __last; -2441: else if (__last == __middle) -2441: return __first; -2441: -2441: typedef typename iterator_traits<_RandomAccessIterator>::difference_type -2441: _Distance; -2441: typedef typename iterator_traits<_RandomAccessIterator>::value_type -2441: _ValueType; -2441: -2441: _Distance __n = __last - __first; -2441: _Distance __k = __middle - __first; -2441: -2441: if (__k == __n - __k) -2441: { -2441: std::swap_ranges(__first, __middle, __middle); -2441: return __middle; -2441: } -2441: -2441: _RandomAccessIterator __p = __first; -2441: _RandomAccessIterator __ret = __first + (__last - __middle); -2441: -2441: for (;;) -2441: { -2441: if (__k < __n - __k) -2441: { -2441: if (__is_pod(_ValueType) && __k == 1) -2441: { -2441: _ValueType __t = std::move(*__p); -2441: std::move(__p + 1, __p + __n, __p); -2441: *(__p + __n - 1) = std::move(__t); -2441: return __ret; -2441: } -2441: _RandomAccessIterator __q = __p + __k; -2441: for (_Distance __i = 0; __i < __n - __k; ++ __i) -2441: { -2441: std::iter_swap(__p, __q); -2441: ++__p; -2441: ++__q; -2441: } -2441: __n %= __k; -2441: if (__n == 0) -2441: return __ret; -2441: std::swap(__n, __k); -2441: __k = __n - __k; -2441: } -2441: else -2441: { -2441: __k = __n - __k; -2441: if (__is_pod(_ValueType) && __k == 1) -2441: { -2441: _ValueType __t = std::move(*(__p + __n - 1)); -2441: std::move_backward(__p, __p + __n - 1, __p + __n); -2441: *__p = std::move(__t); -2441: return __ret; -2441: } -2441: _RandomAccessIterator __q = __p + __n; -2441: __p = __q - __k; -2441: for (_Distance __i = 0; __i < __n - __k; ++ __i) -2441: { -2441: --__p; -2441: --__q; -2441: std::iter_swap(__p, __q); -2441: } -2441: __n %= __k; -2441: if (__n == 0) -2441: return __ret; -2441: std::swap(__n, __k); -2441: } -2441: } -2441: } -2441: # 1432 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _ForwardIterator -2441: rotate(_ForwardIterator __first, _ForwardIterator __middle, -2441: _ForwardIterator __last) -2441: { -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: return std::__rotate(__first, __middle, __last, -2441: std::__iterator_category(__first)); -2441: } -2441: -2441: } -2441: # 1469 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _OutputIterator -2441: rotate_copy(_ForwardIterator __first, _ForwardIterator __middle, -2441: _ForwardIterator __last, _OutputIterator __result) -2441: { -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: return std::copy(__first, __middle, -2441: std::copy(__middle, __last, __result)); -2441: } -2441: -2441: -2441: template -2441: _ForwardIterator -2441: __partition(_ForwardIterator __first, _ForwardIterator __last, -2441: _Predicate __pred, forward_iterator_tag) -2441: { -2441: if (__first == __last) -2441: return __first; -2441: -2441: while (__pred(*__first)) -2441: if (++__first == __last) -2441: return __first; -2441: -2441: _ForwardIterator __next = __first; -2441: -2441: while (++__next != __last) -2441: if (__pred(*__next)) -2441: { -2441: std::iter_swap(__first, __next); -2441: ++__first; -2441: } -2441: -2441: return __first; -2441: } -2441: -2441: -2441: template -2441: _BidirectionalIterator -2441: __partition(_BidirectionalIterator __first, _BidirectionalIterator __last, -2441: _Predicate __pred, bidirectional_iterator_tag) -2441: { -2441: while (true) -2441: { -2441: while (true) -2441: if (__first == __last) -2441: return __first; -2441: else if (__pred(*__first)) -2441: ++__first; -2441: else -2441: break; -2441: --__last; -2441: while (true) -2441: if (__first == __last) -2441: return __first; -2441: else if (!bool(__pred(*__last))) -2441: --__last; -2441: else -2441: break; -2441: std::iter_swap(__first, __last); -2441: ++__first; -2441: } -2441: } -2441: # 1546 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: _ForwardIterator -2441: __stable_partition_adaptive(_ForwardIterator __first, -2441: _ForwardIterator __last, -2441: _Predicate __pred, _Distance __len, -2441: _Pointer __buffer, -2441: _Distance __buffer_size) -2441: { -2441: if (__len == 1) -2441: return __first; -2441: -2441: if (__len <= __buffer_size) -2441: { -2441: _ForwardIterator __result1 = __first; -2441: _Pointer __result2 = __buffer; -2441: -2441: -2441: -2441: -2441: *__result2 = std::move(*__first); -2441: ++__result2; -2441: ++__first; -2441: for (; __first != __last; ++__first) -2441: if (__pred(__first)) -2441: { -2441: *__result1 = std::move(*__first); -2441: ++__result1; -2441: } -2441: else -2441: { -2441: *__result2 = std::move(*__first); -2441: ++__result2; -2441: } -2441: -2441: std::move(__buffer, __result2, __result1); -2441: return __result1; -2441: } -2441: -2441: _ForwardIterator __middle = __first; -2441: std::advance(__middle, __len / 2); -2441: _ForwardIterator __left_split = -2441: std::__stable_partition_adaptive(__first, __middle, __pred, -2441: __len / 2, __buffer, -2441: __buffer_size); -2441: -2441: -2441: -2441: _Distance __right_len = __len - __len / 2; -2441: _ForwardIterator __right_split = -2441: std::__find_if_not_n(__middle, __right_len, __pred); -2441: -2441: if (__right_len) -2441: __right_split = -2441: std::__stable_partition_adaptive(__right_split, __last, __pred, -2441: __right_len, -2441: __buffer, __buffer_size); -2441: -2441: std::rotate(__left_split, __middle, __right_split); -2441: std::advance(__left_split, std::distance(__middle, __right_split)); -2441: return __left_split; -2441: } -2441: -2441: template -2441: _ForwardIterator -2441: __stable_partition(_ForwardIterator __first, _ForwardIterator __last, -2441: _Predicate __pred) -2441: { -2441: __first = std::__find_if_not(__first, __last, __pred); -2441: -2441: if (__first == __last) -2441: return __first; -2441: -2441: typedef typename iterator_traits<_ForwardIterator>::value_type -2441: _ValueType; -2441: typedef typename iterator_traits<_ForwardIterator>::difference_type -2441: _DistanceType; -2441: -2441: _Temporary_buffer<_ForwardIterator, _ValueType> __buf(__first, __last); -2441: return -2441: std::__stable_partition_adaptive(__first, __last, __pred, -2441: _DistanceType(__buf.requested_size()), -2441: __buf.begin(), -2441: _DistanceType(__buf.size())); -2441: } -2441: # 1649 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _ForwardIterator -2441: stable_partition(_ForwardIterator __first, _ForwardIterator __last, -2441: _Predicate __pred) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: return std::__stable_partition(__first, __last, -2441: __gnu_cxx::__ops::__pred_iter(__pred)); -2441: } -2441: -2441: -2441: template -2441: void -2441: __heap_select(_RandomAccessIterator __first, -2441: _RandomAccessIterator __middle, -2441: _RandomAccessIterator __last, _Compare __comp) -2441: { -2441: std::__make_heap(__first, __middle, __comp); -2441: for (_RandomAccessIterator __i = __middle; __i < __last; ++__i) -2441: if (__comp(__i, __first)) -2441: std::__pop_heap(__first, __middle, __i, __comp); -2441: } -2441: -2441: -2441: -2441: template -2441: _RandomAccessIterator -2441: __partial_sort_copy(_InputIterator __first, _InputIterator __last, -2441: _RandomAccessIterator __result_first, -2441: _RandomAccessIterator __result_last, -2441: _Compare __comp) -2441: { -2441: typedef typename iterator_traits<_InputIterator>::value_type -2441: _InputValueType; -2441: typedef iterator_traits<_RandomAccessIterator> _RItTraits; -2441: typedef typename _RItTraits::difference_type _DistanceType; -2441: -2441: if (__result_first == __result_last) -2441: return __result_last; -2441: _RandomAccessIterator __result_real_last = __result_first; -2441: while (__first != __last && __result_real_last != __result_last) -2441: { -2441: *__result_real_last = *__first; -2441: ++__result_real_last; -2441: ++__first; -2441: } -2441: -2441: std::__make_heap(__result_first, __result_real_last, __comp); -2441: while (__first != __last) -2441: { -2441: if (__comp(__first, __result_first)) -2441: std::__adjust_heap(__result_first, _DistanceType(0), -2441: _DistanceType(__result_real_last -2441: - __result_first), -2441: _InputValueType(*__first), __comp); -2441: ++__first; -2441: } -2441: std::__sort_heap(__result_first, __result_real_last, __comp); -2441: return __result_real_last; -2441: } -2441: # 1735 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _RandomAccessIterator -2441: partial_sort_copy(_InputIterator __first, _InputIterator __last, -2441: _RandomAccessIterator __result_first, -2441: _RandomAccessIterator __result_last) -2441: { -2441: # 1749 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: ; -2441: -2441: return std::__partial_sort_copy(__first, __last, -2441: __result_first, __result_last, -2441: __gnu_cxx::__ops::__iter_less_iter()); -2441: } -2441: # 1784 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _RandomAccessIterator -2441: partial_sort_copy(_InputIterator __first, _InputIterator __last, -2441: _RandomAccessIterator __result_first, -2441: _RandomAccessIterator __result_last, -2441: _Compare __comp) -2441: { -2441: # 1800 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: ; -2441: -2441: return std::__partial_sort_copy(__first, __last, -2441: __result_first, __result_last, -2441: __gnu_cxx::__ops::__iter_comp_iter(__comp)); -2441: } -2441: -2441: -2441: template -2441: void -2441: __unguarded_linear_insert(_RandomAccessIterator __last, -2441: _Compare __comp) -2441: { -2441: typename iterator_traits<_RandomAccessIterator>::value_type -2441: __val = std::move(*__last); -2441: _RandomAccessIterator __next = __last; -2441: --__next; -2441: while (__comp(__val, __next)) -2441: { -2441: *__last = std::move(*__next); -2441: __last = __next; -2441: --__next; -2441: } -2441: *__last = std::move(__val); -2441: } -2441: -2441: -2441: template -2441: void -2441: __insertion_sort(_RandomAccessIterator __first, -2441: _RandomAccessIterator __last, _Compare __comp) -2441: { -2441: if (__first == __last) return; -2441: -2441: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) -2441: { -2441: if (__comp(__i, __first)) -2441: { -2441: typename iterator_traits<_RandomAccessIterator>::value_type -2441: __val = std::move(*__i); -2441: std::move_backward(__first, __i, __i + 1); -2441: *__first = std::move(__val); -2441: } -2441: else -2441: std::__unguarded_linear_insert(__i, -2441: __gnu_cxx::__ops::__val_comp_iter(__comp)); -2441: } -2441: } -2441: -2441: -2441: template -2441: inline void -2441: __unguarded_insertion_sort(_RandomAccessIterator __first, -2441: _RandomAccessIterator __last, _Compare __comp) -2441: { -2441: for (_RandomAccessIterator __i = __first; __i != __last; ++__i) -2441: std::__unguarded_linear_insert(__i, -2441: __gnu_cxx::__ops::__val_comp_iter(__comp)); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: enum { _S_threshold = 16 }; -2441: -2441: -2441: template -2441: void -2441: __final_insertion_sort(_RandomAccessIterator __first, -2441: _RandomAccessIterator __last, _Compare __comp) -2441: { -2441: if (__last - __first > int(_S_threshold)) -2441: { -2441: std::__insertion_sort(__first, __first + int(_S_threshold), __comp); -2441: std::__unguarded_insertion_sort(__first + int(_S_threshold), __last, -2441: __comp); -2441: } -2441: else -2441: std::__insertion_sort(__first, __last, __comp); -2441: } -2441: -2441: -2441: template -2441: _RandomAccessIterator -2441: __unguarded_partition(_RandomAccessIterator __first, -2441: _RandomAccessIterator __last, -2441: _RandomAccessIterator __pivot, _Compare __comp) -2441: { -2441: while (true) -2441: { -2441: while (__comp(__first, __pivot)) -2441: ++__first; -2441: --__last; -2441: while (__comp(__pivot, __last)) -2441: --__last; -2441: if (!(__first < __last)) -2441: return __first; -2441: std::iter_swap(__first, __last); -2441: ++__first; -2441: } -2441: } -2441: -2441: -2441: template -2441: inline _RandomAccessIterator -2441: __unguarded_partition_pivot(_RandomAccessIterator __first, -2441: _RandomAccessIterator __last, _Compare __comp) -2441: { -2441: _RandomAccessIterator __mid = __first + (__last - __first) / 2; -2441: std::__move_median_to_first(__first, __first + 1, __mid, __last - 1, -2441: __comp); -2441: return std::__unguarded_partition(__first + 1, __last, __first, __comp); -2441: } -2441: -2441: template -2441: inline void -2441: __partial_sort(_RandomAccessIterator __first, -2441: _RandomAccessIterator __middle, -2441: _RandomAccessIterator __last, -2441: _Compare __comp) -2441: { -2441: std::__heap_select(__first, __middle, __last, __comp); -2441: std::__sort_heap(__first, __middle, __comp); -2441: } -2441: -2441: -2441: template -2441: void -2441: __introsort_loop(_RandomAccessIterator __first, -2441: _RandomAccessIterator __last, -2441: _Size __depth_limit, _Compare __comp) -2441: { -2441: while (__last - __first > int(_S_threshold)) -2441: { -2441: if (__depth_limit == 0) -2441: { -2441: std::__partial_sort(__first, __last, __last, __comp); -2441: return; -2441: } -2441: --__depth_limit; -2441: _RandomAccessIterator __cut = -2441: std::__unguarded_partition_pivot(__first, __last, __comp); -2441: std::__introsort_loop(__cut, __last, __depth_limit, __comp); -2441: __last = __cut; -2441: } -2441: } -2441: -2441: -2441: -2441: template -2441: inline void -2441: __sort(_RandomAccessIterator __first, _RandomAccessIterator __last, -2441: _Compare __comp) -2441: { -2441: if (__first != __last) -2441: { -2441: std::__introsort_loop(__first, __last, -2441: std::__lg(__last - __first) * 2, -2441: __comp); -2441: std::__final_insertion_sort(__first, __last, __comp); -2441: } -2441: } -2441: -2441: template -2441: void -2441: __introselect(_RandomAccessIterator __first, _RandomAccessIterator __nth, -2441: _RandomAccessIterator __last, _Size __depth_limit, -2441: _Compare __comp) -2441: { -2441: while (__last - __first > 3) -2441: { -2441: if (__depth_limit == 0) -2441: { -2441: std::__heap_select(__first, __nth + 1, __last, __comp); -2441: -2441: std::iter_swap(__first, __nth); -2441: return; -2441: } -2441: --__depth_limit; -2441: _RandomAccessIterator __cut = -2441: std::__unguarded_partition_pivot(__first, __last, __comp); -2441: if (__cut <= __nth) -2441: __first = __cut; -2441: else -2441: __last = __cut; -2441: } -2441: std::__insertion_sort(__first, __last, __comp); -2441: } -2441: # 2021 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _ForwardIterator -2441: lower_bound(_ForwardIterator __first, _ForwardIterator __last, -2441: const _Tp& __val, _Compare __comp) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: return std::__lower_bound(__first, __last, __val, -2441: __gnu_cxx::__ops::__iter_comp_val(__comp)); -2441: } -2441: -2441: template -2441: _ForwardIterator -2441: __upper_bound(_ForwardIterator __first, _ForwardIterator __last, -2441: const _Tp& __val, _Compare __comp) -2441: { -2441: typedef typename iterator_traits<_ForwardIterator>::difference_type -2441: _DistanceType; -2441: -2441: _DistanceType __len = std::distance(__first, __last); -2441: -2441: while (__len > 0) -2441: { -2441: _DistanceType __half = __len >> 1; -2441: _ForwardIterator __middle = __first; -2441: std::advance(__middle, __half); -2441: if (__comp(__val, __middle)) -2441: __len = __half; -2441: else -2441: { -2441: __first = __middle; -2441: ++__first; -2441: __len = __len - __half - 1; -2441: } -2441: } -2441: return __first; -2441: } -2441: # 2075 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _ForwardIterator -2441: upper_bound(_ForwardIterator __first, _ForwardIterator __last, -2441: const _Tp& __val) -2441: { -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: return std::__upper_bound(__first, __last, __val, -2441: __gnu_cxx::__ops::__val_less_iter()); -2441: } -2441: # 2105 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _ForwardIterator -2441: upper_bound(_ForwardIterator __first, _ForwardIterator __last, -2441: const _Tp& __val, _Compare __comp) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: return std::__upper_bound(__first, __last, __val, -2441: __gnu_cxx::__ops::__val_comp_iter(__comp)); -2441: } -2441: -2441: template -2441: pair<_ForwardIterator, _ForwardIterator> -2441: __equal_range(_ForwardIterator __first, _ForwardIterator __last, -2441: const _Tp& __val, -2441: _CompareItTp __comp_it_val, _CompareTpIt __comp_val_it) -2441: { -2441: typedef typename iterator_traits<_ForwardIterator>::difference_type -2441: _DistanceType; -2441: -2441: _DistanceType __len = std::distance(__first, __last); -2441: -2441: while (__len > 0) -2441: { -2441: _DistanceType __half = __len >> 1; -2441: _ForwardIterator __middle = __first; -2441: std::advance(__middle, __half); -2441: if (__comp_it_val(__middle, __val)) -2441: { -2441: __first = __middle; -2441: ++__first; -2441: __len = __len - __half - 1; -2441: } -2441: else if (__comp_val_it(__val, __middle)) -2441: __len = __half; -2441: else -2441: { -2441: _ForwardIterator __left -2441: = std::__lower_bound(__first, __middle, __val, __comp_it_val); -2441: std::advance(__first, __len); -2441: _ForwardIterator __right -2441: = std::__upper_bound(++__middle, __first, __val, __comp_val_it); -2441: return pair<_ForwardIterator, _ForwardIterator>(__left, __right); -2441: } -2441: } -2441: return pair<_ForwardIterator, _ForwardIterator>(__first, __first); -2441: } -2441: # 2176 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline pair<_ForwardIterator, _ForwardIterator> -2441: equal_range(_ForwardIterator __first, _ForwardIterator __last, -2441: const _Tp& __val) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: return std::__equal_range(__first, __last, __val, -2441: __gnu_cxx::__ops::__iter_less_val(), -2441: __gnu_cxx::__ops::__val_less_iter()); -2441: } -2441: # 2212 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline pair<_ForwardIterator, _ForwardIterator> -2441: equal_range(_ForwardIterator __first, _ForwardIterator __last, -2441: const _Tp& __val, _Compare __comp) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: ; -2441: -2441: return std::__equal_range(__first, __last, __val, -2441: __gnu_cxx::__ops::__iter_comp_val(__comp), -2441: __gnu_cxx::__ops::__val_comp_iter(__comp)); -2441: } -2441: # 2245 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: bool -2441: binary_search(_ForwardIterator __first, _ForwardIterator __last, -2441: const _Tp& __val) -2441: { -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: _ForwardIterator __i -2441: = std::__lower_bound(__first, __last, __val, -2441: __gnu_cxx::__ops::__iter_less_val()); -2441: return __i != __last && !(__val < *__i); -2441: } -2441: # 2278 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: bool -2441: binary_search(_ForwardIterator __first, _ForwardIterator __last, -2441: const _Tp& __val, _Compare __comp) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: ; -2441: -2441: _ForwardIterator __i -2441: = std::__lower_bound(__first, __last, __val, -2441: __gnu_cxx::__ops::__iter_comp_val(__comp)); -2441: return __i != __last && !bool(__comp(__val, *__i)); -2441: } -2441: -2441: -2441: -2441: -2441: template -2441: void -2441: __move_merge_adaptive(_InputIterator1 __first1, _InputIterator1 __last1, -2441: _InputIterator2 __first2, _InputIterator2 __last2, -2441: _OutputIterator __result, _Compare __comp) -2441: { -2441: while (__first1 != __last1 && __first2 != __last2) -2441: { -2441: if (__comp(__first2, __first1)) -2441: { -2441: *__result = std::move(*__first2); -2441: ++__first2; -2441: } -2441: else -2441: { -2441: *__result = std::move(*__first1); -2441: ++__first1; -2441: } -2441: ++__result; -2441: } -2441: if (__first1 != __last1) -2441: std::move(__first1, __last1, __result); -2441: } -2441: -2441: -2441: template -2441: void -2441: __move_merge_adaptive_backward(_BidirectionalIterator1 __first1, -2441: _BidirectionalIterator1 __last1, -2441: _BidirectionalIterator2 __first2, -2441: _BidirectionalIterator2 __last2, -2441: _BidirectionalIterator3 __result, -2441: _Compare __comp) -2441: { -2441: if (__first1 == __last1) -2441: { -2441: std::move_backward(__first2, __last2, __result); -2441: return; -2441: } -2441: else if (__first2 == __last2) -2441: return; -2441: -2441: --__last1; -2441: --__last2; -2441: while (true) -2441: { -2441: if (__comp(__last2, __last1)) -2441: { -2441: *--__result = std::move(*__last1); -2441: if (__first1 == __last1) -2441: { -2441: std::move_backward(__first2, ++__last2, __result); -2441: return; -2441: } -2441: --__last1; -2441: } -2441: else -2441: { -2441: *--__result = std::move(*__last2); -2441: if (__first2 == __last2) -2441: return; -2441: --__last2; -2441: } -2441: } -2441: } -2441: -2441: -2441: template -2441: _BidirectionalIterator1 -2441: __rotate_adaptive(_BidirectionalIterator1 __first, -2441: _BidirectionalIterator1 __middle, -2441: _BidirectionalIterator1 __last, -2441: _Distance __len1, _Distance __len2, -2441: _BidirectionalIterator2 __buffer, -2441: _Distance __buffer_size) -2441: { -2441: _BidirectionalIterator2 __buffer_end; -2441: if (__len1 > __len2 && __len2 <= __buffer_size) -2441: { -2441: if (__len2) -2441: { -2441: __buffer_end = std::move(__middle, __last, __buffer); -2441: std::move_backward(__first, __middle, __last); -2441: return std::move(__buffer, __buffer_end, __first); -2441: } -2441: else -2441: return __first; -2441: } -2441: else if (__len1 <= __buffer_size) -2441: { -2441: if (__len1) -2441: { -2441: __buffer_end = std::move(__first, __middle, __buffer); -2441: std::move(__middle, __last, __first); -2441: return std::move_backward(__buffer, __buffer_end, __last); -2441: } -2441: else -2441: return __last; -2441: } -2441: else -2441: { -2441: std::rotate(__first, __middle, __last); -2441: std::advance(__first, std::distance(__middle, __last)); -2441: return __first; -2441: } -2441: } -2441: -2441: -2441: template -2441: void -2441: __merge_adaptive(_BidirectionalIterator __first, -2441: _BidirectionalIterator __middle, -2441: _BidirectionalIterator __last, -2441: _Distance __len1, _Distance __len2, -2441: _Pointer __buffer, _Distance __buffer_size, -2441: _Compare __comp) -2441: { -2441: if (__len1 <= __len2 && __len1 <= __buffer_size) -2441: { -2441: _Pointer __buffer_end = std::move(__first, __middle, __buffer); -2441: std::__move_merge_adaptive(__buffer, __buffer_end, __middle, __last, -2441: __first, __comp); -2441: } -2441: else if (__len2 <= __buffer_size) -2441: { -2441: _Pointer __buffer_end = std::move(__middle, __last, __buffer); -2441: std::__move_merge_adaptive_backward(__first, __middle, __buffer, -2441: __buffer_end, __last, __comp); -2441: } -2441: else -2441: { -2441: _BidirectionalIterator __first_cut = __first; -2441: _BidirectionalIterator __second_cut = __middle; -2441: _Distance __len11 = 0; -2441: _Distance __len22 = 0; -2441: if (__len1 > __len2) -2441: { -2441: __len11 = __len1 / 2; -2441: std::advance(__first_cut, __len11); -2441: __second_cut -2441: = std::__lower_bound(__middle, __last, *__first_cut, -2441: __gnu_cxx::__ops::__iter_comp_val(__comp)); -2441: __len22 = std::distance(__middle, __second_cut); -2441: } -2441: else -2441: { -2441: __len22 = __len2 / 2; -2441: std::advance(__second_cut, __len22); -2441: __first_cut -2441: = std::__upper_bound(__first, __middle, *__second_cut, -2441: __gnu_cxx::__ops::__val_comp_iter(__comp)); -2441: __len11 = std::distance(__first, __first_cut); -2441: } -2441: -2441: _BidirectionalIterator __new_middle -2441: = std::__rotate_adaptive(__first_cut, __middle, __second_cut, -2441: __len1 - __len11, __len22, __buffer, -2441: __buffer_size); -2441: std::__merge_adaptive(__first, __first_cut, __new_middle, __len11, -2441: __len22, __buffer, __buffer_size, __comp); -2441: std::__merge_adaptive(__new_middle, __second_cut, __last, -2441: __len1 - __len11, -2441: __len2 - __len22, __buffer, -2441: __buffer_size, __comp); -2441: } -2441: } -2441: -2441: -2441: template -2441: void -2441: __merge_without_buffer(_BidirectionalIterator __first, -2441: _BidirectionalIterator __middle, -2441: _BidirectionalIterator __last, -2441: _Distance __len1, _Distance __len2, -2441: _Compare __comp) -2441: { -2441: if (__len1 == 0 || __len2 == 0) -2441: return; -2441: -2441: if (__len1 + __len2 == 2) -2441: { -2441: if (__comp(__middle, __first)) -2441: std::iter_swap(__first, __middle); -2441: return; -2441: } -2441: -2441: _BidirectionalIterator __first_cut = __first; -2441: _BidirectionalIterator __second_cut = __middle; -2441: _Distance __len11 = 0; -2441: _Distance __len22 = 0; -2441: if (__len1 > __len2) -2441: { -2441: __len11 = __len1 / 2; -2441: std::advance(__first_cut, __len11); -2441: __second_cut -2441: = std::__lower_bound(__middle, __last, *__first_cut, -2441: __gnu_cxx::__ops::__iter_comp_val(__comp)); -2441: __len22 = std::distance(__middle, __second_cut); -2441: } -2441: else -2441: { -2441: __len22 = __len2 / 2; -2441: std::advance(__second_cut, __len22); -2441: __first_cut -2441: = std::__upper_bound(__first, __middle, *__second_cut, -2441: __gnu_cxx::__ops::__val_comp_iter(__comp)); -2441: __len11 = std::distance(__first, __first_cut); -2441: } -2441: -2441: std::rotate(__first_cut, __middle, __second_cut); -2441: _BidirectionalIterator __new_middle = __first_cut; -2441: std::advance(__new_middle, std::distance(__middle, __second_cut)); -2441: std::__merge_without_buffer(__first, __first_cut, __new_middle, -2441: __len11, __len22, __comp); -2441: std::__merge_without_buffer(__new_middle, __second_cut, __last, -2441: __len1 - __len11, __len2 - __len22, __comp); -2441: } -2441: -2441: template -2441: void -2441: __inplace_merge(_BidirectionalIterator __first, -2441: _BidirectionalIterator __middle, -2441: _BidirectionalIterator __last, -2441: _Compare __comp) -2441: { -2441: typedef typename iterator_traits<_BidirectionalIterator>::value_type -2441: _ValueType; -2441: typedef typename iterator_traits<_BidirectionalIterator>::difference_type -2441: _DistanceType; -2441: -2441: if (__first == __middle || __middle == __last) -2441: return; -2441: -2441: const _DistanceType __len1 = std::distance(__first, __middle); -2441: const _DistanceType __len2 = std::distance(__middle, __last); -2441: -2441: typedef _Temporary_buffer<_BidirectionalIterator, _ValueType> _TmpBuf; -2441: _TmpBuf __buf(__first, __last); -2441: -2441: if (__buf.begin() == 0) -2441: std::__merge_without_buffer -2441: (__first, __middle, __last, __len1, __len2, __comp); -2441: else -2441: std::__merge_adaptive -2441: (__first, __middle, __last, __len1, __len2, __buf.begin(), -2441: _DistanceType(__buf.size()), __comp); -2441: } -2441: # 2572 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline void -2441: inplace_merge(_BidirectionalIterator __first, -2441: _BidirectionalIterator __middle, -2441: _BidirectionalIterator __last) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: ; -2441: -2441: std::__inplace_merge(__first, __middle, __last, -2441: __gnu_cxx::__ops::__iter_less_iter()); -2441: } -2441: # 2613 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline void -2441: inplace_merge(_BidirectionalIterator __first, -2441: _BidirectionalIterator __middle, -2441: _BidirectionalIterator __last, -2441: _Compare __comp) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: ; -2441: -2441: std::__inplace_merge(__first, __middle, __last, -2441: __gnu_cxx::__ops::__iter_comp_iter(__comp)); -2441: } -2441: -2441: -2441: -2441: template -2441: _OutputIterator -2441: __move_merge(_InputIterator __first1, _InputIterator __last1, -2441: _InputIterator __first2, _InputIterator __last2, -2441: _OutputIterator __result, _Compare __comp) -2441: { -2441: while (__first1 != __last1 && __first2 != __last2) -2441: { -2441: if (__comp(__first2, __first1)) -2441: { -2441: *__result = std::move(*__first2); -2441: ++__first2; -2441: } -2441: else -2441: { -2441: *__result = std::move(*__first1); -2441: ++__first1; -2441: } -2441: ++__result; -2441: } -2441: return std::move(__first2, __last2, std::move(__first1, __last1, __result)) -2441: -2441: ; -2441: } -2441: -2441: template -2441: void -2441: __merge_sort_loop(_RandomAccessIterator1 __first, -2441: _RandomAccessIterator1 __last, -2441: _RandomAccessIterator2 __result, _Distance __step_size, -2441: _Compare __comp) -2441: { -2441: const _Distance __two_step = 2 * __step_size; -2441: -2441: while (__last - __first >= __two_step) -2441: { -2441: __result = std::__move_merge(__first, __first + __step_size, -2441: __first + __step_size, -2441: __first + __two_step, -2441: __result, __comp); -2441: __first += __two_step; -2441: } -2441: __step_size = std::min(_Distance(__last - __first), __step_size); -2441: -2441: std::__move_merge(__first, __first + __step_size, -2441: __first + __step_size, __last, __result, __comp); -2441: } -2441: -2441: template -2441: void -2441: __chunk_insertion_sort(_RandomAccessIterator __first, -2441: _RandomAccessIterator __last, -2441: _Distance __chunk_size, _Compare __comp) -2441: { -2441: while (__last - __first >= __chunk_size) -2441: { -2441: std::__insertion_sort(__first, __first + __chunk_size, __comp); -2441: __first += __chunk_size; -2441: } -2441: std::__insertion_sort(__first, __last, __comp); -2441: } -2441: -2441: enum { _S_chunk_size = 7 }; -2441: -2441: template -2441: void -2441: __merge_sort_with_buffer(_RandomAccessIterator __first, -2441: _RandomAccessIterator __last, -2441: _Pointer __buffer, _Compare __comp) -2441: { -2441: typedef typename iterator_traits<_RandomAccessIterator>::difference_type -2441: _Distance; -2441: -2441: const _Distance __len = __last - __first; -2441: const _Pointer __buffer_last = __buffer + __len; -2441: -2441: _Distance __step_size = _S_chunk_size; -2441: std::__chunk_insertion_sort(__first, __last, __step_size, __comp); -2441: -2441: while (__step_size < __len) -2441: { -2441: std::__merge_sort_loop(__first, __last, __buffer, -2441: __step_size, __comp); -2441: __step_size *= 2; -2441: std::__merge_sort_loop(__buffer, __buffer_last, __first, -2441: __step_size, __comp); -2441: __step_size *= 2; -2441: } -2441: } -2441: -2441: template -2441: void -2441: __stable_sort_adaptive(_RandomAccessIterator __first, -2441: _RandomAccessIterator __last, -2441: _Pointer __buffer, _Distance __buffer_size, -2441: _Compare __comp) -2441: { -2441: const _Distance __len = (__last - __first + 1) / 2; -2441: const _RandomAccessIterator __middle = __first + __len; -2441: if (__len > __buffer_size) -2441: { -2441: std::__stable_sort_adaptive(__first, __middle, __buffer, -2441: __buffer_size, __comp); -2441: std::__stable_sort_adaptive(__middle, __last, __buffer, -2441: __buffer_size, __comp); -2441: } -2441: else -2441: { -2441: std::__merge_sort_with_buffer(__first, __middle, __buffer, __comp); -2441: std::__merge_sort_with_buffer(__middle, __last, __buffer, __comp); -2441: } -2441: std::__merge_adaptive(__first, __middle, __last, -2441: _Distance(__middle - __first), -2441: _Distance(__last - __middle), -2441: __buffer, __buffer_size, -2441: __comp); -2441: } -2441: -2441: -2441: template -2441: void -2441: __inplace_stable_sort(_RandomAccessIterator __first, -2441: _RandomAccessIterator __last, _Compare __comp) -2441: { -2441: if (__last - __first < 15) -2441: { -2441: std::__insertion_sort(__first, __last, __comp); -2441: return; -2441: } -2441: _RandomAccessIterator __middle = __first + (__last - __first) / 2; -2441: std::__inplace_stable_sort(__first, __middle, __comp); -2441: std::__inplace_stable_sort(__middle, __last, __comp); -2441: std::__merge_without_buffer(__first, __middle, __last, -2441: __middle - __first, -2441: __last - __middle, -2441: __comp); -2441: } -2441: # 2785 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: bool -2441: __includes(_InputIterator1 __first1, _InputIterator1 __last1, -2441: _InputIterator2 __first2, _InputIterator2 __last2, -2441: _Compare __comp) -2441: { -2441: while (__first1 != __last1 && __first2 != __last2) -2441: if (__comp(__first2, __first1)) -2441: return false; -2441: else if (__comp(__first1, __first2)) -2441: ++__first1; -2441: else -2441: { -2441: ++__first1; -2441: ++__first2; -2441: } -2441: -2441: return __first2 == __last2; -2441: } -2441: # 2824 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline bool -2441: includes(_InputIterator1 __first1, _InputIterator1 __last1, -2441: _InputIterator2 __first2, _InputIterator2 __last2) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: ; -2441: ; -2441: -2441: return std::__includes(__first1, __last1, __first2, __last2, -2441: __gnu_cxx::__ops::__iter_less_iter()); -2441: } -2441: # 2868 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline bool -2441: includes(_InputIterator1 __first1, _InputIterator1 __last1, -2441: _InputIterator2 __first2, _InputIterator2 __last2, -2441: _Compare __comp) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: ; -2441: ; -2441: -2441: return std::__includes(__first1, __last1, __first2, __last2, -2441: __gnu_cxx::__ops::__iter_comp_iter(__comp)); -2441: } -2441: # 2903 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: bool -2441: __next_permutation(_BidirectionalIterator __first, -2441: _BidirectionalIterator __last, _Compare __comp) -2441: { -2441: if (__first == __last) -2441: return false; -2441: _BidirectionalIterator __i = __first; -2441: ++__i; -2441: if (__i == __last) -2441: return false; -2441: __i = __last; -2441: --__i; -2441: -2441: for(;;) -2441: { -2441: _BidirectionalIterator __ii = __i; -2441: --__i; -2441: if (__comp(__i, __ii)) -2441: { -2441: _BidirectionalIterator __j = __last; -2441: while (!__comp(__i, --__j)) -2441: {} -2441: std::iter_swap(__i, __j); -2441: std::__reverse(__ii, __last, -2441: std::__iterator_category(__first)); -2441: return true; -2441: } -2441: if (__i == __first) -2441: { -2441: std::__reverse(__first, __last, -2441: std::__iterator_category(__first)); -2441: return false; -2441: } -2441: } -2441: } -2441: # 2952 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline bool -2441: next_permutation(_BidirectionalIterator __first, -2441: _BidirectionalIterator __last) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: return std::__next_permutation -2441: (__first, __last, __gnu_cxx::__ops::__iter_less_iter()); -2441: } -2441: # 2984 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline bool -2441: next_permutation(_BidirectionalIterator __first, -2441: _BidirectionalIterator __last, _Compare __comp) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: return std::__next_permutation -2441: (__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp)); -2441: } -2441: -2441: template -2441: bool -2441: __prev_permutation(_BidirectionalIterator __first, -2441: _BidirectionalIterator __last, _Compare __comp) -2441: { -2441: if (__first == __last) -2441: return false; -2441: _BidirectionalIterator __i = __first; -2441: ++__i; -2441: if (__i == __last) -2441: return false; -2441: __i = __last; -2441: --__i; -2441: -2441: for(;;) -2441: { -2441: _BidirectionalIterator __ii = __i; -2441: --__i; -2441: if (__comp(__ii, __i)) -2441: { -2441: _BidirectionalIterator __j = __last; -2441: while (!__comp(--__j, __i)) -2441: {} -2441: std::iter_swap(__i, __j); -2441: std::__reverse(__ii, __last, -2441: std::__iterator_category(__first)); -2441: return true; -2441: } -2441: if (__i == __first) -2441: { -2441: std::__reverse(__first, __last, -2441: std::__iterator_category(__first)); -2441: return false; -2441: } -2441: } -2441: } -2441: # 3052 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline bool -2441: prev_permutation(_BidirectionalIterator __first, -2441: _BidirectionalIterator __last) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: return std::__prev_permutation(__first, __last, -2441: __gnu_cxx::__ops::__iter_less_iter()); -2441: } -2441: # 3084 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline bool -2441: prev_permutation(_BidirectionalIterator __first, -2441: _BidirectionalIterator __last, _Compare __comp) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: return std::__prev_permutation(__first, __last, -2441: __gnu_cxx::__ops::__iter_comp_iter(__comp)); -2441: } -2441: -2441: -2441: -2441: -2441: template -2441: _OutputIterator -2441: __replace_copy_if(_InputIterator __first, _InputIterator __last, -2441: _OutputIterator __result, -2441: _Predicate __pred, const _Tp& __new_value) -2441: { -2441: for (; __first != __last; ++__first, (void)++__result) -2441: if (__pred(__first)) -2441: *__result = __new_value; -2441: else -2441: *__result = *__first; -2441: return __result; -2441: } -2441: # 3134 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _OutputIterator -2441: replace_copy(_InputIterator __first, _InputIterator __last, -2441: _OutputIterator __result, -2441: const _Tp& __old_value, const _Tp& __new_value) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: return std::__replace_copy_if(__first, __last, __result, -2441: __gnu_cxx::__ops::__iter_equals_val(__old_value), -2441: __new_value); -2441: } -2441: # 3168 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _OutputIterator -2441: replace_copy_if(_InputIterator __first, _InputIterator __last, -2441: _OutputIterator __result, -2441: _Predicate __pred, const _Tp& __new_value) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: return std::__replace_copy_if(__first, __last, __result, -2441: __gnu_cxx::__ops::__pred_iter(__pred), -2441: __new_value); -2441: } -2441: -2441: template -2441: typename iterator_traits<_InputIterator>::difference_type -2441: __count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) -2441: { -2441: typename iterator_traits<_InputIterator>::difference_type __n = 0; -2441: for (; __first != __last; ++__first) -2441: if (__pred(__first)) -2441: ++__n; -2441: return __n; -2441: } -2441: # 3207 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline bool -2441: is_sorted(_ForwardIterator __first, _ForwardIterator __last) -2441: { return std::is_sorted_until(__first, __last) == __last; } -2441: # 3221 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline bool -2441: is_sorted(_ForwardIterator __first, _ForwardIterator __last, -2441: _Compare __comp) -2441: { return std::is_sorted_until(__first, __last, __comp) == __last; } -2441: -2441: template -2441: _ForwardIterator -2441: __is_sorted_until(_ForwardIterator __first, _ForwardIterator __last, -2441: _Compare __comp) -2441: { -2441: if (__first == __last) -2441: return __last; -2441: -2441: _ForwardIterator __next = __first; -2441: for (++__next; __next != __last; __first = __next, (void)++__next) -2441: if (__comp(__next, __first)) -2441: return __next; -2441: return __next; -2441: } -2441: # 3250 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _ForwardIterator -2441: is_sorted_until(_ForwardIterator __first, _ForwardIterator __last) -2441: { -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: return std::__is_sorted_until(__first, __last, -2441: __gnu_cxx::__ops::__iter_less_iter()); -2441: } -2441: # 3274 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _ForwardIterator -2441: is_sorted_until(_ForwardIterator __first, _ForwardIterator __last, -2441: _Compare __comp) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: return std::__is_sorted_until(__first, __last, -2441: __gnu_cxx::__ops::__iter_comp_iter(__comp)); -2441: } -2441: # 3299 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: constexpr -2441: inline pair -2441: minmax(const _Tp& __a, const _Tp& __b) -2441: { -2441: -2441: -2441: -2441: return __b < __a ? pair(__b, __a) -2441: : pair(__a, __b); -2441: } -2441: # 3320 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: constexpr -2441: inline pair -2441: minmax(const _Tp& __a, const _Tp& __b, _Compare __comp) -2441: { -2441: return __comp(__b, __a) ? pair(__b, __a) -2441: : pair(__a, __b); -2441: } -2441: -2441: template -2441: constexpr -2441: pair<_ForwardIterator, _ForwardIterator> -2441: __minmax_element(_ForwardIterator __first, _ForwardIterator __last, -2441: _Compare __comp) -2441: { -2441: _ForwardIterator __next = __first; -2441: if (__first == __last -2441: || ++__next == __last) -2441: return std::make_pair(__first, __first); -2441: -2441: _ForwardIterator __min{}, __max{}; -2441: if (__comp(__next, __first)) -2441: { -2441: __min = __next; -2441: __max = __first; -2441: } -2441: else -2441: { -2441: __min = __first; -2441: __max = __next; -2441: } -2441: -2441: __first = __next; -2441: ++__first; -2441: -2441: while (__first != __last) -2441: { -2441: __next = __first; -2441: if (++__next == __last) -2441: { -2441: if (__comp(__first, __min)) -2441: __min = __first; -2441: else if (!__comp(__first, __max)) -2441: __max = __first; -2441: break; -2441: } -2441: -2441: if (__comp(__next, __first)) -2441: { -2441: if (__comp(__next, __min)) -2441: __min = __next; -2441: if (!__comp(__first, __max)) -2441: __max = __first; -2441: } -2441: else -2441: { -2441: if (__comp(__first, __min)) -2441: __min = __first; -2441: if (!__comp(__next, __max)) -2441: __max = __next; -2441: } -2441: -2441: __first = __next; -2441: ++__first; -2441: } -2441: -2441: return std::make_pair(__min, __max); -2441: } -2441: # 3400 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: constexpr -2441: inline pair<_ForwardIterator, _ForwardIterator> -2441: minmax_element(_ForwardIterator __first, _ForwardIterator __last) -2441: { -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: return std::__minmax_element(__first, __last, -2441: __gnu_cxx::__ops::__iter_less_iter()); -2441: } -2441: # 3428 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: constexpr -2441: inline pair<_ForwardIterator, _ForwardIterator> -2441: minmax_element(_ForwardIterator __first, _ForwardIterator __last, -2441: _Compare __comp) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: return std::__minmax_element(__first, __last, -2441: __gnu_cxx::__ops::__iter_comp_iter(__comp)); -2441: } -2441: -2441: -2441: template -2441: constexpr -2441: inline _Tp -2441: min(initializer_list<_Tp> __l) -2441: { return *std::min_element(__l.begin(), __l.end()); } -2441: -2441: template -2441: constexpr -2441: inline _Tp -2441: min(initializer_list<_Tp> __l, _Compare __comp) -2441: { return *std::min_element(__l.begin(), __l.end(), __comp); } -2441: -2441: template -2441: constexpr -2441: inline _Tp -2441: max(initializer_list<_Tp> __l) -2441: { return *std::max_element(__l.begin(), __l.end()); } -2441: -2441: template -2441: constexpr -2441: inline _Tp -2441: max(initializer_list<_Tp> __l, _Compare __comp) -2441: { return *std::max_element(__l.begin(), __l.end(), __comp); } -2441: -2441: template -2441: constexpr -2441: inline pair<_Tp, _Tp> -2441: minmax(initializer_list<_Tp> __l) -2441: { -2441: pair __p = -2441: std::minmax_element(__l.begin(), __l.end()); -2441: return std::make_pair(*__p.first, *__p.second); -2441: } -2441: -2441: template -2441: constexpr -2441: inline pair<_Tp, _Tp> -2441: minmax(initializer_list<_Tp> __l, _Compare __comp) -2441: { -2441: pair __p = -2441: std::minmax_element(__l.begin(), __l.end(), __comp); -2441: return std::make_pair(*__p.first, *__p.second); -2441: } -2441: -2441: template -2441: bool -2441: __is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, -2441: _ForwardIterator2 __first2, _BinaryPredicate __pred) -2441: { -2441: -2441: -2441: for (; __first1 != __last1; ++__first1, (void)++__first2) -2441: if (!__pred(__first1, __first2)) -2441: break; -2441: -2441: if (__first1 == __last1) -2441: return true; -2441: -2441: -2441: -2441: _ForwardIterator2 __last2 = __first2; -2441: std::advance(__last2, std::distance(__first1, __last1)); -2441: for (_ForwardIterator1 __scan = __first1; __scan != __last1; ++__scan) -2441: { -2441: if (__scan != std::__find_if(__first1, __scan, -2441: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan))) -2441: continue; -2441: -2441: auto __matches -2441: = std::__count_if(__first2, __last2, -2441: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)); -2441: if (0 == __matches || -2441: std::__count_if(__scan, __last1, -2441: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)) -2441: != __matches) -2441: return false; -2441: } -2441: return true; -2441: } -2441: # 3540 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline bool -2441: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, -2441: _ForwardIterator2 __first2) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: return std::__is_permutation(__first1, __last1, __first2, -2441: __gnu_cxx::__ops::__iter_equal_to_iter()); -2441: } -2441: # 3571 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline bool -2441: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, -2441: _ForwardIterator2 __first2, _BinaryPredicate __pred) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: return std::__is_permutation(__first1, __last1, __first2, -2441: __gnu_cxx::__ops::__iter_comp_iter(__pred)); -2441: } -2441: -2441: -2441: template -2441: bool -2441: __is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, -2441: _ForwardIterator2 __first2, _ForwardIterator2 __last2, -2441: _BinaryPredicate __pred) -2441: { -2441: using _Cat1 -2441: = typename iterator_traits<_ForwardIterator1>::iterator_category; -2441: using _Cat2 -2441: = typename iterator_traits<_ForwardIterator2>::iterator_category; -2441: using _It1_is_RA = is_same<_Cat1, random_access_iterator_tag>; -2441: using _It2_is_RA = is_same<_Cat2, random_access_iterator_tag>; -2441: constexpr bool __ra_iters = _It1_is_RA() && _It2_is_RA(); -2441: if (__ra_iters) -2441: { -2441: auto __d1 = std::distance(__first1, __last1); -2441: auto __d2 = std::distance(__first2, __last2); -2441: if (__d1 != __d2) -2441: return false; -2441: } -2441: -2441: -2441: -2441: for (; __first1 != __last1 && __first2 != __last2; -2441: ++__first1, (void)++__first2) -2441: if (!__pred(__first1, __first2)) -2441: break; -2441: -2441: if (__ra_iters) -2441: { -2441: if (__first1 == __last1) -2441: return true; -2441: } -2441: else -2441: { -2441: auto __d1 = std::distance(__first1, __last1); -2441: auto __d2 = std::distance(__first2, __last2); -2441: if (__d1 == 0 && __d2 == 0) -2441: return true; -2441: if (__d1 != __d2) -2441: return false; -2441: } -2441: -2441: for (_ForwardIterator1 __scan = __first1; __scan != __last1; ++__scan) -2441: { -2441: if (__scan != std::__find_if(__first1, __scan, -2441: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan))) -2441: continue; -2441: -2441: auto __matches = std::__count_if(__first2, __last2, -2441: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)); -2441: if (0 == __matches -2441: || std::__count_if(__scan, __last1, -2441: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)) -2441: != __matches) -2441: return false; -2441: } -2441: return true; -2441: } -2441: # 3664 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline bool -2441: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, -2441: _ForwardIterator2 __first2, _ForwardIterator2 __last2) -2441: { -2441: ; -2441: ; -2441: -2441: return -2441: std::__is_permutation(__first1, __last1, __first2, __last2, -2441: __gnu_cxx::__ops::__iter_equal_to_iter()); -2441: } -2441: # 3691 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline bool -2441: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, -2441: _ForwardIterator2 __first2, _ForwardIterator2 __last2, -2441: _BinaryPredicate __pred) -2441: { -2441: ; -2441: ; -2441: -2441: return std::__is_permutation(__first1, __last1, __first2, __last2, -2441: __gnu_cxx::__ops::__iter_comp_iter(__pred)); -2441: } -2441: # 3767 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: pair<_IntType, _IntType> -2441: __gen_two_uniform_ints(_IntType __b0, _IntType __b1, -2441: _UniformRandomBitGenerator&& __g) -2441: { -2441: _IntType __x -2441: = uniform_int_distribution<_IntType>{0, (__b0 * __b1) - 1}(__g); -2441: return std::make_pair(__x / __b1, __x % __b1); -2441: } -2441: # 3789 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: void -2441: shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, -2441: _UniformRandomNumberGenerator&& __g) -2441: { -2441: -2441: -2441: -2441: ; -2441: -2441: if (__first == __last) -2441: return; -2441: -2441: typedef typename iterator_traits<_RandomAccessIterator>::difference_type -2441: _DistanceType; -2441: -2441: typedef typename std::make_unsigned<_DistanceType>::type __ud_type; -2441: typedef typename std::uniform_int_distribution<__ud_type> __distr_type; -2441: typedef typename __distr_type::param_type __p_type; -2441: -2441: typedef typename remove_reference<_UniformRandomNumberGenerator>::type -2441: _Gen; -2441: typedef typename common_type::type -2441: __uc_type; -2441: -2441: const __uc_type __urngrange = __g.max() - __g.min(); -2441: const __uc_type __urange = __uc_type(__last - __first); -2441: -2441: if (__urngrange / __urange >= __urange) -2441: -2441: { -2441: _RandomAccessIterator __i = __first + 1; -2441: -2441: -2441: -2441: -2441: -2441: if ((__urange % 2) == 0) -2441: { -2441: __distr_type __d{0, 1}; -2441: std::iter_swap(__i++, __first + __d(__g)); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: while (__i != __last) -2441: { -2441: const __uc_type __swap_range = __uc_type(__i - __first) + 1; -2441: -2441: const pair<__uc_type, __uc_type> __pospos = -2441: __gen_two_uniform_ints(__swap_range, __swap_range + 1, __g); -2441: -2441: std::iter_swap(__i++, __first + __pospos.first); -2441: std::iter_swap(__i++, __first + __pospos.second); -2441: } -2441: -2441: return; -2441: } -2441: -2441: __distr_type __d; -2441: -2441: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) -2441: std::iter_swap(__i, __first + __d(__g, __p_type(0, __i - __first))); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: # 3874 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: _Function -2441: for_each(_InputIterator __first, _InputIterator __last, _Function __f) -2441: { -2441: -2441: -2441: ; -2441: for (; __first != __last; ++__first) -2441: __f(*__first); -2441: return __f; -2441: } -2441: # 3895 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _InputIterator -2441: find(_InputIterator __first, _InputIterator __last, -2441: const _Tp& __val) -2441: { -2441: -2441: -2441: -2441: -2441: ; -2441: return std::__find_if(__first, __last, -2441: __gnu_cxx::__ops::__iter_equals_val(__val)); -2441: } -2441: # 3919 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _InputIterator -2441: find_if(_InputIterator __first, _InputIterator __last, -2441: _Predicate __pred) -2441: { -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: return std::__find_if(__first, __last, -2441: __gnu_cxx::__ops::__pred_iter(__pred)); -2441: } -2441: # 3950 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: _InputIterator -2441: find_first_of(_InputIterator __first1, _InputIterator __last1, -2441: _ForwardIterator __first2, _ForwardIterator __last2) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: for (; __first1 != __last1; ++__first1) -2441: for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter) -2441: if (*__first1 == *__iter) -2441: return __first1; -2441: return __last1; -2441: } -2441: # 3990 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: _InputIterator -2441: find_first_of(_InputIterator __first1, _InputIterator __last1, -2441: _ForwardIterator __first2, _ForwardIterator __last2, -2441: _BinaryPredicate __comp) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: for (; __first1 != __last1; ++__first1) -2441: for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter) -2441: if (__comp(*__first1, *__iter)) -2441: return __first1; -2441: return __last1; -2441: } -2441: # 4022 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _ForwardIterator -2441: adjacent_find(_ForwardIterator __first, _ForwardIterator __last) -2441: { -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: return std::__adjacent_find(__first, __last, -2441: __gnu_cxx::__ops::__iter_equal_to_iter()); -2441: } -2441: # 4047 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _ForwardIterator -2441: adjacent_find(_ForwardIterator __first, _ForwardIterator __last, -2441: _BinaryPredicate __binary_pred) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: return std::__adjacent_find(__first, __last, -2441: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); -2441: } -2441: # 4072 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline typename iterator_traits<_InputIterator>::difference_type -2441: count(_InputIterator __first, _InputIterator __last, const _Tp& __value) -2441: { -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: return std::__count_if(__first, __last, -2441: __gnu_cxx::__ops::__iter_equals_val(__value)); -2441: } -2441: # 4095 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline typename iterator_traits<_InputIterator>::difference_type -2441: count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) -2441: { -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: return std::__count_if(__first, __last, -2441: __gnu_cxx::__ops::__pred_iter(__pred)); -2441: } -2441: # 4135 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _ForwardIterator1 -2441: search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, -2441: _ForwardIterator2 __first2, _ForwardIterator2 __last2) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: return std::__search(__first1, __last1, __first2, __last2, -2441: __gnu_cxx::__ops::__iter_equal_to_iter()); -2441: } -2441: # 4174 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _ForwardIterator1 -2441: search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, -2441: _ForwardIterator2 __first2, _ForwardIterator2 __last2, -2441: _BinaryPredicate __predicate) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: return std::__search(__first1, __last1, __first2, __last2, -2441: __gnu_cxx::__ops::__iter_comp_iter(__predicate)); -2441: } -2441: # 4209 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _ForwardIterator -2441: search_n(_ForwardIterator __first, _ForwardIterator __last, -2441: _Integer __count, const _Tp& __val) -2441: { -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: return std::__search_n(__first, __last, __count, -2441: __gnu_cxx::__ops::__iter_equals_val(__val)); -2441: } -2441: # 4242 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _ForwardIterator -2441: search_n(_ForwardIterator __first, _ForwardIterator __last, -2441: _Integer __count, const _Tp& __val, -2441: _BinaryPredicate __binary_pred) -2441: { -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: return std::__search_n(__first, __last, __count, -2441: __gnu_cxx::__ops::__iter_comp_val(__binary_pred, __val)); -2441: } -2441: # 4290 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: _OutputIterator -2441: transform(_InputIterator __first, _InputIterator __last, -2441: _OutputIterator __result, _UnaryOperation __unary_op) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: for (; __first != __last; ++__first, (void)++__result) -2441: *__result = __unary_op(*__first); -2441: return __result; -2441: } -2441: # 4327 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: _OutputIterator -2441: transform(_InputIterator1 __first1, _InputIterator1 __last1, -2441: _InputIterator2 __first2, _OutputIterator __result, -2441: _BinaryOperation __binary_op) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: for (; __first1 != __last1; ++__first1, (void)++__first2, ++__result) -2441: *__result = __binary_op(*__first1, *__first2); -2441: return __result; -2441: } -2441: # 4360 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: void -2441: replace(_ForwardIterator __first, _ForwardIterator __last, -2441: const _Tp& __old_value, const _Tp& __new_value) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: for (; __first != __last; ++__first) -2441: if (*__first == __old_value) -2441: *__first = __new_value; -2441: } -2441: # 4392 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: void -2441: replace_if(_ForwardIterator __first, _ForwardIterator __last, -2441: _Predicate __pred, const _Tp& __new_value) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: for (; __first != __last; ++__first) -2441: if (__pred(*__first)) -2441: *__first = __new_value; -2441: } -2441: # 4424 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: void -2441: generate(_ForwardIterator __first, _ForwardIterator __last, -2441: _Generator __gen) -2441: { -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: for (; __first != __last; ++__first) -2441: *__first = __gen(); -2441: } -2441: # 4455 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: _OutputIterator -2441: generate_n(_OutputIterator __first, _Size __n, _Generator __gen) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: for (__decltype(__n + 0) __niter = __n; -2441: __niter > 0; --__niter, (void) ++__first) -2441: *__first = __gen(); -2441: return __first; -2441: } -2441: # 4491 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _OutputIterator -2441: unique_copy(_InputIterator __first, _InputIterator __last, -2441: _OutputIterator __result) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: if (__first == __last) -2441: return __result; -2441: return std::__unique_copy(__first, __last, __result, -2441: __gnu_cxx::__ops::__iter_equal_to_iter(), -2441: std::__iterator_category(__first), -2441: std::__iterator_category(__result)); -2441: } -2441: # 4531 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _OutputIterator -2441: unique_copy(_InputIterator __first, _InputIterator __last, -2441: _OutputIterator __result, -2441: _BinaryPredicate __binary_pred) -2441: { -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: if (__first == __last) -2441: return __result; -2441: return std::__unique_copy(__first, __last, __result, -2441: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred), -2441: std::__iterator_category(__first), -2441: std::__iterator_category(__result)); -2441: } -2441: # 4564 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline void -2441: random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last) -2441: { -2441: -2441: -2441: -2441: ; -2441: -2441: if (__first != __last) -2441: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) -2441: { -2441: -2441: _RandomAccessIterator __j = __first -2441: + std::rand() % ((__i - __first) + 1); -2441: if (__i != __j) -2441: std::iter_swap(__i, __j); -2441: } -2441: } -2441: # 4599 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: void -2441: random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, -2441: -2441: _RandomNumberGenerator&& __rand) -2441: -2441: -2441: -2441: { -2441: -2441: -2441: -2441: ; -2441: -2441: if (__first == __last) -2441: return; -2441: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) -2441: { -2441: _RandomAccessIterator __j = __first + __rand((__i - __first) + 1); -2441: if (__i != __j) -2441: std::iter_swap(__i, __j); -2441: } -2441: } -2441: # 4639 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _ForwardIterator -2441: partition(_ForwardIterator __first, _ForwardIterator __last, -2441: _Predicate __pred) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: -2441: return std::__partition(__first, __last, __pred, -2441: std::__iterator_category(__first)); -2441: } -2441: # 4672 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline void -2441: partial_sort(_RandomAccessIterator __first, -2441: _RandomAccessIterator __middle, -2441: _RandomAccessIterator __last) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: ; -2441: -2441: std::__partial_sort(__first, __middle, __last, -2441: __gnu_cxx::__ops::__iter_less_iter()); -2441: } -2441: # 4710 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline void -2441: partial_sort(_RandomAccessIterator __first, -2441: _RandomAccessIterator __middle, -2441: _RandomAccessIterator __last, -2441: _Compare __comp) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: ; -2441: -2441: std::__partial_sort(__first, __middle, __last, -2441: __gnu_cxx::__ops::__iter_comp_iter(__comp)); -2441: } -2441: # 4746 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline void -2441: nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, -2441: _RandomAccessIterator __last) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: ; -2441: -2441: if (__first == __last || __nth == __last) -2441: return; -2441: -2441: std::__introselect(__first, __nth, __last, -2441: std::__lg(__last - __first) * 2, -2441: __gnu_cxx::__ops::__iter_less_iter()); -2441: } -2441: # 4785 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline void -2441: nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, -2441: _RandomAccessIterator __last, _Compare __comp) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: ; -2441: -2441: if (__first == __last || __nth == __last) -2441: return; -2441: -2441: std::__introselect(__first, __nth, __last, -2441: std::__lg(__last - __first) * 2, -2441: __gnu_cxx::__ops::__iter_comp_iter(__comp)); -2441: } -2441: # 4822 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline void -2441: sort(_RandomAccessIterator __first, _RandomAccessIterator __last) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: std::__sort(__first, __last, __gnu_cxx::__ops::__iter_less_iter()); -2441: } -2441: # 4852 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline void -2441: sort(_RandomAccessIterator __first, _RandomAccessIterator __last, -2441: _Compare __comp) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: std::__sort(__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp)); -2441: } -2441: -2441: template -2441: _OutputIterator -2441: __merge(_InputIterator1 __first1, _InputIterator1 __last1, -2441: _InputIterator2 __first2, _InputIterator2 __last2, -2441: _OutputIterator __result, _Compare __comp) -2441: { -2441: while (__first1 != __last1 && __first2 != __last2) -2441: { -2441: if (__comp(__first2, __first1)) -2441: { -2441: *__result = *__first2; -2441: ++__first2; -2441: } -2441: else -2441: { -2441: *__result = *__first1; -2441: ++__first1; -2441: } -2441: ++__result; -2441: } -2441: return std::copy(__first2, __last2, -2441: std::copy(__first1, __last1, __result)); -2441: } -2441: # 4913 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _OutputIterator -2441: merge(_InputIterator1 __first1, _InputIterator1 __last1, -2441: _InputIterator2 __first2, _InputIterator2 __last2, -2441: _OutputIterator __result) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: ; -2441: ; -2441: -2441: return std::__merge(__first1, __last1, -2441: __first2, __last2, __result, -2441: __gnu_cxx::__ops::__iter_less_iter()); -2441: } -2441: # 4963 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _OutputIterator -2441: merge(_InputIterator1 __first1, _InputIterator1 __last1, -2441: _InputIterator2 __first2, _InputIterator2 __last2, -2441: _OutputIterator __result, _Compare __comp) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: ; -2441: ; -2441: -2441: return std::__merge(__first1, __last1, -2441: __first2, __last2, __result, -2441: __gnu_cxx::__ops::__iter_comp_iter(__comp)); -2441: } -2441: -2441: template -2441: inline void -2441: __stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, -2441: _Compare __comp) -2441: { -2441: typedef typename iterator_traits<_RandomAccessIterator>::value_type -2441: _ValueType; -2441: typedef typename iterator_traits<_RandomAccessIterator>::difference_type -2441: _DistanceType; -2441: -2441: typedef _Temporary_buffer<_RandomAccessIterator, _ValueType> _TmpBuf; -2441: _TmpBuf __buf(__first, __last); -2441: -2441: if (__buf.begin() == 0) -2441: std::__inplace_stable_sort(__first, __last, __comp); -2441: else -2441: std::__stable_sort_adaptive(__first, __last, __buf.begin(), -2441: _DistanceType(__buf.size()), __comp); -2441: } -2441: # 5027 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline void -2441: stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: std::__stable_sort(__first, __last, -2441: __gnu_cxx::__ops::__iter_less_iter()); -2441: } -2441: # 5061 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline void -2441: stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, -2441: _Compare __comp) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: std::__stable_sort(__first, __last, -2441: __gnu_cxx::__ops::__iter_comp_iter(__comp)); -2441: } -2441: -2441: template -2441: _OutputIterator -2441: __set_union(_InputIterator1 __first1, _InputIterator1 __last1, -2441: _InputIterator2 __first2, _InputIterator2 __last2, -2441: _OutputIterator __result, _Compare __comp) -2441: { -2441: while (__first1 != __last1 && __first2 != __last2) -2441: { -2441: if (__comp(__first1, __first2)) -2441: { -2441: *__result = *__first1; -2441: ++__first1; -2441: } -2441: else if (__comp(__first2, __first1)) -2441: { -2441: *__result = *__first2; -2441: ++__first2; -2441: } -2441: else -2441: { -2441: *__result = *__first1; -2441: ++__first1; -2441: ++__first2; -2441: } -2441: ++__result; -2441: } -2441: return std::copy(__first2, __last2, -2441: std::copy(__first1, __last1, __result)); -2441: } -2441: # 5130 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _OutputIterator -2441: set_union(_InputIterator1 __first1, _InputIterator1 __last1, -2441: _InputIterator2 __first2, _InputIterator2 __last2, -2441: _OutputIterator __result) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: ; -2441: ; -2441: -2441: return std::__set_union(__first1, __last1, -2441: __first2, __last2, __result, -2441: __gnu_cxx::__ops::__iter_less_iter()); -2441: } -2441: # 5180 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _OutputIterator -2441: set_union(_InputIterator1 __first1, _InputIterator1 __last1, -2441: _InputIterator2 __first2, _InputIterator2 __last2, -2441: _OutputIterator __result, _Compare __comp) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: ; -2441: ; -2441: -2441: return std::__set_union(__first1, __last1, -2441: __first2, __last2, __result, -2441: __gnu_cxx::__ops::__iter_comp_iter(__comp)); -2441: } -2441: -2441: template -2441: _OutputIterator -2441: __set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, -2441: _InputIterator2 __first2, _InputIterator2 __last2, -2441: _OutputIterator __result, _Compare __comp) -2441: { -2441: while (__first1 != __last1 && __first2 != __last2) -2441: if (__comp(__first1, __first2)) -2441: ++__first1; -2441: else if (__comp(__first2, __first1)) -2441: ++__first2; -2441: else -2441: { -2441: *__result = *__first1; -2441: ++__first1; -2441: ++__first2; -2441: ++__result; -2441: } -2441: return __result; -2441: } -2441: # 5251 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _OutputIterator -2441: set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, -2441: _InputIterator2 __first2, _InputIterator2 __last2, -2441: _OutputIterator __result) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: ; -2441: ; -2441: -2441: return std::__set_intersection(__first1, __last1, -2441: __first2, __last2, __result, -2441: __gnu_cxx::__ops::__iter_less_iter()); -2441: } -2441: # 5300 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _OutputIterator -2441: set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, -2441: _InputIterator2 __first2, _InputIterator2 __last2, -2441: _OutputIterator __result, _Compare __comp) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: ; -2441: ; -2441: -2441: return std::__set_intersection(__first1, __last1, -2441: __first2, __last2, __result, -2441: __gnu_cxx::__ops::__iter_comp_iter(__comp)); -2441: } -2441: -2441: template -2441: _OutputIterator -2441: __set_difference(_InputIterator1 __first1, _InputIterator1 __last1, -2441: _InputIterator2 __first2, _InputIterator2 __last2, -2441: _OutputIterator __result, _Compare __comp) -2441: { -2441: while (__first1 != __last1 && __first2 != __last2) -2441: if (__comp(__first1, __first2)) -2441: { -2441: *__result = *__first1; -2441: ++__first1; -2441: ++__result; -2441: } -2441: else if (__comp(__first2, __first1)) -2441: ++__first2; -2441: else -2441: { -2441: ++__first1; -2441: ++__first2; -2441: } -2441: return std::copy(__first1, __last1, __result); -2441: } -2441: # 5373 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _OutputIterator -2441: set_difference(_InputIterator1 __first1, _InputIterator1 __last1, -2441: _InputIterator2 __first2, _InputIterator2 __last2, -2441: _OutputIterator __result) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: ; -2441: ; -2441: -2441: return std::__set_difference(__first1, __last1, -2441: __first2, __last2, __result, -2441: __gnu_cxx::__ops::__iter_less_iter()); -2441: } -2441: # 5424 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _OutputIterator -2441: set_difference(_InputIterator1 __first1, _InputIterator1 __last1, -2441: _InputIterator2 __first2, _InputIterator2 __last2, -2441: _OutputIterator __result, _Compare __comp) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: ; -2441: ; -2441: -2441: return std::__set_difference(__first1, __last1, -2441: __first2, __last2, __result, -2441: __gnu_cxx::__ops::__iter_comp_iter(__comp)); -2441: } -2441: -2441: template -2441: _OutputIterator -2441: __set_symmetric_difference(_InputIterator1 __first1, -2441: _InputIterator1 __last1, -2441: _InputIterator2 __first2, -2441: _InputIterator2 __last2, -2441: _OutputIterator __result, -2441: _Compare __comp) -2441: { -2441: while (__first1 != __last1 && __first2 != __last2) -2441: if (__comp(__first1, __first2)) -2441: { -2441: *__result = *__first1; -2441: ++__first1; -2441: ++__result; -2441: } -2441: else if (__comp(__first2, __first1)) -2441: { -2441: *__result = *__first2; -2441: ++__first2; -2441: ++__result; -2441: } -2441: else -2441: { -2441: ++__first1; -2441: ++__first2; -2441: } -2441: return std::copy(__first2, __last2, -2441: std::copy(__first1, __last1, __result)); -2441: } -2441: # 5503 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _OutputIterator -2441: set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, -2441: _InputIterator2 __first2, _InputIterator2 __last2, -2441: _OutputIterator __result) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: ; -2441: ; -2441: -2441: return std::__set_symmetric_difference(__first1, __last1, -2441: __first2, __last2, __result, -2441: __gnu_cxx::__ops::__iter_less_iter()); -2441: } -2441: # 5554 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: inline _OutputIterator -2441: set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, -2441: _InputIterator2 __first2, _InputIterator2 __last2, -2441: _OutputIterator __result, -2441: _Compare __comp) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: ; -2441: ; -2441: -2441: return std::__set_symmetric_difference(__first1, __last1, -2441: __first2, __last2, __result, -2441: __gnu_cxx::__ops::__iter_comp_iter(__comp)); -2441: } -2441: -2441: template -2441: constexpr -2441: _ForwardIterator -2441: __min_element(_ForwardIterator __first, _ForwardIterator __last, -2441: _Compare __comp) -2441: { -2441: if (__first == __last) -2441: return __first; -2441: _ForwardIterator __result = __first; -2441: while (++__first != __last) -2441: if (__comp(__first, __result)) -2441: __result = __first; -2441: return __result; -2441: } -2441: # 5607 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: constexpr -2441: _ForwardIterator -2441: inline min_element(_ForwardIterator __first, _ForwardIterator __last) -2441: { -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: return std::__min_element(__first, __last, -2441: __gnu_cxx::__ops::__iter_less_iter()); -2441: } -2441: # 5632 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: constexpr -2441: inline _ForwardIterator -2441: min_element(_ForwardIterator __first, _ForwardIterator __last, -2441: _Compare __comp) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: return std::__min_element(__first, __last, -2441: __gnu_cxx::__ops::__iter_comp_iter(__comp)); -2441: } -2441: -2441: template -2441: constexpr -2441: _ForwardIterator -2441: __max_element(_ForwardIterator __first, _ForwardIterator __last, -2441: _Compare __comp) -2441: { -2441: if (__first == __last) return __first; -2441: _ForwardIterator __result = __first; -2441: while (++__first != __last) -2441: if (__comp(__result, __first)) -2441: __result = __first; -2441: return __result; -2441: } -2441: # 5671 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: constexpr -2441: inline _ForwardIterator -2441: max_element(_ForwardIterator __first, _ForwardIterator __last) -2441: { -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: return std::__max_element(__first, __last, -2441: __gnu_cxx::__ops::__iter_less_iter()); -2441: } -2441: # 5696 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: template -2441: constexpr -2441: inline _ForwardIterator -2441: max_element(_ForwardIterator __first, _ForwardIterator __last, -2441: _Compare __comp) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: ; -2441: ; -2441: -2441: return std::__max_element(__first, __last, -2441: __gnu_cxx::__ops::__iter_comp_iter(__comp)); -2441: } -2441: -2441: -2441: -2441: template -2441: _RandomAccessIterator -2441: __sample(_InputIterator __first, _InputIterator __last, input_iterator_tag, -2441: _RandomAccessIterator __out, random_access_iterator_tag, -2441: _Size __n, _UniformRandomBitGenerator&& __g) -2441: { -2441: using __distrib_type = uniform_int_distribution<_Size>; -2441: using __param_type = typename __distrib_type::param_type; -2441: __distrib_type __d{}; -2441: _Size __sample_sz = 0; -2441: while (__first != __last && __sample_sz != __n) -2441: { -2441: __out[__sample_sz++] = *__first; -2441: ++__first; -2441: } -2441: for (auto __pop_sz = __sample_sz; __first != __last; -2441: ++__first, (void) ++__pop_sz) -2441: { -2441: const auto __k = __d(__g, __param_type{0, __pop_sz}); -2441: if (__k < __n) -2441: __out[__k] = *__first; -2441: } -2441: return __out + __sample_sz; -2441: } -2441: -2441: -2441: template -2441: _OutputIterator -2441: __sample(_ForwardIterator __first, _ForwardIterator __last, -2441: forward_iterator_tag, -2441: _OutputIterator __out, _Cat, -2441: _Size __n, _UniformRandomBitGenerator&& __g) -2441: { -2441: using __distrib_type = uniform_int_distribution<_Size>; -2441: using __param_type = typename __distrib_type::param_type; -2441: using _USize = make_unsigned_t<_Size>; -2441: using _Gen = remove_reference_t<_UniformRandomBitGenerator>; -2441: using __uc_type = common_type_t; -2441: -2441: __distrib_type __d{}; -2441: _Size __unsampled_sz = std::distance(__first, __last); -2441: __n = std::min(__n, __unsampled_sz); -2441: -2441: -2441: -2441: -2441: const __uc_type __urngrange = __g.max() - __g.min(); -2441: if (__urngrange / __uc_type(__unsampled_sz) >= __uc_type(__unsampled_sz)) -2441: -2441: -2441: { -2441: while (__n != 0 && __unsampled_sz >= 2) -2441: { -2441: const pair<_Size, _Size> __p = -2441: __gen_two_uniform_ints(__unsampled_sz, __unsampled_sz - 1, __g); -2441: -2441: --__unsampled_sz; -2441: if (__p.first < __n) -2441: { -2441: *__out++ = *__first; -2441: --__n; -2441: } -2441: -2441: ++__first; -2441: -2441: if (__n == 0) break; -2441: -2441: --__unsampled_sz; -2441: if (__p.second < __n) -2441: { -2441: *__out++ = *__first; -2441: --__n; -2441: } -2441: -2441: ++__first; -2441: } -2441: } -2441: -2441: -2441: -2441: for (; __n != 0; ++__first) -2441: if (__d(__g, __param_type{0, --__unsampled_sz}) < __n) -2441: { -2441: *__out++ = *__first; -2441: --__n; -2441: } -2441: return __out; -2441: } -2441: # 5839 "/usr/include/c++/8/bits/stl_algo.h" 3 -2441: -2441: -2441: } -2441: # 63 "/usr/include/c++/8/algorithm" 2 3 -2441: # 40 "/usr/include/gmpxx.h" 2 3 4 -2441: # 1 "/usr/include/c++/8/string" 1 3 4 -2441: # 36 "/usr/include/c++/8/string" 3 4 -2441: -2441: # 37 "/usr/include/c++/8/string" 3 -2441: -2441: -2441: -2441: # 1 "/usr/include/c++/8/bits/char_traits.h" 1 3 -2441: # 37 "/usr/include/c++/8/bits/char_traits.h" 3 -2441: -2441: # 38 "/usr/include/c++/8/bits/char_traits.h" 3 -2441: -2441: -2441: -2441: # 1 "/usr/include/c++/8/cwchar" 1 3 -2441: # 39 "/usr/include/c++/8/cwchar" 3 -2441: -2441: # 40 "/usr/include/c++/8/cwchar" 3 -2441: # 42 "/usr/include/c++/8/bits/char_traits.h" 2 3 -2441: -2441: -2441: -2441: -2441: -2441: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: # 61 "/usr/include/c++/8/bits/char_traits.h" 3 -2441: template -2441: struct _Char_types -2441: { -2441: typedef unsigned long int_type; -2441: typedef std::streampos pos_type; -2441: typedef std::streamoff off_type; -2441: typedef std::mbstate_t state_type; -2441: }; -2441: # 86 "/usr/include/c++/8/bits/char_traits.h" 3 -2441: template -2441: struct char_traits -2441: { -2441: typedef _CharT char_type; -2441: typedef typename _Char_types<_CharT>::int_type int_type; -2441: typedef typename _Char_types<_CharT>::pos_type pos_type; -2441: typedef typename _Char_types<_CharT>::off_type off_type; -2441: typedef typename _Char_types<_CharT>::state_type state_type; -2441: -2441: static constexpr void -2441: assign(char_type& __c1, const char_type& __c2) -2441: { __c1 = __c2; } -2441: -2441: static constexpr bool -2441: eq(const char_type& __c1, const char_type& __c2) -2441: { return __c1 == __c2; } -2441: -2441: static constexpr bool -2441: lt(const char_type& __c1, const char_type& __c2) -2441: { return __c1 < __c2; } -2441: -2441: static constexpr int -2441: compare(const char_type* __s1, const char_type* __s2, std::size_t __n); -2441: -2441: static constexpr std::size_t -2441: length(const char_type* __s); -2441: -2441: static constexpr const char_type* -2441: find(const char_type* __s, std::size_t __n, const char_type& __a); -2441: -2441: static char_type* -2441: move(char_type* __s1, const char_type* __s2, std::size_t __n); -2441: -2441: static char_type* -2441: copy(char_type* __s1, const char_type* __s2, std::size_t __n); -2441: -2441: static char_type* -2441: assign(char_type* __s, std::size_t __n, char_type __a); -2441: -2441: static constexpr char_type -2441: to_char_type(const int_type& __c) -2441: { return static_cast(__c); } -2441: -2441: static constexpr int_type -2441: to_int_type(const char_type& __c) -2441: { return static_cast(__c); } -2441: -2441: static constexpr bool -2441: eq_int_type(const int_type& __c1, const int_type& __c2) -2441: { return __c1 == __c2; } -2441: -2441: static constexpr int_type -2441: eof() -2441: { return static_cast(-1); } -2441: -2441: static constexpr int_type -2441: not_eof(const int_type& __c) -2441: { return !eq_int_type(__c, eof()) ? __c : to_int_type(char_type()); } -2441: }; -2441: -2441: template -2441: constexpr int -2441: char_traits<_CharT>:: -2441: compare(const char_type* __s1, const char_type* __s2, std::size_t __n) -2441: { -2441: for (std::size_t __i = 0; __i < __n; ++__i) -2441: if (lt(__s1[__i], __s2[__i])) -2441: return -1; -2441: else if (lt(__s2[__i], __s1[__i])) -2441: return 1; -2441: return 0; -2441: } -2441: -2441: template -2441: constexpr std::size_t -2441: char_traits<_CharT>:: -2441: length(const char_type* __p) -2441: { -2441: std::size_t __i = 0; -2441: while (!eq(__p[__i], char_type())) -2441: ++__i; -2441: return __i; -2441: } -2441: -2441: template -2441: constexpr const typename char_traits<_CharT>::char_type* -2441: char_traits<_CharT>:: -2441: find(const char_type* __s, std::size_t __n, const char_type& __a) -2441: { -2441: for (std::size_t __i = 0; __i < __n; ++__i) -2441: if (eq(__s[__i], __a)) -2441: return __s + __i; -2441: return 0; -2441: } -2441: -2441: template -2441: typename char_traits<_CharT>::char_type* -2441: char_traits<_CharT>:: -2441: move(char_type* __s1, const char_type* __s2, std::size_t __n) -2441: { -2441: if (__n == 0) -2441: return __s1; -2441: return static_cast<_CharT*>(__builtin_memmove(__s1, __s2, -2441: __n * sizeof(char_type))); -2441: } -2441: -2441: template -2441: typename char_traits<_CharT>::char_type* -2441: char_traits<_CharT>:: -2441: copy(char_type* __s1, const char_type* __s2, std::size_t __n) -2441: { -2441: -2441: std::copy(__s2, __s2 + __n, __s1); -2441: return __s1; -2441: } -2441: -2441: template -2441: typename char_traits<_CharT>::char_type* -2441: char_traits<_CharT>:: -2441: assign(char_type* __s, std::size_t __n, char_type __a) -2441: { -2441: -2441: std::fill_n(__s, __n, __a); -2441: return __s; -2441: } -2441: -2441: -2441: } -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: # 270 "/usr/include/c++/8/bits/char_traits.h" 3 -2441: template -2441: struct char_traits : public __gnu_cxx::char_traits<_CharT> -2441: { }; -2441: -2441: -2441: -2441: template<> -2441: struct char_traits -2441: { -2441: typedef char char_type; -2441: typedef int int_type; -2441: typedef streampos pos_type; -2441: typedef streamoff off_type; -2441: typedef mbstate_t state_type; -2441: -2441: static void -2441: assign(char_type& __c1, const char_type& __c2) noexcept -2441: { __c1 = __c2; } -2441: -2441: static constexpr bool -2441: eq(const char_type& __c1, const char_type& __c2) noexcept -2441: { return __c1 == __c2; } -2441: -2441: static constexpr bool -2441: lt(const char_type& __c1, const char_type& __c2) noexcept -2441: { -2441: -2441: return (static_cast(__c1) -2441: < static_cast(__c2)); -2441: } -2441: -2441: static int -2441: compare(const char_type* __s1, const char_type* __s2, size_t __n) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: if (__n == 0) -2441: return 0; -2441: return __builtin_memcmp(__s1, __s2, __n); -2441: } -2441: -2441: static size_t -2441: length(const char_type* __s) -2441: { -2441: -2441: -2441: -2441: -2441: return __builtin_strlen(__s); -2441: } -2441: -2441: static const char_type* -2441: find(const char_type* __s, size_t __n, const char_type& __a) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: if (__n == 0) -2441: return 0; -2441: return static_cast(__builtin_memchr(__s, __a, __n)); -2441: } -2441: -2441: static char_type* -2441: move(char_type* __s1, const char_type* __s2, size_t __n) -2441: { -2441: if (__n == 0) -2441: return __s1; -2441: return static_cast(__builtin_memmove(__s1, __s2, __n)); -2441: } -2441: -2441: static char_type* -2441: copy(char_type* __s1, const char_type* __s2, size_t __n) -2441: { -2441: if (__n == 0) -2441: return __s1; -2441: return static_cast(__builtin_memcpy(__s1, __s2, __n)); -2441: } -2441: -2441: static char_type* -2441: assign(char_type* __s, size_t __n, char_type __a) -2441: { -2441: if (__n == 0) -2441: return __s; -2441: return static_cast(__builtin_memset(__s, __a, __n)); -2441: } -2441: -2441: static constexpr char_type -2441: to_char_type(const int_type& __c) noexcept -2441: { return static_cast(__c); } -2441: -2441: -2441: -2441: static constexpr int_type -2441: to_int_type(const char_type& __c) noexcept -2441: { return static_cast(static_cast(__c)); } -2441: -2441: static constexpr bool -2441: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept -2441: { return __c1 == __c2; } -2441: -2441: static constexpr int_type -2441: eof() noexcept -2441: { return static_cast(-1); } -2441: -2441: static constexpr int_type -2441: not_eof(const int_type& __c) noexcept -2441: { return (__c == eof()) ? 0 : __c; } -2441: }; -2441: -2441: -2441: -2441: -2441: template<> -2441: struct char_traits -2441: { -2441: typedef wchar_t char_type; -2441: typedef wint_t int_type; -2441: typedef streamoff off_type; -2441: typedef wstreampos pos_type; -2441: typedef mbstate_t state_type; -2441: -2441: static void -2441: assign(char_type& __c1, const char_type& __c2) noexcept -2441: { __c1 = __c2; } -2441: -2441: static constexpr bool -2441: eq(const char_type& __c1, const char_type& __c2) noexcept -2441: { return __c1 == __c2; } -2441: -2441: static constexpr bool -2441: lt(const char_type& __c1, const char_type& __c2) noexcept -2441: { return __c1 < __c2; } -2441: -2441: static int -2441: compare(const char_type* __s1, const char_type* __s2, size_t __n) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: if (__n == 0) -2441: return 0; -2441: else -2441: return wmemcmp(__s1, __s2, __n); -2441: } -2441: -2441: static size_t -2441: length(const char_type* __s) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: return wcslen(__s); -2441: } -2441: -2441: static const char_type* -2441: find(const char_type* __s, size_t __n, const char_type& __a) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: if (__n == 0) -2441: return 0; -2441: else -2441: return wmemchr(__s, __a, __n); -2441: } -2441: -2441: static char_type* -2441: move(char_type* __s1, const char_type* __s2, size_t __n) -2441: { -2441: if (__n == 0) -2441: return __s1; -2441: return wmemmove(__s1, __s2, __n); -2441: } -2441: -2441: static char_type* -2441: copy(char_type* __s1, const char_type* __s2, size_t __n) -2441: { -2441: if (__n == 0) -2441: return __s1; -2441: return wmemcpy(__s1, __s2, __n); -2441: } -2441: -2441: static char_type* -2441: assign(char_type* __s, size_t __n, char_type __a) -2441: { -2441: if (__n == 0) -2441: return __s; -2441: return wmemset(__s, __a, __n); -2441: } -2441: -2441: static constexpr char_type -2441: to_char_type(const int_type& __c) noexcept -2441: { return char_type(__c); } -2441: -2441: static constexpr int_type -2441: to_int_type(const char_type& __c) noexcept -2441: { return int_type(__c); } -2441: -2441: static constexpr bool -2441: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept -2441: { return __c1 == __c2; } -2441: -2441: static constexpr int_type -2441: eof() noexcept -2441: { return static_cast((0xffffffffu)); } -2441: -2441: static constexpr int_type -2441: not_eof(const int_type& __c) noexcept -2441: { return eq_int_type(__c, eof()) ? 0 : __c; } -2441: }; -2441: -2441: -2441: -2441: } -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/c++/8/cstdint" 1 3 -2441: # 32 "/usr/include/c++/8/cstdint" 3 -2441: -2441: # 33 "/usr/include/c++/8/cstdint" 3 -2441: # 46 "/usr/include/c++/8/cstdint" 3 -2441: namespace std -2441: { -2441: using ::int8_t; -2441: using ::int16_t; -2441: using ::int32_t; -2441: using ::int64_t; -2441: -2441: using ::int_fast8_t; -2441: using ::int_fast16_t; -2441: using ::int_fast32_t; -2441: using ::int_fast64_t; -2441: -2441: using ::int_least8_t; -2441: using ::int_least16_t; -2441: using ::int_least32_t; -2441: using ::int_least64_t; -2441: -2441: using ::intmax_t; -2441: using ::intptr_t; -2441: -2441: using ::uint8_t; -2441: using ::uint16_t; -2441: using ::uint32_t; -2441: using ::uint64_t; -2441: -2441: using ::uint_fast8_t; -2441: using ::uint_fast16_t; -2441: using ::uint_fast32_t; -2441: using ::uint_fast64_t; -2441: -2441: using ::uint_least8_t; -2441: using ::uint_least16_t; -2441: using ::uint_least32_t; -2441: using ::uint_least64_t; -2441: -2441: using ::uintmax_t; -2441: using ::uintptr_t; -2441: } -2441: # 504 "/usr/include/c++/8/bits/char_traits.h" 2 3 -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: template<> -2441: struct char_traits -2441: { -2441: typedef char16_t char_type; -2441: typedef uint_least16_t int_type; -2441: typedef streamoff off_type; -2441: typedef u16streampos pos_type; -2441: typedef mbstate_t state_type; -2441: -2441: static void -2441: assign(char_type& __c1, const char_type& __c2) noexcept -2441: { __c1 = __c2; } -2441: -2441: static constexpr bool -2441: eq(const char_type& __c1, const char_type& __c2) noexcept -2441: { return __c1 == __c2; } -2441: -2441: static constexpr bool -2441: lt(const char_type& __c1, const char_type& __c2) noexcept -2441: { return __c1 < __c2; } -2441: -2441: static int -2441: compare(const char_type* __s1, const char_type* __s2, size_t __n) -2441: { -2441: for (size_t __i = 0; __i < __n; ++__i) -2441: if (lt(__s1[__i], __s2[__i])) -2441: return -1; -2441: else if (lt(__s2[__i], __s1[__i])) -2441: return 1; -2441: return 0; -2441: } -2441: -2441: static size_t -2441: length(const char_type* __s) -2441: { -2441: size_t __i = 0; -2441: while (!eq(__s[__i], char_type())) -2441: ++__i; -2441: return __i; -2441: } -2441: -2441: static const char_type* -2441: find(const char_type* __s, size_t __n, const char_type& __a) -2441: { -2441: for (size_t __i = 0; __i < __n; ++__i) -2441: if (eq(__s[__i], __a)) -2441: return __s + __i; -2441: return 0; -2441: } -2441: -2441: static char_type* -2441: move(char_type* __s1, const char_type* __s2, size_t __n) -2441: { -2441: if (__n == 0) -2441: return __s1; -2441: return (static_cast -2441: (__builtin_memmove(__s1, __s2, __n * sizeof(char_type)))); -2441: } -2441: -2441: static char_type* -2441: copy(char_type* __s1, const char_type* __s2, size_t __n) -2441: { -2441: if (__n == 0) -2441: return __s1; -2441: return (static_cast -2441: (__builtin_memcpy(__s1, __s2, __n * sizeof(char_type)))); -2441: } -2441: -2441: static char_type* -2441: assign(char_type* __s, size_t __n, char_type __a) -2441: { -2441: for (size_t __i = 0; __i < __n; ++__i) -2441: assign(__s[__i], __a); -2441: return __s; -2441: } -2441: -2441: static constexpr char_type -2441: to_char_type(const int_type& __c) noexcept -2441: { return char_type(__c); } -2441: -2441: static constexpr int_type -2441: to_int_type(const char_type& __c) noexcept -2441: { return __c == eof() ? int_type(0xfffd) : int_type(__c); } -2441: -2441: static constexpr bool -2441: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept -2441: { return __c1 == __c2; } -2441: -2441: static constexpr int_type -2441: eof() noexcept -2441: { return static_cast(-1); } -2441: -2441: static constexpr int_type -2441: not_eof(const int_type& __c) noexcept -2441: { return eq_int_type(__c, eof()) ? 0 : __c; } -2441: }; -2441: -2441: template<> -2441: struct char_traits -2441: { -2441: typedef char32_t char_type; -2441: typedef uint_least32_t int_type; -2441: typedef streamoff off_type; -2441: typedef u32streampos pos_type; -2441: typedef mbstate_t state_type; -2441: -2441: static void -2441: assign(char_type& __c1, const char_type& __c2) noexcept -2441: { __c1 = __c2; } -2441: -2441: static constexpr bool -2441: eq(const char_type& __c1, const char_type& __c2) noexcept -2441: { return __c1 == __c2; } -2441: -2441: static constexpr bool -2441: lt(const char_type& __c1, const char_type& __c2) noexcept -2441: { return __c1 < __c2; } -2441: -2441: static int -2441: compare(const char_type* __s1, const char_type* __s2, size_t __n) -2441: { -2441: for (size_t __i = 0; __i < __n; ++__i) -2441: if (lt(__s1[__i], __s2[__i])) -2441: return -1; -2441: else if (lt(__s2[__i], __s1[__i])) -2441: return 1; -2441: return 0; -2441: } -2441: -2441: static size_t -2441: length(const char_type* __s) -2441: { -2441: size_t __i = 0; -2441: while (!eq(__s[__i], char_type())) -2441: ++__i; -2441: return __i; -2441: } -2441: -2441: static const char_type* -2441: find(const char_type* __s, size_t __n, const char_type& __a) -2441: { -2441: for (size_t __i = 0; __i < __n; ++__i) -2441: if (eq(__s[__i], __a)) -2441: return __s + __i; -2441: return 0; -2441: } -2441: -2441: static char_type* -2441: move(char_type* __s1, const char_type* __s2, size_t __n) -2441: { -2441: if (__n == 0) -2441: return __s1; -2441: return (static_cast -2441: (__builtin_memmove(__s1, __s2, __n * sizeof(char_type)))); -2441: } -2441: -2441: static char_type* -2441: copy(char_type* __s1, const char_type* __s2, size_t __n) -2441: { -2441: if (__n == 0) -2441: return __s1; -2441: return (static_cast -2441: (__builtin_memcpy(__s1, __s2, __n * sizeof(char_type)))); -2441: } -2441: -2441: static char_type* -2441: assign(char_type* __s, size_t __n, char_type __a) -2441: { -2441: for (size_t __i = 0; __i < __n; ++__i) -2441: assign(__s[__i], __a); -2441: return __s; -2441: } -2441: -2441: static constexpr char_type -2441: to_char_type(const int_type& __c) noexcept -2441: { return char_type(__c); } -2441: -2441: static constexpr int_type -2441: to_int_type(const char_type& __c) noexcept -2441: { return int_type(__c); } -2441: -2441: static constexpr bool -2441: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept -2441: { return __c1 == __c2; } -2441: -2441: static constexpr int_type -2441: eof() noexcept -2441: { return static_cast(-1); } -2441: -2441: static constexpr int_type -2441: not_eof(const int_type& __c) noexcept -2441: { return eq_int_type(__c, eof()) ? 0 : __c; } -2441: }; -2441: -2441: -2441: } -2441: # 41 "/usr/include/c++/8/string" 2 3 -2441: # 1 "/usr/include/c++/8/bits/allocator.h" 1 3 -2441: # 46 "/usr/include/c++/8/bits/allocator.h" 3 -2441: # 1 "/usr/include/i386-linux-gnu/c++/8/bits/c++allocator.h" 1 3 -2441: # 33 "/usr/include/i386-linux-gnu/c++/8/bits/c++allocator.h" 3 -2441: # 1 "/usr/include/c++/8/ext/new_allocator.h" 1 3 -2441: # 40 "/usr/include/c++/8/ext/new_allocator.h" 3 -2441: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: using std::size_t; -2441: using std::ptrdiff_t; -2441: # 57 "/usr/include/c++/8/ext/new_allocator.h" 3 -2441: template -2441: class new_allocator -2441: { -2441: public: -2441: typedef size_t size_type; -2441: typedef ptrdiff_t difference_type; -2441: typedef _Tp* pointer; -2441: typedef const _Tp* const_pointer; -2441: typedef _Tp& reference; -2441: typedef const _Tp& const_reference; -2441: typedef _Tp value_type; -2441: -2441: template -2441: struct rebind -2441: { typedef new_allocator<_Tp1> other; }; -2441: -2441: -2441: -2441: -2441: typedef std::true_type propagate_on_container_move_assignment; -2441: -2441: -2441: new_allocator() noexcept { } -2441: -2441: new_allocator(const new_allocator&) noexcept { } -2441: -2441: template -2441: new_allocator(const new_allocator<_Tp1>&) noexcept { } -2441: -2441: ~new_allocator() noexcept { } -2441: -2441: pointer -2441: address(reference __x) const noexcept -2441: { return std::__addressof(__x); } -2441: -2441: const_pointer -2441: address(const_reference __x) const noexcept -2441: { return std::__addressof(__x); } -2441: -2441: -2441: -2441: pointer -2441: allocate(size_type __n, const void* = static_cast(0)) -2441: { -2441: if (__n > this->max_size()) -2441: std::__throw_bad_alloc(); -2441: # 111 "/usr/include/c++/8/ext/new_allocator.h" 3 -2441: return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp))); -2441: } -2441: -2441: -2441: void -2441: deallocate(pointer __p, size_type) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: ::operator delete(__p); -2441: } -2441: -2441: size_type -2441: max_size() const noexcept -2441: { return size_t(-1) / sizeof(_Tp); } -2441: -2441: -2441: template -2441: void -2441: construct(_Up* __p, _Args&&... __args) -2441: { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); } -2441: -2441: template -2441: void -2441: destroy(_Up* __p) { __p->~_Up(); } -2441: # 151 "/usr/include/c++/8/ext/new_allocator.h" 3 -2441: }; -2441: -2441: template -2441: inline bool -2441: operator==(const new_allocator<_Tp>&, const new_allocator<_Tp>&) -2441: { return true; } -2441: -2441: template -2441: inline bool -2441: operator!=(const new_allocator<_Tp>&, const new_allocator<_Tp>&) -2441: { return false; } -2441: -2441: -2441: } -2441: # 34 "/usr/include/i386-linux-gnu/c++/8/bits/c++allocator.h" 2 3 -2441: -2441: -2441: namespace std -2441: { -2441: # 47 "/usr/include/i386-linux-gnu/c++/8/bits/c++allocator.h" 3 -2441: template -2441: using __allocator_base = __gnu_cxx::new_allocator<_Tp>; -2441: } -2441: # 47 "/usr/include/c++/8/bits/allocator.h" 2 3 -2441: # 57 "/usr/include/c++/8/bits/allocator.h" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template<> -2441: class allocator -2441: { -2441: public: -2441: typedef size_t size_type; -2441: typedef ptrdiff_t difference_type; -2441: typedef void* pointer; -2441: typedef const void* const_pointer; -2441: typedef void value_type; -2441: -2441: template -2441: struct rebind -2441: { typedef allocator<_Tp1> other; }; -2441: -2441: -2441: -2441: -2441: typedef true_type propagate_on_container_move_assignment; -2441: -2441: typedef true_type is_always_equal; -2441: -2441: template -2441: void -2441: construct(_Up* __p, _Args&&... __args) -2441: { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); } -2441: -2441: template -2441: void -2441: destroy(_Up* __p) { __p->~_Up(); } -2441: -2441: }; -2441: # 107 "/usr/include/c++/8/bits/allocator.h" 3 -2441: template -2441: class allocator : public __allocator_base<_Tp> -2441: { -2441: public: -2441: typedef size_t size_type; -2441: typedef ptrdiff_t difference_type; -2441: typedef _Tp* pointer; -2441: typedef const _Tp* const_pointer; -2441: typedef _Tp& reference; -2441: typedef const _Tp& const_reference; -2441: typedef _Tp value_type; -2441: -2441: template -2441: struct rebind -2441: { typedef allocator<_Tp1> other; }; -2441: -2441: -2441: -2441: -2441: typedef true_type propagate_on_container_move_assignment; -2441: -2441: typedef true_type is_always_equal; -2441: -2441: -2441: allocator() throw() { } -2441: -2441: allocator(const allocator& __a) throw() -2441: : __allocator_base<_Tp>(__a) { } -2441: -2441: template -2441: allocator(const allocator<_Tp1>&) throw() { } -2441: -2441: ~allocator() throw() { } -2441: -2441: -2441: }; -2441: -2441: template -2441: inline bool -2441: operator==(const allocator<_T1>&, const allocator<_T2>&) -2441: noexcept -2441: { return true; } -2441: -2441: template -2441: inline bool -2441: operator==(const allocator<_Tp>&, const allocator<_Tp>&) -2441: noexcept -2441: { return true; } -2441: -2441: template -2441: inline bool -2441: operator!=(const allocator<_T1>&, const allocator<_T2>&) -2441: noexcept -2441: { return false; } -2441: -2441: template -2441: inline bool -2441: operator!=(const allocator<_Tp>&, const allocator<_Tp>&) -2441: noexcept -2441: { return false; } -2441: -2441: -2441: -2441: template -2441: class allocator -2441: { -2441: public: -2441: typedef _Tp value_type; -2441: template allocator(const allocator<_Up>&) { } -2441: }; -2441: -2441: template -2441: class allocator -2441: { -2441: public: -2441: typedef _Tp value_type; -2441: template allocator(const allocator<_Up>&) { } -2441: }; -2441: -2441: template -2441: class allocator -2441: { -2441: public: -2441: typedef _Tp value_type; -2441: template allocator(const allocator<_Up>&) { } -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern template class allocator; -2441: extern template class allocator; -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct __alloc_swap -2441: { static void _S_do_it(_Alloc&, _Alloc&) noexcept { } }; -2441: -2441: template -2441: struct __alloc_swap<_Alloc, false> -2441: { -2441: static void -2441: _S_do_it(_Alloc& __one, _Alloc& __two) noexcept -2441: { -2441: -2441: if (__one != __two) -2441: swap(__one, __two); -2441: } -2441: }; -2441: -2441: -2441: template -2441: struct __alloc_neq -2441: { -2441: static bool -2441: _S_do_it(const _Alloc&, const _Alloc&) -2441: { return false; } -2441: }; -2441: -2441: template -2441: struct __alloc_neq<_Alloc, false> -2441: { -2441: static bool -2441: _S_do_it(const _Alloc& __one, const _Alloc& __two) -2441: { return __one != __two; } -2441: }; -2441: -2441: -2441: template, -2441: is_nothrow_move_constructible>::value> -2441: struct __shrink_to_fit_aux -2441: { static bool _S_do_it(_Tp&) noexcept { return false; } }; -2441: -2441: template -2441: struct __shrink_to_fit_aux<_Tp, true> -2441: { -2441: static bool -2441: _S_do_it(_Tp& __c) noexcept -2441: { -2441: -2441: try -2441: { -2441: _Tp(__make_move_if_noexcept_iterator(__c.begin()), -2441: __make_move_if_noexcept_iterator(__c.end()), -2441: __c.get_allocator()).swap(__c); -2441: return true; -2441: } -2441: catch(...) -2441: { return false; } -2441: -2441: -2441: -2441: } -2441: }; -2441: -2441: -2441: -2441: } -2441: # 42 "/usr/include/c++/8/string" 2 3 -2441: -2441: # 1 "/usr/include/c++/8/bits/localefwd.h" 1 3 -2441: # 37 "/usr/include/c++/8/bits/localefwd.h" 3 -2441: -2441: # 38 "/usr/include/c++/8/bits/localefwd.h" 3 -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/c++/8/bits/c++locale.h" 1 3 -2441: # 39 "/usr/include/i386-linux-gnu/c++/8/bits/c++locale.h" 3 -2441: -2441: # 40 "/usr/include/i386-linux-gnu/c++/8/bits/c++locale.h" 3 -2441: -2441: # 1 "/usr/include/c++/8/clocale" 1 3 -2441: # 39 "/usr/include/c++/8/clocale" 3 -2441: -2441: # 40 "/usr/include/c++/8/clocale" 3 -2441: -2441: -2441: # 1 "/usr/include/locale.h" 1 3 4 -2441: # 28 "/usr/include/locale.h" 3 4 -2441: # 1 "/usr/lib/gcc/i686-linux-gnu/8/include/stddef.h" 1 3 4 -2441: # 29 "/usr/include/locale.h" 2 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/locale.h" 1 3 4 -2441: # 30 "/usr/include/locale.h" 2 3 4 -2441: -2441: extern "C" { -2441: # 51 "/usr/include/locale.h" 3 4 -2441: struct lconv -2441: { -2441: -2441: -2441: char *decimal_point; -2441: char *thousands_sep; -2441: -2441: -2441: -2441: -2441: -2441: char *grouping; -2441: -2441: -2441: -2441: -2441: -2441: char *int_curr_symbol; -2441: char *currency_symbol; -2441: char *mon_decimal_point; -2441: char *mon_thousands_sep; -2441: char *mon_grouping; -2441: char *positive_sign; -2441: char *negative_sign; -2441: char int_frac_digits; -2441: char frac_digits; -2441: -2441: char p_cs_precedes; -2441: -2441: char p_sep_by_space; -2441: -2441: char n_cs_precedes; -2441: -2441: char n_sep_by_space; -2441: -2441: -2441: -2441: -2441: -2441: -2441: char p_sign_posn; -2441: char n_sign_posn; -2441: -2441: -2441: char int_p_cs_precedes; -2441: -2441: char int_p_sep_by_space; -2441: -2441: char int_n_cs_precedes; -2441: -2441: char int_n_sep_by_space; -2441: -2441: -2441: -2441: -2441: -2441: -2441: char int_p_sign_posn; -2441: char int_n_sign_posn; -2441: # 118 "/usr/include/locale.h" 3 4 -2441: }; -2441: -2441: -2441: -2441: extern char *setlocale (int __category, const char *__locale) throw (); -2441: -2441: -2441: extern struct lconv *localeconv (void) throw (); -2441: # 141 "/usr/include/locale.h" 3 4 -2441: extern locale_t newlocale (int __category_mask, const char *__locale, -2441: locale_t __base) throw (); -2441: # 176 "/usr/include/locale.h" 3 4 -2441: extern locale_t duplocale (locale_t __dataset) throw (); -2441: -2441: -2441: -2441: extern void freelocale (locale_t __dataset) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern locale_t uselocale (locale_t __dataset) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: } -2441: # 43 "/usr/include/c++/8/clocale" 2 3 -2441: # 51 "/usr/include/c++/8/clocale" 3 -2441: namespace std -2441: { -2441: using ::lconv; -2441: using ::setlocale; -2441: using ::localeconv; -2441: } -2441: # 42 "/usr/include/i386-linux-gnu/c++/8/bits/c++locale.h" 2 3 -2441: -2441: -2441: -2441: -2441: -2441: -2441: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: extern "C" __typeof(uselocale) __uselocale; -2441: -2441: -2441: } -2441: -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: typedef __locale_t __c_locale; -2441: -2441: -2441: -2441: -2441: -2441: inline int -2441: __convert_from_v(const __c_locale& __cloc __attribute__ ((__unused__)), -2441: char* __out, -2441: const int __size __attribute__ ((__unused__)), -2441: const char* __fmt, ...) -2441: { -2441: -2441: __c_locale __old = __gnu_cxx::__uselocale(__cloc); -2441: # 88 "/usr/include/i386-linux-gnu/c++/8/bits/c++locale.h" 3 -2441: __builtin_va_list __args; -2441: __builtin_va_start(__args, __fmt); -2441: -2441: -2441: const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); -2441: -2441: -2441: -2441: -2441: __builtin_va_end(__args); -2441: -2441: -2441: __gnu_cxx::__uselocale(__old); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: return __ret; -2441: } -2441: -2441: -2441: } -2441: # 41 "/usr/include/c++/8/bits/localefwd.h" 2 3 -2441: -2441: # 1 "/usr/include/c++/8/cctype" 1 3 -2441: # 39 "/usr/include/c++/8/cctype" 3 -2441: -2441: # 40 "/usr/include/c++/8/cctype" 3 -2441: -2441: -2441: # 1 "/usr/include/ctype.h" 1 3 4 -2441: # 28 "/usr/include/ctype.h" 3 4 -2441: extern "C" { -2441: # 46 "/usr/include/ctype.h" 3 4 -2441: enum -2441: { -2441: _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)), -2441: _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)), -2441: _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)), -2441: _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)), -2441: _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)), -2441: _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)), -2441: _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)), -2441: _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)), -2441: _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)), -2441: _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)), -2441: _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)), -2441: _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8)) -2441: }; -2441: # 79 "/usr/include/ctype.h" 3 4 -2441: extern const unsigned short int **__ctype_b_loc (void) -2441: throw () __attribute__ ((__const__)); -2441: extern const __int32_t **__ctype_tolower_loc (void) -2441: throw () __attribute__ ((__const__)); -2441: extern const __int32_t **__ctype_toupper_loc (void) -2441: throw () __attribute__ ((__const__)); -2441: # 108 "/usr/include/ctype.h" 3 4 -2441: extern int isalnum (int) throw (); -2441: extern int isalpha (int) throw (); -2441: extern int iscntrl (int) throw (); -2441: extern int isdigit (int) throw (); -2441: extern int islower (int) throw (); -2441: extern int isgraph (int) throw (); -2441: extern int isprint (int) throw (); -2441: extern int ispunct (int) throw (); -2441: extern int isspace (int) throw (); -2441: extern int isupper (int) throw (); -2441: extern int isxdigit (int) throw (); -2441: -2441: -2441: -2441: extern int tolower (int __c) throw (); -2441: -2441: -2441: extern int toupper (int __c) throw (); -2441: -2441: -2441: -2441: -2441: extern int isblank (int) throw (); -2441: -2441: -2441: -2441: -2441: extern int isctype (int __c, int __mask) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int isascii (int __c) throw (); -2441: -2441: -2441: -2441: extern int toascii (int __c) throw (); -2441: -2441: -2441: -2441: extern int _toupper (int) throw (); -2441: extern int _tolower (int) throw (); -2441: # 251 "/usr/include/ctype.h" 3 4 -2441: extern int isalnum_l (int, locale_t) throw (); -2441: extern int isalpha_l (int, locale_t) throw (); -2441: extern int iscntrl_l (int, locale_t) throw (); -2441: extern int isdigit_l (int, locale_t) throw (); -2441: extern int islower_l (int, locale_t) throw (); -2441: extern int isgraph_l (int, locale_t) throw (); -2441: extern int isprint_l (int, locale_t) throw (); -2441: extern int ispunct_l (int, locale_t) throw (); -2441: extern int isspace_l (int, locale_t) throw (); -2441: extern int isupper_l (int, locale_t) throw (); -2441: extern int isxdigit_l (int, locale_t) throw (); -2441: -2441: extern int isblank_l (int, locale_t) throw (); -2441: -2441: -2441: -2441: extern int __tolower_l (int __c, locale_t __l) throw (); -2441: extern int tolower_l (int __c, locale_t __l) throw (); -2441: -2441: -2441: extern int __toupper_l (int __c, locale_t __l) throw (); -2441: extern int toupper_l (int __c, locale_t __l) throw (); -2441: # 327 "/usr/include/ctype.h" 3 4 -2441: } -2441: # 43 "/usr/include/c++/8/cctype" 2 3 -2441: # 62 "/usr/include/c++/8/cctype" 3 -2441: namespace std -2441: { -2441: using ::isalnum; -2441: using ::isalpha; -2441: using ::iscntrl; -2441: using ::isdigit; -2441: using ::isgraph; -2441: using ::islower; -2441: using ::isprint; -2441: using ::ispunct; -2441: using ::isspace; -2441: using ::isupper; -2441: using ::isxdigit; -2441: using ::tolower; -2441: using ::toupper; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: namespace std -2441: { -2441: using ::isblank; -2441: } -2441: # 43 "/usr/include/c++/8/bits/localefwd.h" 2 3 -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: # 55 "/usr/include/c++/8/bits/localefwd.h" 3 -2441: class locale; -2441: -2441: template -2441: bool -2441: has_facet(const locale&) throw(); -2441: -2441: template -2441: const _Facet& -2441: use_facet(const locale&); -2441: -2441: -2441: template -2441: bool -2441: isspace(_CharT, const locale&); -2441: -2441: template -2441: bool -2441: isprint(_CharT, const locale&); -2441: -2441: template -2441: bool -2441: iscntrl(_CharT, const locale&); -2441: -2441: template -2441: bool -2441: isupper(_CharT, const locale&); -2441: -2441: template -2441: bool -2441: islower(_CharT, const locale&); -2441: -2441: template -2441: bool -2441: isalpha(_CharT, const locale&); -2441: -2441: template -2441: bool -2441: isdigit(_CharT, const locale&); -2441: -2441: template -2441: bool -2441: ispunct(_CharT, const locale&); -2441: -2441: template -2441: bool -2441: isxdigit(_CharT, const locale&); -2441: -2441: template -2441: bool -2441: isalnum(_CharT, const locale&); -2441: -2441: template -2441: bool -2441: isgraph(_CharT, const locale&); -2441: -2441: -2441: template -2441: bool -2441: isblank(_CharT, const locale&); -2441: -2441: -2441: template -2441: _CharT -2441: toupper(_CharT, const locale&); -2441: -2441: template -2441: _CharT -2441: tolower(_CharT, const locale&); -2441: -2441: -2441: class ctype_base; -2441: template -2441: class ctype; -2441: template<> class ctype; -2441: -2441: template<> class ctype; -2441: -2441: template -2441: class ctype_byname; -2441: -2441: -2441: class codecvt_base; -2441: template -2441: class codecvt; -2441: template<> class codecvt; -2441: -2441: template<> class codecvt; -2441: -2441: template -2441: class codecvt_byname; -2441: -2441: -2441: -2441: template > -2441: class num_get; -2441: template > -2441: class num_put; -2441: -2441: namespace __cxx11 { -2441: template class numpunct; -2441: template class numpunct_byname; -2441: } -2441: -2441: namespace __cxx11 { -2441: -2441: template -2441: class collate; -2441: template -2441: class collate_byname; -2441: } -2441: -2441: -2441: class time_base; -2441: namespace __cxx11 { -2441: template > -2441: class time_get; -2441: template > -2441: class time_get_byname; -2441: } -2441: template > -2441: class time_put; -2441: template > -2441: class time_put_byname; -2441: -2441: -2441: class money_base; -2441: namespace __cxx11 { -2441: template > -2441: class money_get; -2441: template > -2441: class money_put; -2441: } -2441: namespace __cxx11 { -2441: template -2441: class moneypunct; -2441: template -2441: class moneypunct_byname; -2441: } -2441: -2441: -2441: class messages_base; -2441: namespace __cxx11 { -2441: template -2441: class messages; -2441: template -2441: class messages_byname; -2441: } -2441: -2441: -2441: } -2441: # 44 "/usr/include/c++/8/string" 2 3 -2441: # 1 "/usr/include/c++/8/bits/ostream_insert.h" 1 3 -2441: # 33 "/usr/include/c++/8/bits/ostream_insert.h" 3 -2441: -2441: # 34 "/usr/include/c++/8/bits/ostream_insert.h" 3 -2441: -2441: -2441: # 1 "/usr/include/c++/8/bits/cxxabi_forced.h" 1 3 -2441: # 34 "/usr/include/c++/8/bits/cxxabi_forced.h" 3 -2441: -2441: # 35 "/usr/include/c++/8/bits/cxxabi_forced.h" 3 -2441: -2441: #pragma GCC visibility push(default) -2441: -2441: -2441: namespace __cxxabiv1 -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: class __forced_unwind -2441: { -2441: virtual ~__forced_unwind() throw(); -2441: -2441: -2441: virtual void __pure_dummy() = 0; -2441: }; -2441: } -2441: -2441: -2441: #pragma GCC visibility pop -2441: # 37 "/usr/include/c++/8/bits/ostream_insert.h" 2 3 -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: template -2441: inline void -2441: __ostream_write(basic_ostream<_CharT, _Traits>& __out, -2441: const _CharT* __s, streamsize __n) -2441: { -2441: typedef basic_ostream<_CharT, _Traits> __ostream_type; -2441: typedef typename __ostream_type::ios_base __ios_base; -2441: -2441: const streamsize __put = __out.rdbuf()->sputn(__s, __n); -2441: if (__put != __n) -2441: __out.setstate(__ios_base::badbit); -2441: } -2441: -2441: template -2441: inline void -2441: __ostream_fill(basic_ostream<_CharT, _Traits>& __out, streamsize __n) -2441: { -2441: typedef basic_ostream<_CharT, _Traits> __ostream_type; -2441: typedef typename __ostream_type::ios_base __ios_base; -2441: -2441: const _CharT __c = __out.fill(); -2441: for (; __n > 0; --__n) -2441: { -2441: const typename _Traits::int_type __put = __out.rdbuf()->sputc(__c); -2441: if (_Traits::eq_int_type(__put, _Traits::eof())) -2441: { -2441: __out.setstate(__ios_base::badbit); -2441: break; -2441: } -2441: } -2441: } -2441: -2441: template -2441: basic_ostream<_CharT, _Traits>& -2441: __ostream_insert(basic_ostream<_CharT, _Traits>& __out, -2441: const _CharT* __s, streamsize __n) -2441: { -2441: typedef basic_ostream<_CharT, _Traits> __ostream_type; -2441: typedef typename __ostream_type::ios_base __ios_base; -2441: -2441: typename __ostream_type::sentry __cerb(__out); -2441: if (__cerb) -2441: { -2441: try -2441: { -2441: const streamsize __w = __out.width(); -2441: if (__w > __n) -2441: { -2441: const bool __left = ((__out.flags() -2441: & __ios_base::adjustfield) -2441: == __ios_base::left); -2441: if (!__left) -2441: __ostream_fill(__out, __w - __n); -2441: if (__out.good()) -2441: __ostream_write(__out, __s, __n); -2441: if (__left && __out.good()) -2441: __ostream_fill(__out, __w - __n); -2441: } -2441: else -2441: __ostream_write(__out, __s, __n); -2441: __out.width(0); -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: __out._M_setstate(__ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { __out._M_setstate(__ios_base::badbit); } -2441: } -2441: return __out; -2441: } -2441: -2441: -2441: -2441: -2441: extern template ostream& __ostream_insert(ostream&, const char*, streamsize); -2441: -2441: -2441: extern template wostream& __ostream_insert(wostream&, const wchar_t*, -2441: streamsize); -2441: -2441: -2441: -2441: -2441: } -2441: # 45 "/usr/include/c++/8/string" 2 3 -2441: -2441: -2441: -2441: # 1 "/usr/include/c++/8/bits/stl_function.h" 1 3 -2441: # 63 "/usr/include/c++/8/bits/stl_function.h" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: # 104 "/usr/include/c++/8/bits/stl_function.h" 3 -2441: template -2441: struct unary_function -2441: { -2441: -2441: typedef _Arg argument_type; -2441: -2441: -2441: typedef _Result result_type; -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: struct binary_function -2441: { -2441: -2441: typedef _Arg1 first_argument_type; -2441: -2441: -2441: typedef _Arg2 second_argument_type; -2441: -2441: -2441: typedef _Result result_type; -2441: }; -2441: # 144 "/usr/include/c++/8/bits/stl_function.h" 3 -2441: struct __is_transparent; -2441: -2441: template -2441: struct plus; -2441: -2441: template -2441: struct minus; -2441: -2441: template -2441: struct multiplies; -2441: -2441: template -2441: struct divides; -2441: -2441: template -2441: struct modulus; -2441: -2441: template -2441: struct negate; -2441: -2441: -2441: -2441: template -2441: struct plus : public binary_function<_Tp, _Tp, _Tp> -2441: { -2441: constexpr -2441: _Tp -2441: operator()(const _Tp& __x, const _Tp& __y) const -2441: { return __x + __y; } -2441: }; -2441: -2441: -2441: template -2441: struct minus : public binary_function<_Tp, _Tp, _Tp> -2441: { -2441: constexpr -2441: _Tp -2441: operator()(const _Tp& __x, const _Tp& __y) const -2441: { return __x - __y; } -2441: }; -2441: -2441: -2441: template -2441: struct multiplies : public binary_function<_Tp, _Tp, _Tp> -2441: { -2441: constexpr -2441: _Tp -2441: operator()(const _Tp& __x, const _Tp& __y) const -2441: { return __x * __y; } -2441: }; -2441: -2441: -2441: template -2441: struct divides : public binary_function<_Tp, _Tp, _Tp> -2441: { -2441: constexpr -2441: _Tp -2441: operator()(const _Tp& __x, const _Tp& __y) const -2441: { return __x / __y; } -2441: }; -2441: -2441: -2441: template -2441: struct modulus : public binary_function<_Tp, _Tp, _Tp> -2441: { -2441: constexpr -2441: _Tp -2441: operator()(const _Tp& __x, const _Tp& __y) const -2441: { return __x % __y; } -2441: }; -2441: -2441: -2441: template -2441: struct negate : public unary_function<_Tp, _Tp> -2441: { -2441: constexpr -2441: _Tp -2441: operator()(const _Tp& __x) const -2441: { return -__x; } -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: template<> -2441: struct plus -2441: { -2441: template -2441: constexpr -2441: auto -2441: operator()(_Tp&& __t, _Up&& __u) const -2441: noexcept(noexcept(std::forward<_Tp>(__t) + std::forward<_Up>(__u))) -2441: -> decltype(std::forward<_Tp>(__t) + std::forward<_Up>(__u)) -2441: { return std::forward<_Tp>(__t) + std::forward<_Up>(__u); } -2441: -2441: typedef __is_transparent is_transparent; -2441: }; -2441: -2441: -2441: template<> -2441: struct minus -2441: { -2441: template -2441: constexpr -2441: auto -2441: operator()(_Tp&& __t, _Up&& __u) const -2441: noexcept(noexcept(std::forward<_Tp>(__t) - std::forward<_Up>(__u))) -2441: -> decltype(std::forward<_Tp>(__t) - std::forward<_Up>(__u)) -2441: { return std::forward<_Tp>(__t) - std::forward<_Up>(__u); } -2441: -2441: typedef __is_transparent is_transparent; -2441: }; -2441: -2441: -2441: template<> -2441: struct multiplies -2441: { -2441: template -2441: constexpr -2441: auto -2441: operator()(_Tp&& __t, _Up&& __u) const -2441: noexcept(noexcept(std::forward<_Tp>(__t) * std::forward<_Up>(__u))) -2441: -> decltype(std::forward<_Tp>(__t) * std::forward<_Up>(__u)) -2441: { return std::forward<_Tp>(__t) * std::forward<_Up>(__u); } -2441: -2441: typedef __is_transparent is_transparent; -2441: }; -2441: -2441: -2441: template<> -2441: struct divides -2441: { -2441: template -2441: constexpr -2441: auto -2441: operator()(_Tp&& __t, _Up&& __u) const -2441: noexcept(noexcept(std::forward<_Tp>(__t) / std::forward<_Up>(__u))) -2441: -> decltype(std::forward<_Tp>(__t) / std::forward<_Up>(__u)) -2441: { return std::forward<_Tp>(__t) / std::forward<_Up>(__u); } -2441: -2441: typedef __is_transparent is_transparent; -2441: }; -2441: -2441: -2441: template<> -2441: struct modulus -2441: { -2441: template -2441: constexpr -2441: auto -2441: operator()(_Tp&& __t, _Up&& __u) const -2441: noexcept(noexcept(std::forward<_Tp>(__t) % std::forward<_Up>(__u))) -2441: -> decltype(std::forward<_Tp>(__t) % std::forward<_Up>(__u)) -2441: { return std::forward<_Tp>(__t) % std::forward<_Up>(__u); } -2441: -2441: typedef __is_transparent is_transparent; -2441: }; -2441: -2441: -2441: template<> -2441: struct negate -2441: { -2441: template -2441: constexpr -2441: auto -2441: operator()(_Tp&& __t) const -2441: noexcept(noexcept(-std::forward<_Tp>(__t))) -2441: -> decltype(-std::forward<_Tp>(__t)) -2441: { return -std::forward<_Tp>(__t); } -2441: -2441: typedef __is_transparent is_transparent; -2441: }; -2441: # 330 "/usr/include/c++/8/bits/stl_function.h" 3 -2441: template -2441: struct equal_to; -2441: -2441: template -2441: struct not_equal_to; -2441: -2441: template -2441: struct greater; -2441: -2441: template -2441: struct less; -2441: -2441: template -2441: struct greater_equal; -2441: -2441: template -2441: struct less_equal; -2441: -2441: -2441: -2441: template -2441: struct equal_to : public binary_function<_Tp, _Tp, bool> -2441: { -2441: constexpr -2441: bool -2441: operator()(const _Tp& __x, const _Tp& __y) const -2441: { return __x == __y; } -2441: }; -2441: -2441: -2441: template -2441: struct not_equal_to : public binary_function<_Tp, _Tp, bool> -2441: { -2441: constexpr -2441: bool -2441: operator()(const _Tp& __x, const _Tp& __y) const -2441: { return __x != __y; } -2441: }; -2441: -2441: -2441: template -2441: struct greater : public binary_function<_Tp, _Tp, bool> -2441: { -2441: constexpr -2441: bool -2441: operator()(const _Tp& __x, const _Tp& __y) const -2441: { return __x > __y; } -2441: }; -2441: -2441: -2441: template -2441: struct less : public binary_function<_Tp, _Tp, bool> -2441: { -2441: constexpr -2441: bool -2441: operator()(const _Tp& __x, const _Tp& __y) const -2441: { return __x < __y; } -2441: }; -2441: -2441: -2441: template -2441: struct greater_equal : public binary_function<_Tp, _Tp, bool> -2441: { -2441: constexpr -2441: bool -2441: operator()(const _Tp& __x, const _Tp& __y) const -2441: { return __x >= __y; } -2441: }; -2441: -2441: -2441: template -2441: struct less_equal : public binary_function<_Tp, _Tp, bool> -2441: { -2441: constexpr -2441: bool -2441: operator()(const _Tp& __x, const _Tp& __y) const -2441: { return __x <= __y; } -2441: }; -2441: -2441: -2441: template -2441: struct greater<_Tp*> : public binary_function<_Tp*, _Tp*, bool> -2441: { -2441: constexpr bool -2441: operator()(_Tp* __x, _Tp* __y) const noexcept -2441: { -2441: if (__builtin_constant_p (__x > __y)) -2441: return __x > __y; -2441: return (unsigned int)__x > (unsigned int)__y; -2441: } -2441: }; -2441: -2441: -2441: template -2441: struct less<_Tp*> : public binary_function<_Tp*, _Tp*, bool> -2441: { -2441: constexpr bool -2441: operator()(_Tp* __x, _Tp* __y) const noexcept -2441: { -2441: if (__builtin_constant_p (__x < __y)) -2441: return __x < __y; -2441: return (unsigned int)__x < (unsigned int)__y; -2441: } -2441: }; -2441: -2441: -2441: template -2441: struct greater_equal<_Tp*> : public binary_function<_Tp*, _Tp*, bool> -2441: { -2441: constexpr bool -2441: operator()(_Tp* __x, _Tp* __y) const noexcept -2441: { -2441: if (__builtin_constant_p (__x >= __y)) -2441: return __x >= __y; -2441: return (unsigned int)__x >= (unsigned int)__y; -2441: } -2441: }; -2441: -2441: -2441: template -2441: struct less_equal<_Tp*> : public binary_function<_Tp*, _Tp*, bool> -2441: { -2441: constexpr bool -2441: operator()(_Tp* __x, _Tp* __y) const noexcept -2441: { -2441: if (__builtin_constant_p (__x <= __y)) -2441: return __x <= __y; -2441: return (unsigned int)__x <= (unsigned int)__y; -2441: } -2441: }; -2441: -2441: -2441: -2441: template<> -2441: struct equal_to -2441: { -2441: template -2441: constexpr auto -2441: operator()(_Tp&& __t, _Up&& __u) const -2441: noexcept(noexcept(std::forward<_Tp>(__t) == std::forward<_Up>(__u))) -2441: -> decltype(std::forward<_Tp>(__t) == std::forward<_Up>(__u)) -2441: { return std::forward<_Tp>(__t) == std::forward<_Up>(__u); } -2441: -2441: typedef __is_transparent is_transparent; -2441: }; -2441: -2441: -2441: template<> -2441: struct not_equal_to -2441: { -2441: template -2441: constexpr auto -2441: operator()(_Tp&& __t, _Up&& __u) const -2441: noexcept(noexcept(std::forward<_Tp>(__t) != std::forward<_Up>(__u))) -2441: -> decltype(std::forward<_Tp>(__t) != std::forward<_Up>(__u)) -2441: { return std::forward<_Tp>(__t) != std::forward<_Up>(__u); } -2441: -2441: typedef __is_transparent is_transparent; -2441: }; -2441: -2441: -2441: template<> -2441: struct greater -2441: { -2441: template -2441: constexpr auto -2441: operator()(_Tp&& __t, _Up&& __u) const -2441: noexcept(noexcept(std::forward<_Tp>(__t) > std::forward<_Up>(__u))) -2441: -> decltype(std::forward<_Tp>(__t) > std::forward<_Up>(__u)) -2441: { -2441: return _S_cmp(std::forward<_Tp>(__t), std::forward<_Up>(__u), -2441: __ptr_cmp<_Tp, _Up>{}); -2441: } -2441: -2441: template -2441: constexpr bool -2441: operator()(_Tp* __t, _Up* __u) const noexcept -2441: { return greater>{}(__t, __u); } -2441: -2441: typedef __is_transparent is_transparent; -2441: -2441: private: -2441: template -2441: static constexpr decltype(auto) -2441: _S_cmp(_Tp&& __t, _Up&& __u, false_type) -2441: { return std::forward<_Tp>(__t) > std::forward<_Up>(__u); } -2441: -2441: template -2441: static constexpr bool -2441: _S_cmp(_Tp&& __t, _Up&& __u, true_type) noexcept -2441: { -2441: return greater{}( -2441: static_cast(std::forward<_Tp>(__t)), -2441: static_cast(std::forward<_Up>(__u))); -2441: } -2441: -2441: -2441: template -2441: struct __not_overloaded2 : true_type { }; -2441: -2441: -2441: template -2441: struct __not_overloaded2<_Tp, _Up, __void_t< -2441: decltype(std::declval<_Tp>().operator>(std::declval<_Up>()))>> -2441: : false_type { }; -2441: -2441: -2441: template -2441: struct __not_overloaded : __not_overloaded2<_Tp, _Up> { }; -2441: -2441: -2441: template -2441: struct __not_overloaded<_Tp, _Up, __void_t< -2441: decltype(operator>(std::declval<_Tp>(), std::declval<_Up>()))>> -2441: : false_type { }; -2441: -2441: template -2441: using __ptr_cmp = __and_<__not_overloaded<_Tp, _Up>, -2441: is_convertible<_Tp, const volatile void*>, -2441: is_convertible<_Up, const volatile void*>>; -2441: }; -2441: -2441: -2441: template<> -2441: struct less -2441: { -2441: template -2441: constexpr auto -2441: operator()(_Tp&& __t, _Up&& __u) const -2441: noexcept(noexcept(std::forward<_Tp>(__t) < std::forward<_Up>(__u))) -2441: -> decltype(std::forward<_Tp>(__t) < std::forward<_Up>(__u)) -2441: { -2441: return _S_cmp(std::forward<_Tp>(__t), std::forward<_Up>(__u), -2441: __ptr_cmp<_Tp, _Up>{}); -2441: } -2441: -2441: template -2441: constexpr bool -2441: operator()(_Tp* __t, _Up* __u) const noexcept -2441: { return less>{}(__t, __u); } -2441: -2441: typedef __is_transparent is_transparent; -2441: -2441: private: -2441: template -2441: static constexpr decltype(auto) -2441: _S_cmp(_Tp&& __t, _Up&& __u, false_type) -2441: { return std::forward<_Tp>(__t) < std::forward<_Up>(__u); } -2441: -2441: template -2441: static constexpr bool -2441: _S_cmp(_Tp&& __t, _Up&& __u, true_type) noexcept -2441: { -2441: return less{}( -2441: static_cast(std::forward<_Tp>(__t)), -2441: static_cast(std::forward<_Up>(__u))); -2441: } -2441: -2441: -2441: template -2441: struct __not_overloaded2 : true_type { }; -2441: -2441: -2441: template -2441: struct __not_overloaded2<_Tp, _Up, __void_t< -2441: decltype(std::declval<_Tp>().operator<(std::declval<_Up>()))>> -2441: : false_type { }; -2441: -2441: -2441: template -2441: struct __not_overloaded : __not_overloaded2<_Tp, _Up> { }; -2441: -2441: -2441: template -2441: struct __not_overloaded<_Tp, _Up, __void_t< -2441: decltype(operator<(std::declval<_Tp>(), std::declval<_Up>()))>> -2441: : false_type { }; -2441: -2441: template -2441: using __ptr_cmp = __and_<__not_overloaded<_Tp, _Up>, -2441: is_convertible<_Tp, const volatile void*>, -2441: is_convertible<_Up, const volatile void*>>; -2441: }; -2441: -2441: -2441: template<> -2441: struct greater_equal -2441: { -2441: template -2441: constexpr auto -2441: operator()(_Tp&& __t, _Up&& __u) const -2441: noexcept(noexcept(std::forward<_Tp>(__t) >= std::forward<_Up>(__u))) -2441: -> decltype(std::forward<_Tp>(__t) >= std::forward<_Up>(__u)) -2441: { -2441: return _S_cmp(std::forward<_Tp>(__t), std::forward<_Up>(__u), -2441: __ptr_cmp<_Tp, _Up>{}); -2441: } -2441: -2441: template -2441: constexpr bool -2441: operator()(_Tp* __t, _Up* __u) const noexcept -2441: { return greater_equal>{}(__t, __u); } -2441: -2441: typedef __is_transparent is_transparent; -2441: -2441: private: -2441: template -2441: static constexpr decltype(auto) -2441: _S_cmp(_Tp&& __t, _Up&& __u, false_type) -2441: { return std::forward<_Tp>(__t) >= std::forward<_Up>(__u); } -2441: -2441: template -2441: static constexpr bool -2441: _S_cmp(_Tp&& __t, _Up&& __u, true_type) noexcept -2441: { -2441: return greater_equal{}( -2441: static_cast(std::forward<_Tp>(__t)), -2441: static_cast(std::forward<_Up>(__u))); -2441: } -2441: -2441: -2441: template -2441: struct __not_overloaded2 : true_type { }; -2441: -2441: -2441: template -2441: struct __not_overloaded2<_Tp, _Up, __void_t< -2441: decltype(std::declval<_Tp>().operator>=(std::declval<_Up>()))>> -2441: : false_type { }; -2441: -2441: -2441: template -2441: struct __not_overloaded : __not_overloaded2<_Tp, _Up> { }; -2441: -2441: -2441: template -2441: struct __not_overloaded<_Tp, _Up, __void_t< -2441: decltype(operator>=(std::declval<_Tp>(), std::declval<_Up>()))>> -2441: : false_type { }; -2441: -2441: template -2441: using __ptr_cmp = __and_<__not_overloaded<_Tp, _Up>, -2441: is_convertible<_Tp, const volatile void*>, -2441: is_convertible<_Up, const volatile void*>>; -2441: }; -2441: -2441: -2441: template<> -2441: struct less_equal -2441: { -2441: template -2441: constexpr auto -2441: operator()(_Tp&& __t, _Up&& __u) const -2441: noexcept(noexcept(std::forward<_Tp>(__t) <= std::forward<_Up>(__u))) -2441: -> decltype(std::forward<_Tp>(__t) <= std::forward<_Up>(__u)) -2441: { -2441: return _S_cmp(std::forward<_Tp>(__t), std::forward<_Up>(__u), -2441: __ptr_cmp<_Tp, _Up>{}); -2441: } -2441: -2441: template -2441: constexpr bool -2441: operator()(_Tp* __t, _Up* __u) const noexcept -2441: { return less_equal>{}(__t, __u); } -2441: -2441: typedef __is_transparent is_transparent; -2441: -2441: private: -2441: template -2441: static constexpr decltype(auto) -2441: _S_cmp(_Tp&& __t, _Up&& __u, false_type) -2441: { return std::forward<_Tp>(__t) <= std::forward<_Up>(__u); } -2441: -2441: template -2441: static constexpr bool -2441: _S_cmp(_Tp&& __t, _Up&& __u, true_type) noexcept -2441: { -2441: return less_equal{}( -2441: static_cast(std::forward<_Tp>(__t)), -2441: static_cast(std::forward<_Up>(__u))); -2441: } -2441: -2441: -2441: template -2441: struct __not_overloaded2 : true_type { }; -2441: -2441: -2441: template -2441: struct __not_overloaded2<_Tp, _Up, __void_t< -2441: decltype(std::declval<_Tp>().operator<=(std::declval<_Up>()))>> -2441: : false_type { }; -2441: -2441: -2441: template -2441: struct __not_overloaded : __not_overloaded2<_Tp, _Up> { }; -2441: -2441: -2441: template -2441: struct __not_overloaded<_Tp, _Up, __void_t< -2441: decltype(operator<=(std::declval<_Tp>(), std::declval<_Up>()))>> -2441: : false_type { }; -2441: -2441: template -2441: using __ptr_cmp = __and_<__not_overloaded<_Tp, _Up>, -2441: is_convertible<_Tp, const volatile void*>, -2441: is_convertible<_Up, const volatile void*>>; -2441: }; -2441: # 750 "/usr/include/c++/8/bits/stl_function.h" 3 -2441: template -2441: struct logical_and; -2441: -2441: template -2441: struct logical_or; -2441: -2441: template -2441: struct logical_not; -2441: -2441: -2441: -2441: template -2441: struct logical_and : public binary_function<_Tp, _Tp, bool> -2441: { -2441: constexpr -2441: bool -2441: operator()(const _Tp& __x, const _Tp& __y) const -2441: { return __x && __y; } -2441: }; -2441: -2441: -2441: template -2441: struct logical_or : public binary_function<_Tp, _Tp, bool> -2441: { -2441: constexpr -2441: bool -2441: operator()(const _Tp& __x, const _Tp& __y) const -2441: { return __x || __y; } -2441: }; -2441: -2441: -2441: template -2441: struct logical_not : public unary_function<_Tp, bool> -2441: { -2441: constexpr -2441: bool -2441: operator()(const _Tp& __x) const -2441: { return !__x; } -2441: }; -2441: -2441: -2441: -2441: template<> -2441: struct logical_and -2441: { -2441: template -2441: constexpr -2441: auto -2441: operator()(_Tp&& __t, _Up&& __u) const -2441: noexcept(noexcept(std::forward<_Tp>(__t) && std::forward<_Up>(__u))) -2441: -> decltype(std::forward<_Tp>(__t) && std::forward<_Up>(__u)) -2441: { return std::forward<_Tp>(__t) && std::forward<_Up>(__u); } -2441: -2441: typedef __is_transparent is_transparent; -2441: }; -2441: -2441: -2441: template<> -2441: struct logical_or -2441: { -2441: template -2441: constexpr -2441: auto -2441: operator()(_Tp&& __t, _Up&& __u) const -2441: noexcept(noexcept(std::forward<_Tp>(__t) || std::forward<_Up>(__u))) -2441: -> decltype(std::forward<_Tp>(__t) || std::forward<_Up>(__u)) -2441: { return std::forward<_Tp>(__t) || std::forward<_Up>(__u); } -2441: -2441: typedef __is_transparent is_transparent; -2441: }; -2441: -2441: -2441: template<> -2441: struct logical_not -2441: { -2441: template -2441: constexpr -2441: auto -2441: operator()(_Tp&& __t) const -2441: noexcept(noexcept(!std::forward<_Tp>(__t))) -2441: -> decltype(!std::forward<_Tp>(__t)) -2441: { return !std::forward<_Tp>(__t); } -2441: -2441: typedef __is_transparent is_transparent; -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: struct bit_and; -2441: -2441: template -2441: struct bit_or; -2441: -2441: template -2441: struct bit_xor; -2441: -2441: template -2441: struct bit_not; -2441: -2441: -2441: -2441: -2441: template -2441: struct bit_and : public binary_function<_Tp, _Tp, _Tp> -2441: { -2441: constexpr -2441: _Tp -2441: operator()(const _Tp& __x, const _Tp& __y) const -2441: { return __x & __y; } -2441: }; -2441: -2441: template -2441: struct bit_or : public binary_function<_Tp, _Tp, _Tp> -2441: { -2441: constexpr -2441: _Tp -2441: operator()(const _Tp& __x, const _Tp& __y) const -2441: { return __x | __y; } -2441: }; -2441: -2441: template -2441: struct bit_xor : public binary_function<_Tp, _Tp, _Tp> -2441: { -2441: constexpr -2441: _Tp -2441: operator()(const _Tp& __x, const _Tp& __y) const -2441: { return __x ^ __y; } -2441: }; -2441: -2441: template -2441: struct bit_not : public unary_function<_Tp, _Tp> -2441: { -2441: constexpr -2441: _Tp -2441: operator()(const _Tp& __x) const -2441: { return ~__x; } -2441: }; -2441: -2441: -2441: template <> -2441: struct bit_and -2441: { -2441: template -2441: constexpr -2441: auto -2441: operator()(_Tp&& __t, _Up&& __u) const -2441: noexcept(noexcept(std::forward<_Tp>(__t) & std::forward<_Up>(__u))) -2441: -> decltype(std::forward<_Tp>(__t) & std::forward<_Up>(__u)) -2441: { return std::forward<_Tp>(__t) & std::forward<_Up>(__u); } -2441: -2441: typedef __is_transparent is_transparent; -2441: }; -2441: -2441: template <> -2441: struct bit_or -2441: { -2441: template -2441: constexpr -2441: auto -2441: operator()(_Tp&& __t, _Up&& __u) const -2441: noexcept(noexcept(std::forward<_Tp>(__t) | std::forward<_Up>(__u))) -2441: -> decltype(std::forward<_Tp>(__t) | std::forward<_Up>(__u)) -2441: { return std::forward<_Tp>(__t) | std::forward<_Up>(__u); } -2441: -2441: typedef __is_transparent is_transparent; -2441: }; -2441: -2441: template <> -2441: struct bit_xor -2441: { -2441: template -2441: constexpr -2441: auto -2441: operator()(_Tp&& __t, _Up&& __u) const -2441: noexcept(noexcept(std::forward<_Tp>(__t) ^ std::forward<_Up>(__u))) -2441: -> decltype(std::forward<_Tp>(__t) ^ std::forward<_Up>(__u)) -2441: { return std::forward<_Tp>(__t) ^ std::forward<_Up>(__u); } -2441: -2441: typedef __is_transparent is_transparent; -2441: }; -2441: -2441: template <> -2441: struct bit_not -2441: { -2441: template -2441: constexpr -2441: auto -2441: operator()(_Tp&& __t) const -2441: noexcept(noexcept(~std::forward<_Tp>(__t))) -2441: -> decltype(~std::forward<_Tp>(__t)) -2441: { return ~std::forward<_Tp>(__t); } -2441: -2441: typedef __is_transparent is_transparent; -2441: }; -2441: # 978 "/usr/include/c++/8/bits/stl_function.h" 3 -2441: template -2441: class unary_negate -2441: : public unary_function -2441: { -2441: protected: -2441: _Predicate _M_pred; -2441: -2441: public: -2441: constexpr -2441: explicit -2441: unary_negate(const _Predicate& __x) : _M_pred(__x) { } -2441: -2441: constexpr -2441: bool -2441: operator()(const typename _Predicate::argument_type& __x) const -2441: { return !_M_pred(__x); } -2441: }; -2441: -2441: -2441: template -2441: constexpr -2441: inline unary_negate<_Predicate> -2441: not1(const _Predicate& __pred) -2441: { return unary_negate<_Predicate>(__pred); } -2441: -2441: -2441: template -2441: class binary_negate -2441: : public binary_function -2441: { -2441: protected: -2441: _Predicate _M_pred; -2441: -2441: public: -2441: constexpr -2441: explicit -2441: binary_negate(const _Predicate& __x) : _M_pred(__x) { } -2441: -2441: constexpr -2441: bool -2441: operator()(const typename _Predicate::first_argument_type& __x, -2441: const typename _Predicate::second_argument_type& __y) const -2441: { return !_M_pred(__x, __y); } -2441: }; -2441: -2441: -2441: template -2441: constexpr -2441: inline binary_negate<_Predicate> -2441: not2(const _Predicate& __pred) -2441: { return binary_negate<_Predicate>(__pred); } -2441: # 1055 "/usr/include/c++/8/bits/stl_function.h" 3 -2441: template -2441: class pointer_to_unary_function : public unary_function<_Arg, _Result> -2441: { -2441: protected: -2441: _Result (*_M_ptr)(_Arg); -2441: -2441: public: -2441: pointer_to_unary_function() { } -2441: -2441: explicit -2441: pointer_to_unary_function(_Result (*__x)(_Arg)) -2441: : _M_ptr(__x) { } -2441: -2441: _Result -2441: operator()(_Arg __x) const -2441: { return _M_ptr(__x); } -2441: }; -2441: -2441: -2441: template -2441: inline pointer_to_unary_function<_Arg, _Result> -2441: ptr_fun(_Result (*__x)(_Arg)) -2441: { return pointer_to_unary_function<_Arg, _Result>(__x); } -2441: -2441: -2441: template -2441: class pointer_to_binary_function -2441: : public binary_function<_Arg1, _Arg2, _Result> -2441: { -2441: protected: -2441: _Result (*_M_ptr)(_Arg1, _Arg2); -2441: -2441: public: -2441: pointer_to_binary_function() { } -2441: -2441: explicit -2441: pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2)) -2441: : _M_ptr(__x) { } -2441: -2441: _Result -2441: operator()(_Arg1 __x, _Arg2 __y) const -2441: { return _M_ptr(__x, __y); } -2441: }; -2441: -2441: -2441: template -2441: inline pointer_to_binary_function<_Arg1, _Arg2, _Result> -2441: ptr_fun(_Result (*__x)(_Arg1, _Arg2)) -2441: { return pointer_to_binary_function<_Arg1, _Arg2, _Result>(__x); } -2441: -2441: -2441: template -2441: struct _Identity -2441: : public unary_function<_Tp, _Tp> -2441: { -2441: _Tp& -2441: operator()(_Tp& __x) const -2441: { return __x; } -2441: -2441: const _Tp& -2441: operator()(const _Tp& __x) const -2441: { return __x; } -2441: }; -2441: -2441: -2441: template struct _Identity : _Identity<_Tp> { }; -2441: -2441: template -2441: struct _Select1st -2441: : public unary_function<_Pair, typename _Pair::first_type> -2441: { -2441: typename _Pair::first_type& -2441: operator()(_Pair& __x) const -2441: { return __x.first; } -2441: -2441: const typename _Pair::first_type& -2441: operator()(const _Pair& __x) const -2441: { return __x.first; } -2441: -2441: -2441: template -2441: typename _Pair2::first_type& -2441: operator()(_Pair2& __x) const -2441: { return __x.first; } -2441: -2441: template -2441: const typename _Pair2::first_type& -2441: operator()(const _Pair2& __x) const -2441: { return __x.first; } -2441: -2441: }; -2441: -2441: template -2441: struct _Select2nd -2441: : public unary_function<_Pair, typename _Pair::second_type> -2441: { -2441: typename _Pair::second_type& -2441: operator()(_Pair& __x) const -2441: { return __x.second; } -2441: -2441: const typename _Pair::second_type& -2441: operator()(const _Pair& __x) const -2441: { return __x.second; } -2441: }; -2441: # 1178 "/usr/include/c++/8/bits/stl_function.h" 3 -2441: template -2441: class mem_fun_t : public unary_function<_Tp*, _Ret> -2441: { -2441: public: -2441: explicit -2441: mem_fun_t(_Ret (_Tp::*__pf)()) -2441: : _M_f(__pf) { } -2441: -2441: _Ret -2441: operator()(_Tp* __p) const -2441: { return (__p->*_M_f)(); } -2441: -2441: private: -2441: _Ret (_Tp::*_M_f)(); -2441: }; -2441: -2441: -2441: -2441: template -2441: class const_mem_fun_t : public unary_function -2441: { -2441: public: -2441: explicit -2441: const_mem_fun_t(_Ret (_Tp::*__pf)() const) -2441: : _M_f(__pf) { } -2441: -2441: _Ret -2441: operator()(const _Tp* __p) const -2441: { return (__p->*_M_f)(); } -2441: -2441: private: -2441: _Ret (_Tp::*_M_f)() const; -2441: }; -2441: -2441: -2441: -2441: template -2441: class mem_fun_ref_t : public unary_function<_Tp, _Ret> -2441: { -2441: public: -2441: explicit -2441: mem_fun_ref_t(_Ret (_Tp::*__pf)()) -2441: : _M_f(__pf) { } -2441: -2441: _Ret -2441: operator()(_Tp& __r) const -2441: { return (__r.*_M_f)(); } -2441: -2441: private: -2441: _Ret (_Tp::*_M_f)(); -2441: }; -2441: -2441: -2441: -2441: template -2441: class const_mem_fun_ref_t : public unary_function<_Tp, _Ret> -2441: { -2441: public: -2441: explicit -2441: const_mem_fun_ref_t(_Ret (_Tp::*__pf)() const) -2441: : _M_f(__pf) { } -2441: -2441: _Ret -2441: operator()(const _Tp& __r) const -2441: { return (__r.*_M_f)(); } -2441: -2441: private: -2441: _Ret (_Tp::*_M_f)() const; -2441: }; -2441: -2441: -2441: -2441: template -2441: class mem_fun1_t : public binary_function<_Tp*, _Arg, _Ret> -2441: { -2441: public: -2441: explicit -2441: mem_fun1_t(_Ret (_Tp::*__pf)(_Arg)) -2441: : _M_f(__pf) { } -2441: -2441: _Ret -2441: operator()(_Tp* __p, _Arg __x) const -2441: { return (__p->*_M_f)(__x); } -2441: -2441: private: -2441: _Ret (_Tp::*_M_f)(_Arg); -2441: }; -2441: -2441: -2441: -2441: template -2441: class const_mem_fun1_t : public binary_function -2441: { -2441: public: -2441: explicit -2441: const_mem_fun1_t(_Ret (_Tp::*__pf)(_Arg) const) -2441: : _M_f(__pf) { } -2441: -2441: _Ret -2441: operator()(const _Tp* __p, _Arg __x) const -2441: { return (__p->*_M_f)(__x); } -2441: -2441: private: -2441: _Ret (_Tp::*_M_f)(_Arg) const; -2441: }; -2441: -2441: -2441: -2441: template -2441: class mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret> -2441: { -2441: public: -2441: explicit -2441: mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg)) -2441: : _M_f(__pf) { } -2441: -2441: _Ret -2441: operator()(_Tp& __r, _Arg __x) const -2441: { return (__r.*_M_f)(__x); } -2441: -2441: private: -2441: _Ret (_Tp::*_M_f)(_Arg); -2441: }; -2441: -2441: -2441: -2441: template -2441: class const_mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret> -2441: { -2441: public: -2441: explicit -2441: const_mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg) const) -2441: : _M_f(__pf) { } -2441: -2441: _Ret -2441: operator()(const _Tp& __r, _Arg __x) const -2441: { return (__r.*_M_f)(__x); } -2441: -2441: private: -2441: _Ret (_Tp::*_M_f)(_Arg) const; -2441: }; -2441: -2441: -2441: -2441: template -2441: inline mem_fun_t<_Ret, _Tp> -2441: mem_fun(_Ret (_Tp::*__f)()) -2441: { return mem_fun_t<_Ret, _Tp>(__f); } -2441: -2441: template -2441: inline const_mem_fun_t<_Ret, _Tp> -2441: mem_fun(_Ret (_Tp::*__f)() const) -2441: { return const_mem_fun_t<_Ret, _Tp>(__f); } -2441: -2441: template -2441: inline mem_fun_ref_t<_Ret, _Tp> -2441: mem_fun_ref(_Ret (_Tp::*__f)()) -2441: { return mem_fun_ref_t<_Ret, _Tp>(__f); } -2441: -2441: template -2441: inline const_mem_fun_ref_t<_Ret, _Tp> -2441: mem_fun_ref(_Ret (_Tp::*__f)() const) -2441: { return const_mem_fun_ref_t<_Ret, _Tp>(__f); } -2441: -2441: template -2441: inline mem_fun1_t<_Ret, _Tp, _Arg> -2441: mem_fun(_Ret (_Tp::*__f)(_Arg)) -2441: { return mem_fun1_t<_Ret, _Tp, _Arg>(__f); } -2441: -2441: template -2441: inline const_mem_fun1_t<_Ret, _Tp, _Arg> -2441: mem_fun(_Ret (_Tp::*__f)(_Arg) const) -2441: { return const_mem_fun1_t<_Ret, _Tp, _Arg>(__f); } -2441: -2441: template -2441: inline mem_fun1_ref_t<_Ret, _Tp, _Arg> -2441: mem_fun_ref(_Ret (_Tp::*__f)(_Arg)) -2441: { return mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } -2441: -2441: template -2441: inline const_mem_fun1_ref_t<_Ret, _Tp, _Arg> -2441: mem_fun_ref(_Ret (_Tp::*__f)(_Arg) const) -2441: { return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } -2441: -2441: -2441: -2441: -2441: } -2441: -2441: -2441: # 1 "/usr/include/c++/8/backward/binders.h" 1 3 -2441: # 60 "/usr/include/c++/8/backward/binders.h" 3 -2441: #pragma GCC diagnostic push -2441: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: # 107 "/usr/include/c++/8/backward/binders.h" 3 -2441: template -2441: class binder1st -2441: : public unary_function -2441: { -2441: protected: -2441: _Operation op; -2441: typename _Operation::first_argument_type value; -2441: -2441: public: -2441: binder1st(const _Operation& __x, -2441: const typename _Operation::first_argument_type& __y) -2441: : op(__x), value(__y) { } -2441: -2441: typename _Operation::result_type -2441: operator()(const typename _Operation::second_argument_type& __x) const -2441: { return op(value, __x); } -2441: -2441: -2441: -2441: typename _Operation::result_type -2441: operator()(typename _Operation::second_argument_type& __x) const -2441: { return op(value, __x); } -2441: } __attribute__ ((__deprecated__)); -2441: -2441: -2441: template -2441: inline binder1st<_Operation> -2441: bind1st(const _Operation& __fn, const _Tp& __x) -2441: { -2441: typedef typename _Operation::first_argument_type _Arg1_type; -2441: return binder1st<_Operation>(__fn, _Arg1_type(__x)); -2441: } -2441: -2441: -2441: template -2441: class binder2nd -2441: : public unary_function -2441: { -2441: protected: -2441: _Operation op; -2441: typename _Operation::second_argument_type value; -2441: -2441: public: -2441: binder2nd(const _Operation& __x, -2441: const typename _Operation::second_argument_type& __y) -2441: : op(__x), value(__y) { } -2441: -2441: typename _Operation::result_type -2441: operator()(const typename _Operation::first_argument_type& __x) const -2441: { return op(__x, value); } -2441: -2441: -2441: -2441: typename _Operation::result_type -2441: operator()(typename _Operation::first_argument_type& __x) const -2441: { return op(__x, value); } -2441: } __attribute__ ((__deprecated__)); -2441: -2441: -2441: template -2441: inline binder2nd<_Operation> -2441: bind2nd(const _Operation& __fn, const _Tp& __x) -2441: { -2441: typedef typename _Operation::second_argument_type _Arg2_type; -2441: return binder2nd<_Operation>(__fn, _Arg2_type(__x)); -2441: } -2441: -2441: -2441: -2441: } -2441: -2441: #pragma GCC diagnostic pop -2441: # 1369 "/usr/include/c++/8/bits/stl_function.h" 2 3 -2441: # 49 "/usr/include/c++/8/string" 2 3 -2441: -2441: -2441: # 1 "/usr/include/c++/8/bits/range_access.h" 1 3 -2441: # 33 "/usr/include/c++/8/bits/range_access.h" 3 -2441: -2441: # 34 "/usr/include/c++/8/bits/range_access.h" 3 -2441: -2441: -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline auto -2441: begin(_Container& __cont) -> decltype(__cont.begin()) -2441: { return __cont.begin(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline auto -2441: begin(const _Container& __cont) -> decltype(__cont.begin()) -2441: { return __cont.begin(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline auto -2441: end(_Container& __cont) -> decltype(__cont.end()) -2441: { return __cont.end(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline auto -2441: end(const _Container& __cont) -> decltype(__cont.end()) -2441: { return __cont.end(); } -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline constexpr _Tp* -2441: begin(_Tp (&__arr)[_Nm]) -2441: { return __arr; } -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline constexpr _Tp* -2441: end(_Tp (&__arr)[_Nm]) -2441: { return __arr + _Nm; } -2441: -2441: -2441: -2441: template class valarray; -2441: -2441: template _Tp* begin(valarray<_Tp>&); -2441: template const _Tp* begin(const valarray<_Tp>&); -2441: template _Tp* end(valarray<_Tp>&); -2441: template const _Tp* end(const valarray<_Tp>&); -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline constexpr auto -2441: cbegin(const _Container& __cont) noexcept(noexcept(std::begin(__cont))) -2441: -> decltype(std::begin(__cont)) -2441: { return std::begin(__cont); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline constexpr auto -2441: cend(const _Container& __cont) noexcept(noexcept(std::end(__cont))) -2441: -> decltype(std::end(__cont)) -2441: { return std::end(__cont); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline auto -2441: rbegin(_Container& __cont) -> decltype(__cont.rbegin()) -2441: { return __cont.rbegin(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline auto -2441: rbegin(const _Container& __cont) -> decltype(__cont.rbegin()) -2441: { return __cont.rbegin(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline auto -2441: rend(_Container& __cont) -> decltype(__cont.rend()) -2441: { return __cont.rend(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline auto -2441: rend(const _Container& __cont) -> decltype(__cont.rend()) -2441: { return __cont.rend(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline reverse_iterator<_Tp*> -2441: rbegin(_Tp (&__arr)[_Nm]) -2441: { return reverse_iterator<_Tp*>(__arr + _Nm); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline reverse_iterator<_Tp*> -2441: rend(_Tp (&__arr)[_Nm]) -2441: { return reverse_iterator<_Tp*>(__arr); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline reverse_iterator -2441: rbegin(initializer_list<_Tp> __il) -2441: { return reverse_iterator(__il.end()); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline reverse_iterator -2441: rend(initializer_list<_Tp> __il) -2441: { return reverse_iterator(__il.begin()); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline auto -2441: crbegin(const _Container& __cont) -> decltype(std::rbegin(__cont)) -2441: { return std::rbegin(__cont); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline auto -2441: crend(const _Container& __cont) -> decltype(std::rend(__cont)) -2441: { return std::rend(__cont); } -2441: # 323 "/usr/include/c++/8/bits/range_access.h" 3 -2441: -2441: } -2441: # 52 "/usr/include/c++/8/string" 2 3 -2441: # 1 "/usr/include/c++/8/bits/basic_string.h" 1 3 -2441: # 37 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: -2441: # 38 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: -2441: # 1 "/usr/include/c++/8/ext/atomicity.h" 1 3 -2441: # 32 "/usr/include/c++/8/ext/atomicity.h" 3 -2441: -2441: # 33 "/usr/include/c++/8/ext/atomicity.h" 3 -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/c++/8/bits/gthr.h" 1 3 -2441: # 30 "/usr/include/i386-linux-gnu/c++/8/bits/gthr.h" 3 -2441: #pragma GCC visibility push(default) -2441: # 148 "/usr/include/i386-linux-gnu/c++/8/bits/gthr.h" 3 -2441: # 1 "/usr/include/i386-linux-gnu/c++/8/bits/gthr-default.h" 1 3 -2441: # 35 "/usr/include/i386-linux-gnu/c++/8/bits/gthr-default.h" 3 -2441: # 1 "/usr/include/pthread.h" 1 3 4 -2441: # 23 "/usr/include/pthread.h" 3 4 -2441: # 1 "/usr/include/sched.h" 1 3 4 -2441: # 29 "/usr/include/sched.h" 3 4 -2441: # 1 "/usr/lib/gcc/i686-linux-gnu/8/include/stddef.h" 1 3 4 -2441: # 30 "/usr/include/sched.h" 2 3 4 -2441: # 43 "/usr/include/sched.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/sched.h" 1 3 4 -2441: # 74 "/usr/include/i386-linux-gnu/bits/sched.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/types/struct_sched_param.h" 1 3 4 -2441: # 23 "/usr/include/i386-linux-gnu/bits/types/struct_sched_param.h" 3 4 -2441: struct sched_param -2441: { -2441: int sched_priority; -2441: }; -2441: # 75 "/usr/include/i386-linux-gnu/bits/sched.h" 2 3 4 -2441: -2441: extern "C" { -2441: -2441: -2441: -2441: extern int clone (int (*__fn) (void *__arg), void *__child_stack, -2441: int __flags, void *__arg, ...) throw (); -2441: -2441: -2441: extern int unshare (int __flags) throw (); -2441: -2441: -2441: extern int sched_getcpu (void) throw (); -2441: -2441: -2441: extern int setns (int __fd, int __nstype) throw (); -2441: -2441: -2441: } -2441: # 44 "/usr/include/sched.h" 2 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/cpu-set.h" 1 3 4 -2441: # 32 "/usr/include/i386-linux-gnu/bits/cpu-set.h" 3 4 -2441: typedef unsigned long int __cpu_mask; -2441: -2441: -2441: -2441: -2441: -2441: -2441: typedef struct -2441: { -2441: __cpu_mask __bits[1024 / (8 * sizeof (__cpu_mask))]; -2441: } cpu_set_t; -2441: # 115 "/usr/include/i386-linux-gnu/bits/cpu-set.h" 3 4 -2441: extern "C" { -2441: -2441: extern int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp) -2441: throw (); -2441: extern cpu_set_t *__sched_cpualloc (size_t __count) throw () __attribute__ ((__warn_unused_result__)); -2441: extern void __sched_cpufree (cpu_set_t *__set) throw (); -2441: -2441: } -2441: # 45 "/usr/include/sched.h" 2 3 4 -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern "C" { -2441: -2441: -2441: extern int sched_setparam (__pid_t __pid, const struct sched_param *__param) -2441: throw (); -2441: -2441: -2441: extern int sched_getparam (__pid_t __pid, struct sched_param *__param) throw (); -2441: -2441: -2441: extern int sched_setscheduler (__pid_t __pid, int __policy, -2441: const struct sched_param *__param) throw (); -2441: -2441: -2441: extern int sched_getscheduler (__pid_t __pid) throw (); -2441: -2441: -2441: extern int sched_yield (void) throw (); -2441: -2441: -2441: extern int sched_get_priority_max (int __algorithm) throw (); -2441: -2441: -2441: extern int sched_get_priority_min (int __algorithm) throw (); -2441: -2441: -2441: extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) throw (); -2441: # 121 "/usr/include/sched.h" 3 4 -2441: extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize, -2441: const cpu_set_t *__cpuset) throw (); -2441: -2441: -2441: extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize, -2441: cpu_set_t *__cpuset) throw (); -2441: -2441: -2441: } -2441: # 24 "/usr/include/pthread.h" 2 3 4 -2441: # 1 "/usr/include/time.h" 1 3 4 -2441: # 29 "/usr/include/time.h" 3 4 -2441: # 1 "/usr/lib/gcc/i686-linux-gnu/8/include/stddef.h" 1 3 4 -2441: # 30 "/usr/include/time.h" 2 3 4 -2441: -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/time.h" 1 3 4 -2441: # 73 "/usr/include/i386-linux-gnu/bits/time.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/timex.h" 1 3 4 -2441: # 26 "/usr/include/i386-linux-gnu/bits/timex.h" 3 4 -2441: struct timex -2441: { -2441: unsigned int modes; -2441: __syscall_slong_t offset; -2441: __syscall_slong_t freq; -2441: __syscall_slong_t maxerror; -2441: __syscall_slong_t esterror; -2441: int status; -2441: __syscall_slong_t constant; -2441: __syscall_slong_t precision; -2441: __syscall_slong_t tolerance; -2441: struct timeval time; -2441: __syscall_slong_t tick; -2441: __syscall_slong_t ppsfreq; -2441: __syscall_slong_t jitter; -2441: int shift; -2441: __syscall_slong_t stabil; -2441: __syscall_slong_t jitcnt; -2441: __syscall_slong_t calcnt; -2441: __syscall_slong_t errcnt; -2441: __syscall_slong_t stbcnt; -2441: -2441: int tai; -2441: -2441: -2441: int :32; int :32; int :32; int :32; -2441: int :32; int :32; int :32; int :32; -2441: int :32; int :32; int :32; -2441: }; -2441: # 74 "/usr/include/i386-linux-gnu/bits/time.h" 2 3 4 -2441: -2441: extern "C" { -2441: -2441: -2441: extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) throw (); -2441: -2441: } -2441: # 34 "/usr/include/time.h" 2 3 4 -2441: -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/types/struct_tm.h" 1 3 4 -2441: -2441: -2441: -2441: -2441: -2441: -2441: struct tm -2441: { -2441: int tm_sec; -2441: int tm_min; -2441: int tm_hour; -2441: int tm_mday; -2441: int tm_mon; -2441: int tm_year; -2441: int tm_wday; -2441: int tm_yday; -2441: int tm_isdst; -2441: -2441: -2441: long int tm_gmtoff; -2441: const char *tm_zone; -2441: -2441: -2441: -2441: -2441: }; -2441: # 40 "/usr/include/time.h" 2 3 4 -2441: # 48 "/usr/include/time.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/types/struct_itimerspec.h" 1 3 4 -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: struct itimerspec -2441: { -2441: struct timespec it_interval; -2441: struct timespec it_value; -2441: }; -2441: # 49 "/usr/include/time.h" 2 3 4 -2441: struct sigevent; -2441: # 68 "/usr/include/time.h" 3 4 -2441: extern "C" { -2441: -2441: -2441: -2441: extern clock_t clock (void) throw (); -2441: -2441: -2441: extern time_t time (time_t *__timer) throw (); -2441: -2441: -2441: extern double difftime (time_t __time1, time_t __time0) -2441: throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern time_t mktime (struct tm *__tp) throw (); -2441: -2441: -2441: -2441: -2441: -2441: extern size_t strftime (char *__restrict __s, size_t __maxsize, -2441: const char *__restrict __format, -2441: const struct tm *__restrict __tp) throw (); -2441: -2441: -2441: -2441: -2441: extern char *strptime (const char *__restrict __s, -2441: const char *__restrict __fmt, struct tm *__tp) -2441: throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern size_t strftime_l (char *__restrict __s, size_t __maxsize, -2441: const char *__restrict __format, -2441: const struct tm *__restrict __tp, -2441: locale_t __loc) throw (); -2441: -2441: -2441: -2441: extern char *strptime_l (const char *__restrict __s, -2441: const char *__restrict __fmt, struct tm *__tp, -2441: locale_t __loc) throw (); -2441: -2441: -2441: -2441: -2441: -2441: extern struct tm *gmtime (const time_t *__timer) throw (); -2441: -2441: -2441: -2441: extern struct tm *localtime (const time_t *__timer) throw (); -2441: -2441: -2441: -2441: -2441: extern struct tm *gmtime_r (const time_t *__restrict __timer, -2441: struct tm *__restrict __tp) throw (); -2441: -2441: -2441: -2441: extern struct tm *localtime_r (const time_t *__restrict __timer, -2441: struct tm *__restrict __tp) throw (); -2441: -2441: -2441: -2441: -2441: extern char *asctime (const struct tm *__tp) throw (); -2441: -2441: -2441: extern char *ctime (const time_t *__timer) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern char *asctime_r (const struct tm *__restrict __tp, -2441: char *__restrict __buf) throw (); -2441: -2441: -2441: extern char *ctime_r (const time_t *__restrict __timer, -2441: char *__restrict __buf) throw (); -2441: -2441: -2441: -2441: -2441: extern char *__tzname[2]; -2441: extern int __daylight; -2441: extern long int __timezone; -2441: -2441: -2441: -2441: -2441: extern char *tzname[2]; -2441: -2441: -2441: -2441: extern void tzset (void) throw (); -2441: -2441: -2441: -2441: extern int daylight; -2441: extern long int timezone; -2441: -2441: -2441: -2441: -2441: -2441: extern int stime (const time_t *__when) throw (); -2441: # 196 "/usr/include/time.h" 3 4 -2441: extern time_t timegm (struct tm *__tp) throw (); -2441: -2441: -2441: extern time_t timelocal (struct tm *__tp) throw (); -2441: -2441: -2441: extern int dysize (int __year) throw () __attribute__ ((__const__)); -2441: # 211 "/usr/include/time.h" 3 4 -2441: extern int nanosleep (const struct timespec *__requested_time, -2441: struct timespec *__remaining); -2441: -2441: -2441: -2441: extern int clock_getres (clockid_t __clock_id, struct timespec *__res) throw (); -2441: -2441: -2441: extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) throw (); -2441: -2441: -2441: extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp) -2441: throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int clock_nanosleep (clockid_t __clock_id, int __flags, -2441: const struct timespec *__req, -2441: struct timespec *__rem); -2441: -2441: -2441: extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) throw (); -2441: -2441: -2441: -2441: -2441: extern int timer_create (clockid_t __clock_id, -2441: struct sigevent *__restrict __evp, -2441: timer_t *__restrict __timerid) throw (); -2441: -2441: -2441: extern int timer_delete (timer_t __timerid) throw (); -2441: -2441: -2441: extern int timer_settime (timer_t __timerid, int __flags, -2441: const struct itimerspec *__restrict __value, -2441: struct itimerspec *__restrict __ovalue) throw (); -2441: -2441: -2441: extern int timer_gettime (timer_t __timerid, struct itimerspec *__value) -2441: throw (); -2441: -2441: -2441: extern int timer_getoverrun (timer_t __timerid) throw (); -2441: -2441: -2441: -2441: -2441: -2441: extern int timespec_get (struct timespec *__ts, int __base) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: # 280 "/usr/include/time.h" 3 4 -2441: extern int getdate_err; -2441: # 289 "/usr/include/time.h" 3 4 -2441: extern struct tm *getdate (const char *__string); -2441: # 303 "/usr/include/time.h" 3 4 -2441: extern int getdate_r (const char *__restrict __string, -2441: struct tm *__restrict __resbufp); -2441: -2441: -2441: } -2441: # 25 "/usr/include/pthread.h" 2 3 4 -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/setjmp.h" 1 3 4 -2441: # 26 "/usr/include/i386-linux-gnu/bits/setjmp.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/wordsize.h" 1 3 4 -2441: # 27 "/usr/include/i386-linux-gnu/bits/setjmp.h" 2 3 4 -2441: # 35 "/usr/include/i386-linux-gnu/bits/setjmp.h" 3 4 -2441: typedef int __jmp_buf[6]; -2441: # 28 "/usr/include/pthread.h" 2 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/wordsize.h" 1 3 4 -2441: # 29 "/usr/include/pthread.h" 2 3 4 -2441: -2441: -2441: -2441: -2441: enum -2441: { -2441: PTHREAD_CREATE_JOINABLE, -2441: -2441: PTHREAD_CREATE_DETACHED -2441: -2441: }; -2441: -2441: -2441: -2441: enum -2441: { -2441: PTHREAD_MUTEX_TIMED_NP, -2441: PTHREAD_MUTEX_RECURSIVE_NP, -2441: PTHREAD_MUTEX_ERRORCHECK_NP, -2441: PTHREAD_MUTEX_ADAPTIVE_NP -2441: -2441: , -2441: PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP, -2441: PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP, -2441: PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP, -2441: PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL -2441: -2441: -2441: -2441: , PTHREAD_MUTEX_FAST_NP = PTHREAD_MUTEX_TIMED_NP -2441: -2441: }; -2441: -2441: -2441: -2441: -2441: enum -2441: { -2441: PTHREAD_MUTEX_STALLED, -2441: PTHREAD_MUTEX_STALLED_NP = PTHREAD_MUTEX_STALLED, -2441: PTHREAD_MUTEX_ROBUST, -2441: PTHREAD_MUTEX_ROBUST_NP = PTHREAD_MUTEX_ROBUST -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: enum -2441: { -2441: PTHREAD_PRIO_NONE, -2441: PTHREAD_PRIO_INHERIT, -2441: PTHREAD_PRIO_PROTECT -2441: }; -2441: # 115 "/usr/include/pthread.h" 3 4 -2441: enum -2441: { -2441: PTHREAD_RWLOCK_PREFER_READER_NP, -2441: PTHREAD_RWLOCK_PREFER_WRITER_NP, -2441: PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP, -2441: PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP -2441: }; -2441: # 156 "/usr/include/pthread.h" 3 4 -2441: enum -2441: { -2441: PTHREAD_INHERIT_SCHED, -2441: -2441: PTHREAD_EXPLICIT_SCHED -2441: -2441: }; -2441: -2441: -2441: -2441: enum -2441: { -2441: PTHREAD_SCOPE_SYSTEM, -2441: -2441: PTHREAD_SCOPE_PROCESS -2441: -2441: }; -2441: -2441: -2441: -2441: enum -2441: { -2441: PTHREAD_PROCESS_PRIVATE, -2441: -2441: PTHREAD_PROCESS_SHARED -2441: -2441: }; -2441: # 191 "/usr/include/pthread.h" 3 4 -2441: struct _pthread_cleanup_buffer -2441: { -2441: void (*__routine) (void *); -2441: void *__arg; -2441: int __canceltype; -2441: struct _pthread_cleanup_buffer *__prev; -2441: }; -2441: -2441: -2441: enum -2441: { -2441: PTHREAD_CANCEL_ENABLE, -2441: -2441: PTHREAD_CANCEL_DISABLE -2441: -2441: }; -2441: enum -2441: { -2441: PTHREAD_CANCEL_DEFERRED, -2441: -2441: PTHREAD_CANCEL_ASYNCHRONOUS -2441: -2441: }; -2441: # 229 "/usr/include/pthread.h" 3 4 -2441: extern "C" { -2441: -2441: -2441: -2441: -2441: extern int pthread_create (pthread_t *__restrict __newthread, -2441: const pthread_attr_t *__restrict __attr, -2441: void *(*__start_routine) (void *), -2441: void *__restrict __arg) throw () __attribute__ ((__nonnull__ (1, 3))); -2441: -2441: -2441: -2441: -2441: -2441: extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__)); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int pthread_join (pthread_t __th, void **__thread_return); -2441: -2441: -2441: -2441: -2441: extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return, -2441: const struct timespec *__abstime); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int pthread_detach (pthread_t __th) throw (); -2441: -2441: -2441: -2441: extern pthread_t pthread_self (void) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) -2441: throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int pthread_attr_init (pthread_attr_t *__attr) throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int pthread_attr_destroy (pthread_attr_t *__attr) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int pthread_attr_getdetachstate (const pthread_attr_t *__attr, -2441: int *__detachstate) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: extern int pthread_attr_setdetachstate (pthread_attr_t *__attr, -2441: int __detachstate) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: extern int pthread_attr_getguardsize (const pthread_attr_t *__attr, -2441: size_t *__guardsize) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: extern int pthread_attr_setguardsize (pthread_attr_t *__attr, -2441: size_t __guardsize) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: extern int pthread_attr_getschedparam (const pthread_attr_t *__restrict __attr, -2441: struct sched_param *__restrict __param) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr, -2441: const struct sched_param *__restrict -2441: __param) throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: extern int pthread_attr_getschedpolicy (const pthread_attr_t *__restrict -2441: __attr, int *__restrict __policy) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int pthread_attr_getinheritsched (const pthread_attr_t *__restrict -2441: __attr, int *__restrict __inherit) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: extern int pthread_attr_setinheritsched (pthread_attr_t *__attr, -2441: int __inherit) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: extern int pthread_attr_getscope (const pthread_attr_t *__restrict __attr, -2441: int *__restrict __scope) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int pthread_attr_getstackaddr (const pthread_attr_t *__restrict -2441: __attr, void **__restrict __stackaddr) -2441: throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__deprecated__)); -2441: -2441: -2441: -2441: -2441: -2441: extern int pthread_attr_setstackaddr (pthread_attr_t *__attr, -2441: void *__stackaddr) -2441: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)); -2441: -2441: -2441: extern int pthread_attr_getstacksize (const pthread_attr_t *__restrict -2441: __attr, size_t *__restrict __stacksize) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: -2441: -2441: extern int pthread_attr_setstacksize (pthread_attr_t *__attr, -2441: size_t __stacksize) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: extern int pthread_attr_getstack (const pthread_attr_t *__restrict __attr, -2441: void **__restrict __stackaddr, -2441: size_t *__restrict __stacksize) -2441: throw () __attribute__ ((__nonnull__ (1, 2, 3))); -2441: -2441: -2441: -2441: -2441: extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr, -2441: size_t __stacksize) throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: -2441: -2441: extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr, -2441: size_t __cpusetsize, -2441: const cpu_set_t *__cpuset) -2441: throw () __attribute__ ((__nonnull__ (1, 3))); -2441: -2441: -2441: -2441: extern int pthread_attr_getaffinity_np (const pthread_attr_t *__attr, -2441: size_t __cpusetsize, -2441: cpu_set_t *__cpuset) -2441: throw () __attribute__ ((__nonnull__ (1, 3))); -2441: -2441: -2441: extern int pthread_getattr_default_np (pthread_attr_t *__attr) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: extern int pthread_setattr_default_np (const pthread_attr_t *__attr) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: -2441: extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr) -2441: throw () __attribute__ ((__nonnull__ (2))); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int pthread_setschedparam (pthread_t __target_thread, int __policy, -2441: const struct sched_param *__param) -2441: throw () __attribute__ ((__nonnull__ (3))); -2441: -2441: -2441: extern int pthread_getschedparam (pthread_t __target_thread, -2441: int *__restrict __policy, -2441: struct sched_param *__restrict __param) -2441: throw () __attribute__ ((__nonnull__ (2, 3))); -2441: -2441: -2441: extern int pthread_setschedprio (pthread_t __target_thread, int __prio) -2441: throw (); -2441: -2441: -2441: -2441: -2441: extern int pthread_getname_np (pthread_t __target_thread, char *__buf, -2441: size_t __buflen) -2441: throw () __attribute__ ((__nonnull__ (2))); -2441: -2441: -2441: extern int pthread_setname_np (pthread_t __target_thread, const char *__name) -2441: throw () __attribute__ ((__nonnull__ (2))); -2441: -2441: -2441: -2441: -2441: -2441: extern int pthread_getconcurrency (void) throw (); -2441: -2441: -2441: extern int pthread_setconcurrency (int __level) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int pthread_yield (void) throw (); -2441: -2441: -2441: -2441: -2441: extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize, -2441: const cpu_set_t *__cpuset) -2441: throw () __attribute__ ((__nonnull__ (3))); -2441: -2441: -2441: extern int pthread_getaffinity_np (pthread_t __th, size_t __cpusetsize, -2441: cpu_set_t *__cpuset) -2441: throw () __attribute__ ((__nonnull__ (3))); -2441: # 495 "/usr/include/pthread.h" 3 4 -2441: extern int pthread_once (pthread_once_t *__once_control, -2441: void (*__init_routine) (void)) __attribute__ ((__nonnull__ (1, 2))); -2441: # 507 "/usr/include/pthread.h" 3 4 -2441: extern int pthread_setcancelstate (int __state, int *__oldstate); -2441: -2441: -2441: -2441: extern int pthread_setcanceltype (int __type, int *__oldtype); -2441: -2441: -2441: extern int pthread_cancel (pthread_t __th); -2441: -2441: -2441: -2441: -2441: extern void pthread_testcancel (void); -2441: -2441: -2441: -2441: -2441: typedef struct -2441: { -2441: struct -2441: { -2441: __jmp_buf __cancel_jmp_buf; -2441: int __mask_was_saved; -2441: } __cancel_jmp_buf[1]; -2441: void *__pad[4]; -2441: } __pthread_unwind_buf_t __attribute__ ((__aligned__)); -2441: # 541 "/usr/include/pthread.h" 3 4 -2441: struct __pthread_cleanup_frame -2441: { -2441: void (*__cancel_routine) (void *); -2441: void *__cancel_arg; -2441: int __do_it; -2441: int __cancel_type; -2441: }; -2441: -2441: -2441: -2441: -2441: class __pthread_cleanup_class -2441: { -2441: void (*__cancel_routine) (void *); -2441: void *__cancel_arg; -2441: int __do_it; -2441: int __cancel_type; -2441: -2441: public: -2441: __pthread_cleanup_class (void (*__fct) (void *), void *__arg) -2441: : __cancel_routine (__fct), __cancel_arg (__arg), __do_it (1) { } -2441: ~__pthread_cleanup_class () { if (__do_it) __cancel_routine (__cancel_arg); } -2441: void __setdoit (int __newval) { __do_it = __newval; } -2441: void __defer () { pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED, -2441: &__cancel_type); } -2441: void __restore () const { pthread_setcanceltype (__cancel_type, 0); } -2441: }; -2441: # 743 "/usr/include/pthread.h" 3 4 -2441: struct __jmp_buf_tag; -2441: extern int __sigsetjmp (struct __jmp_buf_tag *__env, int __savemask) throw (); -2441: -2441: -2441: -2441: -2441: -2441: extern int pthread_mutex_init (pthread_mutex_t *__mutex, -2441: const pthread_mutexattr_t *__mutexattr) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int pthread_mutex_destroy (pthread_mutex_t *__mutex) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int pthread_mutex_trylock (pthread_mutex_t *__mutex) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int pthread_mutex_lock (pthread_mutex_t *__mutex) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex, -2441: const struct timespec *__restrict -2441: __abstime) throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: -2441: extern int pthread_mutex_unlock (pthread_mutex_t *__mutex) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: extern int pthread_mutex_getprioceiling (const pthread_mutex_t * -2441: __restrict __mutex, -2441: int *__restrict __prioceiling) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: -2441: extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex, -2441: int __prioceiling, -2441: int *__restrict __old_ceiling) -2441: throw () __attribute__ ((__nonnull__ (1, 3))); -2441: -2441: -2441: -2441: -2441: extern int pthread_mutex_consistent (pthread_mutex_t *__mutex) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: extern int pthread_mutex_consistent_np (pthread_mutex_t *__mutex) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: # 807 "/usr/include/pthread.h" 3 4 -2441: extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int pthread_mutexattr_getpshared (const pthread_mutexattr_t * -2441: __restrict __attr, -2441: int *__restrict __pshared) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr, -2441: int __pshared) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: extern int pthread_mutexattr_gettype (const pthread_mutexattr_t *__restrict -2441: __attr, int *__restrict __kind) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: -2441: -2441: extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: extern int pthread_mutexattr_getprotocol (const pthread_mutexattr_t * -2441: __restrict __attr, -2441: int *__restrict __protocol) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: -2441: extern int pthread_mutexattr_setprotocol (pthread_mutexattr_t *__attr, -2441: int __protocol) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int pthread_mutexattr_getprioceiling (const pthread_mutexattr_t * -2441: __restrict __attr, -2441: int *__restrict __prioceiling) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: extern int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *__attr, -2441: int __prioceiling) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: extern int pthread_mutexattr_getrobust (const pthread_mutexattr_t *__attr, -2441: int *__robustness) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: extern int pthread_mutexattr_getrobust_np (const pthread_mutexattr_t *__attr, -2441: int *__robustness) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: -2441: extern int pthread_mutexattr_setrobust (pthread_mutexattr_t *__attr, -2441: int __robustness) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: extern int pthread_mutexattr_setrobust_np (pthread_mutexattr_t *__attr, -2441: int __robustness) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: # 889 "/usr/include/pthread.h" 3 4 -2441: extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock, -2441: const pthread_rwlockattr_t *__restrict -2441: __attr) throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock, -2441: const struct timespec *__restrict -2441: __abstime) throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: -2441: extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock, -2441: const struct timespec *__restrict -2441: __abstime) throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: -2441: extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: -2441: -2441: extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int pthread_rwlockattr_getpshared (const pthread_rwlockattr_t * -2441: __restrict __attr, -2441: int *__restrict __pshared) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr, -2441: int __pshared) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int pthread_rwlockattr_getkind_np (const pthread_rwlockattr_t * -2441: __restrict __attr, -2441: int *__restrict __pref) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr, -2441: int __pref) throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int pthread_cond_init (pthread_cond_t *__restrict __cond, -2441: const pthread_condattr_t *__restrict __cond_attr) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int pthread_cond_destroy (pthread_cond_t *__cond) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int pthread_cond_signal (pthread_cond_t *__cond) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int pthread_cond_broadcast (pthread_cond_t *__cond) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int pthread_cond_wait (pthread_cond_t *__restrict __cond, -2441: pthread_mutex_t *__restrict __mutex) -2441: __attribute__ ((__nonnull__ (1, 2))); -2441: # 1001 "/usr/include/pthread.h" 3 4 -2441: extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond, -2441: pthread_mutex_t *__restrict __mutex, -2441: const struct timespec *__restrict __abstime) -2441: __attribute__ ((__nonnull__ (1, 2, 3))); -2441: -2441: -2441: -2441: -2441: extern int pthread_condattr_init (pthread_condattr_t *__attr) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int pthread_condattr_destroy (pthread_condattr_t *__attr) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int pthread_condattr_getpshared (const pthread_condattr_t * -2441: __restrict __attr, -2441: int *__restrict __pshared) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: extern int pthread_condattr_setpshared (pthread_condattr_t *__attr, -2441: int __pshared) throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: extern int pthread_condattr_getclock (const pthread_condattr_t * -2441: __restrict __attr, -2441: __clockid_t *__restrict __clock_id) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: extern int pthread_condattr_setclock (pthread_condattr_t *__attr, -2441: __clockid_t __clock_id) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: # 1045 "/usr/include/pthread.h" 3 4 -2441: extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int pthread_spin_destroy (pthread_spinlock_t *__lock) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int pthread_spin_lock (pthread_spinlock_t *__lock) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int pthread_spin_trylock (pthread_spinlock_t *__lock) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int pthread_spin_unlock (pthread_spinlock_t *__lock) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier, -2441: const pthread_barrierattr_t *__restrict -2441: __attr, unsigned int __count) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int pthread_barrier_destroy (pthread_barrier_t *__barrier) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int pthread_barrier_wait (pthread_barrier_t *__barrier) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: extern int pthread_barrierattr_init (pthread_barrierattr_t *__attr) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int pthread_barrierattr_getpshared (const pthread_barrierattr_t * -2441: __restrict __attr, -2441: int *__restrict __pshared) -2441: throw () __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr, -2441: int __pshared) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: # 1112 "/usr/include/pthread.h" 3 4 -2441: extern int pthread_key_create (pthread_key_t *__key, -2441: void (*__destr_function) (void *)) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int pthread_key_delete (pthread_key_t __key) throw (); -2441: -2441: -2441: extern void *pthread_getspecific (pthread_key_t __key) throw (); -2441: -2441: -2441: extern int pthread_setspecific (pthread_key_t __key, -2441: const void *__pointer) throw () ; -2441: -2441: -2441: -2441: -2441: extern int pthread_getcpuclockid (pthread_t __thread_id, -2441: __clockid_t *__clock_id) -2441: throw () __attribute__ ((__nonnull__ (2))); -2441: # 1146 "/usr/include/pthread.h" 3 4 -2441: extern int pthread_atfork (void (*__prepare) (void), -2441: void (*__parent) (void), -2441: void (*__child) (void)) throw (); -2441: -2441: -2441: -2441: -2441: extern __inline __attribute__ ((__gnu_inline__)) int -2441: __attribute__ ((__leaf__)) pthread_equal (pthread_t __thread1, pthread_t __thread2) throw () -2441: { -2441: return __thread1 == __thread2; -2441: } -2441: -2441: -2441: } -2441: # 36 "/usr/include/i386-linux-gnu/c++/8/bits/gthr-default.h" 2 3 -2441: # 47 "/usr/include/i386-linux-gnu/c++/8/bits/gthr-default.h" 3 -2441: typedef pthread_t __gthread_t; -2441: typedef pthread_key_t __gthread_key_t; -2441: typedef pthread_once_t __gthread_once_t; -2441: typedef pthread_mutex_t __gthread_mutex_t; -2441: typedef pthread_mutex_t __gthread_recursive_mutex_t; -2441: typedef pthread_cond_t __gthread_cond_t; -2441: typedef struct timespec __gthread_time_t; -2441: # 101 "/usr/include/i386-linux-gnu/c++/8/bits/gthr-default.h" 3 -2441: static __typeof(pthread_once) __gthrw_pthread_once __attribute__ ((__weakref__("pthread_once"))); -2441: static __typeof(pthread_getspecific) __gthrw_pthread_getspecific __attribute__ ((__weakref__("pthread_getspecific"))); -2441: static __typeof(pthread_setspecific) __gthrw_pthread_setspecific __attribute__ ((__weakref__("pthread_setspecific"))); -2441: -2441: static __typeof(pthread_create) __gthrw_pthread_create __attribute__ ((__weakref__("pthread_create"))); -2441: static __typeof(pthread_join) __gthrw_pthread_join __attribute__ ((__weakref__("pthread_join"))); -2441: static __typeof(pthread_equal) __gthrw_pthread_equal __attribute__ ((__weakref__("pthread_equal"))); -2441: static __typeof(pthread_self) __gthrw_pthread_self __attribute__ ((__weakref__("pthread_self"))); -2441: static __typeof(pthread_detach) __gthrw_pthread_detach __attribute__ ((__weakref__("pthread_detach"))); -2441: -2441: static __typeof(pthread_cancel) __gthrw_pthread_cancel __attribute__ ((__weakref__("pthread_cancel"))); -2441: -2441: static __typeof(sched_yield) __gthrw_sched_yield __attribute__ ((__weakref__("sched_yield"))); -2441: -2441: static __typeof(pthread_mutex_lock) __gthrw_pthread_mutex_lock __attribute__ ((__weakref__("pthread_mutex_lock"))); -2441: static __typeof(pthread_mutex_trylock) __gthrw_pthread_mutex_trylock __attribute__ ((__weakref__("pthread_mutex_trylock"))); -2441: -2441: static __typeof(pthread_mutex_timedlock) __gthrw_pthread_mutex_timedlock __attribute__ ((__weakref__("pthread_mutex_timedlock"))); -2441: -2441: static __typeof(pthread_mutex_unlock) __gthrw_pthread_mutex_unlock __attribute__ ((__weakref__("pthread_mutex_unlock"))); -2441: static __typeof(pthread_mutex_init) __gthrw_pthread_mutex_init __attribute__ ((__weakref__("pthread_mutex_init"))); -2441: static __typeof(pthread_mutex_destroy) __gthrw_pthread_mutex_destroy __attribute__ ((__weakref__("pthread_mutex_destroy"))); -2441: -2441: static __typeof(pthread_cond_init) __gthrw_pthread_cond_init __attribute__ ((__weakref__("pthread_cond_init"))); -2441: static __typeof(pthread_cond_broadcast) __gthrw_pthread_cond_broadcast __attribute__ ((__weakref__("pthread_cond_broadcast"))); -2441: static __typeof(pthread_cond_signal) __gthrw_pthread_cond_signal __attribute__ ((__weakref__("pthread_cond_signal"))); -2441: static __typeof(pthread_cond_wait) __gthrw_pthread_cond_wait __attribute__ ((__weakref__("pthread_cond_wait"))); -2441: static __typeof(pthread_cond_timedwait) __gthrw_pthread_cond_timedwait __attribute__ ((__weakref__("pthread_cond_timedwait"))); -2441: static __typeof(pthread_cond_destroy) __gthrw_pthread_cond_destroy __attribute__ ((__weakref__("pthread_cond_destroy"))); -2441: -2441: static __typeof(pthread_key_create) __gthrw_pthread_key_create __attribute__ ((__weakref__("pthread_key_create"))); -2441: static __typeof(pthread_key_delete) __gthrw_pthread_key_delete __attribute__ ((__weakref__("pthread_key_delete"))); -2441: static __typeof(pthread_mutexattr_init) __gthrw_pthread_mutexattr_init __attribute__ ((__weakref__("pthread_mutexattr_init"))); -2441: static __typeof(pthread_mutexattr_settype) __gthrw_pthread_mutexattr_settype __attribute__ ((__weakref__("pthread_mutexattr_settype"))); -2441: static __typeof(pthread_mutexattr_destroy) __gthrw_pthread_mutexattr_destroy __attribute__ ((__weakref__("pthread_mutexattr_destroy"))); -2441: # 236 "/usr/include/i386-linux-gnu/c++/8/bits/gthr-default.h" 3 -2441: static __typeof(pthread_key_create) __gthrw___pthread_key_create __attribute__ ((__weakref__("__pthread_key_create"))); -2441: # 246 "/usr/include/i386-linux-gnu/c++/8/bits/gthr-default.h" 3 -2441: static inline int -2441: __gthread_active_p (void) -2441: { -2441: static void *const __gthread_active_ptr -2441: = __extension__ (void *) &__gthrw___pthread_key_create; -2441: return __gthread_active_ptr != 0; -2441: } -2441: # 658 "/usr/include/i386-linux-gnu/c++/8/bits/gthr-default.h" 3 -2441: static inline int -2441: __gthread_create (__gthread_t *__threadid, void *(*__func) (void*), -2441: void *__args) -2441: { -2441: return __gthrw_pthread_create (__threadid, __null, __func, __args); -2441: } -2441: -2441: static inline int -2441: __gthread_join (__gthread_t __threadid, void **__value_ptr) -2441: { -2441: return __gthrw_pthread_join (__threadid, __value_ptr); -2441: } -2441: -2441: static inline int -2441: __gthread_detach (__gthread_t __threadid) -2441: { -2441: return __gthrw_pthread_detach (__threadid); -2441: } -2441: -2441: static inline int -2441: __gthread_equal (__gthread_t __t1, __gthread_t __t2) -2441: { -2441: return __gthrw_pthread_equal (__t1, __t2); -2441: } -2441: -2441: static inline __gthread_t -2441: __gthread_self (void) -2441: { -2441: return __gthrw_pthread_self (); -2441: } -2441: -2441: static inline int -2441: __gthread_yield (void) -2441: { -2441: return __gthrw_sched_yield (); -2441: } -2441: -2441: static inline int -2441: __gthread_once (__gthread_once_t *__once, void (*__func) (void)) -2441: { -2441: if (__gthread_active_p ()) -2441: return __gthrw_pthread_once (__once, __func); -2441: else -2441: return -1; -2441: } -2441: -2441: static inline int -2441: __gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) -2441: { -2441: return __gthrw_pthread_key_create (__key, __dtor); -2441: } -2441: -2441: static inline int -2441: __gthread_key_delete (__gthread_key_t __key) -2441: { -2441: return __gthrw_pthread_key_delete (__key); -2441: } -2441: -2441: static inline void * -2441: __gthread_getspecific (__gthread_key_t __key) -2441: { -2441: return __gthrw_pthread_getspecific (__key); -2441: } -2441: -2441: static inline int -2441: __gthread_setspecific (__gthread_key_t __key, const void *__ptr) -2441: { -2441: return __gthrw_pthread_setspecific (__key, __ptr); -2441: } -2441: -2441: static inline void -2441: __gthread_mutex_init_function (__gthread_mutex_t *__mutex) -2441: { -2441: if (__gthread_active_p ()) -2441: __gthrw_pthread_mutex_init (__mutex, __null); -2441: } -2441: -2441: static inline int -2441: __gthread_mutex_destroy (__gthread_mutex_t *__mutex) -2441: { -2441: if (__gthread_active_p ()) -2441: return __gthrw_pthread_mutex_destroy (__mutex); -2441: else -2441: return 0; -2441: } -2441: -2441: static inline int -2441: __gthread_mutex_lock (__gthread_mutex_t *__mutex) -2441: { -2441: if (__gthread_active_p ()) -2441: return __gthrw_pthread_mutex_lock (__mutex); -2441: else -2441: return 0; -2441: } -2441: -2441: static inline int -2441: __gthread_mutex_trylock (__gthread_mutex_t *__mutex) -2441: { -2441: if (__gthread_active_p ()) -2441: return __gthrw_pthread_mutex_trylock (__mutex); -2441: else -2441: return 0; -2441: } -2441: -2441: -2441: static inline int -2441: __gthread_mutex_timedlock (__gthread_mutex_t *__mutex, -2441: const __gthread_time_t *__abs_timeout) -2441: { -2441: if (__gthread_active_p ()) -2441: return __gthrw_pthread_mutex_timedlock (__mutex, __abs_timeout); -2441: else -2441: return 0; -2441: } -2441: -2441: -2441: static inline int -2441: __gthread_mutex_unlock (__gthread_mutex_t *__mutex) -2441: { -2441: if (__gthread_active_p ()) -2441: return __gthrw_pthread_mutex_unlock (__mutex); -2441: else -2441: return 0; -2441: } -2441: # 807 "/usr/include/i386-linux-gnu/c++/8/bits/gthr-default.h" 3 -2441: static inline int -2441: __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -2441: { -2441: return __gthread_mutex_lock (__mutex); -2441: } -2441: -2441: static inline int -2441: __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -2441: { -2441: return __gthread_mutex_trylock (__mutex); -2441: } -2441: -2441: -2441: static inline int -2441: __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, -2441: const __gthread_time_t *__abs_timeout) -2441: { -2441: return __gthread_mutex_timedlock (__mutex, __abs_timeout); -2441: } -2441: -2441: -2441: static inline int -2441: __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -2441: { -2441: return __gthread_mutex_unlock (__mutex); -2441: } -2441: -2441: static inline int -2441: __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -2441: { -2441: return __gthread_mutex_destroy (__mutex); -2441: } -2441: # 849 "/usr/include/i386-linux-gnu/c++/8/bits/gthr-default.h" 3 -2441: static inline int -2441: __gthread_cond_broadcast (__gthread_cond_t *__cond) -2441: { -2441: return __gthrw_pthread_cond_broadcast (__cond); -2441: } -2441: -2441: static inline int -2441: __gthread_cond_signal (__gthread_cond_t *__cond) -2441: { -2441: return __gthrw_pthread_cond_signal (__cond); -2441: } -2441: -2441: static inline int -2441: __gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) -2441: { -2441: return __gthrw_pthread_cond_wait (__cond, __mutex); -2441: } -2441: -2441: static inline int -2441: __gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, -2441: const __gthread_time_t *__abs_timeout) -2441: { -2441: return __gthrw_pthread_cond_timedwait (__cond, __mutex, __abs_timeout); -2441: } -2441: -2441: static inline int -2441: __gthread_cond_wait_recursive (__gthread_cond_t *__cond, -2441: __gthread_recursive_mutex_t *__mutex) -2441: { -2441: return __gthread_cond_wait (__cond, __mutex); -2441: } -2441: -2441: static inline int -2441: __gthread_cond_destroy (__gthread_cond_t* __cond) -2441: { -2441: return __gthrw_pthread_cond_destroy (__cond); -2441: } -2441: # 149 "/usr/include/i386-linux-gnu/c++/8/bits/gthr.h" 2 3 -2441: -2441: -2441: #pragma GCC visibility pop -2441: # 36 "/usr/include/c++/8/ext/atomicity.h" 2 3 -2441: # 1 "/usr/include/i386-linux-gnu/c++/8/bits/atomic_word.h" 1 3 -2441: # 32 "/usr/include/i386-linux-gnu/c++/8/bits/atomic_word.h" 3 -2441: typedef int _Atomic_word; -2441: # 37 "/usr/include/c++/8/ext/atomicity.h" 2 3 -2441: -2441: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: static inline _Atomic_word -2441: __exchange_and_add(volatile _Atomic_word* __mem, int __val) -2441: { return __atomic_fetch_add(__mem, __val, 4); } -2441: -2441: static inline void -2441: __atomic_add(volatile _Atomic_word* __mem, int __val) -2441: { __atomic_fetch_add(__mem, __val, 4); } -2441: # 64 "/usr/include/c++/8/ext/atomicity.h" 3 -2441: static inline _Atomic_word -2441: __exchange_and_add_single(_Atomic_word* __mem, int __val) -2441: { -2441: _Atomic_word __result = *__mem; -2441: *__mem += __val; -2441: return __result; -2441: } -2441: -2441: static inline void -2441: __atomic_add_single(_Atomic_word* __mem, int __val) -2441: { *__mem += __val; } -2441: -2441: static inline _Atomic_word -2441: __attribute__ ((__unused__)) -2441: __exchange_and_add_dispatch(_Atomic_word* __mem, int __val) -2441: { -2441: -2441: if (__gthread_active_p()) -2441: return __exchange_and_add(__mem, __val); -2441: else -2441: return __exchange_and_add_single(__mem, __val); -2441: -2441: -2441: -2441: } -2441: -2441: static inline void -2441: __attribute__ ((__unused__)) -2441: __atomic_add_dispatch(_Atomic_word* __mem, int __val) -2441: { -2441: -2441: if (__gthread_active_p()) -2441: __atomic_add(__mem, __val); -2441: else -2441: __atomic_add_single(__mem, __val); -2441: -2441: -2441: -2441: } -2441: -2441: -2441: } -2441: # 40 "/usr/include/c++/8/bits/basic_string.h" 2 3 -2441: # 52 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: namespace __cxx11 { -2441: # 76 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: template -2441: class basic_string -2441: { -2441: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template -2441: rebind<_CharT>::other _Char_alloc_type; -2441: typedef __gnu_cxx::__alloc_traits<_Char_alloc_type> _Alloc_traits; -2441: -2441: -2441: public: -2441: typedef _Traits traits_type; -2441: typedef typename _Traits::char_type value_type; -2441: typedef _Char_alloc_type allocator_type; -2441: typedef typename _Alloc_traits::size_type size_type; -2441: typedef typename _Alloc_traits::difference_type difference_type; -2441: typedef typename _Alloc_traits::reference reference; -2441: typedef typename _Alloc_traits::const_reference const_reference; -2441: typedef typename _Alloc_traits::pointer pointer; -2441: typedef typename _Alloc_traits::const_pointer const_pointer; -2441: typedef __gnu_cxx::__normal_iterator iterator; -2441: typedef __gnu_cxx::__normal_iterator -2441: const_iterator; -2441: typedef std::reverse_iterator const_reverse_iterator; -2441: typedef std::reverse_iterator reverse_iterator; -2441: -2441: -2441: static const size_type npos = static_cast(-1); -2441: -2441: private: -2441: -2441: -2441: -2441: -2441: typedef const_iterator __const_iterator; -2441: # 139 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: struct _Alloc_hider : allocator_type -2441: { -2441: -2441: -2441: -2441: -2441: _Alloc_hider(pointer __dat, const _Alloc& __a) -2441: : allocator_type(__a), _M_p(__dat) { } -2441: -2441: _Alloc_hider(pointer __dat, _Alloc&& __a = _Alloc()) -2441: : allocator_type(std::move(__a)), _M_p(__dat) { } -2441: -2441: -2441: pointer _M_p; -2441: }; -2441: -2441: _Alloc_hider _M_dataplus; -2441: size_type _M_string_length; -2441: -2441: enum { _S_local_capacity = 15 / sizeof(_CharT) }; -2441: -2441: union -2441: { -2441: _CharT _M_local_buf[_S_local_capacity + 1]; -2441: size_type _M_allocated_capacity; -2441: }; -2441: -2441: void -2441: _M_data(pointer __p) -2441: { _M_dataplus._M_p = __p; } -2441: -2441: void -2441: _M_length(size_type __length) -2441: { _M_string_length = __length; } -2441: -2441: pointer -2441: _M_data() const -2441: { return _M_dataplus._M_p; } -2441: -2441: pointer -2441: _M_local_data() -2441: { -2441: -2441: return std::pointer_traits::pointer_to(*_M_local_buf); -2441: -2441: -2441: -2441: } -2441: -2441: const_pointer -2441: _M_local_data() const -2441: { -2441: -2441: return std::pointer_traits::pointer_to(*_M_local_buf); -2441: -2441: -2441: -2441: } -2441: -2441: void -2441: _M_capacity(size_type __capacity) -2441: { _M_allocated_capacity = __capacity; } -2441: -2441: void -2441: _M_set_length(size_type __n) -2441: { -2441: _M_length(__n); -2441: traits_type::assign(_M_data()[__n], _CharT()); -2441: } -2441: -2441: bool -2441: _M_is_local() const -2441: { return _M_data() == _M_local_data(); } -2441: -2441: -2441: pointer -2441: _M_create(size_type&, size_type); -2441: -2441: void -2441: _M_dispose() -2441: { -2441: if (!_M_is_local()) -2441: _M_destroy(_M_allocated_capacity); -2441: } -2441: -2441: void -2441: _M_destroy(size_type __size) throw() -2441: { _Alloc_traits::deallocate(_M_get_allocator(), _M_data(), __size + 1); } -2441: -2441: -2441: -2441: template -2441: void -2441: _M_construct_aux(_InIterator __beg, _InIterator __end, -2441: std::__false_type) -2441: { -2441: typedef typename iterator_traits<_InIterator>::iterator_category _Tag; -2441: _M_construct(__beg, __end, _Tag()); -2441: } -2441: -2441: -2441: -2441: template -2441: void -2441: _M_construct_aux(_Integer __beg, _Integer __end, std::__true_type) -2441: { _M_construct_aux_2(static_cast(__beg), __end); } -2441: -2441: void -2441: _M_construct_aux_2(size_type __req, _CharT __c) -2441: { _M_construct(__req, __c); } -2441: -2441: template -2441: void -2441: _M_construct(_InIterator __beg, _InIterator __end) -2441: { -2441: typedef typename std::__is_integer<_InIterator>::__type _Integral; -2441: _M_construct_aux(__beg, __end, _Integral()); -2441: } -2441: -2441: -2441: template -2441: void -2441: _M_construct(_InIterator __beg, _InIterator __end, -2441: std::input_iterator_tag); -2441: -2441: -2441: -2441: template -2441: void -2441: _M_construct(_FwdIterator __beg, _FwdIterator __end, -2441: std::forward_iterator_tag); -2441: -2441: void -2441: _M_construct(size_type __req, _CharT __c); -2441: -2441: allocator_type& -2441: _M_get_allocator() -2441: { return _M_dataplus; } -2441: -2441: const allocator_type& -2441: _M_get_allocator() const -2441: { return _M_dataplus; } -2441: -2441: private: -2441: # 298 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: size_type -2441: _M_check(size_type __pos, const char* __s) const -2441: { -2441: if (__pos > this->size()) -2441: __throw_out_of_range_fmt(("%s: __pos (which is %zu) > " "this->size() (which is %zu)") -2441: , -2441: __s, __pos, this->size()); -2441: return __pos; -2441: } -2441: -2441: void -2441: _M_check_length(size_type __n1, size_type __n2, const char* __s) const -2441: { -2441: if (this->max_size() - (this->size() - __n1) < __n2) -2441: __throw_length_error((__s)); -2441: } -2441: -2441: -2441: -2441: size_type -2441: _M_limit(size_type __pos, size_type __off) const noexcept -2441: { -2441: const bool __testoff = __off < this->size() - __pos; -2441: return __testoff ? __off : this->size() - __pos; -2441: } -2441: -2441: -2441: bool -2441: _M_disjunct(const _CharT* __s) const noexcept -2441: { -2441: return (less()(__s, _M_data()) -2441: || less()(_M_data() + this->size(), __s)); -2441: } -2441: -2441: -2441: -2441: static void -2441: _S_copy(_CharT* __d, const _CharT* __s, size_type __n) -2441: { -2441: if (__n == 1) -2441: traits_type::assign(*__d, *__s); -2441: else -2441: traits_type::copy(__d, __s, __n); -2441: } -2441: -2441: static void -2441: _S_move(_CharT* __d, const _CharT* __s, size_type __n) -2441: { -2441: if (__n == 1) -2441: traits_type::assign(*__d, *__s); -2441: else -2441: traits_type::move(__d, __s, __n); -2441: } -2441: -2441: static void -2441: _S_assign(_CharT* __d, size_type __n, _CharT __c) -2441: { -2441: if (__n == 1) -2441: traits_type::assign(*__d, __c); -2441: else -2441: traits_type::assign(__d, __n, __c); -2441: } -2441: -2441: -2441: -2441: template -2441: static void -2441: _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2) -2441: { -2441: for (; __k1 != __k2; ++__k1, (void)++__p) -2441: traits_type::assign(*__p, *__k1); -2441: } -2441: -2441: static void -2441: _S_copy_chars(_CharT* __p, iterator __k1, iterator __k2) noexcept -2441: { _S_copy_chars(__p, __k1.base(), __k2.base()); } -2441: -2441: static void -2441: _S_copy_chars(_CharT* __p, const_iterator __k1, const_iterator __k2) -2441: noexcept -2441: { _S_copy_chars(__p, __k1.base(), __k2.base()); } -2441: -2441: static void -2441: _S_copy_chars(_CharT* __p, _CharT* __k1, _CharT* __k2) noexcept -2441: { _S_copy(__p, __k1, __k2 - __k1); } -2441: -2441: static void -2441: _S_copy_chars(_CharT* __p, const _CharT* __k1, const _CharT* __k2) -2441: noexcept -2441: { _S_copy(__p, __k1, __k2 - __k1); } -2441: -2441: static int -2441: _S_compare(size_type __n1, size_type __n2) noexcept -2441: { -2441: const difference_type __d = difference_type(__n1 - __n2); -2441: -2441: if (__d > __gnu_cxx::__numeric_traits::__max) -2441: return __gnu_cxx::__numeric_traits::__max; -2441: else if (__d < __gnu_cxx::__numeric_traits::__min) -2441: return __gnu_cxx::__numeric_traits::__min; -2441: else -2441: return int(__d); -2441: } -2441: -2441: void -2441: _M_assign(const basic_string&); -2441: -2441: void -2441: _M_mutate(size_type __pos, size_type __len1, const _CharT* __s, -2441: size_type __len2); -2441: -2441: void -2441: _M_erase(size_type __pos, size_type __n); -2441: -2441: public: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: basic_string() -2441: noexcept(is_nothrow_default_constructible<_Alloc>::value) -2441: : _M_dataplus(_M_local_data()) -2441: { _M_set_length(0); } -2441: -2441: -2441: -2441: -2441: explicit -2441: basic_string(const _Alloc& __a) noexcept -2441: : _M_dataplus(_M_local_data(), __a) -2441: { _M_set_length(0); } -2441: -2441: -2441: -2441: -2441: -2441: basic_string(const basic_string& __str) -2441: : _M_dataplus(_M_local_data(), -2441: _Alloc_traits::_S_select_on_copy(__str._M_get_allocator())) -2441: { _M_construct(__str._M_data(), __str._M_data() + __str.length()); } -2441: # 450 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string(const basic_string& __str, size_type __pos, -2441: const _Alloc& __a = _Alloc()) -2441: : _M_dataplus(_M_local_data(), __a) -2441: { -2441: const _CharT* __start = __str._M_data() -2441: + __str._M_check(__pos, "basic_string::basic_string"); -2441: _M_construct(__start, __start + __str._M_limit(__pos, npos)); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: basic_string(const basic_string& __str, size_type __pos, -2441: size_type __n) -2441: : _M_dataplus(_M_local_data()) -2441: { -2441: const _CharT* __start = __str._M_data() -2441: + __str._M_check(__pos, "basic_string::basic_string"); -2441: _M_construct(__start, __start + __str._M_limit(__pos, __n)); -2441: } -2441: # 481 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string(const basic_string& __str, size_type __pos, -2441: size_type __n, const _Alloc& __a) -2441: : _M_dataplus(_M_local_data(), __a) -2441: { -2441: const _CharT* __start -2441: = __str._M_data() + __str._M_check(__pos, "string::string"); -2441: _M_construct(__start, __start + __str._M_limit(__pos, __n)); -2441: } -2441: # 499 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string(const _CharT* __s, size_type __n, -2441: const _Alloc& __a = _Alloc()) -2441: : _M_dataplus(_M_local_data(), __a) -2441: { _M_construct(__s, __s + __n); } -2441: # 514 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string(const _CharT* __s, const _Alloc& __a = _Alloc()) -2441: : _M_dataplus(_M_local_data(), __a) -2441: { _M_construct(__s, __s ? __s + traits_type::length(__s) : __s+npos); } -2441: # 529 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc()) -2441: : _M_dataplus(_M_local_data(), __a) -2441: { _M_construct(__n, __c); } -2441: # 541 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string(basic_string&& __str) noexcept -2441: : _M_dataplus(_M_local_data(), std::move(__str._M_get_allocator())) -2441: { -2441: if (__str._M_is_local()) -2441: { -2441: traits_type::copy(_M_local_buf, __str._M_local_buf, -2441: _S_local_capacity + 1); -2441: } -2441: else -2441: { -2441: _M_data(__str._M_data()); -2441: _M_capacity(__str._M_allocated_capacity); -2441: } -2441: -2441: -2441: -2441: -2441: _M_length(__str.length()); -2441: __str._M_data(__str._M_local_data()); -2441: __str._M_set_length(0); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: basic_string(initializer_list<_CharT> __l, const _Alloc& __a = _Alloc()) -2441: : _M_dataplus(_M_local_data(), __a) -2441: { _M_construct(__l.begin(), __l.end()); } -2441: -2441: basic_string(const basic_string& __str, const _Alloc& __a) -2441: : _M_dataplus(_M_local_data(), __a) -2441: { _M_construct(__str.begin(), __str.end()); } -2441: -2441: basic_string(basic_string&& __str, const _Alloc& __a) -2441: noexcept(_Alloc_traits::_S_always_equal()) -2441: : _M_dataplus(_M_local_data(), __a) -2441: { -2441: if (__str._M_is_local()) -2441: { -2441: traits_type::copy(_M_local_buf, __str._M_local_buf, -2441: _S_local_capacity + 1); -2441: _M_length(__str.length()); -2441: __str._M_set_length(0); -2441: } -2441: else if (_Alloc_traits::_S_always_equal() -2441: || __str.get_allocator() == __a) -2441: { -2441: _M_data(__str._M_data()); -2441: _M_length(__str.length()); -2441: _M_capacity(__str._M_allocated_capacity); -2441: __str._M_data(__str._M_local_buf); -2441: __str._M_set_length(0); -2441: } -2441: else -2441: _M_construct(__str.begin(), __str.end()); -2441: } -2441: # 609 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: template> -2441: -2441: -2441: -2441: basic_string(_InputIterator __beg, _InputIterator __end, -2441: const _Alloc& __a = _Alloc()) -2441: : _M_dataplus(_M_local_data(), __a) -2441: { _M_construct(__beg, __end); } -2441: # 656 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: ~basic_string() -2441: { _M_dispose(); } -2441: -2441: -2441: -2441: -2441: -2441: basic_string& -2441: operator=(const basic_string& __str) -2441: { -2441: -2441: if (_Alloc_traits::_S_propagate_on_copy_assign()) -2441: { -2441: if (!_Alloc_traits::_S_always_equal() && !_M_is_local() -2441: && _M_get_allocator() != __str._M_get_allocator()) -2441: { -2441: -2441: -2441: if (__str.size() <= _S_local_capacity) -2441: { -2441: _M_destroy(_M_allocated_capacity); -2441: _M_data(_M_local_data()); -2441: _M_set_length(0); -2441: } -2441: else -2441: { -2441: const auto __len = __str.size(); -2441: auto __alloc = __str._M_get_allocator(); -2441: -2441: auto __ptr = _Alloc_traits::allocate(__alloc, __len + 1); -2441: _M_destroy(_M_allocated_capacity); -2441: _M_data(__ptr); -2441: _M_capacity(__len); -2441: _M_set_length(__len); -2441: } -2441: } -2441: std::__alloc_on_copy(_M_get_allocator(), __str._M_get_allocator()); -2441: } -2441: -2441: return this->assign(__str); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: basic_string& -2441: operator=(const _CharT* __s) -2441: { return this->assign(__s); } -2441: # 713 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string& -2441: operator=(_CharT __c) -2441: { -2441: this->assign(1, __c); -2441: return *this; -2441: } -2441: # 731 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string& -2441: operator=(basic_string&& __str) -2441: noexcept(_Alloc_traits::_S_nothrow_move()) -2441: { -2441: if (!_M_is_local() && _Alloc_traits::_S_propagate_on_move_assign() -2441: && !_Alloc_traits::_S_always_equal() -2441: && _M_get_allocator() != __str._M_get_allocator()) -2441: { -2441: -2441: _M_destroy(_M_allocated_capacity); -2441: _M_data(_M_local_data()); -2441: _M_set_length(0); -2441: } -2441: -2441: std::__alloc_on_move(_M_get_allocator(), __str._M_get_allocator()); -2441: -2441: if (__str._M_is_local()) -2441: { -2441: -2441: if (__str.size()) -2441: this->_S_copy(_M_data(), __str._M_data(), __str.size()); -2441: _M_set_length(__str.size()); -2441: } -2441: else if (_Alloc_traits::_S_propagate_on_move_assign() -2441: || _Alloc_traits::_S_always_equal() -2441: || _M_get_allocator() == __str._M_get_allocator()) -2441: { -2441: -2441: pointer __data = nullptr; -2441: size_type __capacity; -2441: if (!_M_is_local()) -2441: { -2441: if (_Alloc_traits::_S_always_equal()) -2441: { -2441: -2441: __data = _M_data(); -2441: __capacity = _M_allocated_capacity; -2441: } -2441: else -2441: _M_destroy(_M_allocated_capacity); -2441: } -2441: -2441: _M_data(__str._M_data()); -2441: _M_length(__str.length()); -2441: _M_capacity(__str._M_allocated_capacity); -2441: if (__data) -2441: { -2441: __str._M_data(__data); -2441: __str._M_capacity(__capacity); -2441: } -2441: else -2441: __str._M_data(__str._M_local_buf); -2441: } -2441: else -2441: assign(__str); -2441: __str.clear(); -2441: return *this; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: basic_string& -2441: operator=(initializer_list<_CharT> __l) -2441: { -2441: this->assign(__l.begin(), __l.size()); -2441: return *this; -2441: } -2441: # 825 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: iterator -2441: begin() noexcept -2441: { return iterator(_M_data()); } -2441: -2441: -2441: -2441: -2441: -2441: const_iterator -2441: begin() const noexcept -2441: { return const_iterator(_M_data()); } -2441: -2441: -2441: -2441: -2441: -2441: iterator -2441: end() noexcept -2441: { return iterator(_M_data() + this->size()); } -2441: -2441: -2441: -2441: -2441: -2441: const_iterator -2441: end() const noexcept -2441: { return const_iterator(_M_data() + this->size()); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: reverse_iterator -2441: rbegin() noexcept -2441: { return reverse_iterator(this->end()); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_reverse_iterator -2441: rbegin() const noexcept -2441: { return const_reverse_iterator(this->end()); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: reverse_iterator -2441: rend() noexcept -2441: { return reverse_iterator(this->begin()); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_reverse_iterator -2441: rend() const noexcept -2441: { return const_reverse_iterator(this->begin()); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_iterator -2441: cbegin() const noexcept -2441: { return const_iterator(this->_M_data()); } -2441: -2441: -2441: -2441: -2441: -2441: const_iterator -2441: cend() const noexcept -2441: { return const_iterator(this->_M_data() + this->size()); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_reverse_iterator -2441: crbegin() const noexcept -2441: { return const_reverse_iterator(this->end()); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_reverse_iterator -2441: crend() const noexcept -2441: { return const_reverse_iterator(this->begin()); } -2441: -2441: -2441: public: -2441: -2441: -2441: -2441: size_type -2441: size() const noexcept -2441: { return _M_string_length; } -2441: -2441: -2441: -2441: size_type -2441: length() const noexcept -2441: { return _M_string_length; } -2441: -2441: -2441: size_type -2441: max_size() const noexcept -2441: { return (_Alloc_traits::max_size(_M_get_allocator()) - 1) / 2; } -2441: # 954 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: void -2441: resize(size_type __n, _CharT __c); -2441: # 967 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: void -2441: resize(size_type __n) -2441: { this->resize(__n, _CharT()); } -2441: -2441: -2441: -2441: void -2441: shrink_to_fit() noexcept -2441: { -2441: -2441: if (capacity() > size()) -2441: { -2441: try -2441: { reserve(0); } -2441: catch(...) -2441: { } -2441: } -2441: -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: size_type -2441: capacity() const noexcept -2441: { -2441: return _M_is_local() ? size_type(_S_local_capacity) -2441: : _M_allocated_capacity; -2441: } -2441: # 1016 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: void -2441: reserve(size_type __res_arg = 0); -2441: -2441: -2441: -2441: -2441: void -2441: clear() noexcept -2441: { _M_set_length(0); } -2441: -2441: -2441: -2441: -2441: -2441: bool -2441: empty() const noexcept -2441: { return this->size() == 0; } -2441: # 1045 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: const_reference -2441: operator[] (size_type __pos) const noexcept -2441: { -2441: ; -2441: return _M_data()[__pos]; -2441: } -2441: # 1062 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: reference -2441: operator[](size_type __pos) -2441: { -2441: -2441: -2441: ; -2441: -2441: ; -2441: return _M_data()[__pos]; -2441: } -2441: # 1083 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: const_reference -2441: at(size_type __n) const -2441: { -2441: if (__n >= this->size()) -2441: __throw_out_of_range_fmt(("basic_string::at: __n " "(which is %zu) >= this->size() " "(which is %zu)") -2441: -2441: , -2441: __n, this->size()); -2441: return _M_data()[__n]; -2441: } -2441: # 1104 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: reference -2441: at(size_type __n) -2441: { -2441: if (__n >= size()) -2441: __throw_out_of_range_fmt(("basic_string::at: __n " "(which is %zu) >= this->size() " "(which is %zu)") -2441: -2441: , -2441: __n, this->size()); -2441: return _M_data()[__n]; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: reference -2441: front() noexcept -2441: { -2441: ; -2441: return operator[](0); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: const_reference -2441: front() const noexcept -2441: { -2441: ; -2441: return operator[](0); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: reference -2441: back() noexcept -2441: { -2441: ; -2441: return operator[](this->size() - 1); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: const_reference -2441: back() const noexcept -2441: { -2441: ; -2441: return operator[](this->size() - 1); -2441: } -2441: # 1167 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string& -2441: operator+=(const basic_string& __str) -2441: { return this->append(__str); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: basic_string& -2441: operator+=(const _CharT* __s) -2441: { return this->append(__s); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: basic_string& -2441: operator+=(_CharT __c) -2441: { -2441: this->push_back(__c); -2441: return *this; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: basic_string& -2441: operator+=(initializer_list<_CharT> __l) -2441: { return this->append(__l.begin(), __l.size()); } -2441: # 1220 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string& -2441: append(const basic_string& __str) -2441: { return _M_append(__str._M_data(), __str.size()); } -2441: # 1237 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string& -2441: append(const basic_string& __str, size_type __pos, size_type __n = npos) -2441: { return _M_append(__str._M_data() -2441: + __str._M_check(__pos, "basic_string::append"), -2441: __str._M_limit(__pos, __n)); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: basic_string& -2441: append(const _CharT* __s, size_type __n) -2441: { -2441: ; -2441: _M_check_length(size_type(0), __n, "basic_string::append"); -2441: return _M_append(__s, __n); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: basic_string& -2441: append(const _CharT* __s) -2441: { -2441: ; -2441: const size_type __n = traits_type::length(__s); -2441: _M_check_length(size_type(0), __n, "basic_string::append"); -2441: return _M_append(__s, __n); -2441: } -2441: # 1279 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string& -2441: append(size_type __n, _CharT __c) -2441: { return _M_replace_aux(this->size(), size_type(0), __n, __c); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: basic_string& -2441: append(initializer_list<_CharT> __l) -2441: { return this->append(__l.begin(), __l.size()); } -2441: # 1303 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: template> -2441: -2441: -2441: -2441: basic_string& -2441: append(_InputIterator __first, _InputIterator __last) -2441: { return this->replace(end(), end(), __first, __last); } -2441: # 1348 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: void -2441: push_back(_CharT __c) -2441: { -2441: const size_type __size = this->size(); -2441: if (__size + 1 > this->capacity()) -2441: this->_M_mutate(__size, size_type(0), 0, size_type(1)); -2441: traits_type::assign(this->_M_data()[__size], __c); -2441: this->_M_set_length(__size + 1); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: basic_string& -2441: assign(const basic_string& __str) -2441: { -2441: this->_M_assign(__str); -2441: return *this; -2441: } -2441: # 1379 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string& -2441: assign(basic_string&& __str) -2441: noexcept(_Alloc_traits::_S_nothrow_move()) -2441: { -2441: -2441: -2441: return *this = std::move(__str); -2441: } -2441: # 1402 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string& -2441: assign(const basic_string& __str, size_type __pos, size_type __n = npos) -2441: { return _M_replace(size_type(0), this->size(), __str._M_data() -2441: + __str._M_check(__pos, "basic_string::assign"), -2441: __str._M_limit(__pos, __n)); } -2441: # 1418 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string& -2441: assign(const _CharT* __s, size_type __n) -2441: { -2441: ; -2441: return _M_replace(size_type(0), this->size(), __s, __n); -2441: } -2441: # 1434 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string& -2441: assign(const _CharT* __s) -2441: { -2441: ; -2441: return _M_replace(size_type(0), this->size(), __s, -2441: traits_type::length(__s)); -2441: } -2441: # 1451 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string& -2441: assign(size_type __n, _CharT __c) -2441: { return _M_replace_aux(size_type(0), this->size(), __n, __c); } -2441: # 1464 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: template> -2441: -2441: -2441: -2441: basic_string& -2441: assign(_InputIterator __first, _InputIterator __last) -2441: { return this->replace(begin(), end(), __first, __last); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: basic_string& -2441: assign(initializer_list<_CharT> __l) -2441: { return this->assign(__l.begin(), __l.size()); } -2441: # 1532 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: iterator -2441: insert(const_iterator __p, size_type __n, _CharT __c) -2441: { -2441: ; -2441: const size_type __pos = __p - begin(); -2441: this->replace(__p, __p, __n, __c); -2441: return iterator(this->_M_data() + __pos); -2441: } -2441: # 1574 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: template> -2441: iterator -2441: insert(const_iterator __p, _InputIterator __beg, _InputIterator __end) -2441: { -2441: ; -2441: const size_type __pos = __p - begin(); -2441: this->replace(__p, __p, __beg, __end); -2441: return iterator(this->_M_data() + __pos); -2441: } -2441: # 1610 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: void -2441: insert(iterator __p, initializer_list<_CharT> __l) -2441: { -2441: ; -2441: this->insert(__p - begin(), __l.begin(), __l.size()); -2441: } -2441: # 1630 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string& -2441: insert(size_type __pos1, const basic_string& __str) -2441: { return this->replace(__pos1, size_type(0), -2441: __str._M_data(), __str.size()); } -2441: # 1653 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string& -2441: insert(size_type __pos1, const basic_string& __str, -2441: size_type __pos2, size_type __n = npos) -2441: { return this->replace(__pos1, size_type(0), __str._M_data() -2441: + __str._M_check(__pos2, "basic_string::insert"), -2441: __str._M_limit(__pos2, __n)); } -2441: # 1676 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string& -2441: insert(size_type __pos, const _CharT* __s, size_type __n) -2441: { return this->replace(__pos, size_type(0), __s, __n); } -2441: # 1695 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string& -2441: insert(size_type __pos, const _CharT* __s) -2441: { -2441: ; -2441: return this->replace(__pos, size_type(0), __s, -2441: traits_type::length(__s)); -2441: } -2441: # 1719 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string& -2441: insert(size_type __pos, size_type __n, _CharT __c) -2441: { return _M_replace_aux(_M_check(__pos, "basic_string::insert"), -2441: size_type(0), __n, __c); } -2441: # 1737 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: iterator -2441: insert(__const_iterator __p, _CharT __c) -2441: { -2441: ; -2441: const size_type __pos = __p - begin(); -2441: _M_replace_aux(__pos, size_type(0), size_type(1), __c); -2441: return iterator(_M_data() + __pos); -2441: } -2441: # 1797 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string& -2441: erase(size_type __pos = 0, size_type __n = npos) -2441: { -2441: _M_check(__pos, "basic_string::erase"); -2441: if (__n == npos) -2441: this->_M_set_length(__pos); -2441: else if (__n != 0) -2441: this->_M_erase(__pos, _M_limit(__pos, __n)); -2441: return *this; -2441: } -2441: # 1816 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: iterator -2441: erase(__const_iterator __position) -2441: { -2441: -2441: ; -2441: const size_type __pos = __position - begin(); -2441: this->_M_erase(__pos, size_type(1)); -2441: return iterator(_M_data() + __pos); -2441: } -2441: # 1835 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: iterator -2441: erase(__const_iterator __first, __const_iterator __last) -2441: { -2441: -2441: ; -2441: const size_type __pos = __first - begin(); -2441: if (__last == end()) -2441: this->_M_set_length(__pos); -2441: else -2441: this->_M_erase(__pos, __last - __first); -2441: return iterator(this->_M_data() + __pos); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void -2441: pop_back() noexcept -2441: { -2441: ; -2441: _M_erase(size() - 1, 1); -2441: } -2441: # 1879 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string& -2441: replace(size_type __pos, size_type __n, const basic_string& __str) -2441: { return this->replace(__pos, __n, __str._M_data(), __str.size()); } -2441: # 1901 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string& -2441: replace(size_type __pos1, size_type __n1, const basic_string& __str, -2441: size_type __pos2, size_type __n2 = npos) -2441: { return this->replace(__pos1, __n1, __str._M_data() -2441: + __str._M_check(__pos2, "basic_string::replace"), -2441: __str._M_limit(__pos2, __n2)); } -2441: # 1926 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string& -2441: replace(size_type __pos, size_type __n1, const _CharT* __s, -2441: size_type __n2) -2441: { -2441: ; -2441: return _M_replace(_M_check(__pos, "basic_string::replace"), -2441: _M_limit(__pos, __n1), __s, __n2); -2441: } -2441: # 1951 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string& -2441: replace(size_type __pos, size_type __n1, const _CharT* __s) -2441: { -2441: ; -2441: return this->replace(__pos, __n1, __s, traits_type::length(__s)); -2441: } -2441: # 1975 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string& -2441: replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c) -2441: { return _M_replace_aux(_M_check(__pos, "basic_string::replace"), -2441: _M_limit(__pos, __n1), __n2, __c); } -2441: # 1993 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string& -2441: replace(__const_iterator __i1, __const_iterator __i2, -2441: const basic_string& __str) -2441: { return this->replace(__i1, __i2, __str._M_data(), __str.size()); } -2441: # 2013 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string& -2441: replace(__const_iterator __i1, __const_iterator __i2, -2441: const _CharT* __s, size_type __n) -2441: { -2441: -2441: ; -2441: return this->replace(__i1 - begin(), __i2 - __i1, __s, __n); -2441: } -2441: # 2035 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string& -2441: replace(__const_iterator __i1, __const_iterator __i2, const _CharT* __s) -2441: { -2441: ; -2441: return this->replace(__i1, __i2, __s, traits_type::length(__s)); -2441: } -2441: # 2056 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string& -2441: replace(__const_iterator __i1, __const_iterator __i2, size_type __n, -2441: _CharT __c) -2441: { -2441: -2441: ; -2441: return _M_replace_aux(__i1 - begin(), __i2 - __i1, __n, __c); -2441: } -2441: # 2081 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: template> -2441: basic_string& -2441: replace(const_iterator __i1, const_iterator __i2, -2441: _InputIterator __k1, _InputIterator __k2) -2441: { -2441: -2441: ; -2441: ; -2441: return this->_M_replace_dispatch(__i1, __i2, __k1, __k2, -2441: std::__false_type()); -2441: } -2441: # 2113 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string& -2441: replace(__const_iterator __i1, __const_iterator __i2, -2441: _CharT* __k1, _CharT* __k2) -2441: { -2441: -2441: ; -2441: ; -2441: return this->replace(__i1 - begin(), __i2 - __i1, -2441: __k1, __k2 - __k1); -2441: } -2441: -2441: basic_string& -2441: replace(__const_iterator __i1, __const_iterator __i2, -2441: const _CharT* __k1, const _CharT* __k2) -2441: { -2441: -2441: ; -2441: ; -2441: return this->replace(__i1 - begin(), __i2 - __i1, -2441: __k1, __k2 - __k1); -2441: } -2441: -2441: basic_string& -2441: replace(__const_iterator __i1, __const_iterator __i2, -2441: iterator __k1, iterator __k2) -2441: { -2441: -2441: ; -2441: ; -2441: return this->replace(__i1 - begin(), __i2 - __i1, -2441: __k1.base(), __k2 - __k1); -2441: } -2441: -2441: basic_string& -2441: replace(__const_iterator __i1, __const_iterator __i2, -2441: const_iterator __k1, const_iterator __k2) -2441: { -2441: -2441: ; -2441: ; -2441: return this->replace(__i1 - begin(), __i2 - __i1, -2441: __k1.base(), __k2 - __k1); -2441: } -2441: # 2172 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string& replace(const_iterator __i1, const_iterator __i2, -2441: initializer_list<_CharT> __l) -2441: { return this->replace(__i1, __i2, __l.begin(), __l.size()); } -2441: # 2231 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: private: -2441: template -2441: basic_string& -2441: _M_replace_dispatch(const_iterator __i1, const_iterator __i2, -2441: _Integer __n, _Integer __val, __true_type) -2441: { return _M_replace_aux(__i1 - begin(), __i2 - __i1, __n, __val); } -2441: -2441: template -2441: basic_string& -2441: _M_replace_dispatch(const_iterator __i1, const_iterator __i2, -2441: _InputIterator __k1, _InputIterator __k2, -2441: __false_type); -2441: -2441: basic_string& -2441: _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2, -2441: _CharT __c); -2441: -2441: basic_string& -2441: _M_replace(size_type __pos, size_type __len1, const _CharT* __s, -2441: const size_type __len2); -2441: -2441: basic_string& -2441: _M_append(const _CharT* __s, size_type __n); -2441: -2441: public: -2441: # 2269 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: size_type -2441: copy(_CharT* __s, size_type __n, size_type __pos = 0) const; -2441: # 2279 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: void -2441: swap(basic_string& __s) noexcept; -2441: # 2289 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: const _CharT* -2441: c_str() const noexcept -2441: { return _M_data(); } -2441: # 2301 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: const _CharT* -2441: data() const noexcept -2441: { return _M_data(); } -2441: # 2320 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: allocator_type -2441: get_allocator() const noexcept -2441: { return _M_get_allocator(); } -2441: # 2336 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: size_type -2441: find(const _CharT* __s, size_type __pos, size_type __n) const -2441: noexcept; -2441: # 2350 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: size_type -2441: find(const basic_string& __str, size_type __pos = 0) const -2441: noexcept -2441: { return this->find(__str.data(), __pos, __str.size()); } -2441: # 2382 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: size_type -2441: find(const _CharT* __s, size_type __pos = 0) const noexcept -2441: { -2441: ; -2441: return this->find(__s, __pos, traits_type::length(__s)); -2441: } -2441: # 2399 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: size_type -2441: find(_CharT __c, size_type __pos = 0) const noexcept; -2441: # 2412 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: size_type -2441: rfind(const basic_string& __str, size_type __pos = npos) const -2441: noexcept -2441: { return this->rfind(__str.data(), __pos, __str.size()); } -2441: # 2446 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: size_type -2441: rfind(const _CharT* __s, size_type __pos, size_type __n) const -2441: noexcept; -2441: # 2460 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: size_type -2441: rfind(const _CharT* __s, size_type __pos = npos) const -2441: { -2441: ; -2441: return this->rfind(__s, __pos, traits_type::length(__s)); -2441: } -2441: # 2477 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: size_type -2441: rfind(_CharT __c, size_type __pos = npos) const noexcept; -2441: # 2491 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: size_type -2441: find_first_of(const basic_string& __str, size_type __pos = 0) const -2441: noexcept -2441: { return this->find_first_of(__str.data(), __pos, __str.size()); } -2441: # 2526 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: size_type -2441: find_first_of(const _CharT* __s, size_type __pos, size_type __n) const -2441: noexcept; -2441: # 2540 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: size_type -2441: find_first_of(const _CharT* __s, size_type __pos = 0) const -2441: noexcept -2441: { -2441: ; -2441: return this->find_first_of(__s, __pos, traits_type::length(__s)); -2441: } -2441: # 2560 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: size_type -2441: find_first_of(_CharT __c, size_type __pos = 0) const noexcept -2441: { return this->find(__c, __pos); } -2441: # 2575 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: size_type -2441: find_last_of(const basic_string& __str, size_type __pos = npos) const -2441: noexcept -2441: { return this->find_last_of(__str.data(), __pos, __str.size()); } -2441: # 2610 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: size_type -2441: find_last_of(const _CharT* __s, size_type __pos, size_type __n) const -2441: noexcept; -2441: # 2624 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: size_type -2441: find_last_of(const _CharT* __s, size_type __pos = npos) const -2441: noexcept -2441: { -2441: ; -2441: return this->find_last_of(__s, __pos, traits_type::length(__s)); -2441: } -2441: # 2644 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: size_type -2441: find_last_of(_CharT __c, size_type __pos = npos) const noexcept -2441: { return this->rfind(__c, __pos); } -2441: # 2658 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: size_type -2441: find_first_not_of(const basic_string& __str, size_type __pos = 0) const -2441: noexcept -2441: { return this->find_first_not_of(__str.data(), __pos, __str.size()); } -2441: # 2693 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: size_type -2441: find_first_not_of(const _CharT* __s, size_type __pos, -2441: size_type __n) const noexcept; -2441: # 2707 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: size_type -2441: find_first_not_of(const _CharT* __s, size_type __pos = 0) const -2441: noexcept -2441: { -2441: ; -2441: return this->find_first_not_of(__s, __pos, traits_type::length(__s)); -2441: } -2441: # 2725 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: size_type -2441: find_first_not_of(_CharT __c, size_type __pos = 0) const -2441: noexcept; -2441: # 2740 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: size_type -2441: find_last_not_of(const basic_string& __str, size_type __pos = npos) const -2441: noexcept -2441: { return this->find_last_not_of(__str.data(), __pos, __str.size()); } -2441: # 2775 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: size_type -2441: find_last_not_of(const _CharT* __s, size_type __pos, -2441: size_type __n) const noexcept; -2441: # 2789 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: size_type -2441: find_last_not_of(const _CharT* __s, size_type __pos = npos) const -2441: noexcept -2441: { -2441: ; -2441: return this->find_last_not_of(__s, __pos, traits_type::length(__s)); -2441: } -2441: # 2807 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: size_type -2441: find_last_not_of(_CharT __c, size_type __pos = npos) const -2441: noexcept; -2441: # 2823 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: basic_string -2441: substr(size_type __pos = 0, size_type __n = npos) const -2441: { return basic_string(*this, -2441: _M_check(__pos, "basic_string::substr"), __n); } -2441: # 2842 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: int -2441: compare(const basic_string& __str) const -2441: { -2441: const size_type __size = this->size(); -2441: const size_type __osize = __str.size(); -2441: const size_type __len = std::min(__size, __osize); -2441: -2441: int __r = traits_type::compare(_M_data(), __str.data(), __len); -2441: if (!__r) -2441: __r = _S_compare(__size, __osize); -2441: return __r; -2441: } -2441: # 2935 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: int -2441: compare(size_type __pos, size_type __n, const basic_string& __str) const; -2441: # 2961 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: int -2441: compare(size_type __pos1, size_type __n1, const basic_string& __str, -2441: size_type __pos2, size_type __n2 = npos) const; -2441: # 2979 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: int -2441: compare(const _CharT* __s) const noexcept; -2441: # 3003 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: int -2441: compare(size_type __pos, size_type __n1, const _CharT* __s) const; -2441: # 3030 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: int -2441: compare(size_type __pos, size_type __n1, const _CharT* __s, -2441: size_type __n2) const; -2441: -2441: -2441: template friend class basic_stringbuf; -2441: }; -2441: } -2441: # 5925 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: template -2441: basic_string<_CharT, _Traits, _Alloc> -2441: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, -2441: const basic_string<_CharT, _Traits, _Alloc>& __rhs) -2441: { -2441: basic_string<_CharT, _Traits, _Alloc> __str(__lhs); -2441: __str.append(__rhs); -2441: return __str; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: basic_string<_CharT,_Traits,_Alloc> -2441: operator+(const _CharT* __lhs, -2441: const basic_string<_CharT,_Traits,_Alloc>& __rhs); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: basic_string<_CharT,_Traits,_Alloc> -2441: operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline basic_string<_CharT, _Traits, _Alloc> -2441: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, -2441: const _CharT* __rhs) -2441: { -2441: basic_string<_CharT, _Traits, _Alloc> __str(__lhs); -2441: __str.append(__rhs); -2441: return __str; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline basic_string<_CharT, _Traits, _Alloc> -2441: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, _CharT __rhs) -2441: { -2441: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; -2441: typedef typename __string_type::size_type __size_type; -2441: __string_type __str(__lhs); -2441: __str.append(__size_type(1), __rhs); -2441: return __str; -2441: } -2441: -2441: -2441: template -2441: inline basic_string<_CharT, _Traits, _Alloc> -2441: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, -2441: const basic_string<_CharT, _Traits, _Alloc>& __rhs) -2441: { return std::move(__lhs.append(__rhs)); } -2441: -2441: template -2441: inline basic_string<_CharT, _Traits, _Alloc> -2441: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, -2441: basic_string<_CharT, _Traits, _Alloc>&& __rhs) -2441: { return std::move(__rhs.insert(0, __lhs)); } -2441: -2441: template -2441: inline basic_string<_CharT, _Traits, _Alloc> -2441: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, -2441: basic_string<_CharT, _Traits, _Alloc>&& __rhs) -2441: { -2441: const auto __size = __lhs.size() + __rhs.size(); -2441: const bool __cond = (__size > __lhs.capacity() -2441: && __size <= __rhs.capacity()); -2441: return __cond ? std::move(__rhs.insert(0, __lhs)) -2441: : std::move(__lhs.append(__rhs)); -2441: } -2441: -2441: template -2441: inline basic_string<_CharT, _Traits, _Alloc> -2441: operator+(const _CharT* __lhs, -2441: basic_string<_CharT, _Traits, _Alloc>&& __rhs) -2441: { return std::move(__rhs.insert(0, __lhs)); } -2441: -2441: template -2441: inline basic_string<_CharT, _Traits, _Alloc> -2441: operator+(_CharT __lhs, -2441: basic_string<_CharT, _Traits, _Alloc>&& __rhs) -2441: { return std::move(__rhs.insert(0, 1, __lhs)); } -2441: -2441: template -2441: inline basic_string<_CharT, _Traits, _Alloc> -2441: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, -2441: const _CharT* __rhs) -2441: { return std::move(__lhs.append(__rhs)); } -2441: -2441: template -2441: inline basic_string<_CharT, _Traits, _Alloc> -2441: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, -2441: _CharT __rhs) -2441: { return std::move(__lhs.append(1, __rhs)); } -2441: # 6046 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: template -2441: inline bool -2441: operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, -2441: const basic_string<_CharT, _Traits, _Alloc>& __rhs) -2441: noexcept -2441: { return __lhs.compare(__rhs) == 0; } -2441: -2441: template -2441: inline -2441: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, bool>::__type -2441: operator==(const basic_string<_CharT>& __lhs, -2441: const basic_string<_CharT>& __rhs) noexcept -2441: { return (__lhs.size() == __rhs.size() -2441: && !std::char_traits<_CharT>::compare(__lhs.data(), __rhs.data(), -2441: __lhs.size())); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline bool -2441: operator==(const _CharT* __lhs, -2441: const basic_string<_CharT, _Traits, _Alloc>& __rhs) -2441: { return __rhs.compare(__lhs) == 0; } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline bool -2441: operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, -2441: const _CharT* __rhs) -2441: { return __lhs.compare(__rhs) == 0; } -2441: # 6093 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: template -2441: inline bool -2441: operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, -2441: const basic_string<_CharT, _Traits, _Alloc>& __rhs) -2441: noexcept -2441: { return !(__lhs == __rhs); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline bool -2441: operator!=(const _CharT* __lhs, -2441: const basic_string<_CharT, _Traits, _Alloc>& __rhs) -2441: { return !(__lhs == __rhs); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline bool -2441: operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, -2441: const _CharT* __rhs) -2441: { return !(__lhs == __rhs); } -2441: # 6131 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: template -2441: inline bool -2441: operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs, -2441: const basic_string<_CharT, _Traits, _Alloc>& __rhs) -2441: noexcept -2441: { return __lhs.compare(__rhs) < 0; } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline bool -2441: operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs, -2441: const _CharT* __rhs) -2441: { return __lhs.compare(__rhs) < 0; } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline bool -2441: operator<(const _CharT* __lhs, -2441: const basic_string<_CharT, _Traits, _Alloc>& __rhs) -2441: { return __rhs.compare(__lhs) > 0; } -2441: # 6169 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: template -2441: inline bool -2441: operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, -2441: const basic_string<_CharT, _Traits, _Alloc>& __rhs) -2441: noexcept -2441: { return __lhs.compare(__rhs) > 0; } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline bool -2441: operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, -2441: const _CharT* __rhs) -2441: { return __lhs.compare(__rhs) > 0; } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline bool -2441: operator>(const _CharT* __lhs, -2441: const basic_string<_CharT, _Traits, _Alloc>& __rhs) -2441: { return __rhs.compare(__lhs) < 0; } -2441: # 6207 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: template -2441: inline bool -2441: operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, -2441: const basic_string<_CharT, _Traits, _Alloc>& __rhs) -2441: noexcept -2441: { return __lhs.compare(__rhs) <= 0; } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline bool -2441: operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, -2441: const _CharT* __rhs) -2441: { return __lhs.compare(__rhs) <= 0; } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline bool -2441: operator<=(const _CharT* __lhs, -2441: const basic_string<_CharT, _Traits, _Alloc>& __rhs) -2441: { return __rhs.compare(__lhs) >= 0; } -2441: # 6245 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: template -2441: inline bool -2441: operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, -2441: const basic_string<_CharT, _Traits, _Alloc>& __rhs) -2441: noexcept -2441: { return __lhs.compare(__rhs) >= 0; } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline bool -2441: operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, -2441: const _CharT* __rhs) -2441: { return __lhs.compare(__rhs) >= 0; } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline bool -2441: operator>=(const _CharT* __lhs, -2441: const basic_string<_CharT, _Traits, _Alloc>& __rhs) -2441: { return __rhs.compare(__lhs) <= 0; } -2441: # 6283 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: template -2441: inline void -2441: swap(basic_string<_CharT, _Traits, _Alloc>& __lhs, -2441: basic_string<_CharT, _Traits, _Alloc>& __rhs) -2441: noexcept(noexcept(__lhs.swap(__rhs))) -2441: { __lhs.swap(__rhs); } -2441: # 6303 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: template -2441: basic_istream<_CharT, _Traits>& -2441: operator>>(basic_istream<_CharT, _Traits>& __is, -2441: basic_string<_CharT, _Traits, _Alloc>& __str); -2441: -2441: template<> -2441: basic_istream& -2441: operator>>(basic_istream& __is, basic_string& __str); -2441: # 6321 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: template -2441: inline basic_ostream<_CharT, _Traits>& -2441: operator<<(basic_ostream<_CharT, _Traits>& __os, -2441: const basic_string<_CharT, _Traits, _Alloc>& __str) -2441: { -2441: -2441: -2441: return __ostream_insert(__os, __str.data(), __str.size()); -2441: } -2441: # 6344 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: template -2441: basic_istream<_CharT, _Traits>& -2441: getline(basic_istream<_CharT, _Traits>& __is, -2441: basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim); -2441: # 6361 "/usr/include/c++/8/bits/basic_string.h" 3 -2441: template -2441: inline basic_istream<_CharT, _Traits>& -2441: getline(basic_istream<_CharT, _Traits>& __is, -2441: basic_string<_CharT, _Traits, _Alloc>& __str) -2441: { return std::getline(__is, __str, __is.widen('\n')); } -2441: -2441: -2441: -2441: template -2441: inline basic_istream<_CharT, _Traits>& -2441: getline(basic_istream<_CharT, _Traits>&& __is, -2441: basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim) -2441: { return std::getline(__is, __str, __delim); } -2441: -2441: -2441: template -2441: inline basic_istream<_CharT, _Traits>& -2441: getline(basic_istream<_CharT, _Traits>&& __is, -2441: basic_string<_CharT, _Traits, _Alloc>& __str) -2441: { return std::getline(__is, __str); } -2441: -2441: -2441: template<> -2441: basic_istream& -2441: getline(basic_istream& __in, basic_string& __str, -2441: char __delim); -2441: -2441: -2441: template<> -2441: basic_istream& -2441: getline(basic_istream& __in, basic_string& __str, -2441: wchar_t __delim); -2441: -2441: -2441: -2441: } -2441: -2441: -2441: -2441: # 1 "/usr/include/c++/8/ext/string_conversions.h" 1 3 -2441: # 32 "/usr/include/c++/8/ext/string_conversions.h" 3 -2441: -2441: # 33 "/usr/include/c++/8/ext/string_conversions.h" 3 -2441: # 41 "/usr/include/c++/8/ext/string_conversions.h" 3 -2441: # 1 "/usr/include/c++/8/cstdlib" 1 3 -2441: # 39 "/usr/include/c++/8/cstdlib" 3 -2441: -2441: # 40 "/usr/include/c++/8/cstdlib" 3 -2441: # 42 "/usr/include/c++/8/ext/string_conversions.h" 2 3 -2441: # 1 "/usr/include/c++/8/cwchar" 1 3 -2441: # 39 "/usr/include/c++/8/cwchar" 3 -2441: -2441: # 40 "/usr/include/c++/8/cwchar" 3 -2441: # 43 "/usr/include/c++/8/ext/string_conversions.h" 2 3 -2441: # 1 "/usr/include/c++/8/cstdio" 1 3 -2441: # 39 "/usr/include/c++/8/cstdio" 3 -2441: -2441: # 40 "/usr/include/c++/8/cstdio" 3 -2441: -2441: -2441: # 1 "/usr/include/stdio.h" 1 3 4 -2441: # 27 "/usr/include/stdio.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/libc-header-start.h" 1 3 4 -2441: # 28 "/usr/include/stdio.h" 2 3 4 -2441: -2441: extern "C" { -2441: -2441: -2441: -2441: # 1 "/usr/lib/gcc/i686-linux-gnu/8/include/stddef.h" 1 3 4 -2441: # 34 "/usr/include/stdio.h" 2 3 4 -2441: -2441: -2441: # 1 "/usr/lib/gcc/i686-linux-gnu/8/include/stdarg.h" 1 3 4 -2441: # 37 "/usr/include/stdio.h" 2 3 4 -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/types/__fpos_t.h" 1 3 4 -2441: # 10 "/usr/include/i386-linux-gnu/bits/types/__fpos_t.h" 3 4 -2441: typedef struct _G_fpos_t -2441: { -2441: __off_t __pos; -2441: __mbstate_t __state; -2441: } __fpos_t; -2441: # 40 "/usr/include/stdio.h" 2 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/types/__fpos64_t.h" 1 3 4 -2441: # 10 "/usr/include/i386-linux-gnu/bits/types/__fpos64_t.h" 3 4 -2441: typedef struct _G_fpos64_t -2441: { -2441: __off64_t __pos; -2441: __mbstate_t __state; -2441: } __fpos64_t; -2441: # 41 "/usr/include/stdio.h" 2 3 4 -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/types/struct_FILE.h" 1 3 4 -2441: # 35 "/usr/include/i386-linux-gnu/bits/types/struct_FILE.h" 3 4 -2441: struct _IO_FILE; -2441: struct _IO_marker; -2441: struct _IO_codecvt; -2441: struct _IO_wide_data; -2441: -2441: -2441: -2441: -2441: typedef void _IO_lock_t; -2441: -2441: -2441: -2441: -2441: -2441: struct _IO_FILE -2441: { -2441: int _flags; -2441: -2441: -2441: char *_IO_read_ptr; -2441: char *_IO_read_end; -2441: char *_IO_read_base; -2441: char *_IO_write_base; -2441: char *_IO_write_ptr; -2441: char *_IO_write_end; -2441: char *_IO_buf_base; -2441: char *_IO_buf_end; -2441: -2441: -2441: char *_IO_save_base; -2441: char *_IO_backup_base; -2441: char *_IO_save_end; -2441: -2441: struct _IO_marker *_markers; -2441: -2441: struct _IO_FILE *_chain; -2441: -2441: int _fileno; -2441: int _flags2; -2441: __off_t _old_offset; -2441: -2441: -2441: unsigned short _cur_column; -2441: signed char _vtable_offset; -2441: char _shortbuf[1]; -2441: -2441: _IO_lock_t *_lock; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: __off64_t _offset; -2441: -2441: struct _IO_codecvt *_codecvt; -2441: struct _IO_wide_data *_wide_data; -2441: struct _IO_FILE *_freeres_list; -2441: void *_freeres_buf; -2441: size_t __pad5; -2441: int _mode; -2441: -2441: char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)]; -2441: }; -2441: # 44 "/usr/include/stdio.h" 2 3 4 -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/types/cookie_io_functions_t.h" 1 3 4 -2441: # 27 "/usr/include/i386-linux-gnu/bits/types/cookie_io_functions_t.h" 3 4 -2441: typedef __ssize_t cookie_read_function_t (void *__cookie, char *__buf, -2441: size_t __nbytes); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: typedef __ssize_t cookie_write_function_t (void *__cookie, const char *__buf, -2441: size_t __nbytes); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: typedef int cookie_seek_function_t (void *__cookie, __off64_t *__pos, int __w); -2441: -2441: -2441: typedef int cookie_close_function_t (void *__cookie); -2441: -2441: -2441: -2441: -2441: -2441: -2441: typedef struct _IO_cookie_io_functions_t -2441: { -2441: cookie_read_function_t *read; -2441: cookie_write_function_t *write; -2441: cookie_seek_function_t *seek; -2441: cookie_close_function_t *close; -2441: } cookie_io_functions_t; -2441: # 47 "/usr/include/stdio.h" 2 3 4 -2441: -2441: -2441: -2441: -2441: -2441: typedef __gnuc_va_list va_list; -2441: # 84 "/usr/include/stdio.h" 3 4 -2441: typedef __fpos_t fpos_t; -2441: -2441: -2441: -2441: -2441: typedef __fpos64_t fpos64_t; -2441: # 133 "/usr/include/stdio.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/stdio_lim.h" 1 3 4 -2441: # 134 "/usr/include/stdio.h" 2 3 4 -2441: -2441: -2441: -2441: extern FILE *stdin; -2441: extern FILE *stdout; -2441: extern FILE *stderr; -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int remove (const char *__filename) throw (); -2441: -2441: extern int rename (const char *__old, const char *__new) throw (); -2441: -2441: -2441: -2441: extern int renameat (int __oldfd, const char *__old, int __newfd, -2441: const char *__new) throw (); -2441: # 164 "/usr/include/stdio.h" 3 4 -2441: extern int renameat2 (int __oldfd, const char *__old, int __newfd, -2441: const char *__new, unsigned int __flags) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern FILE *tmpfile (void) __attribute__ ((__warn_unused_result__)); -2441: # 183 "/usr/include/stdio.h" 3 4 -2441: extern FILE *tmpfile64 (void) __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: extern char *tmpnam (char *__s) throw () __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: extern char *tmpnam_r (char *__s) throw () __attribute__ ((__warn_unused_result__)); -2441: # 204 "/usr/include/stdio.h" 3 4 -2441: extern char *tempnam (const char *__dir, const char *__pfx) -2441: throw () __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int fclose (FILE *__stream); -2441: -2441: -2441: -2441: -2441: extern int fflush (FILE *__stream); -2441: # 227 "/usr/include/stdio.h" 3 4 -2441: extern int fflush_unlocked (FILE *__stream); -2441: # 237 "/usr/include/stdio.h" 3 4 -2441: extern int fcloseall (void); -2441: # 246 "/usr/include/stdio.h" 3 4 -2441: extern FILE *fopen (const char *__restrict __filename, -2441: const char *__restrict __modes) __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: extern FILE *freopen (const char *__restrict __filename, -2441: const char *__restrict __modes, -2441: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); -2441: # 270 "/usr/include/stdio.h" 3 4 -2441: extern FILE *fopen64 (const char *__restrict __filename, -2441: const char *__restrict __modes) __attribute__ ((__warn_unused_result__)); -2441: extern FILE *freopen64 (const char *__restrict __filename, -2441: const char *__restrict __modes, -2441: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: extern FILE *fdopen (int __fd, const char *__modes) throw () __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: -2441: extern FILE *fopencookie (void *__restrict __magic_cookie, -2441: const char *__restrict __modes, -2441: cookie_io_functions_t __io_funcs) throw () __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: extern FILE *fmemopen (void *__s, size_t __len, const char *__modes) -2441: throw () __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) throw () __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: -2441: extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) throw (); -2441: -2441: -2441: -2441: extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, -2441: int __modes, size_t __n) throw (); -2441: -2441: -2441: -2441: -2441: extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, -2441: size_t __size) throw (); -2441: -2441: -2441: extern void setlinebuf (FILE *__stream) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int fprintf (FILE *__restrict __stream, -2441: const char *__restrict __format, ...); -2441: -2441: -2441: -2441: -2441: extern int printf (const char *__restrict __format, ...); -2441: -2441: extern int sprintf (char *__restrict __s, -2441: const char *__restrict __format, ...) throw (); -2441: -2441: -2441: -2441: -2441: -2441: extern int vfprintf (FILE *__restrict __s, const char *__restrict __format, -2441: __gnuc_va_list __arg); -2441: -2441: -2441: -2441: -2441: extern int vprintf (const char *__restrict __format, __gnuc_va_list __arg); -2441: -2441: extern int vsprintf (char *__restrict __s, const char *__restrict __format, -2441: __gnuc_va_list __arg) throw (); -2441: -2441: -2441: -2441: extern int snprintf (char *__restrict __s, size_t __maxlen, -2441: const char *__restrict __format, ...) -2441: throw () __attribute__ ((__format__ (__printf__, 3, 4))); -2441: -2441: extern int vsnprintf (char *__restrict __s, size_t __maxlen, -2441: const char *__restrict __format, __gnuc_va_list __arg) -2441: throw () __attribute__ ((__format__ (__printf__, 3, 0))); -2441: -2441: -2441: -2441: -2441: -2441: extern int vasprintf (char **__restrict __ptr, const char *__restrict __f, -2441: __gnuc_va_list __arg) -2441: throw () __attribute__ ((__format__ (__printf__, 2, 0))) __attribute__ ((__warn_unused_result__)); -2441: extern int __asprintf (char **__restrict __ptr, -2441: const char *__restrict __fmt, ...) -2441: throw () __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__)); -2441: extern int asprintf (char **__restrict __ptr, -2441: const char *__restrict __fmt, ...) -2441: throw () __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: extern int vdprintf (int __fd, const char *__restrict __fmt, -2441: __gnuc_va_list __arg) -2441: __attribute__ ((__format__ (__printf__, 2, 0))); -2441: extern int dprintf (int __fd, const char *__restrict __fmt, ...) -2441: __attribute__ ((__format__ (__printf__, 2, 3))); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int fscanf (FILE *__restrict __stream, -2441: const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: extern int scanf (const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__)); -2441: -2441: extern int sscanf (const char *__restrict __s, -2441: const char *__restrict __format, ...) throw (); -2441: # 434 "/usr/include/stdio.h" 3 4 -2441: extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, -2441: __gnuc_va_list __arg) -2441: __attribute__ ((__format__ (__scanf__, 2, 0))) __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: -2441: extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg) -2441: __attribute__ ((__format__ (__scanf__, 1, 0))) __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: extern int vsscanf (const char *__restrict __s, -2441: const char *__restrict __format, __gnuc_va_list __arg) -2441: throw () __attribute__ ((__format__ (__scanf__, 2, 0))); -2441: # 491 "/usr/include/stdio.h" 3 4 -2441: extern int fgetc (FILE *__stream); -2441: extern int getc (FILE *__stream); -2441: -2441: -2441: -2441: -2441: -2441: extern int getchar (void); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int getc_unlocked (FILE *__stream); -2441: extern int getchar_unlocked (void); -2441: # 516 "/usr/include/stdio.h" 3 4 -2441: extern int fgetc_unlocked (FILE *__stream); -2441: # 527 "/usr/include/stdio.h" 3 4 -2441: extern int fputc (int __c, FILE *__stream); -2441: extern int putc (int __c, FILE *__stream); -2441: -2441: -2441: -2441: -2441: -2441: extern int putchar (int __c); -2441: # 543 "/usr/include/stdio.h" 3 4 -2441: extern int fputc_unlocked (int __c, FILE *__stream); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int putc_unlocked (int __c, FILE *__stream); -2441: extern int putchar_unlocked (int __c); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int getw (FILE *__stream); -2441: -2441: -2441: extern int putw (int __w, FILE *__stream); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) -2441: __attribute__ ((__warn_unused_result__)); -2441: # 593 "/usr/include/stdio.h" 3 4 -2441: extern char *fgets_unlocked (char *__restrict __s, int __n, -2441: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); -2441: # 609 "/usr/include/stdio.h" 3 4 -2441: extern __ssize_t __getdelim (char **__restrict __lineptr, -2441: size_t *__restrict __n, int __delimiter, -2441: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); -2441: extern __ssize_t getdelim (char **__restrict __lineptr, -2441: size_t *__restrict __n, int __delimiter, -2441: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern __ssize_t getline (char **__restrict __lineptr, -2441: size_t *__restrict __n, -2441: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int fputs (const char *__restrict __s, FILE *__restrict __stream); -2441: -2441: -2441: -2441: -2441: -2441: extern int puts (const char *__s); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int ungetc (int __c, FILE *__stream); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern size_t fread (void *__restrict __ptr, size_t __size, -2441: size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: extern size_t fwrite (const void *__restrict __ptr, size_t __size, -2441: size_t __n, FILE *__restrict __s); -2441: # 668 "/usr/include/stdio.h" 3 4 -2441: extern int fputs_unlocked (const char *__restrict __s, -2441: FILE *__restrict __stream); -2441: # 679 "/usr/include/stdio.h" 3 4 -2441: extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, -2441: size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); -2441: extern size_t fwrite_unlocked (const void *__restrict __ptr, size_t __size, -2441: size_t __n, FILE *__restrict __stream); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int fseek (FILE *__stream, long int __off, int __whence); -2441: -2441: -2441: -2441: -2441: extern long int ftell (FILE *__stream) __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: extern void rewind (FILE *__stream); -2441: # 713 "/usr/include/stdio.h" 3 4 -2441: extern int fseeko (FILE *__stream, __off_t __off, int __whence); -2441: -2441: -2441: -2441: -2441: extern __off_t ftello (FILE *__stream) __attribute__ ((__warn_unused_result__)); -2441: # 737 "/usr/include/stdio.h" 3 4 -2441: extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos); -2441: -2441: -2441: -2441: -2441: extern int fsetpos (FILE *__stream, const fpos_t *__pos); -2441: # 756 "/usr/include/stdio.h" 3 4 -2441: extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence); -2441: extern __off64_t ftello64 (FILE *__stream) __attribute__ ((__warn_unused_result__)); -2441: extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos); -2441: extern int fsetpos64 (FILE *__stream, const fpos64_t *__pos); -2441: -2441: -2441: -2441: extern void clearerr (FILE *__stream) throw (); -2441: -2441: extern int feof (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); -2441: -2441: extern int ferror (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: extern void clearerr_unlocked (FILE *__stream) throw (); -2441: extern int feof_unlocked (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); -2441: extern int ferror_unlocked (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern void perror (const char *__s); -2441: -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/sys_errlist.h" 1 3 4 -2441: # 26 "/usr/include/i386-linux-gnu/bits/sys_errlist.h" 3 4 -2441: extern int sys_nerr; -2441: extern const char *const sys_errlist[]; -2441: -2441: -2441: extern int _sys_nerr; -2441: extern const char *const _sys_errlist[]; -2441: # 788 "/usr/include/stdio.h" 2 3 4 -2441: -2441: -2441: -2441: -2441: extern int fileno (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: extern int fileno_unlocked (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); -2441: # 806 "/usr/include/stdio.h" 3 4 -2441: extern FILE *popen (const char *__command, const char *__modes) __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: -2441: -2441: -2441: extern int pclose (FILE *__stream); -2441: -2441: -2441: -2441: -2441: -2441: extern char *ctermid (char *__s) throw (); -2441: -2441: -2441: -2441: -2441: -2441: extern char *cuserid (char *__s); -2441: -2441: -2441: -2441: -2441: struct obstack; -2441: -2441: -2441: extern int obstack_printf (struct obstack *__restrict __obstack, -2441: const char *__restrict __format, ...) -2441: throw () __attribute__ ((__format__ (__printf__, 2, 3))); -2441: extern int obstack_vprintf (struct obstack *__restrict __obstack, -2441: const char *__restrict __format, -2441: __gnuc_va_list __args) -2441: throw () __attribute__ ((__format__ (__printf__, 2, 0))); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern void flockfile (FILE *__stream) throw (); -2441: -2441: -2441: -2441: extern int ftrylockfile (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); -2441: -2441: -2441: extern void funlockfile (FILE *__stream) throw (); -2441: # 864 "/usr/include/stdio.h" 3 4 -2441: extern int __uflow (FILE *); -2441: extern int __overflow (FILE *, int); -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/stdio.h" 1 3 4 -2441: # 46 "/usr/include/i386-linux-gnu/bits/stdio.h" 3 4 -2441: extern __inline __attribute__ ((__gnu_inline__)) int -2441: getchar (void) -2441: { -2441: return getc (stdin); -2441: } -2441: -2441: -2441: -2441: -2441: extern __inline __attribute__ ((__gnu_inline__)) int -2441: fgetc_unlocked (FILE *__fp) -2441: { -2441: return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: extern __inline __attribute__ ((__gnu_inline__)) int -2441: getc_unlocked (FILE *__fp) -2441: { -2441: return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); -2441: } -2441: -2441: -2441: extern __inline __attribute__ ((__gnu_inline__)) int -2441: getchar_unlocked (void) -2441: { -2441: return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++); -2441: } -2441: -2441: -2441: -2441: -2441: extern __inline __attribute__ ((__gnu_inline__)) int -2441: putchar (int __c) -2441: { -2441: return putc (__c, stdout); -2441: } -2441: -2441: -2441: -2441: -2441: extern __inline __attribute__ ((__gnu_inline__)) int -2441: fputc_unlocked (int __c, FILE *__stream) -2441: { -2441: return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: extern __inline __attribute__ ((__gnu_inline__)) int -2441: putc_unlocked (int __c, FILE *__stream) -2441: { -2441: return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); -2441: } -2441: -2441: -2441: extern __inline __attribute__ ((__gnu_inline__)) int -2441: putchar_unlocked (int __c) -2441: { -2441: return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c))); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: extern __inline __attribute__ ((__gnu_inline__)) __ssize_t -2441: getline (char **__lineptr, size_t *__n, FILE *__stream) -2441: { -2441: return __getdelim (__lineptr, __n, '\n', __stream); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: extern __inline __attribute__ ((__gnu_inline__)) int -2441: __attribute__ ((__leaf__)) feof_unlocked (FILE *__stream) throw () -2441: { -2441: return (((__stream)->_flags & 0x0010) != 0); -2441: } -2441: -2441: -2441: extern __inline __attribute__ ((__gnu_inline__)) int -2441: __attribute__ ((__leaf__)) ferror_unlocked (FILE *__stream) throw () -2441: { -2441: return (((__stream)->_flags & 0x0020) != 0); -2441: } -2441: # 871 "/usr/include/stdio.h" 2 3 4 -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/stdio2.h" 1 3 4 -2441: # 26 "/usr/include/i386-linux-gnu/bits/stdio2.h" 3 4 -2441: extern int __sprintf_chk (char *__restrict __s, int __flag, size_t __slen, -2441: const char *__restrict __format, ...) throw (); -2441: extern int __vsprintf_chk (char *__restrict __s, int __flag, size_t __slen, -2441: const char *__restrict __format, -2441: __gnuc_va_list __ap) throw (); -2441: -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int -2441: __attribute__ ((__leaf__)) sprintf (char *__restrict __s, const char *__restrict __fmt, ...) throw () -2441: { -2441: return __builtin___sprintf_chk (__s, 2 - 1, -2441: __builtin_object_size (__s, 2 > 1), __fmt, __builtin_va_arg_pack ()); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int -2441: __attribute__ ((__leaf__)) vsprintf (char *__restrict __s, const char *__restrict __fmt, __gnuc_va_list __ap) throw () -2441: -2441: { -2441: return __builtin___vsprintf_chk (__s, 2 - 1, -2441: __builtin_object_size (__s, 2 > 1), __fmt, __ap); -2441: } -2441: -2441: -2441: -2441: extern int __snprintf_chk (char *__restrict __s, size_t __n, int __flag, -2441: size_t __slen, const char *__restrict __format, -2441: ...) throw (); -2441: extern int __vsnprintf_chk (char *__restrict __s, size_t __n, int __flag, -2441: size_t __slen, const char *__restrict __format, -2441: __gnuc_va_list __ap) throw (); -2441: -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int -2441: __attribute__ ((__leaf__)) snprintf (char *__restrict __s, size_t __n, const char *__restrict __fmt, ...) throw () -2441: -2441: { -2441: return __builtin___snprintf_chk (__s, __n, 2 - 1, -2441: __builtin_object_size (__s, 2 > 1), __fmt, __builtin_va_arg_pack ()); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int -2441: __attribute__ ((__leaf__)) vsnprintf (char *__restrict __s, size_t __n, const char *__restrict __fmt, __gnuc_va_list __ap) throw () -2441: -2441: { -2441: return __builtin___vsnprintf_chk (__s, __n, 2 - 1, -2441: __builtin_object_size (__s, 2 > 1), __fmt, __ap); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: extern int __fprintf_chk (FILE *__restrict __stream, int __flag, -2441: const char *__restrict __format, ...); -2441: extern int __printf_chk (int __flag, const char *__restrict __format, ...); -2441: extern int __vfprintf_chk (FILE *__restrict __stream, int __flag, -2441: const char *__restrict __format, __gnuc_va_list __ap); -2441: extern int __vprintf_chk (int __flag, const char *__restrict __format, -2441: __gnuc_va_list __ap); -2441: -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int -2441: fprintf (FILE *__restrict __stream, const char *__restrict __fmt, ...) -2441: { -2441: return __fprintf_chk (__stream, 2 - 1, __fmt, -2441: __builtin_va_arg_pack ()); -2441: } -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int -2441: printf (const char *__restrict __fmt, ...) -2441: { -2441: return __printf_chk (2 - 1, __fmt, __builtin_va_arg_pack ()); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int -2441: vprintf (const char *__restrict __fmt, __gnuc_va_list __ap) -2441: { -2441: -2441: return __vfprintf_chk (stdout, 2 - 1, __fmt, __ap); -2441: -2441: -2441: -2441: } -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int -2441: vfprintf (FILE *__restrict __stream, -2441: const char *__restrict __fmt, __gnuc_va_list __ap) -2441: { -2441: return __vfprintf_chk (__stream, 2 - 1, __fmt, __ap); -2441: } -2441: -2441: -2441: extern int __dprintf_chk (int __fd, int __flag, const char *__restrict __fmt, -2441: ...) __attribute__ ((__format__ (__printf__, 3, 4))); -2441: extern int __vdprintf_chk (int __fd, int __flag, -2441: const char *__restrict __fmt, __gnuc_va_list __arg) -2441: __attribute__ ((__format__ (__printf__, 3, 0))); -2441: -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int -2441: dprintf (int __fd, const char *__restrict __fmt, ...) -2441: { -2441: return __dprintf_chk (__fd, 2 - 1, __fmt, -2441: __builtin_va_arg_pack ()); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int -2441: vdprintf (int __fd, const char *__restrict __fmt, __gnuc_va_list __ap) -2441: { -2441: return __vdprintf_chk (__fd, 2 - 1, __fmt, __ap); -2441: } -2441: -2441: -2441: -2441: -2441: extern int __asprintf_chk (char **__restrict __ptr, int __flag, -2441: const char *__restrict __fmt, ...) -2441: throw () __attribute__ ((__format__ (__printf__, 3, 4))) __attribute__ ((__warn_unused_result__)); -2441: extern int __vasprintf_chk (char **__restrict __ptr, int __flag, -2441: const char *__restrict __fmt, __gnuc_va_list __arg) -2441: throw () __attribute__ ((__format__ (__printf__, 3, 0))) __attribute__ ((__warn_unused_result__)); -2441: extern int __obstack_printf_chk (struct obstack *__restrict __obstack, -2441: int __flag, const char *__restrict __format, -2441: ...) -2441: throw () __attribute__ ((__format__ (__printf__, 3, 4))); -2441: extern int __obstack_vprintf_chk (struct obstack *__restrict __obstack, -2441: int __flag, -2441: const char *__restrict __format, -2441: __gnuc_va_list __args) -2441: throw () __attribute__ ((__format__ (__printf__, 3, 0))); -2441: -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int -2441: __attribute__ ((__leaf__)) asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...) throw () -2441: { -2441: return __asprintf_chk (__ptr, 2 - 1, __fmt, -2441: __builtin_va_arg_pack ()); -2441: } -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int -2441: __attribute__ ((__leaf__)) __asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...) throw () -2441: -2441: { -2441: return __asprintf_chk (__ptr, 2 - 1, __fmt, -2441: __builtin_va_arg_pack ()); -2441: } -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int -2441: __attribute__ ((__leaf__)) obstack_printf (struct obstack *__restrict __obstack, const char *__restrict __fmt, ...) throw () -2441: -2441: { -2441: return __obstack_printf_chk (__obstack, 2 - 1, __fmt, -2441: __builtin_va_arg_pack ()); -2441: } -2441: # 209 "/usr/include/i386-linux-gnu/bits/stdio2.h" 3 4 -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int -2441: __attribute__ ((__leaf__)) vasprintf (char **__restrict __ptr, const char *__restrict __fmt, __gnuc_va_list __ap) throw () -2441: -2441: { -2441: return __vasprintf_chk (__ptr, 2 - 1, __fmt, __ap); -2441: } -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int -2441: __attribute__ ((__leaf__)) obstack_vprintf (struct obstack *__restrict __obstack, const char *__restrict __fmt, __gnuc_va_list __ap) throw () -2441: -2441: { -2441: return __obstack_vprintf_chk (__obstack, 2 - 1, __fmt, -2441: __ap); -2441: } -2441: # 243 "/usr/include/i386-linux-gnu/bits/stdio2.h" 3 4 -2441: extern char *__fgets_chk (char *__restrict __s, size_t __size, int __n, -2441: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); -2441: extern char *__fgets_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets") -2441: -2441: __attribute__ ((__warn_unused_result__)); -2441: extern char *__fgets_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_chk") -2441: -2441: -2441: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets called with bigger size than length " "of destination buffer"))) -2441: ; -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * -2441: fgets (char *__restrict __s, int __n, FILE *__restrict __stream) -2441: { -2441: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1) -2441: { -2441: if (!__builtin_constant_p (__n) || __n <= 0) -2441: return __fgets_chk (__s, __builtin_object_size (__s, 2 > 1), __n, __stream); -2441: -2441: if ((size_t) __n > __builtin_object_size (__s, 2 > 1)) -2441: return __fgets_chk_warn (__s, __builtin_object_size (__s, 2 > 1), __n, __stream); -2441: } -2441: return __fgets_alias (__s, __n, __stream); -2441: } -2441: -2441: extern size_t __fread_chk (void *__restrict __ptr, size_t __ptrlen, -2441: size_t __size, size_t __n, -2441: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); -2441: extern size_t __fread_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread") -2441: -2441: -2441: __attribute__ ((__warn_unused_result__)); -2441: extern size_t __fread_chk_warn (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "__fread_chk") -2441: -2441: -2441: -2441: -2441: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread called with bigger size * nmemb than length " "of destination buffer"))) -2441: ; -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t -2441: fread (void *__restrict __ptr, size_t __size, size_t __n, -2441: FILE *__restrict __stream) -2441: { -2441: if (__builtin_object_size (__ptr, 0) != (size_t) -1) -2441: { -2441: if (!__builtin_constant_p (__size) -2441: || !__builtin_constant_p (__n) -2441: || (__size | __n) >= (((size_t) 1) << (8 * sizeof (size_t) / 2))) -2441: return __fread_chk (__ptr, __builtin_object_size (__ptr, 0), __size, __n, __stream); -2441: -2441: if (__size * __n > __builtin_object_size (__ptr, 0)) -2441: return __fread_chk_warn (__ptr, __builtin_object_size (__ptr, 0), __size, __n, __stream); -2441: } -2441: return __fread_alias (__ptr, __size, __n, __stream); -2441: } -2441: -2441: -2441: extern char *__fgets_unlocked_chk (char *__restrict __s, size_t __size, -2441: int __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); -2441: extern char *__fgets_unlocked_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets_unlocked") -2441: -2441: __attribute__ ((__warn_unused_result__)); -2441: extern char *__fgets_unlocked_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_unlocked_chk") -2441: -2441: -2441: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets_unlocked called with bigger size than length " "of destination buffer"))) -2441: ; -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * -2441: fgets_unlocked (char *__restrict __s, int __n, FILE *__restrict __stream) -2441: { -2441: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1) -2441: { -2441: if (!__builtin_constant_p (__n) || __n <= 0) -2441: return __fgets_unlocked_chk (__s, __builtin_object_size (__s, 2 > 1), __n, __stream); -2441: -2441: if ((size_t) __n > __builtin_object_size (__s, 2 > 1)) -2441: return __fgets_unlocked_chk_warn (__s, __builtin_object_size (__s, 2 > 1), __n, __stream); -2441: } -2441: return __fgets_unlocked_alias (__s, __n, __stream); -2441: } -2441: -2441: -2441: -2441: -2441: extern size_t __fread_unlocked_chk (void *__restrict __ptr, size_t __ptrlen, -2441: size_t __size, size_t __n, -2441: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); -2441: extern size_t __fread_unlocked_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread_unlocked") -2441: -2441: -2441: __attribute__ ((__warn_unused_result__)); -2441: extern size_t __fread_unlocked_chk_warn (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "__fread_unlocked_chk") -2441: -2441: -2441: -2441: -2441: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread_unlocked called with bigger size * nmemb than " "length of destination buffer"))) -2441: ; -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t -2441: fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n, -2441: FILE *__restrict __stream) -2441: { -2441: if (__builtin_object_size (__ptr, 0) != (size_t) -1) -2441: { -2441: if (!__builtin_constant_p (__size) -2441: || !__builtin_constant_p (__n) -2441: || (__size | __n) >= (((size_t) 1) << (8 * sizeof (size_t) / 2))) -2441: return __fread_unlocked_chk (__ptr, __builtin_object_size (__ptr, 0), __size, __n, -2441: __stream); -2441: -2441: if (__size * __n > __builtin_object_size (__ptr, 0)) -2441: return __fread_unlocked_chk_warn (__ptr, __builtin_object_size (__ptr, 0), __size, __n, -2441: __stream); -2441: } -2441: -2441: -2441: if (__builtin_constant_p (__size) -2441: && __builtin_constant_p (__n) -2441: && (__size | __n) < (((size_t) 1) << (8 * sizeof (size_t) / 2)) -2441: && __size * __n <= 8) -2441: { -2441: size_t __cnt = __size * __n; -2441: char *__cptr = (char *) __ptr; -2441: if (__cnt == 0) -2441: return 0; -2441: -2441: for (; __cnt > 0; --__cnt) -2441: { -2441: int __c = getc_unlocked (__stream); -2441: if (__c == (-1)) -2441: break; -2441: *__cptr++ = __c; -2441: } -2441: return (__cptr - (char *) __ptr) / __size; -2441: } -2441: -2441: return __fread_unlocked_alias (__ptr, __size, __n, __stream); -2441: } -2441: # 874 "/usr/include/stdio.h" 2 3 4 -2441: -2441: -2441: -2441: -2441: -2441: } -2441: # 43 "/usr/include/c++/8/cstdio" 2 3 -2441: # 96 "/usr/include/c++/8/cstdio" 3 -2441: namespace std -2441: { -2441: using ::FILE; -2441: using ::fpos_t; -2441: -2441: using ::clearerr; -2441: using ::fclose; -2441: using ::feof; -2441: using ::ferror; -2441: using ::fflush; -2441: using ::fgetc; -2441: using ::fgetpos; -2441: using ::fgets; -2441: using ::fopen; -2441: using ::fprintf; -2441: using ::fputc; -2441: using ::fputs; -2441: using ::fread; -2441: using ::freopen; -2441: using ::fscanf; -2441: using ::fseek; -2441: using ::fsetpos; -2441: using ::ftell; -2441: using ::fwrite; -2441: using ::getc; -2441: using ::getchar; -2441: -2441: -2441: -2441: -2441: using ::perror; -2441: using ::printf; -2441: using ::putc; -2441: using ::putchar; -2441: using ::puts; -2441: using ::remove; -2441: using ::rename; -2441: using ::rewind; -2441: using ::scanf; -2441: using ::setbuf; -2441: using ::setvbuf; -2441: using ::sprintf; -2441: using ::sscanf; -2441: using ::tmpfile; -2441: -2441: using ::tmpnam; -2441: -2441: using ::ungetc; -2441: using ::vfprintf; -2441: using ::vprintf; -2441: using ::vsprintf; -2441: } -2441: # 157 "/usr/include/c++/8/cstdio" 3 -2441: namespace __gnu_cxx -2441: { -2441: # 175 "/usr/include/c++/8/cstdio" 3 -2441: using ::snprintf; -2441: using ::vfscanf; -2441: using ::vscanf; -2441: using ::vsnprintf; -2441: using ::vsscanf; -2441: -2441: } -2441: -2441: namespace std -2441: { -2441: using ::__gnu_cxx::snprintf; -2441: using ::__gnu_cxx::vfscanf; -2441: using ::__gnu_cxx::vscanf; -2441: using ::__gnu_cxx::vsnprintf; -2441: using ::__gnu_cxx::vsscanf; -2441: } -2441: # 44 "/usr/include/c++/8/ext/string_conversions.h" 2 3 -2441: # 1 "/usr/include/c++/8/cerrno" 1 3 -2441: # 39 "/usr/include/c++/8/cerrno" 3 -2441: -2441: # 40 "/usr/include/c++/8/cerrno" 3 -2441: -2441: -2441: # 1 "/usr/include/errno.h" 1 3 4 -2441: # 28 "/usr/include/errno.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/errno.h" 1 3 4 -2441: # 26 "/usr/include/i386-linux-gnu/bits/errno.h" 3 4 -2441: # 1 "/usr/include/linux/errno.h" 1 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/asm/errno.h" 1 3 4 -2441: # 1 "/usr/include/asm-generic/errno.h" 1 3 4 -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/asm-generic/errno-base.h" 1 3 4 -2441: # 6 "/usr/include/asm-generic/errno.h" 2 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/asm/errno.h" 2 3 4 -2441: # 1 "/usr/include/linux/errno.h" 2 3 4 -2441: # 27 "/usr/include/i386-linux-gnu/bits/errno.h" 2 3 4 -2441: # 29 "/usr/include/errno.h" 2 3 4 -2441: -2441: -2441: -2441: -2441: -2441: extern "C" { -2441: -2441: -2441: extern int *__errno_location (void) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern char *program_invocation_name; -2441: extern char *program_invocation_short_name; -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/types/error_t.h" 1 3 4 -2441: # 22 "/usr/include/i386-linux-gnu/bits/types/error_t.h" 3 4 -2441: typedef int error_t; -2441: # 49 "/usr/include/errno.h" 2 3 4 -2441: -2441: -2441: -2441: } -2441: # 43 "/usr/include/c++/8/cerrno" 2 3 -2441: # 45 "/usr/include/c++/8/ext/string_conversions.h" 2 3 -2441: -2441: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: template -2441: _Ret -2441: __stoa(_TRet (*__convf) (const _CharT*, _CharT**, _Base...), -2441: const char* __name, const _CharT* __str, std::size_t* __idx, -2441: _Base... __base) -2441: { -2441: _Ret __ret; -2441: -2441: _CharT* __endptr; -2441: -2441: struct _Save_errno { -2441: _Save_errno() : _M_errno((*__errno_location ())) { (*__errno_location ()) = 0; } -2441: ~_Save_errno() { if ((*__errno_location ()) == 0) (*__errno_location ()) = _M_errno; } -2441: int _M_errno; -2441: } const __save_errno; -2441: -2441: struct _Range_chk { -2441: static bool -2441: _S_chk(_TRet, std::false_type) { return false; } -2441: -2441: static bool -2441: _S_chk(_TRet __val, std::true_type) -2441: { -2441: return __val < _TRet(__numeric_traits::__min) -2441: || __val > _TRet(__numeric_traits::__max); -2441: } -2441: }; -2441: -2441: const _TRet __tmp = __convf(__str, &__endptr, __base...); -2441: -2441: if (__endptr == __str) -2441: std::__throw_invalid_argument(__name); -2441: else if ((*__errno_location ()) == 34 -2441: || _Range_chk::_S_chk(__tmp, std::is_same<_Ret, int>{})) -2441: std::__throw_out_of_range(__name); -2441: else -2441: __ret = __tmp; -2441: -2441: if (__idx) -2441: *__idx = __endptr - __str; -2441: -2441: return __ret; -2441: } -2441: -2441: -2441: template -2441: _String -2441: __to_xstring(int (*__convf) (_CharT*, std::size_t, const _CharT*, -2441: __builtin_va_list), std::size_t __n, -2441: const _CharT* __fmt, ...) -2441: { -2441: -2441: -2441: _CharT* __s = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) -2441: * __n)); -2441: -2441: __builtin_va_list __args; -2441: __builtin_va_start(__args, __fmt); -2441: -2441: const int __len = __convf(__s, __n, __fmt, __args); -2441: -2441: __builtin_va_end(__args); -2441: -2441: return _String(__s, __s + __len); -2441: } -2441: -2441: -2441: } -2441: # 6401 "/usr/include/c++/8/bits/basic_string.h" 2 3 -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: namespace __cxx11 { -2441: -2441: -2441: -2441: inline int -2441: stoi(const string& __str, size_t* __idx = 0, int __base = 10) -2441: { return __gnu_cxx::__stoa(&std::strtol, "stoi", __str.c_str(), -2441: __idx, __base); } -2441: -2441: inline long -2441: stol(const string& __str, size_t* __idx = 0, int __base = 10) -2441: { return __gnu_cxx::__stoa(&std::strtol, "stol", __str.c_str(), -2441: __idx, __base); } -2441: -2441: inline unsigned long -2441: stoul(const string& __str, size_t* __idx = 0, int __base = 10) -2441: { return __gnu_cxx::__stoa(&std::strtoul, "stoul", __str.c_str(), -2441: __idx, __base); } -2441: -2441: inline long long -2441: stoll(const string& __str, size_t* __idx = 0, int __base = 10) -2441: { return __gnu_cxx::__stoa(&std::strtoll, "stoll", __str.c_str(), -2441: __idx, __base); } -2441: -2441: inline unsigned long long -2441: stoull(const string& __str, size_t* __idx = 0, int __base = 10) -2441: { return __gnu_cxx::__stoa(&std::strtoull, "stoull", __str.c_str(), -2441: __idx, __base); } -2441: -2441: -2441: inline float -2441: stof(const string& __str, size_t* __idx = 0) -2441: { return __gnu_cxx::__stoa(&std::strtof, "stof", __str.c_str(), __idx); } -2441: -2441: inline double -2441: stod(const string& __str, size_t* __idx = 0) -2441: { return __gnu_cxx::__stoa(&std::strtod, "stod", __str.c_str(), __idx); } -2441: -2441: inline long double -2441: stold(const string& __str, size_t* __idx = 0) -2441: { return __gnu_cxx::__stoa(&std::strtold, "stold", __str.c_str(), __idx); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: inline string -2441: to_string(int __val) -2441: { return __gnu_cxx::__to_xstring(&std::vsnprintf, 4 * sizeof(int), -2441: "%d", __val); } -2441: -2441: inline string -2441: to_string(unsigned __val) -2441: { return __gnu_cxx::__to_xstring(&std::vsnprintf, -2441: 4 * sizeof(unsigned), -2441: "%u", __val); } -2441: -2441: inline string -2441: to_string(long __val) -2441: { return __gnu_cxx::__to_xstring(&std::vsnprintf, 4 * sizeof(long), -2441: "%ld", __val); } -2441: -2441: inline string -2441: to_string(unsigned long __val) -2441: { return __gnu_cxx::__to_xstring(&std::vsnprintf, -2441: 4 * sizeof(unsigned long), -2441: "%lu", __val); } -2441: -2441: inline string -2441: to_string(long long __val) -2441: { return __gnu_cxx::__to_xstring(&std::vsnprintf, -2441: 4 * sizeof(long long), -2441: "%lld", __val); } -2441: -2441: inline string -2441: to_string(unsigned long long __val) -2441: { return __gnu_cxx::__to_xstring(&std::vsnprintf, -2441: 4 * sizeof(unsigned long long), -2441: "%llu", __val); } -2441: -2441: inline string -2441: to_string(float __val) -2441: { -2441: const int __n = -2441: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; -2441: return __gnu_cxx::__to_xstring(&std::vsnprintf, __n, -2441: "%f", __val); -2441: } -2441: -2441: inline string -2441: to_string(double __val) -2441: { -2441: const int __n = -2441: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; -2441: return __gnu_cxx::__to_xstring(&std::vsnprintf, __n, -2441: "%f", __val); -2441: } -2441: -2441: inline string -2441: to_string(long double __val) -2441: { -2441: const int __n = -2441: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; -2441: return __gnu_cxx::__to_xstring(&std::vsnprintf, __n, -2441: "%Lf", __val); -2441: } -2441: -2441: -2441: -2441: inline int -2441: stoi(const wstring& __str, size_t* __idx = 0, int __base = 10) -2441: { return __gnu_cxx::__stoa(&std::wcstol, "stoi", __str.c_str(), -2441: __idx, __base); } -2441: -2441: inline long -2441: stol(const wstring& __str, size_t* __idx = 0, int __base = 10) -2441: { return __gnu_cxx::__stoa(&std::wcstol, "stol", __str.c_str(), -2441: __idx, __base); } -2441: -2441: inline unsigned long -2441: stoul(const wstring& __str, size_t* __idx = 0, int __base = 10) -2441: { return __gnu_cxx::__stoa(&std::wcstoul, "stoul", __str.c_str(), -2441: __idx, __base); } -2441: -2441: inline long long -2441: stoll(const wstring& __str, size_t* __idx = 0, int __base = 10) -2441: { return __gnu_cxx::__stoa(&std::wcstoll, "stoll", __str.c_str(), -2441: __idx, __base); } -2441: -2441: inline unsigned long long -2441: stoull(const wstring& __str, size_t* __idx = 0, int __base = 10) -2441: { return __gnu_cxx::__stoa(&std::wcstoull, "stoull", __str.c_str(), -2441: __idx, __base); } -2441: -2441: -2441: inline float -2441: stof(const wstring& __str, size_t* __idx = 0) -2441: { return __gnu_cxx::__stoa(&std::wcstof, "stof", __str.c_str(), __idx); } -2441: -2441: inline double -2441: stod(const wstring& __str, size_t* __idx = 0) -2441: { return __gnu_cxx::__stoa(&std::wcstod, "stod", __str.c_str(), __idx); } -2441: -2441: inline long double -2441: stold(const wstring& __str, size_t* __idx = 0) -2441: { return __gnu_cxx::__stoa(&std::wcstold, "stold", __str.c_str(), __idx); } -2441: -2441: -2441: -2441: inline wstring -2441: to_wstring(int __val) -2441: { return __gnu_cxx::__to_xstring(&std::vswprintf, 4 * sizeof(int), -2441: L"%d", __val); } -2441: -2441: inline wstring -2441: to_wstring(unsigned __val) -2441: { return __gnu_cxx::__to_xstring(&std::vswprintf, -2441: 4 * sizeof(unsigned), -2441: L"%u", __val); } -2441: -2441: inline wstring -2441: to_wstring(long __val) -2441: { return __gnu_cxx::__to_xstring(&std::vswprintf, 4 * sizeof(long), -2441: L"%ld", __val); } -2441: -2441: inline wstring -2441: to_wstring(unsigned long __val) -2441: { return __gnu_cxx::__to_xstring(&std::vswprintf, -2441: 4 * sizeof(unsigned long), -2441: L"%lu", __val); } -2441: -2441: inline wstring -2441: to_wstring(long long __val) -2441: { return __gnu_cxx::__to_xstring(&std::vswprintf, -2441: 4 * sizeof(long long), -2441: L"%lld", __val); } -2441: -2441: inline wstring -2441: to_wstring(unsigned long long __val) -2441: { return __gnu_cxx::__to_xstring(&std::vswprintf, -2441: 4 * sizeof(unsigned long long), -2441: L"%llu", __val); } -2441: -2441: inline wstring -2441: to_wstring(float __val) -2441: { -2441: const int __n = -2441: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; -2441: return __gnu_cxx::__to_xstring(&std::vswprintf, __n, -2441: L"%f", __val); -2441: } -2441: -2441: inline wstring -2441: to_wstring(double __val) -2441: { -2441: const int __n = -2441: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; -2441: return __gnu_cxx::__to_xstring(&std::vswprintf, __n, -2441: L"%f", __val); -2441: } -2441: -2441: inline wstring -2441: to_wstring(long double __val) -2441: { -2441: const int __n = -2441: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; -2441: return __gnu_cxx::__to_xstring(&std::vswprintf, __n, -2441: L"%Lf", __val); -2441: } -2441: -2441: -2441: -2441: } -2441: -2441: } -2441: -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/c++/8/bits/functional_hash.h" 1 3 -2441: # 33 "/usr/include/c++/8/bits/functional_hash.h" 3 -2441: -2441: # 34 "/usr/include/c++/8/bits/functional_hash.h" 3 -2441: -2441: -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: # 49 "/usr/include/c++/8/bits/functional_hash.h" 3 -2441: template -2441: struct __hash_base -2441: { -2441: typedef _Result result_type ; -2441: typedef _Arg argument_type ; -2441: }; -2441: -2441: -2441: template -2441: struct hash; -2441: -2441: template -2441: struct __poison_hash -2441: { -2441: static constexpr bool __enable_hash_call = false; -2441: private: -2441: -2441: __poison_hash(__poison_hash&&); -2441: ~__poison_hash(); -2441: }; -2441: -2441: template -2441: struct __poison_hash<_Tp, __void_t()(declval<_Tp>()))>> -2441: { -2441: static constexpr bool __enable_hash_call = true; -2441: }; -2441: -2441: -2441: template::value> -2441: struct __hash_enum -2441: { -2441: private: -2441: -2441: __hash_enum(__hash_enum&&); -2441: ~__hash_enum(); -2441: }; -2441: -2441: -2441: template -2441: struct __hash_enum<_Tp, true> : public __hash_base -2441: { -2441: size_t -2441: operator()(_Tp __val) const noexcept -2441: { -2441: using __type = typename underlying_type<_Tp>::type; -2441: return hash<__type>{}(static_cast<__type>(__val)); -2441: } -2441: }; -2441: -2441: -2441: -2441: template -2441: struct hash : __hash_enum<_Tp> -2441: { }; -2441: -2441: -2441: template -2441: struct hash<_Tp*> : public __hash_base -2441: { -2441: size_t -2441: operator()(_Tp* __p) const noexcept -2441: { return reinterpret_cast(__p); } -2441: }; -2441: # 124 "/usr/include/c++/8/bits/functional_hash.h" 3 -2441: template<> struct hash : public __hash_base { size_t operator()(bool __val) const noexcept { return static_cast(__val); } }; -2441: -2441: -2441: template<> struct hash : public __hash_base { size_t operator()(char __val) const noexcept { return static_cast(__val); } }; -2441: -2441: -2441: template<> struct hash : public __hash_base { size_t operator()(signed char __val) const noexcept { return static_cast(__val); } }; -2441: -2441: -2441: template<> struct hash : public __hash_base { size_t operator()(unsigned char __val) const noexcept { return static_cast(__val); } }; -2441: -2441: -2441: template<> struct hash : public __hash_base { size_t operator()(wchar_t __val) const noexcept { return static_cast(__val); } }; -2441: -2441: -2441: template<> struct hash : public __hash_base { size_t operator()(char16_t __val) const noexcept { return static_cast(__val); } }; -2441: -2441: -2441: template<> struct hash : public __hash_base { size_t operator()(char32_t __val) const noexcept { return static_cast(__val); } }; -2441: -2441: -2441: template<> struct hash : public __hash_base { size_t operator()(short __val) const noexcept { return static_cast(__val); } }; -2441: -2441: -2441: template<> struct hash : public __hash_base { size_t operator()(int __val) const noexcept { return static_cast(__val); } }; -2441: -2441: -2441: template<> struct hash : public __hash_base { size_t operator()(long __val) const noexcept { return static_cast(__val); } }; -2441: -2441: -2441: template<> struct hash : public __hash_base { size_t operator()(long long __val) const noexcept { return static_cast(__val); } }; -2441: -2441: -2441: template<> struct hash : public __hash_base { size_t operator()(unsigned short __val) const noexcept { return static_cast(__val); } }; -2441: -2441: -2441: template<> struct hash : public __hash_base { size_t operator()(unsigned int __val) const noexcept { return static_cast(__val); } }; -2441: -2441: -2441: template<> struct hash : public __hash_base { size_t operator()(unsigned long __val) const noexcept { return static_cast(__val); } }; -2441: -2441: -2441: template<> struct hash : public __hash_base { size_t operator()(unsigned long long __val) const noexcept { return static_cast(__val); } }; -2441: # 187 "/usr/include/c++/8/bits/functional_hash.h" 3 -2441: struct _Hash_impl -2441: { -2441: static size_t -2441: hash(const void* __ptr, size_t __clength, -2441: size_t __seed = static_cast(0xc70f6907UL)) -2441: { return _Hash_bytes(__ptr, __clength, __seed); } -2441: -2441: template -2441: static size_t -2441: hash(const _Tp& __val) -2441: { return hash(&__val, sizeof(__val)); } -2441: -2441: template -2441: static size_t -2441: __hash_combine(const _Tp& __val, size_t __hash) -2441: { return hash(&__val, sizeof(__val), __hash); } -2441: }; -2441: -2441: -2441: struct _Fnv_hash_impl -2441: { -2441: static size_t -2441: hash(const void* __ptr, size_t __clength, -2441: size_t __seed = static_cast(2166136261UL)) -2441: { return _Fnv_hash_bytes(__ptr, __clength, __seed); } -2441: -2441: template -2441: static size_t -2441: hash(const _Tp& __val) -2441: { return hash(&__val, sizeof(__val)); } -2441: -2441: template -2441: static size_t -2441: __hash_combine(const _Tp& __val, size_t __hash) -2441: { return hash(&__val, sizeof(__val), __hash); } -2441: }; -2441: -2441: -2441: template<> -2441: struct hash : public __hash_base -2441: { -2441: size_t -2441: operator()(float __val) const noexcept -2441: { -2441: -2441: return __val != 0.0f ? std::_Hash_impl::hash(__val) : 0; -2441: } -2441: }; -2441: -2441: -2441: template<> -2441: struct hash : public __hash_base -2441: { -2441: size_t -2441: operator()(double __val) const noexcept -2441: { -2441: -2441: return __val != 0.0 ? std::_Hash_impl::hash(__val) : 0; -2441: } -2441: }; -2441: -2441: -2441: template<> -2441: struct hash -2441: : public __hash_base -2441: { -2441: __attribute__ ((__pure__)) size_t -2441: operator()(long double __val) const noexcept; -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct __is_fast_hash : public std::true_type -2441: { }; -2441: -2441: template<> -2441: struct __is_fast_hash> : public std::false_type -2441: { }; -2441: -2441: -2441: } -2441: # 6627 "/usr/include/c++/8/bits/basic_string.h" 2 3 -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: template<> -2441: struct hash -2441: : public __hash_base -2441: { -2441: size_t -2441: operator()(const string& __s) const noexcept -2441: { return std::_Hash_impl::hash(__s.data(), __s.length()); } -2441: }; -2441: -2441: template<> -2441: struct __is_fast_hash> : std::false_type -2441: { }; -2441: -2441: -2441: -2441: template<> -2441: struct hash -2441: : public __hash_base -2441: { -2441: size_t -2441: operator()(const wstring& __s) const noexcept -2441: { return std::_Hash_impl::hash(__s.data(), -2441: __s.length() * sizeof(wchar_t)); } -2441: }; -2441: -2441: template<> -2441: struct __is_fast_hash> : std::false_type -2441: { }; -2441: -2441: -2441: -2441: -2441: -2441: template<> -2441: struct hash -2441: : public __hash_base -2441: { -2441: size_t -2441: operator()(const u16string& __s) const noexcept -2441: { return std::_Hash_impl::hash(__s.data(), -2441: __s.length() * sizeof(char16_t)); } -2441: }; -2441: -2441: template<> -2441: struct __is_fast_hash> : std::false_type -2441: { }; -2441: -2441: -2441: template<> -2441: struct hash -2441: : public __hash_base -2441: { -2441: size_t -2441: operator()(const u32string& __s) const noexcept -2441: { return std::_Hash_impl::hash(__s.data(), -2441: __s.length() * sizeof(char32_t)); } -2441: }; -2441: -2441: template<> -2441: struct __is_fast_hash> : std::false_type -2441: { }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: inline namespace literals -2441: { -2441: inline namespace string_literals -2441: { -2441: #pragma GCC diagnostic push -2441: #pragma GCC diagnostic ignored "-Wliteral-suffix" -2441: __attribute ((__abi_tag__ ("cxx11"))) -2441: inline basic_string -2441: operator""s(const char* __str, size_t __len) -2441: { return basic_string{__str, __len}; } -2441: -2441: -2441: __attribute ((__abi_tag__ ("cxx11"))) -2441: inline basic_string -2441: operator""s(const wchar_t* __str, size_t __len) -2441: { return basic_string{__str, __len}; } -2441: -2441: -2441: -2441: __attribute ((__abi_tag__ ("cxx11"))) -2441: inline basic_string -2441: operator""s(const char16_t* __str, size_t __len) -2441: { return basic_string{__str, __len}; } -2441: -2441: __attribute ((__abi_tag__ ("cxx11"))) -2441: inline basic_string -2441: operator""s(const char32_t* __str, size_t __len) -2441: { return basic_string{__str, __len}; } -2441: -2441: -2441: #pragma GCC diagnostic pop -2441: } -2441: } -2441: -2441: -2441: -2441: -2441: } -2441: # 53 "/usr/include/c++/8/string" 2 3 -2441: # 1 "/usr/include/c++/8/bits/basic_string.tcc" 1 3 -2441: # 42 "/usr/include/c++/8/bits/basic_string.tcc" 3 -2441: -2441: # 43 "/usr/include/c++/8/bits/basic_string.tcc" 3 -2441: -2441: -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: -2441: template -2441: const typename basic_string<_CharT, _Traits, _Alloc>::size_type -2441: basic_string<_CharT, _Traits, _Alloc>::npos; -2441: -2441: template -2441: void -2441: basic_string<_CharT, _Traits, _Alloc>:: -2441: swap(basic_string& __s) noexcept -2441: { -2441: if (this == &__s) -2441: return; -2441: -2441: _Alloc_traits::_S_on_swap(_M_get_allocator(), __s._M_get_allocator()); -2441: -2441: if (_M_is_local()) -2441: if (__s._M_is_local()) -2441: { -2441: if (length() && __s.length()) -2441: { -2441: _CharT __tmp_data[_S_local_capacity + 1]; -2441: traits_type::copy(__tmp_data, __s._M_local_buf, -2441: _S_local_capacity + 1); -2441: traits_type::copy(__s._M_local_buf, _M_local_buf, -2441: _S_local_capacity + 1); -2441: traits_type::copy(_M_local_buf, __tmp_data, -2441: _S_local_capacity + 1); -2441: } -2441: else if (__s.length()) -2441: { -2441: traits_type::copy(_M_local_buf, __s._M_local_buf, -2441: _S_local_capacity + 1); -2441: _M_length(__s.length()); -2441: __s._M_set_length(0); -2441: return; -2441: } -2441: else if (length()) -2441: { -2441: traits_type::copy(__s._M_local_buf, _M_local_buf, -2441: _S_local_capacity + 1); -2441: __s._M_length(length()); -2441: _M_set_length(0); -2441: return; -2441: } -2441: } -2441: else -2441: { -2441: const size_type __tmp_capacity = __s._M_allocated_capacity; -2441: traits_type::copy(__s._M_local_buf, _M_local_buf, -2441: _S_local_capacity + 1); -2441: _M_data(__s._M_data()); -2441: __s._M_data(__s._M_local_buf); -2441: _M_capacity(__tmp_capacity); -2441: } -2441: else -2441: { -2441: const size_type __tmp_capacity = _M_allocated_capacity; -2441: if (__s._M_is_local()) -2441: { -2441: traits_type::copy(_M_local_buf, __s._M_local_buf, -2441: _S_local_capacity + 1); -2441: __s._M_data(_M_data()); -2441: _M_data(_M_local_buf); -2441: } -2441: else -2441: { -2441: pointer __tmp_ptr = _M_data(); -2441: _M_data(__s._M_data()); -2441: __s._M_data(__tmp_ptr); -2441: _M_capacity(__s._M_allocated_capacity); -2441: } -2441: __s._M_capacity(__tmp_capacity); -2441: } -2441: -2441: const size_type __tmp_length = length(); -2441: _M_length(__s.length()); -2441: __s._M_length(__tmp_length); -2441: } -2441: -2441: template -2441: typename basic_string<_CharT, _Traits, _Alloc>::pointer -2441: basic_string<_CharT, _Traits, _Alloc>:: -2441: _M_create(size_type& __capacity, size_type __old_capacity) -2441: { -2441: -2441: -2441: if (__capacity > max_size()) -2441: std::__throw_length_error(("basic_string::_M_create")); -2441: -2441: -2441: -2441: -2441: if (__capacity > __old_capacity && __capacity < 2 * __old_capacity) -2441: { -2441: __capacity = 2 * __old_capacity; -2441: -2441: if (__capacity > max_size()) -2441: __capacity = max_size(); -2441: } -2441: -2441: -2441: -2441: return _Alloc_traits::allocate(_M_get_allocator(), __capacity + 1); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: template -2441: template -2441: void -2441: basic_string<_CharT, _Traits, _Alloc>:: -2441: _M_construct(_InIterator __beg, _InIterator __end, -2441: std::input_iterator_tag) -2441: { -2441: size_type __len = 0; -2441: size_type __capacity = size_type(_S_local_capacity); -2441: -2441: while (__beg != __end && __len < __capacity) -2441: { -2441: _M_data()[__len++] = *__beg; -2441: ++__beg; -2441: } -2441: -2441: try -2441: { -2441: while (__beg != __end) -2441: { -2441: if (__len == __capacity) -2441: { -2441: -2441: __capacity = __len + 1; -2441: pointer __another = _M_create(__capacity, __len); -2441: this->_S_copy(__another, _M_data(), __len); -2441: _M_dispose(); -2441: _M_data(__another); -2441: _M_capacity(__capacity); -2441: } -2441: _M_data()[__len++] = *__beg; -2441: ++__beg; -2441: } -2441: } -2441: catch(...) -2441: { -2441: _M_dispose(); -2441: throw; -2441: } -2441: -2441: _M_set_length(__len); -2441: } -2441: -2441: template -2441: template -2441: void -2441: basic_string<_CharT, _Traits, _Alloc>:: -2441: _M_construct(_InIterator __beg, _InIterator __end, -2441: std::forward_iterator_tag) -2441: { -2441: -2441: if (__gnu_cxx::__is_null_pointer(__beg) && __beg != __end) -2441: std::__throw_logic_error(("basic_string::" "_M_construct null not valid") -2441: ); -2441: -2441: size_type __dnew = static_cast(std::distance(__beg, __end)); -2441: -2441: if (__dnew > size_type(_S_local_capacity)) -2441: { -2441: _M_data(_M_create(__dnew, size_type(0))); -2441: _M_capacity(__dnew); -2441: } -2441: -2441: -2441: try -2441: { this->_S_copy_chars(_M_data(), __beg, __end); } -2441: catch(...) -2441: { -2441: _M_dispose(); -2441: throw; -2441: } -2441: -2441: _M_set_length(__dnew); -2441: } -2441: -2441: template -2441: void -2441: basic_string<_CharT, _Traits, _Alloc>:: -2441: _M_construct(size_type __n, _CharT __c) -2441: { -2441: if (__n > size_type(_S_local_capacity)) -2441: { -2441: _M_data(_M_create(__n, size_type(0))); -2441: _M_capacity(__n); -2441: } -2441: -2441: if (__n) -2441: this->_S_assign(_M_data(), __n, __c); -2441: -2441: _M_set_length(__n); -2441: } -2441: -2441: template -2441: void -2441: basic_string<_CharT, _Traits, _Alloc>:: -2441: _M_assign(const basic_string& __str) -2441: { -2441: if (this != &__str) -2441: { -2441: const size_type __rsize = __str.length(); -2441: const size_type __capacity = capacity(); -2441: -2441: if (__rsize > __capacity) -2441: { -2441: size_type __new_capacity = __rsize; -2441: pointer __tmp = _M_create(__new_capacity, __capacity); -2441: _M_dispose(); -2441: _M_data(__tmp); -2441: _M_capacity(__new_capacity); -2441: } -2441: -2441: if (__rsize) -2441: this->_S_copy(_M_data(), __str._M_data(), __rsize); -2441: -2441: _M_set_length(__rsize); -2441: } -2441: } -2441: -2441: template -2441: void -2441: basic_string<_CharT, _Traits, _Alloc>:: -2441: reserve(size_type __res) -2441: { -2441: -2441: if (__res < length()) -2441: __res = length(); -2441: -2441: const size_type __capacity = capacity(); -2441: if (__res != __capacity) -2441: { -2441: if (__res > __capacity -2441: || __res > size_type(_S_local_capacity)) -2441: { -2441: pointer __tmp = _M_create(__res, __capacity); -2441: this->_S_copy(__tmp, _M_data(), length() + 1); -2441: _M_dispose(); -2441: _M_data(__tmp); -2441: _M_capacity(__res); -2441: } -2441: else if (!_M_is_local()) -2441: { -2441: this->_S_copy(_M_local_data(), _M_data(), length() + 1); -2441: _M_destroy(__capacity); -2441: _M_data(_M_local_data()); -2441: } -2441: } -2441: } -2441: -2441: template -2441: void -2441: basic_string<_CharT, _Traits, _Alloc>:: -2441: _M_mutate(size_type __pos, size_type __len1, const _CharT* __s, -2441: size_type __len2) -2441: { -2441: const size_type __how_much = length() - __pos - __len1; -2441: -2441: size_type __new_capacity = length() + __len2 - __len1; -2441: pointer __r = _M_create(__new_capacity, capacity()); -2441: -2441: if (__pos) -2441: this->_S_copy(__r, _M_data(), __pos); -2441: if (__s && __len2) -2441: this->_S_copy(__r + __pos, __s, __len2); -2441: if (__how_much) -2441: this->_S_copy(__r + __pos + __len2, -2441: _M_data() + __pos + __len1, __how_much); -2441: -2441: _M_dispose(); -2441: _M_data(__r); -2441: _M_capacity(__new_capacity); -2441: } -2441: -2441: template -2441: void -2441: basic_string<_CharT, _Traits, _Alloc>:: -2441: _M_erase(size_type __pos, size_type __n) -2441: { -2441: const size_type __how_much = length() - __pos - __n; -2441: -2441: if (__how_much && __n) -2441: this->_S_move(_M_data() + __pos, _M_data() + __pos + __n, __how_much); -2441: -2441: _M_set_length(length() - __n); -2441: } -2441: -2441: template -2441: void -2441: basic_string<_CharT, _Traits, _Alloc>:: -2441: resize(size_type __n, _CharT __c) -2441: { -2441: const size_type __size = this->size(); -2441: if (__size < __n) -2441: this->append(__n - __size, __c); -2441: else if (__n < __size) -2441: this->_M_set_length(__n); -2441: } -2441: -2441: template -2441: basic_string<_CharT, _Traits, _Alloc>& -2441: basic_string<_CharT, _Traits, _Alloc>:: -2441: _M_append(const _CharT* __s, size_type __n) -2441: { -2441: const size_type __len = __n + this->size(); -2441: -2441: if (__len <= this->capacity()) -2441: { -2441: if (__n) -2441: this->_S_copy(this->_M_data() + this->size(), __s, __n); -2441: } -2441: else -2441: this->_M_mutate(this->size(), size_type(0), __s, __n); -2441: -2441: this->_M_set_length(__len); -2441: return *this; -2441: } -2441: -2441: template -2441: template -2441: basic_string<_CharT, _Traits, _Alloc>& -2441: basic_string<_CharT, _Traits, _Alloc>:: -2441: _M_replace_dispatch(const_iterator __i1, const_iterator __i2, -2441: _InputIterator __k1, _InputIterator __k2, -2441: std::__false_type) -2441: { -2441: const basic_string __s(__k1, __k2); -2441: const size_type __n1 = __i2 - __i1; -2441: return _M_replace(__i1 - begin(), __n1, __s._M_data(), -2441: __s.size()); -2441: } -2441: -2441: template -2441: basic_string<_CharT, _Traits, _Alloc>& -2441: basic_string<_CharT, _Traits, _Alloc>:: -2441: _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2, -2441: _CharT __c) -2441: { -2441: _M_check_length(__n1, __n2, "basic_string::_M_replace_aux"); -2441: -2441: const size_type __old_size = this->size(); -2441: const size_type __new_size = __old_size + __n2 - __n1; -2441: -2441: if (__new_size <= this->capacity()) -2441: { -2441: pointer __p = this->_M_data() + __pos1; -2441: -2441: const size_type __how_much = __old_size - __pos1 - __n1; -2441: if (__how_much && __n1 != __n2) -2441: this->_S_move(__p + __n2, __p + __n1, __how_much); -2441: } -2441: else -2441: this->_M_mutate(__pos1, __n1, 0, __n2); -2441: -2441: if (__n2) -2441: this->_S_assign(this->_M_data() + __pos1, __n2, __c); -2441: -2441: this->_M_set_length(__new_size); -2441: return *this; -2441: } -2441: -2441: template -2441: basic_string<_CharT, _Traits, _Alloc>& -2441: basic_string<_CharT, _Traits, _Alloc>:: -2441: _M_replace(size_type __pos, size_type __len1, const _CharT* __s, -2441: const size_type __len2) -2441: { -2441: _M_check_length(__len1, __len2, "basic_string::_M_replace"); -2441: -2441: const size_type __old_size = this->size(); -2441: const size_type __new_size = __old_size + __len2 - __len1; -2441: -2441: if (__new_size <= this->capacity()) -2441: { -2441: pointer __p = this->_M_data() + __pos; -2441: -2441: const size_type __how_much = __old_size - __pos - __len1; -2441: if (_M_disjunct(__s)) -2441: { -2441: if (__how_much && __len1 != __len2) -2441: this->_S_move(__p + __len2, __p + __len1, __how_much); -2441: if (__len2) -2441: this->_S_copy(__p, __s, __len2); -2441: } -2441: else -2441: { -2441: -2441: if (__len2 && __len2 <= __len1) -2441: this->_S_move(__p, __s, __len2); -2441: if (__how_much && __len1 != __len2) -2441: this->_S_move(__p + __len2, __p + __len1, __how_much); -2441: if (__len2 > __len1) -2441: { -2441: if (__s + __len2 <= __p + __len1) -2441: this->_S_move(__p, __s, __len2); -2441: else if (__s >= __p + __len1) -2441: this->_S_copy(__p, __s + __len2 - __len1, __len2); -2441: else -2441: { -2441: const size_type __nleft = (__p + __len1) - __s; -2441: this->_S_move(__p, __s, __nleft); -2441: this->_S_copy(__p + __nleft, __p + __len2, -2441: __len2 - __nleft); -2441: } -2441: } -2441: } -2441: } -2441: else -2441: this->_M_mutate(__pos, __len1, __s, __len2); -2441: -2441: this->_M_set_length(__new_size); -2441: return *this; -2441: } -2441: -2441: template -2441: typename basic_string<_CharT, _Traits, _Alloc>::size_type -2441: basic_string<_CharT, _Traits, _Alloc>:: -2441: copy(_CharT* __s, size_type __n, size_type __pos) const -2441: { -2441: _M_check(__pos, "basic_string::copy"); -2441: __n = _M_limit(__pos, __n); -2441: ; -2441: if (__n) -2441: _S_copy(__s, _M_data() + __pos, __n); -2441: -2441: return __n; -2441: } -2441: # 1155 "/usr/include/c++/8/bits/basic_string.tcc" 3 -2441: template -2441: basic_string<_CharT, _Traits, _Alloc> -2441: operator+(const _CharT* __lhs, -2441: const basic_string<_CharT, _Traits, _Alloc>& __rhs) -2441: { -2441: ; -2441: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; -2441: typedef typename __string_type::size_type __size_type; -2441: const __size_type __len = _Traits::length(__lhs); -2441: __string_type __str; -2441: __str.reserve(__len + __rhs.size()); -2441: __str.append(__lhs, __len); -2441: __str.append(__rhs); -2441: return __str; -2441: } -2441: -2441: template -2441: basic_string<_CharT, _Traits, _Alloc> -2441: operator+(_CharT __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) -2441: { -2441: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; -2441: typedef typename __string_type::size_type __size_type; -2441: __string_type __str; -2441: const __size_type __len = __rhs.size(); -2441: __str.reserve(__len + 1); -2441: __str.append(__size_type(1), __lhs); -2441: __str.append(__rhs); -2441: return __str; -2441: } -2441: -2441: template -2441: typename basic_string<_CharT, _Traits, _Alloc>::size_type -2441: basic_string<_CharT, _Traits, _Alloc>:: -2441: find(const _CharT* __s, size_type __pos, size_type __n) const -2441: noexcept -2441: { -2441: ; -2441: const size_type __size = this->size(); -2441: -2441: if (__n == 0) -2441: return __pos <= __size ? __pos : npos; -2441: if (__pos >= __size) -2441: return npos; -2441: -2441: const _CharT __elem0 = __s[0]; -2441: const _CharT* const __data = data(); -2441: const _CharT* __first = __data + __pos; -2441: const _CharT* const __last = __data + __size; -2441: size_type __len = __size - __pos; -2441: -2441: while (__len >= __n) -2441: { -2441: -2441: __first = traits_type::find(__first, __len - __n + 1, __elem0); -2441: if (!__first) -2441: return npos; -2441: -2441: -2441: -2441: if (traits_type::compare(__first, __s, __n) == 0) -2441: return __first - __data; -2441: __len = __last - ++__first; -2441: } -2441: return npos; -2441: } -2441: -2441: template -2441: typename basic_string<_CharT, _Traits, _Alloc>::size_type -2441: basic_string<_CharT, _Traits, _Alloc>:: -2441: find(_CharT __c, size_type __pos) const noexcept -2441: { -2441: size_type __ret = npos; -2441: const size_type __size = this->size(); -2441: if (__pos < __size) -2441: { -2441: const _CharT* __data = _M_data(); -2441: const size_type __n = __size - __pos; -2441: const _CharT* __p = traits_type::find(__data + __pos, __n, __c); -2441: if (__p) -2441: __ret = __p - __data; -2441: } -2441: return __ret; -2441: } -2441: -2441: template -2441: typename basic_string<_CharT, _Traits, _Alloc>::size_type -2441: basic_string<_CharT, _Traits, _Alloc>:: -2441: rfind(const _CharT* __s, size_type __pos, size_type __n) const -2441: noexcept -2441: { -2441: ; -2441: const size_type __size = this->size(); -2441: if (__n <= __size) -2441: { -2441: __pos = std::min(size_type(__size - __n), __pos); -2441: const _CharT* __data = _M_data(); -2441: do -2441: { -2441: if (traits_type::compare(__data + __pos, __s, __n) == 0) -2441: return __pos; -2441: } -2441: while (__pos-- > 0); -2441: } -2441: return npos; -2441: } -2441: -2441: template -2441: typename basic_string<_CharT, _Traits, _Alloc>::size_type -2441: basic_string<_CharT, _Traits, _Alloc>:: -2441: rfind(_CharT __c, size_type __pos) const noexcept -2441: { -2441: size_type __size = this->size(); -2441: if (__size) -2441: { -2441: if (--__size > __pos) -2441: __size = __pos; -2441: for (++__size; __size-- > 0; ) -2441: if (traits_type::eq(_M_data()[__size], __c)) -2441: return __size; -2441: } -2441: return npos; -2441: } -2441: -2441: template -2441: typename basic_string<_CharT, _Traits, _Alloc>::size_type -2441: basic_string<_CharT, _Traits, _Alloc>:: -2441: find_first_of(const _CharT* __s, size_type __pos, size_type __n) const -2441: noexcept -2441: { -2441: ; -2441: for (; __n && __pos < this->size(); ++__pos) -2441: { -2441: const _CharT* __p = traits_type::find(__s, __n, _M_data()[__pos]); -2441: if (__p) -2441: return __pos; -2441: } -2441: return npos; -2441: } -2441: -2441: template -2441: typename basic_string<_CharT, _Traits, _Alloc>::size_type -2441: basic_string<_CharT, _Traits, _Alloc>:: -2441: find_last_of(const _CharT* __s, size_type __pos, size_type __n) const -2441: noexcept -2441: { -2441: ; -2441: size_type __size = this->size(); -2441: if (__size && __n) -2441: { -2441: if (--__size > __pos) -2441: __size = __pos; -2441: do -2441: { -2441: if (traits_type::find(__s, __n, _M_data()[__size])) -2441: return __size; -2441: } -2441: while (__size-- != 0); -2441: } -2441: return npos; -2441: } -2441: -2441: template -2441: typename basic_string<_CharT, _Traits, _Alloc>::size_type -2441: basic_string<_CharT, _Traits, _Alloc>:: -2441: find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const -2441: noexcept -2441: { -2441: ; -2441: for (; __pos < this->size(); ++__pos) -2441: if (!traits_type::find(__s, __n, _M_data()[__pos])) -2441: return __pos; -2441: return npos; -2441: } -2441: -2441: template -2441: typename basic_string<_CharT, _Traits, _Alloc>::size_type -2441: basic_string<_CharT, _Traits, _Alloc>:: -2441: find_first_not_of(_CharT __c, size_type __pos) const noexcept -2441: { -2441: for (; __pos < this->size(); ++__pos) -2441: if (!traits_type::eq(_M_data()[__pos], __c)) -2441: return __pos; -2441: return npos; -2441: } -2441: -2441: template -2441: typename basic_string<_CharT, _Traits, _Alloc>::size_type -2441: basic_string<_CharT, _Traits, _Alloc>:: -2441: find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const -2441: noexcept -2441: { -2441: ; -2441: size_type __size = this->size(); -2441: if (__size) -2441: { -2441: if (--__size > __pos) -2441: __size = __pos; -2441: do -2441: { -2441: if (!traits_type::find(__s, __n, _M_data()[__size])) -2441: return __size; -2441: } -2441: while (__size--); -2441: } -2441: return npos; -2441: } -2441: -2441: template -2441: typename basic_string<_CharT, _Traits, _Alloc>::size_type -2441: basic_string<_CharT, _Traits, _Alloc>:: -2441: find_last_not_of(_CharT __c, size_type __pos) const noexcept -2441: { -2441: size_type __size = this->size(); -2441: if (__size) -2441: { -2441: if (--__size > __pos) -2441: __size = __pos; -2441: do -2441: { -2441: if (!traits_type::eq(_M_data()[__size], __c)) -2441: return __size; -2441: } -2441: while (__size--); -2441: } -2441: return npos; -2441: } -2441: -2441: template -2441: int -2441: basic_string<_CharT, _Traits, _Alloc>:: -2441: compare(size_type __pos, size_type __n, const basic_string& __str) const -2441: { -2441: _M_check(__pos, "basic_string::compare"); -2441: __n = _M_limit(__pos, __n); -2441: const size_type __osize = __str.size(); -2441: const size_type __len = std::min(__n, __osize); -2441: int __r = traits_type::compare(_M_data() + __pos, __str.data(), __len); -2441: if (!__r) -2441: __r = _S_compare(__n, __osize); -2441: return __r; -2441: } -2441: -2441: template -2441: int -2441: basic_string<_CharT, _Traits, _Alloc>:: -2441: compare(size_type __pos1, size_type __n1, const basic_string& __str, -2441: size_type __pos2, size_type __n2) const -2441: { -2441: _M_check(__pos1, "basic_string::compare"); -2441: __str._M_check(__pos2, "basic_string::compare"); -2441: __n1 = _M_limit(__pos1, __n1); -2441: __n2 = __str._M_limit(__pos2, __n2); -2441: const size_type __len = std::min(__n1, __n2); -2441: int __r = traits_type::compare(_M_data() + __pos1, -2441: __str.data() + __pos2, __len); -2441: if (!__r) -2441: __r = _S_compare(__n1, __n2); -2441: return __r; -2441: } -2441: -2441: template -2441: int -2441: basic_string<_CharT, _Traits, _Alloc>:: -2441: compare(const _CharT* __s) const noexcept -2441: { -2441: ; -2441: const size_type __size = this->size(); -2441: const size_type __osize = traits_type::length(__s); -2441: const size_type __len = std::min(__size, __osize); -2441: int __r = traits_type::compare(_M_data(), __s, __len); -2441: if (!__r) -2441: __r = _S_compare(__size, __osize); -2441: return __r; -2441: } -2441: -2441: template -2441: int -2441: basic_string <_CharT, _Traits, _Alloc>:: -2441: compare(size_type __pos, size_type __n1, const _CharT* __s) const -2441: { -2441: ; -2441: _M_check(__pos, "basic_string::compare"); -2441: __n1 = _M_limit(__pos, __n1); -2441: const size_type __osize = traits_type::length(__s); -2441: const size_type __len = std::min(__n1, __osize); -2441: int __r = traits_type::compare(_M_data() + __pos, __s, __len); -2441: if (!__r) -2441: __r = _S_compare(__n1, __osize); -2441: return __r; -2441: } -2441: -2441: template -2441: int -2441: basic_string <_CharT, _Traits, _Alloc>:: -2441: compare(size_type __pos, size_type __n1, const _CharT* __s, -2441: size_type __n2) const -2441: { -2441: ; -2441: _M_check(__pos, "basic_string::compare"); -2441: __n1 = _M_limit(__pos, __n1); -2441: const size_type __len = std::min(__n1, __n2); -2441: int __r = traits_type::compare(_M_data() + __pos, __s, __len); -2441: if (!__r) -2441: __r = _S_compare(__n1, __n2); -2441: return __r; -2441: } -2441: -2441: -2441: template -2441: basic_istream<_CharT, _Traits>& -2441: operator>>(basic_istream<_CharT, _Traits>& __in, -2441: basic_string<_CharT, _Traits, _Alloc>& __str) -2441: { -2441: typedef basic_istream<_CharT, _Traits> __istream_type; -2441: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; -2441: typedef typename __istream_type::ios_base __ios_base; -2441: typedef typename __istream_type::int_type __int_type; -2441: typedef typename __string_type::size_type __size_type; -2441: typedef ctype<_CharT> __ctype_type; -2441: typedef typename __ctype_type::ctype_base __ctype_base; -2441: -2441: __size_type __extracted = 0; -2441: typename __ios_base::iostate __err = __ios_base::goodbit; -2441: typename __istream_type::sentry __cerb(__in, false); -2441: if (__cerb) -2441: { -2441: try -2441: { -2441: -2441: __str.erase(); -2441: _CharT __buf[128]; -2441: __size_type __len = 0; -2441: const streamsize __w = __in.width(); -2441: const __size_type __n = __w > 0 ? static_cast<__size_type>(__w) -2441: : __str.max_size(); -2441: const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); -2441: const __int_type __eof = _Traits::eof(); -2441: __int_type __c = __in.rdbuf()->sgetc(); -2441: -2441: while (__extracted < __n -2441: && !_Traits::eq_int_type(__c, __eof) -2441: && !__ct.is(__ctype_base::space, -2441: _Traits::to_char_type(__c))) -2441: { -2441: if (__len == sizeof(__buf) / sizeof(_CharT)) -2441: { -2441: __str.append(__buf, sizeof(__buf) / sizeof(_CharT)); -2441: __len = 0; -2441: } -2441: __buf[__len++] = _Traits::to_char_type(__c); -2441: ++__extracted; -2441: __c = __in.rdbuf()->snextc(); -2441: } -2441: __str.append(__buf, __len); -2441: -2441: if (_Traits::eq_int_type(__c, __eof)) -2441: __err |= __ios_base::eofbit; -2441: __in.width(0); -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: __in._M_setstate(__ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { -2441: -2441: -2441: -2441: __in._M_setstate(__ios_base::badbit); -2441: } -2441: } -2441: -2441: if (!__extracted) -2441: __err |= __ios_base::failbit; -2441: if (__err) -2441: __in.setstate(__err); -2441: return __in; -2441: } -2441: -2441: template -2441: basic_istream<_CharT, _Traits>& -2441: getline(basic_istream<_CharT, _Traits>& __in, -2441: basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim) -2441: { -2441: typedef basic_istream<_CharT, _Traits> __istream_type; -2441: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; -2441: typedef typename __istream_type::ios_base __ios_base; -2441: typedef typename __istream_type::int_type __int_type; -2441: typedef typename __string_type::size_type __size_type; -2441: -2441: __size_type __extracted = 0; -2441: const __size_type __n = __str.max_size(); -2441: typename __ios_base::iostate __err = __ios_base::goodbit; -2441: typename __istream_type::sentry __cerb(__in, true); -2441: if (__cerb) -2441: { -2441: try -2441: { -2441: __str.erase(); -2441: const __int_type __idelim = _Traits::to_int_type(__delim); -2441: const __int_type __eof = _Traits::eof(); -2441: __int_type __c = __in.rdbuf()->sgetc(); -2441: -2441: while (__extracted < __n -2441: && !_Traits::eq_int_type(__c, __eof) -2441: && !_Traits::eq_int_type(__c, __idelim)) -2441: { -2441: __str += _Traits::to_char_type(__c); -2441: ++__extracted; -2441: __c = __in.rdbuf()->snextc(); -2441: } -2441: -2441: if (_Traits::eq_int_type(__c, __eof)) -2441: __err |= __ios_base::eofbit; -2441: else if (_Traits::eq_int_type(__c, __idelim)) -2441: { -2441: ++__extracted; -2441: __in.rdbuf()->sbumpc(); -2441: } -2441: else -2441: __err |= __ios_base::failbit; -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: __in._M_setstate(__ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { -2441: -2441: -2441: -2441: __in._M_setstate(__ios_base::badbit); -2441: } -2441: } -2441: if (!__extracted) -2441: __err |= __ios_base::failbit; -2441: if (__err) -2441: __in.setstate(__err); -2441: return __in; -2441: } -2441: # 1607 "/usr/include/c++/8/bits/basic_string.tcc" 3 -2441: extern template class basic_string; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern template -2441: basic_istream& -2441: operator>>(basic_istream&, string&); -2441: extern template -2441: basic_ostream& -2441: operator<<(basic_ostream&, const string&); -2441: extern template -2441: basic_istream& -2441: getline(basic_istream&, string&, char); -2441: extern template -2441: basic_istream& -2441: getline(basic_istream&, string&); -2441: -2441: -2441: -2441: extern template class basic_string; -2441: -2441: -2441: -2441: -2441: -2441: extern template -2441: basic_istream& -2441: operator>>(basic_istream&, wstring&); -2441: extern template -2441: basic_ostream& -2441: operator<<(basic_ostream&, const wstring&); -2441: extern template -2441: basic_istream& -2441: getline(basic_istream&, wstring&, wchar_t); -2441: extern template -2441: basic_istream& -2441: getline(basic_istream&, wstring&); -2441: -2441: -2441: -2441: -2441: } -2441: # 54 "/usr/include/c++/8/string" 2 3 -2441: # 41 "/usr/include/gmpxx.h" 2 3 4 -2441: # 1 "/usr/include/c++/8/stdexcept" 1 3 4 -2441: # 36 "/usr/include/c++/8/stdexcept" 3 4 -2441: -2441: # 37 "/usr/include/c++/8/stdexcept" 3 -2441: -2441: -2441: -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: struct __cow_string -2441: { -2441: union { -2441: const char* _M_p; -2441: char _M_bytes[sizeof(const char*)]; -2441: }; -2441: -2441: __cow_string(); -2441: __cow_string(const std::string&); -2441: __cow_string(const char*, size_t); -2441: __cow_string(const __cow_string&) noexcept; -2441: __cow_string& operator=(const __cow_string&) noexcept; -2441: ~__cow_string(); -2441: -2441: __cow_string(__cow_string&&) noexcept; -2441: __cow_string& operator=(__cow_string&&) noexcept; -2441: -2441: }; -2441: -2441: typedef basic_string __sso_string; -2441: # 113 "/usr/include/c++/8/stdexcept" 3 -2441: class logic_error : public exception -2441: { -2441: __cow_string _M_msg; -2441: -2441: public: -2441: -2441: explicit -2441: logic_error(const string& __arg) ; -2441: -2441: -2441: explicit -2441: logic_error(const char*) ; -2441: -2441: -2441: -2441: logic_error(const logic_error&) noexcept; -2441: logic_error& operator=(const logic_error&) noexcept; -2441: -2441: -2441: virtual ~logic_error() noexcept; -2441: -2441: -2441: -2441: virtual const char* -2441: what() const noexcept; -2441: -2441: -2441: -2441: -2441: -2441: }; -2441: -2441: -2441: -2441: class domain_error : public logic_error -2441: { -2441: public: -2441: explicit domain_error(const string& __arg) ; -2441: -2441: explicit domain_error(const char*) ; -2441: -2441: virtual ~domain_error() noexcept; -2441: }; -2441: -2441: -2441: class invalid_argument : public logic_error -2441: { -2441: public: -2441: explicit invalid_argument(const string& __arg) ; -2441: -2441: explicit invalid_argument(const char*) ; -2441: -2441: virtual ~invalid_argument() noexcept; -2441: }; -2441: -2441: -2441: -2441: class length_error : public logic_error -2441: { -2441: public: -2441: explicit length_error(const string& __arg) ; -2441: -2441: explicit length_error(const char*) ; -2441: -2441: virtual ~length_error() noexcept; -2441: }; -2441: -2441: -2441: -2441: class out_of_range : public logic_error -2441: { -2441: public: -2441: explicit out_of_range(const string& __arg) ; -2441: -2441: explicit out_of_range(const char*) ; -2441: -2441: virtual ~out_of_range() noexcept; -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: class runtime_error : public exception -2441: { -2441: __cow_string _M_msg; -2441: -2441: public: -2441: -2441: explicit -2441: runtime_error(const string& __arg) ; -2441: -2441: -2441: explicit -2441: runtime_error(const char*) ; -2441: -2441: -2441: -2441: runtime_error(const runtime_error&) noexcept; -2441: runtime_error& operator=(const runtime_error&) noexcept; -2441: -2441: -2441: virtual ~runtime_error() noexcept; -2441: -2441: -2441: -2441: virtual const char* -2441: what() const noexcept; -2441: -2441: -2441: -2441: -2441: -2441: }; -2441: -2441: -2441: class range_error : public runtime_error -2441: { -2441: public: -2441: explicit range_error(const string& __arg) ; -2441: -2441: explicit range_error(const char*) ; -2441: -2441: virtual ~range_error() noexcept; -2441: }; -2441: -2441: -2441: class overflow_error : public runtime_error -2441: { -2441: public: -2441: explicit overflow_error(const string& __arg) ; -2441: -2441: explicit overflow_error(const char*) ; -2441: -2441: virtual ~overflow_error() noexcept; -2441: }; -2441: -2441: -2441: class underflow_error : public runtime_error -2441: { -2441: public: -2441: explicit underflow_error(const string& __arg) ; -2441: -2441: explicit underflow_error(const char*) ; -2441: -2441: virtual ~underflow_error() noexcept; -2441: }; -2441: -2441: -2441: -2441: -2441: } -2441: # 42 "/usr/include/gmpxx.h" 2 3 4 -2441: # 1 "/usr/include/c++/8/cfloat" 1 3 4 -2441: # 39 "/usr/include/c++/8/cfloat" 3 4 -2441: -2441: # 40 "/usr/include/c++/8/cfloat" 3 -2441: -2441: -2441: # 1 "/usr/lib/gcc/i686-linux-gnu/8/include/float.h" 1 3 4 -2441: # 43 "/usr/include/c++/8/cfloat" 2 3 -2441: # 43 "/usr/include/gmpxx.h" 2 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/gmp.h" 1 3 4 -2441: # 35 "/usr/include/i386-linux-gnu/gmp.h" 3 4 -2441: # 1 "/usr/include/c++/8/cstdio" 1 3 4 -2441: # 39 "/usr/include/c++/8/cstdio" 3 4 -2441: -2441: # 40 "/usr/include/c++/8/cstdio" 3 -2441: # 36 "/usr/include/i386-linux-gnu/gmp.h" 2 3 4 -2441: # 55 "/usr/include/i386-linux-gnu/gmp.h" 3 4 -2441: # 1 "/usr/lib/gcc/i686-linux-gnu/8/include/stddef.h" 1 3 4 -2441: # 56 "/usr/include/i386-linux-gnu/gmp.h" 2 3 4 -2441: # 1 "/usr/lib/gcc/i686-linux-gnu/8/include-fixed/limits.h" 1 3 4 -2441: # 34 "/usr/lib/gcc/i686-linux-gnu/8/include-fixed/limits.h" 3 4 -2441: # 1 "/usr/lib/gcc/i686-linux-gnu/8/include-fixed/syslimits.h" 1 3 4 -2441: -2441: -2441: -2441: -2441: -2441: -2441: # 1 "/usr/lib/gcc/i686-linux-gnu/8/include-fixed/limits.h" 1 3 4 -2441: # 194 "/usr/lib/gcc/i686-linux-gnu/8/include-fixed/limits.h" 3 4 -2441: # 1 "/usr/include/limits.h" 1 3 4 -2441: # 26 "/usr/include/limits.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/libc-header-start.h" 1 3 4 -2441: # 27 "/usr/include/limits.h" 2 3 4 -2441: # 183 "/usr/include/limits.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/posix1_lim.h" 1 3 4 -2441: # 27 "/usr/include/i386-linux-gnu/bits/posix1_lim.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/wordsize.h" 1 3 4 -2441: # 28 "/usr/include/i386-linux-gnu/bits/posix1_lim.h" 2 3 4 -2441: # 161 "/usr/include/i386-linux-gnu/bits/posix1_lim.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/local_lim.h" 1 3 4 -2441: # 38 "/usr/include/i386-linux-gnu/bits/local_lim.h" 3 4 -2441: # 1 "/usr/include/linux/limits.h" 1 3 4 -2441: # 39 "/usr/include/i386-linux-gnu/bits/local_lim.h" 2 3 4 -2441: # 162 "/usr/include/i386-linux-gnu/bits/posix1_lim.h" 2 3 4 -2441: # 184 "/usr/include/limits.h" 2 3 4 -2441: -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/posix2_lim.h" 1 3 4 -2441: # 188 "/usr/include/limits.h" 2 3 4 -2441: -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/xopen_lim.h" 1 3 4 -2441: # 64 "/usr/include/i386-linux-gnu/bits/xopen_lim.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/uio_lim.h" 1 3 4 -2441: # 65 "/usr/include/i386-linux-gnu/bits/xopen_lim.h" 2 3 4 -2441: # 192 "/usr/include/limits.h" 2 3 4 -2441: # 195 "/usr/lib/gcc/i686-linux-gnu/8/include-fixed/limits.h" 2 3 4 -2441: # 8 "/usr/lib/gcc/i686-linux-gnu/8/include-fixed/syslimits.h" 2 3 4 -2441: # 35 "/usr/lib/gcc/i686-linux-gnu/8/include-fixed/limits.h" 2 3 4 -2441: # 57 "/usr/include/i386-linux-gnu/gmp.h" 2 3 4 -2441: # 141 "/usr/include/i386-linux-gnu/gmp.h" 3 4 -2441: typedef unsigned long int mp_limb_t; -2441: typedef long int mp_limb_signed_t; -2441: -2441: -2441: typedef unsigned long int mp_bitcnt_t; -2441: -2441: -2441: -2441: -2441: typedef struct -2441: { -2441: int _mp_alloc; -2441: -2441: int _mp_size; -2441: -2441: -2441: mp_limb_t *_mp_d; -2441: } __mpz_struct; -2441: -2441: -2441: -2441: -2441: typedef __mpz_struct MP_INT; -2441: typedef __mpz_struct mpz_t[1]; -2441: -2441: typedef mp_limb_t * mp_ptr; -2441: typedef const mp_limb_t * mp_srcptr; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: typedef long int mp_size_t; -2441: typedef long int mp_exp_t; -2441: -2441: -2441: typedef struct -2441: { -2441: __mpz_struct _mp_num; -2441: __mpz_struct _mp_den; -2441: } __mpq_struct; -2441: -2441: typedef __mpq_struct MP_RAT; -2441: typedef __mpq_struct mpq_t[1]; -2441: -2441: typedef struct -2441: { -2441: int _mp_prec; -2441: -2441: -2441: -2441: int _mp_size; -2441: -2441: -2441: mp_exp_t _mp_exp; -2441: mp_limb_t *_mp_d; -2441: } __mpf_struct; -2441: -2441: -2441: typedef __mpf_struct mpf_t[1]; -2441: -2441: -2441: typedef enum -2441: { -2441: GMP_RAND_ALG_DEFAULT = 0, -2441: GMP_RAND_ALG_LC = GMP_RAND_ALG_DEFAULT -2441: } gmp_randalg_t; -2441: -2441: -2441: typedef struct -2441: { -2441: mpz_t _mp_seed; -2441: gmp_randalg_t _mp_alg; -2441: union { -2441: void *_mp_lc; -2441: } _mp_algdata; -2441: } __gmp_randstate_struct; -2441: typedef __gmp_randstate_struct gmp_randstate_t[1]; -2441: -2441: -2441: -2441: typedef const __mpz_struct *mpz_srcptr; -2441: typedef __mpz_struct *mpz_ptr; -2441: typedef const __mpf_struct *mpf_srcptr; -2441: typedef __mpf_struct *mpf_ptr; -2441: typedef const __mpq_struct *mpq_srcptr; -2441: typedef __mpq_struct *mpq_ptr; -2441: # 468 "/usr/include/i386-linux-gnu/gmp.h" 3 4 -2441: extern "C" { -2441: using std::FILE; -2441: -2441: -2441: -2441: void __gmp_set_memory_functions (void *(*) (size_t), -2441: void *(*) (void *, size_t, size_t), -2441: void (*) (void *, size_t)) throw (); -2441: -2441: -2441: void __gmp_get_memory_functions (void *(**) (size_t), -2441: void *(**) (void *, size_t, size_t), -2441: void (**) (void *, size_t)) throw (); -2441: -2441: -2441: extern const int __gmp_bits_per_limb; -2441: -2441: -2441: extern int __gmp_errno; -2441: -2441: -2441: extern const char * const __gmp_version; -2441: -2441: -2441: -2441: -2441: -2441: -2441: void __gmp_randinit (gmp_randstate_t, gmp_randalg_t, ...); -2441: -2441: -2441: void __gmp_randinit_default (gmp_randstate_t); -2441: -2441: -2441: void __gmp_randinit_lc_2exp (gmp_randstate_t, mpz_srcptr, unsigned long int, mp_bitcnt_t); -2441: -2441: -2441: int __gmp_randinit_lc_2exp_size (gmp_randstate_t, mp_bitcnt_t); -2441: -2441: -2441: void __gmp_randinit_mt (gmp_randstate_t); -2441: -2441: -2441: void __gmp_randinit_set (gmp_randstate_t, const __gmp_randstate_struct *); -2441: -2441: -2441: void __gmp_randseed (gmp_randstate_t, mpz_srcptr); -2441: -2441: -2441: void __gmp_randseed_ui (gmp_randstate_t, unsigned long int); -2441: -2441: -2441: void __gmp_randclear (gmp_randstate_t); -2441: -2441: -2441: unsigned long __gmp_urandomb_ui (gmp_randstate_t, unsigned long); -2441: -2441: -2441: unsigned long __gmp_urandomm_ui (gmp_randstate_t, unsigned long); -2441: -2441: -2441: -2441: -2441: -2441: int __gmp_asprintf (char **, const char *, ...); -2441: -2441: -2441: -2441: int __gmp_fprintf (FILE *, const char *, ...); -2441: # 550 "/usr/include/i386-linux-gnu/gmp.h" 3 4 -2441: int __gmp_printf (const char *, ...); -2441: -2441: -2441: int __gmp_snprintf (char *, size_t, const char *, ...); -2441: -2441: -2441: int __gmp_sprintf (char *, const char *, ...); -2441: # 588 "/usr/include/i386-linux-gnu/gmp.h" 3 4 -2441: int __gmp_fscanf (FILE *, const char *, ...); -2441: -2441: -2441: -2441: int __gmp_scanf (const char *, ...); -2441: -2441: -2441: int __gmp_sscanf (const char *, const char *, ...); -2441: # 617 "/usr/include/i386-linux-gnu/gmp.h" 3 4 -2441: void *__gmpz_realloc (mpz_ptr, mp_size_t); -2441: -2441: -2441: -2441: void __gmpz_abs (mpz_ptr, mpz_srcptr); -2441: -2441: -2441: -2441: void __gmpz_add (mpz_ptr, mpz_srcptr, mpz_srcptr); -2441: -2441: -2441: void __gmpz_add_ui (mpz_ptr, mpz_srcptr, unsigned long int); -2441: -2441: -2441: void __gmpz_addmul (mpz_ptr, mpz_srcptr, mpz_srcptr); -2441: -2441: -2441: void __gmpz_addmul_ui (mpz_ptr, mpz_srcptr, unsigned long int); -2441: -2441: -2441: void __gmpz_and (mpz_ptr, mpz_srcptr, mpz_srcptr); -2441: -2441: -2441: void __gmpz_array_init (mpz_ptr, mp_size_t, mp_size_t); -2441: -2441: -2441: void __gmpz_bin_ui (mpz_ptr, mpz_srcptr, unsigned long int); -2441: -2441: -2441: void __gmpz_bin_uiui (mpz_ptr, unsigned long int, unsigned long int); -2441: -2441: -2441: void __gmpz_cdiv_q (mpz_ptr, mpz_srcptr, mpz_srcptr); -2441: -2441: -2441: void __gmpz_cdiv_q_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t); -2441: -2441: -2441: unsigned long int __gmpz_cdiv_q_ui (mpz_ptr, mpz_srcptr, unsigned long int); -2441: -2441: -2441: void __gmpz_cdiv_qr (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr); -2441: -2441: -2441: unsigned long int __gmpz_cdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int); -2441: -2441: -2441: void __gmpz_cdiv_r (mpz_ptr, mpz_srcptr, mpz_srcptr); -2441: -2441: -2441: void __gmpz_cdiv_r_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t); -2441: -2441: -2441: unsigned long int __gmpz_cdiv_r_ui (mpz_ptr, mpz_srcptr, unsigned long int); -2441: -2441: -2441: unsigned long int __gmpz_cdiv_ui (mpz_srcptr, unsigned long int) __attribute__ ((__pure__)); -2441: -2441: -2441: void __gmpz_clear (mpz_ptr); -2441: -2441: -2441: void __gmpz_clears (mpz_ptr, ...); -2441: -2441: -2441: void __gmpz_clrbit (mpz_ptr, mp_bitcnt_t); -2441: -2441: -2441: int __gmpz_cmp (mpz_srcptr, mpz_srcptr) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: int __gmpz_cmp_d (mpz_srcptr, double) __attribute__ ((__pure__)); -2441: -2441: -2441: int __gmpz_cmp_si (mpz_srcptr, signed long int) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: int __gmpz_cmp_ui (mpz_srcptr, unsigned long int) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: int __gmpz_cmpabs (mpz_srcptr, mpz_srcptr) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: int __gmpz_cmpabs_d (mpz_srcptr, double) __attribute__ ((__pure__)); -2441: -2441: -2441: int __gmpz_cmpabs_ui (mpz_srcptr, unsigned long int) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: void __gmpz_com (mpz_ptr, mpz_srcptr); -2441: -2441: -2441: void __gmpz_combit (mpz_ptr, mp_bitcnt_t); -2441: -2441: -2441: int __gmpz_congruent_p (mpz_srcptr, mpz_srcptr, mpz_srcptr) __attribute__ ((__pure__)); -2441: -2441: -2441: int __gmpz_congruent_2exp_p (mpz_srcptr, mpz_srcptr, mp_bitcnt_t) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: int __gmpz_congruent_ui_p (mpz_srcptr, unsigned long, unsigned long) __attribute__ ((__pure__)); -2441: -2441: -2441: void __gmpz_divexact (mpz_ptr, mpz_srcptr, mpz_srcptr); -2441: -2441: -2441: void __gmpz_divexact_ui (mpz_ptr, mpz_srcptr, unsigned long); -2441: -2441: -2441: int __gmpz_divisible_p (mpz_srcptr, mpz_srcptr) __attribute__ ((__pure__)); -2441: -2441: -2441: int __gmpz_divisible_ui_p (mpz_srcptr, unsigned long) __attribute__ ((__pure__)); -2441: -2441: -2441: int __gmpz_divisible_2exp_p (mpz_srcptr, mp_bitcnt_t) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: void __gmpz_dump (mpz_srcptr); -2441: -2441: -2441: void *__gmpz_export (void *, size_t *, int, size_t, int, size_t, mpz_srcptr); -2441: -2441: -2441: void __gmpz_fac_ui (mpz_ptr, unsigned long int); -2441: -2441: -2441: void __gmpz_2fac_ui (mpz_ptr, unsigned long int); -2441: -2441: -2441: void __gmpz_mfac_uiui (mpz_ptr, unsigned long int, unsigned long int); -2441: -2441: -2441: void __gmpz_primorial_ui (mpz_ptr, unsigned long int); -2441: -2441: -2441: void __gmpz_fdiv_q (mpz_ptr, mpz_srcptr, mpz_srcptr); -2441: -2441: -2441: void __gmpz_fdiv_q_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t); -2441: -2441: -2441: unsigned long int __gmpz_fdiv_q_ui (mpz_ptr, mpz_srcptr, unsigned long int); -2441: -2441: -2441: void __gmpz_fdiv_qr (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr); -2441: -2441: -2441: unsigned long int __gmpz_fdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int); -2441: -2441: -2441: void __gmpz_fdiv_r (mpz_ptr, mpz_srcptr, mpz_srcptr); -2441: -2441: -2441: void __gmpz_fdiv_r_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t); -2441: -2441: -2441: unsigned long int __gmpz_fdiv_r_ui (mpz_ptr, mpz_srcptr, unsigned long int); -2441: -2441: -2441: unsigned long int __gmpz_fdiv_ui (mpz_srcptr, unsigned long int) __attribute__ ((__pure__)); -2441: -2441: -2441: void __gmpz_fib_ui (mpz_ptr, unsigned long int); -2441: -2441: -2441: void __gmpz_fib2_ui (mpz_ptr, mpz_ptr, unsigned long int); -2441: -2441: -2441: int __gmpz_fits_sint_p (mpz_srcptr) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: int __gmpz_fits_slong_p (mpz_srcptr) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: int __gmpz_fits_sshort_p (mpz_srcptr) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: -2441: int __gmpz_fits_uint_p (mpz_srcptr) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: -2441: -2441: int __gmpz_fits_ulong_p (mpz_srcptr) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: -2441: -2441: int __gmpz_fits_ushort_p (mpz_srcptr) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: -2441: void __gmpz_gcd (mpz_ptr, mpz_srcptr, mpz_srcptr); -2441: -2441: -2441: unsigned long int __gmpz_gcd_ui (mpz_ptr, mpz_srcptr, unsigned long int); -2441: -2441: -2441: void __gmpz_gcdext (mpz_ptr, mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr); -2441: -2441: -2441: double __gmpz_get_d (mpz_srcptr) __attribute__ ((__pure__)); -2441: -2441: -2441: double __gmpz_get_d_2exp (signed long int *, mpz_srcptr); -2441: -2441: -2441: long int __gmpz_get_si (mpz_srcptr) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: char *__gmpz_get_str (char *, int, mpz_srcptr); -2441: -2441: -2441: -2441: unsigned long int __gmpz_get_ui (mpz_srcptr) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: -2441: -2441: mp_limb_t __gmpz_getlimbn (mpz_srcptr, mp_size_t) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: -2441: mp_bitcnt_t __gmpz_hamdist (mpz_srcptr, mpz_srcptr) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: void __gmpz_import (mpz_ptr, size_t, int, size_t, int, size_t, const void *); -2441: -2441: -2441: void __gmpz_init (mpz_ptr); -2441: -2441: -2441: void __gmpz_init2 (mpz_ptr, mp_bitcnt_t); -2441: -2441: -2441: void __gmpz_inits (mpz_ptr, ...); -2441: -2441: -2441: void __gmpz_init_set (mpz_ptr, mpz_srcptr); -2441: -2441: -2441: void __gmpz_init_set_d (mpz_ptr, double); -2441: -2441: -2441: void __gmpz_init_set_si (mpz_ptr, signed long int); -2441: -2441: -2441: int __gmpz_init_set_str (mpz_ptr, const char *, int); -2441: -2441: -2441: void __gmpz_init_set_ui (mpz_ptr, unsigned long int); -2441: -2441: -2441: -2441: size_t __gmpz_inp_raw (mpz_ptr, FILE *); -2441: -2441: -2441: -2441: -2441: size_t __gmpz_inp_str (mpz_ptr, FILE *, int); -2441: -2441: -2441: -2441: int __gmpz_invert (mpz_ptr, mpz_srcptr, mpz_srcptr); -2441: -2441: -2441: void __gmpz_ior (mpz_ptr, mpz_srcptr, mpz_srcptr); -2441: -2441: -2441: int __gmpz_jacobi (mpz_srcptr, mpz_srcptr) __attribute__ ((__pure__)); -2441: -2441: -2441: -2441: -2441: int __gmpz_kronecker_si (mpz_srcptr, long) __attribute__ ((__pure__)); -2441: -2441: -2441: int __gmpz_kronecker_ui (mpz_srcptr, unsigned long) __attribute__ ((__pure__)); -2441: -2441: -2441: int __gmpz_si_kronecker (long, mpz_srcptr) __attribute__ ((__pure__)); -2441: -2441: -2441: int __gmpz_ui_kronecker (unsigned long, mpz_srcptr) __attribute__ ((__pure__)); -2441: -2441: -2441: void __gmpz_lcm (mpz_ptr, mpz_srcptr, mpz_srcptr); -2441: -2441: -2441: void __gmpz_lcm_ui (mpz_ptr, mpz_srcptr, unsigned long); -2441: -2441: -2441: -2441: -2441: void __gmpz_lucnum_ui (mpz_ptr, unsigned long int); -2441: -2441: -2441: void __gmpz_lucnum2_ui (mpz_ptr, mpz_ptr, unsigned long int); -2441: -2441: -2441: int __gmpz_millerrabin (mpz_srcptr, int) __attribute__ ((__pure__)); -2441: -2441: -2441: void __gmpz_mod (mpz_ptr, mpz_srcptr, mpz_srcptr); -2441: -2441: -2441: -2441: -2441: void __gmpz_mul (mpz_ptr, mpz_srcptr, mpz_srcptr); -2441: -2441: -2441: void __gmpz_mul_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t); -2441: -2441: -2441: void __gmpz_mul_si (mpz_ptr, mpz_srcptr, long int); -2441: -2441: -2441: void __gmpz_mul_ui (mpz_ptr, mpz_srcptr, unsigned long int); -2441: -2441: -2441: -2441: void __gmpz_neg (mpz_ptr, mpz_srcptr); -2441: -2441: -2441: -2441: void __gmpz_nextprime (mpz_ptr, mpz_srcptr); -2441: -2441: -2441: -2441: size_t __gmpz_out_raw (FILE *, mpz_srcptr); -2441: -2441: -2441: -2441: -2441: size_t __gmpz_out_str (FILE *, int, mpz_srcptr); -2441: -2441: -2441: -2441: int __gmpz_perfect_power_p (mpz_srcptr) __attribute__ ((__pure__)); -2441: -2441: -2441: -2441: int __gmpz_perfect_square_p (mpz_srcptr) __attribute__ ((__pure__)); -2441: -2441: -2441: -2441: -2441: mp_bitcnt_t __gmpz_popcount (mpz_srcptr) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: -2441: void __gmpz_pow_ui (mpz_ptr, mpz_srcptr, unsigned long int); -2441: -2441: -2441: void __gmpz_powm (mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr); -2441: -2441: -2441: void __gmpz_powm_sec (mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr); -2441: -2441: -2441: void __gmpz_powm_ui (mpz_ptr, mpz_srcptr, unsigned long int, mpz_srcptr); -2441: -2441: -2441: int __gmpz_probab_prime_p (mpz_srcptr, int) __attribute__ ((__pure__)); -2441: -2441: -2441: void __gmpz_random (mpz_ptr, mp_size_t); -2441: -2441: -2441: void __gmpz_random2 (mpz_ptr, mp_size_t); -2441: -2441: -2441: void __gmpz_realloc2 (mpz_ptr, mp_bitcnt_t); -2441: -2441: -2441: mp_bitcnt_t __gmpz_remove (mpz_ptr, mpz_srcptr, mpz_srcptr); -2441: -2441: -2441: int __gmpz_root (mpz_ptr, mpz_srcptr, unsigned long int); -2441: -2441: -2441: void __gmpz_rootrem (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int); -2441: -2441: -2441: void __gmpz_rrandomb (mpz_ptr, gmp_randstate_t, mp_bitcnt_t); -2441: -2441: -2441: mp_bitcnt_t __gmpz_scan0 (mpz_srcptr, mp_bitcnt_t) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: mp_bitcnt_t __gmpz_scan1 (mpz_srcptr, mp_bitcnt_t) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: void __gmpz_set (mpz_ptr, mpz_srcptr); -2441: -2441: -2441: void __gmpz_set_d (mpz_ptr, double); -2441: -2441: -2441: void __gmpz_set_f (mpz_ptr, mpf_srcptr); -2441: -2441: -2441: -2441: void __gmpz_set_q (mpz_ptr, mpq_srcptr); -2441: -2441: -2441: -2441: void __gmpz_set_si (mpz_ptr, signed long int); -2441: -2441: -2441: int __gmpz_set_str (mpz_ptr, const char *, int); -2441: -2441: -2441: void __gmpz_set_ui (mpz_ptr, unsigned long int); -2441: -2441: -2441: void __gmpz_setbit (mpz_ptr, mp_bitcnt_t); -2441: -2441: -2441: -2441: size_t __gmpz_size (mpz_srcptr) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: -2441: size_t __gmpz_sizeinbase (mpz_srcptr, int) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: void __gmpz_sqrt (mpz_ptr, mpz_srcptr); -2441: -2441: -2441: void __gmpz_sqrtrem (mpz_ptr, mpz_ptr, mpz_srcptr); -2441: -2441: -2441: void __gmpz_sub (mpz_ptr, mpz_srcptr, mpz_srcptr); -2441: -2441: -2441: void __gmpz_sub_ui (mpz_ptr, mpz_srcptr, unsigned long int); -2441: -2441: -2441: void __gmpz_ui_sub (mpz_ptr, unsigned long int, mpz_srcptr); -2441: -2441: -2441: void __gmpz_submul (mpz_ptr, mpz_srcptr, mpz_srcptr); -2441: -2441: -2441: void __gmpz_submul_ui (mpz_ptr, mpz_srcptr, unsigned long int); -2441: -2441: -2441: void __gmpz_swap (mpz_ptr, mpz_ptr) throw (); -2441: -2441: -2441: unsigned long int __gmpz_tdiv_ui (mpz_srcptr, unsigned long int) __attribute__ ((__pure__)); -2441: -2441: -2441: void __gmpz_tdiv_q (mpz_ptr, mpz_srcptr, mpz_srcptr); -2441: -2441: -2441: void __gmpz_tdiv_q_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t); -2441: -2441: -2441: unsigned long int __gmpz_tdiv_q_ui (mpz_ptr, mpz_srcptr, unsigned long int); -2441: -2441: -2441: void __gmpz_tdiv_qr (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr); -2441: -2441: -2441: unsigned long int __gmpz_tdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int); -2441: -2441: -2441: void __gmpz_tdiv_r (mpz_ptr, mpz_srcptr, mpz_srcptr); -2441: -2441: -2441: void __gmpz_tdiv_r_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t); -2441: -2441: -2441: unsigned long int __gmpz_tdiv_r_ui (mpz_ptr, mpz_srcptr, unsigned long int); -2441: -2441: -2441: int __gmpz_tstbit (mpz_srcptr, mp_bitcnt_t) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: void __gmpz_ui_pow_ui (mpz_ptr, unsigned long int, unsigned long int); -2441: -2441: -2441: void __gmpz_urandomb (mpz_ptr, gmp_randstate_t, mp_bitcnt_t); -2441: -2441: -2441: void __gmpz_urandomm (mpz_ptr, gmp_randstate_t, mpz_srcptr); -2441: -2441: -2441: -2441: void __gmpz_xor (mpz_ptr, mpz_srcptr, mpz_srcptr); -2441: -2441: -2441: mp_srcptr __gmpz_limbs_read (mpz_srcptr); -2441: -2441: -2441: mp_ptr __gmpz_limbs_write (mpz_ptr, mp_size_t); -2441: -2441: -2441: mp_ptr __gmpz_limbs_modify (mpz_ptr, mp_size_t); -2441: -2441: -2441: void __gmpz_limbs_finish (mpz_ptr, mp_size_t); -2441: -2441: -2441: mpz_srcptr __gmpz_roinit_n (mpz_ptr, mp_srcptr, mp_size_t); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void __gmpq_abs (mpq_ptr, mpq_srcptr); -2441: -2441: -2441: -2441: void __gmpq_add (mpq_ptr, mpq_srcptr, mpq_srcptr); -2441: -2441: -2441: void __gmpq_canonicalize (mpq_ptr); -2441: -2441: -2441: void __gmpq_clear (mpq_ptr); -2441: -2441: -2441: void __gmpq_clears (mpq_ptr, ...); -2441: -2441: -2441: int __gmpq_cmp (mpq_srcptr, mpq_srcptr) __attribute__ ((__pure__)); -2441: -2441: -2441: int __gmpq_cmp_si (mpq_srcptr, long, unsigned long) __attribute__ ((__pure__)); -2441: -2441: -2441: int __gmpq_cmp_ui (mpq_srcptr, unsigned long int, unsigned long int) __attribute__ ((__pure__)); -2441: -2441: -2441: int __gmpq_cmp_z (mpq_srcptr, mpz_srcptr) __attribute__ ((__pure__)); -2441: -2441: -2441: void __gmpq_div (mpq_ptr, mpq_srcptr, mpq_srcptr); -2441: -2441: -2441: void __gmpq_div_2exp (mpq_ptr, mpq_srcptr, mp_bitcnt_t); -2441: -2441: -2441: int __gmpq_equal (mpq_srcptr, mpq_srcptr) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: void __gmpq_get_num (mpz_ptr, mpq_srcptr); -2441: -2441: -2441: void __gmpq_get_den (mpz_ptr, mpq_srcptr); -2441: -2441: -2441: double __gmpq_get_d (mpq_srcptr) __attribute__ ((__pure__)); -2441: -2441: -2441: char *__gmpq_get_str (char *, int, mpq_srcptr); -2441: -2441: -2441: void __gmpq_init (mpq_ptr); -2441: -2441: -2441: void __gmpq_inits (mpq_ptr, ...); -2441: -2441: -2441: -2441: size_t __gmpq_inp_str (mpq_ptr, FILE *, int); -2441: -2441: -2441: -2441: void __gmpq_inv (mpq_ptr, mpq_srcptr); -2441: -2441: -2441: void __gmpq_mul (mpq_ptr, mpq_srcptr, mpq_srcptr); -2441: -2441: -2441: void __gmpq_mul_2exp (mpq_ptr, mpq_srcptr, mp_bitcnt_t); -2441: -2441: -2441: -2441: void __gmpq_neg (mpq_ptr, mpq_srcptr); -2441: -2441: -2441: -2441: -2441: size_t __gmpq_out_str (FILE *, int, mpq_srcptr); -2441: -2441: -2441: -2441: void __gmpq_set (mpq_ptr, mpq_srcptr); -2441: -2441: -2441: void __gmpq_set_d (mpq_ptr, double); -2441: -2441: -2441: void __gmpq_set_den (mpq_ptr, mpz_srcptr); -2441: -2441: -2441: void __gmpq_set_f (mpq_ptr, mpf_srcptr); -2441: -2441: -2441: void __gmpq_set_num (mpq_ptr, mpz_srcptr); -2441: -2441: -2441: void __gmpq_set_si (mpq_ptr, signed long int, unsigned long int); -2441: -2441: -2441: int __gmpq_set_str (mpq_ptr, const char *, int); -2441: -2441: -2441: void __gmpq_set_ui (mpq_ptr, unsigned long int, unsigned long int); -2441: -2441: -2441: void __gmpq_set_z (mpq_ptr, mpz_srcptr); -2441: -2441: -2441: void __gmpq_sub (mpq_ptr, mpq_srcptr, mpq_srcptr); -2441: -2441: -2441: void __gmpq_swap (mpq_ptr, mpq_ptr) throw (); -2441: -2441: -2441: -2441: -2441: -2441: void __gmpf_abs (mpf_ptr, mpf_srcptr); -2441: -2441: -2441: void __gmpf_add (mpf_ptr, mpf_srcptr, mpf_srcptr); -2441: -2441: -2441: void __gmpf_add_ui (mpf_ptr, mpf_srcptr, unsigned long int); -2441: -2441: void __gmpf_ceil (mpf_ptr, mpf_srcptr); -2441: -2441: -2441: void __gmpf_clear (mpf_ptr); -2441: -2441: -2441: void __gmpf_clears (mpf_ptr, ...); -2441: -2441: -2441: int __gmpf_cmp (mpf_srcptr, mpf_srcptr) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: int __gmpf_cmp_z (mpf_srcptr, mpz_srcptr) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: int __gmpf_cmp_d (mpf_srcptr, double) __attribute__ ((__pure__)); -2441: -2441: -2441: int __gmpf_cmp_si (mpf_srcptr, signed long int) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: int __gmpf_cmp_ui (mpf_srcptr, unsigned long int) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: void __gmpf_div (mpf_ptr, mpf_srcptr, mpf_srcptr); -2441: -2441: -2441: void __gmpf_div_2exp (mpf_ptr, mpf_srcptr, mp_bitcnt_t); -2441: -2441: -2441: void __gmpf_div_ui (mpf_ptr, mpf_srcptr, unsigned long int); -2441: -2441: -2441: void __gmpf_dump (mpf_srcptr); -2441: -2441: -2441: int __gmpf_eq (mpf_srcptr, mpf_srcptr, mp_bitcnt_t) __attribute__ ((__pure__)); -2441: -2441: -2441: int __gmpf_fits_sint_p (mpf_srcptr) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: int __gmpf_fits_slong_p (mpf_srcptr) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: int __gmpf_fits_sshort_p (mpf_srcptr) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: int __gmpf_fits_uint_p (mpf_srcptr) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: int __gmpf_fits_ulong_p (mpf_srcptr) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: int __gmpf_fits_ushort_p (mpf_srcptr) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: void __gmpf_floor (mpf_ptr, mpf_srcptr); -2441: -2441: -2441: double __gmpf_get_d (mpf_srcptr) __attribute__ ((__pure__)); -2441: -2441: -2441: double __gmpf_get_d_2exp (signed long int *, mpf_srcptr); -2441: -2441: -2441: mp_bitcnt_t __gmpf_get_default_prec (void) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: mp_bitcnt_t __gmpf_get_prec (mpf_srcptr) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: long __gmpf_get_si (mpf_srcptr) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: char *__gmpf_get_str (char *, mp_exp_t *, int, size_t, mpf_srcptr); -2441: -2441: -2441: unsigned long __gmpf_get_ui (mpf_srcptr) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: void __gmpf_init (mpf_ptr); -2441: -2441: -2441: void __gmpf_init2 (mpf_ptr, mp_bitcnt_t); -2441: -2441: -2441: void __gmpf_inits (mpf_ptr, ...); -2441: -2441: -2441: void __gmpf_init_set (mpf_ptr, mpf_srcptr); -2441: -2441: -2441: void __gmpf_init_set_d (mpf_ptr, double); -2441: -2441: -2441: void __gmpf_init_set_si (mpf_ptr, signed long int); -2441: -2441: -2441: int __gmpf_init_set_str (mpf_ptr, const char *, int); -2441: -2441: -2441: void __gmpf_init_set_ui (mpf_ptr, unsigned long int); -2441: -2441: -2441: -2441: size_t __gmpf_inp_str (mpf_ptr, FILE *, int); -2441: -2441: -2441: -2441: int __gmpf_integer_p (mpf_srcptr) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: void __gmpf_mul (mpf_ptr, mpf_srcptr, mpf_srcptr); -2441: -2441: -2441: void __gmpf_mul_2exp (mpf_ptr, mpf_srcptr, mp_bitcnt_t); -2441: -2441: -2441: void __gmpf_mul_ui (mpf_ptr, mpf_srcptr, unsigned long int); -2441: -2441: -2441: void __gmpf_neg (mpf_ptr, mpf_srcptr); -2441: -2441: -2441: -2441: size_t __gmpf_out_str (FILE *, int, size_t, mpf_srcptr); -2441: -2441: -2441: -2441: void __gmpf_pow_ui (mpf_ptr, mpf_srcptr, unsigned long int); -2441: -2441: -2441: void __gmpf_random2 (mpf_ptr, mp_size_t, mp_exp_t); -2441: -2441: -2441: void __gmpf_reldiff (mpf_ptr, mpf_srcptr, mpf_srcptr); -2441: -2441: -2441: void __gmpf_set (mpf_ptr, mpf_srcptr); -2441: -2441: -2441: void __gmpf_set_d (mpf_ptr, double); -2441: -2441: -2441: void __gmpf_set_default_prec (mp_bitcnt_t) throw (); -2441: -2441: -2441: void __gmpf_set_prec (mpf_ptr, mp_bitcnt_t); -2441: -2441: -2441: void __gmpf_set_prec_raw (mpf_ptr, mp_bitcnt_t) throw (); -2441: -2441: -2441: void __gmpf_set_q (mpf_ptr, mpq_srcptr); -2441: -2441: -2441: void __gmpf_set_si (mpf_ptr, signed long int); -2441: -2441: -2441: int __gmpf_set_str (mpf_ptr, const char *, int); -2441: -2441: -2441: void __gmpf_set_ui (mpf_ptr, unsigned long int); -2441: -2441: -2441: void __gmpf_set_z (mpf_ptr, mpz_srcptr); -2441: -2441: -2441: size_t __gmpf_size (mpf_srcptr) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: void __gmpf_sqrt (mpf_ptr, mpf_srcptr); -2441: -2441: -2441: void __gmpf_sqrt_ui (mpf_ptr, unsigned long int); -2441: -2441: -2441: void __gmpf_sub (mpf_ptr, mpf_srcptr, mpf_srcptr); -2441: -2441: -2441: void __gmpf_sub_ui (mpf_ptr, mpf_srcptr, unsigned long int); -2441: -2441: -2441: void __gmpf_swap (mpf_ptr, mpf_ptr) throw (); -2441: -2441: -2441: void __gmpf_trunc (mpf_ptr, mpf_srcptr); -2441: -2441: -2441: void __gmpf_ui_div (mpf_ptr, unsigned long int, mpf_srcptr); -2441: -2441: -2441: void __gmpf_ui_sub (mpf_ptr, unsigned long int, mpf_srcptr); -2441: -2441: -2441: void __gmpf_urandomb (mpf_t, gmp_randstate_t, mp_bitcnt_t); -2441: # 1461 "/usr/include/i386-linux-gnu/gmp.h" 3 4 -2441: mp_limb_t __gmpn_add (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t); -2441: -2441: -2441: -2441: -2441: mp_limb_t __gmpn_add_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t) throw (); -2441: -2441: -2441: -2441: mp_limb_t __gmpn_add_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); -2441: -2441: -2441: mp_limb_t __gmpn_addmul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t); -2441: -2441: -2441: -2441: int __gmpn_cmp (mp_srcptr, mp_srcptr, mp_size_t) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: -2441: -2441: int __gmpn_zero_p (mp_srcptr, mp_size_t) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: -2441: void __gmpn_divexact_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t); -2441: -2441: -2441: -2441: -2441: -2441: mp_limb_t __gmpn_divexact_by3c (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t); -2441: -2441: -2441: -2441: -2441: -2441: mp_limb_t __gmpn_divrem (mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr, mp_size_t); -2441: -2441: -2441: mp_limb_t __gmpn_divrem_1 (mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_limb_t); -2441: -2441: -2441: mp_limb_t __gmpn_divrem_2 (mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr); -2441: -2441: -2441: mp_limb_t __gmpn_div_qr_1 (mp_ptr, mp_limb_t *, mp_srcptr, mp_size_t, mp_limb_t); -2441: -2441: -2441: mp_limb_t __gmpn_div_qr_2 (mp_ptr, mp_ptr, mp_srcptr, mp_size_t, mp_srcptr); -2441: -2441: -2441: mp_size_t __gmpn_gcd (mp_ptr, mp_ptr, mp_size_t, mp_ptr, mp_size_t); -2441: -2441: -2441: mp_limb_t __gmpn_gcd_1 (mp_srcptr, mp_size_t, mp_limb_t) __attribute__ ((__pure__)); -2441: -2441: -2441: mp_limb_t __gmpn_gcdext_1 (mp_limb_signed_t *, mp_limb_signed_t *, mp_limb_t, mp_limb_t); -2441: -2441: -2441: mp_size_t __gmpn_gcdext (mp_ptr, mp_ptr, mp_size_t *, mp_ptr, mp_size_t, mp_ptr, mp_size_t); -2441: -2441: -2441: size_t __gmpn_get_str (unsigned char *, int, mp_ptr, mp_size_t); -2441: -2441: -2441: mp_bitcnt_t __gmpn_hamdist (mp_srcptr, mp_srcptr, mp_size_t) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: mp_limb_t __gmpn_lshift (mp_ptr, mp_srcptr, mp_size_t, unsigned int); -2441: -2441: -2441: mp_limb_t __gmpn_mod_1 (mp_srcptr, mp_size_t, mp_limb_t) __attribute__ ((__pure__)); -2441: -2441: -2441: mp_limb_t __gmpn_mul (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t); -2441: -2441: -2441: mp_limb_t __gmpn_mul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t); -2441: -2441: -2441: void __gmpn_mul_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); -2441: -2441: -2441: void __gmpn_sqr (mp_ptr, mp_srcptr, mp_size_t); -2441: -2441: -2441: -2441: mp_limb_t __gmpn_neg (mp_ptr, mp_srcptr, mp_size_t); -2441: -2441: -2441: -2441: void __gmpn_com (mp_ptr, mp_srcptr, mp_size_t); -2441: -2441: -2441: int __gmpn_perfect_square_p (mp_srcptr, mp_size_t) __attribute__ ((__pure__)); -2441: -2441: -2441: int __gmpn_perfect_power_p (mp_srcptr, mp_size_t) __attribute__ ((__pure__)); -2441: -2441: -2441: mp_bitcnt_t __gmpn_popcount (mp_srcptr, mp_size_t) throw () __attribute__ ((__pure__)); -2441: -2441: -2441: mp_size_t __gmpn_pow_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr); -2441: -2441: -2441: -2441: mp_limb_t __gmpn_preinv_mod_1 (mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t) __attribute__ ((__pure__)); -2441: -2441: -2441: void __gmpn_random (mp_ptr, mp_size_t); -2441: -2441: -2441: void __gmpn_random2 (mp_ptr, mp_size_t); -2441: -2441: -2441: mp_limb_t __gmpn_rshift (mp_ptr, mp_srcptr, mp_size_t, unsigned int); -2441: -2441: -2441: mp_bitcnt_t __gmpn_scan0 (mp_srcptr, mp_bitcnt_t) __attribute__ ((__pure__)); -2441: -2441: -2441: mp_bitcnt_t __gmpn_scan1 (mp_srcptr, mp_bitcnt_t) __attribute__ ((__pure__)); -2441: -2441: -2441: mp_size_t __gmpn_set_str (mp_ptr, const unsigned char *, size_t, int); -2441: -2441: -2441: size_t __gmpn_sizeinbase (mp_srcptr, mp_size_t, int); -2441: -2441: -2441: mp_size_t __gmpn_sqrtrem (mp_ptr, mp_ptr, mp_srcptr, mp_size_t); -2441: -2441: -2441: -2441: mp_limb_t __gmpn_sub (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t); -2441: -2441: -2441: -2441: -2441: mp_limb_t __gmpn_sub_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t) throw (); -2441: -2441: -2441: -2441: mp_limb_t __gmpn_sub_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); -2441: -2441: -2441: mp_limb_t __gmpn_submul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t); -2441: -2441: -2441: void __gmpn_tdiv_qr (mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t); -2441: -2441: -2441: void __gmpn_and_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); -2441: -2441: void __gmpn_andn_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); -2441: -2441: void __gmpn_nand_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); -2441: -2441: void __gmpn_ior_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); -2441: -2441: void __gmpn_iorn_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); -2441: -2441: void __gmpn_nior_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); -2441: -2441: void __gmpn_xor_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); -2441: -2441: void __gmpn_xnor_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); -2441: -2441: -2441: void __gmpn_copyi (mp_ptr, mp_srcptr, mp_size_t); -2441: -2441: void __gmpn_copyd (mp_ptr, mp_srcptr, mp_size_t); -2441: -2441: void __gmpn_zero (mp_ptr, mp_size_t); -2441: -2441: -2441: mp_limb_t __gmpn_cnd_add_n (mp_limb_t, mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); -2441: -2441: mp_limb_t __gmpn_cnd_sub_n (mp_limb_t, mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); -2441: -2441: -2441: mp_limb_t __gmpn_sec_add_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr); -2441: -2441: mp_size_t __gmpn_sec_add_1_itch (mp_size_t) __attribute__ ((__pure__)); -2441: -2441: -2441: mp_limb_t __gmpn_sec_sub_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr); -2441: -2441: mp_size_t __gmpn_sec_sub_1_itch (mp_size_t) __attribute__ ((__pure__)); -2441: -2441: -2441: void __gmpn_cnd_swap (mp_limb_t, volatile mp_limb_t *, volatile mp_limb_t *, mp_size_t); -2441: -2441: -2441: void __gmpn_sec_mul (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t, mp_ptr); -2441: -2441: mp_size_t __gmpn_sec_mul_itch (mp_size_t, mp_size_t) __attribute__ ((__pure__)); -2441: -2441: -2441: void __gmpn_sec_sqr (mp_ptr, mp_srcptr, mp_size_t, mp_ptr); -2441: -2441: mp_size_t __gmpn_sec_sqr_itch (mp_size_t) __attribute__ ((__pure__)); -2441: -2441: -2441: void __gmpn_sec_powm (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_bitcnt_t, mp_srcptr, mp_size_t, mp_ptr); -2441: -2441: mp_size_t __gmpn_sec_powm_itch (mp_size_t, mp_bitcnt_t, mp_size_t) __attribute__ ((__pure__)); -2441: -2441: -2441: void __gmpn_sec_tabselect (volatile mp_limb_t *, volatile const mp_limb_t *, mp_size_t, mp_size_t, mp_size_t); -2441: -2441: -2441: mp_limb_t __gmpn_sec_div_qr (mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_ptr); -2441: -2441: mp_size_t __gmpn_sec_div_qr_itch (mp_size_t, mp_size_t) __attribute__ ((__pure__)); -2441: -2441: void __gmpn_sec_div_r (mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_ptr); -2441: -2441: mp_size_t __gmpn_sec_div_r_itch (mp_size_t, mp_size_t) __attribute__ ((__pure__)); -2441: -2441: -2441: int __gmpn_sec_invert (mp_ptr, mp_ptr, mp_srcptr, mp_size_t, mp_bitcnt_t, mp_ptr); -2441: -2441: mp_size_t __gmpn_sec_invert_itch (mp_size_t) __attribute__ ((__pure__)); -2441: # 1707 "/usr/include/i386-linux-gnu/gmp.h" 3 4 -2441: extern __inline__ __attribute__ ((__gnu_inline__)) void -2441: __gmpz_abs (mpz_ptr __gmp_w, mpz_srcptr __gmp_u) -2441: { -2441: if (__gmp_w != __gmp_u) -2441: __gmpz_set (__gmp_w, __gmp_u); -2441: __gmp_w->_mp_size = ((__gmp_w->_mp_size) >= 0 ? (__gmp_w->_mp_size) : -(__gmp_w->_mp_size)); -2441: } -2441: # 1731 "/usr/include/i386-linux-gnu/gmp.h" 3 4 -2441: extern __inline__ __attribute__ ((__gnu_inline__)) -2441: -2441: int -2441: __gmpz_fits_uint_p (mpz_srcptr __gmp_z) throw () -2441: { -2441: mp_size_t __gmp_n = __gmp_z->_mp_size; mp_ptr __gmp_p = __gmp_z->_mp_d; return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= (0x7fffffff * 2U + 1U)));; -2441: } -2441: -2441: -2441: -2441: -2441: extern __inline__ __attribute__ ((__gnu_inline__)) -2441: -2441: int -2441: __gmpz_fits_ulong_p (mpz_srcptr __gmp_z) throw () -2441: { -2441: mp_size_t __gmp_n = __gmp_z->_mp_size; mp_ptr __gmp_p = __gmp_z->_mp_d; return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= (0x7fffffffL * 2UL + 1UL)));; -2441: } -2441: -2441: -2441: -2441: -2441: extern __inline__ __attribute__ ((__gnu_inline__)) -2441: -2441: int -2441: __gmpz_fits_ushort_p (mpz_srcptr __gmp_z) throw () -2441: { -2441: mp_size_t __gmp_n = __gmp_z->_mp_size; mp_ptr __gmp_p = __gmp_z->_mp_d; return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= (0x7fff * 2 + 1)));; -2441: } -2441: -2441: -2441: -2441: -2441: extern __inline__ __attribute__ ((__gnu_inline__)) -2441: -2441: unsigned long -2441: __gmpz_get_ui (mpz_srcptr __gmp_z) throw () -2441: { -2441: mp_ptr __gmp_p = __gmp_z->_mp_d; -2441: mp_size_t __gmp_n = __gmp_z->_mp_size; -2441: mp_limb_t __gmp_l = __gmp_p[0]; -2441: -2441: -2441: -2441: -2441: -2441: -2441: return (__gmp_n != 0 ? __gmp_l : 0); -2441: # 1787 "/usr/include/i386-linux-gnu/gmp.h" 3 4 -2441: } -2441: -2441: -2441: -2441: -2441: extern __inline__ __attribute__ ((__gnu_inline__)) -2441: -2441: mp_limb_t -2441: __gmpz_getlimbn (mpz_srcptr __gmp_z, mp_size_t __gmp_n) throw () -2441: { -2441: mp_limb_t __gmp_result = 0; -2441: if (__builtin_expect ((__gmp_n >= 0 && __gmp_n < ((__gmp_z->_mp_size) >= 0 ? (__gmp_z->_mp_size) : -(__gmp_z->_mp_size))) != 0, 1)) -2441: __gmp_result = __gmp_z->_mp_d[__gmp_n]; -2441: return __gmp_result; -2441: } -2441: -2441: -2441: -2441: extern __inline__ __attribute__ ((__gnu_inline__)) void -2441: __gmpz_neg (mpz_ptr __gmp_w, mpz_srcptr __gmp_u) -2441: { -2441: if (__gmp_w != __gmp_u) -2441: __gmpz_set (__gmp_w, __gmp_u); -2441: __gmp_w->_mp_size = - __gmp_w->_mp_size; -2441: } -2441: -2441: -2441: -2441: -2441: extern __inline__ __attribute__ ((__gnu_inline__)) -2441: -2441: int -2441: __gmpz_perfect_square_p (mpz_srcptr __gmp_a) -2441: { -2441: mp_size_t __gmp_asize; -2441: int __gmp_result; -2441: -2441: __gmp_asize = __gmp_a->_mp_size; -2441: __gmp_result = (__gmp_asize >= 0); -2441: if (__builtin_expect ((__gmp_asize > 0) != 0, 1)) -2441: __gmp_result = __gmpn_perfect_square_p (__gmp_a->_mp_d, __gmp_asize); -2441: return __gmp_result; -2441: } -2441: -2441: -2441: -2441: -2441: extern __inline__ __attribute__ ((__gnu_inline__)) -2441: -2441: mp_bitcnt_t -2441: __gmpz_popcount (mpz_srcptr __gmp_u) throw () -2441: { -2441: mp_size_t __gmp_usize; -2441: mp_bitcnt_t __gmp_result; -2441: -2441: __gmp_usize = __gmp_u->_mp_size; -2441: __gmp_result = (__gmp_usize < 0 ? (0x7fffffffL * 2UL + 1UL) : 0); -2441: if (__builtin_expect ((__gmp_usize > 0) != 0, 1)) -2441: __gmp_result = __gmpn_popcount (__gmp_u->_mp_d, __gmp_usize); -2441: return __gmp_result; -2441: } -2441: -2441: -2441: -2441: -2441: extern __inline__ __attribute__ ((__gnu_inline__)) -2441: -2441: void -2441: __gmpz_set_q (mpz_ptr __gmp_w, mpq_srcptr __gmp_u) -2441: { -2441: __gmpz_tdiv_q (__gmp_w, (&((__gmp_u)->_mp_num)), (&((__gmp_u)->_mp_den))); -2441: } -2441: -2441: -2441: -2441: -2441: extern __inline__ __attribute__ ((__gnu_inline__)) -2441: -2441: size_t -2441: __gmpz_size (mpz_srcptr __gmp_z) throw () -2441: { -2441: return ((__gmp_z->_mp_size) >= 0 ? (__gmp_z->_mp_size) : -(__gmp_z->_mp_size)); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern __inline__ __attribute__ ((__gnu_inline__)) void -2441: __gmpq_abs (mpq_ptr __gmp_w, mpq_srcptr __gmp_u) -2441: { -2441: if (__gmp_w != __gmp_u) -2441: __gmpq_set (__gmp_w, __gmp_u); -2441: __gmp_w->_mp_num._mp_size = ((__gmp_w->_mp_num._mp_size) >= 0 ? (__gmp_w->_mp_num._mp_size) : -(__gmp_w->_mp_num._mp_size)); -2441: } -2441: -2441: -2441: -2441: extern __inline__ __attribute__ ((__gnu_inline__)) void -2441: __gmpq_neg (mpq_ptr __gmp_w, mpq_srcptr __gmp_u) -2441: { -2441: if (__gmp_w != __gmp_u) -2441: __gmpq_set (__gmp_w, __gmp_u); -2441: __gmp_w->_mp_num._mp_size = - __gmp_w->_mp_num._mp_size; -2441: } -2441: # 2129 "/usr/include/i386-linux-gnu/gmp.h" 3 4 -2441: extern __inline__ __attribute__ ((__gnu_inline__)) -2441: -2441: mp_limb_t -2441: __gmpn_add (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize) -2441: { -2441: mp_limb_t __gmp_c; -2441: do { mp_size_t __gmp_i; mp_limb_t __gmp_x; __gmp_i = (__gmp_ysize); if (__gmp_i != 0) { if (__gmpn_add_n (__gmp_wp, __gmp_xp, __gmp_yp, __gmp_i)) { do { if (__gmp_i >= (__gmp_xsize)) { (__gmp_c) = 1; goto __gmp_done; } __gmp_x = (__gmp_xp)[__gmp_i]; } while ((((__gmp_wp)[__gmp_i++] = (__gmp_x + 1) & ((~ (static_cast (0))) >> 0)) == 0)); } } if ((__gmp_wp) != (__gmp_xp)) do { mp_size_t __gmp_j; ; for (__gmp_j = (__gmp_i); __gmp_j < (__gmp_xsize); __gmp_j++) (__gmp_wp)[__gmp_j] = (__gmp_xp)[__gmp_j]; } while (0); (__gmp_c) = 0; __gmp_done: ; } while (0); -2441: return __gmp_c; -2441: } -2441: -2441: -2441: -2441: -2441: extern __inline__ __attribute__ ((__gnu_inline__)) -2441: -2441: mp_limb_t -2441: __gmpn_add_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) throw () -2441: { -2441: mp_limb_t __gmp_c; -2441: do { mp_size_t __gmp_i; mp_limb_t __gmp_x, __gmp_r; __gmp_x = (__gmp_src)[0]; __gmp_r = __gmp_x + (__gmp_n); (__gmp_dst)[0] = __gmp_r; if (((__gmp_r) < ((__gmp_n)))) { (__gmp_c) = 1; for (__gmp_i = 1; __gmp_i < (__gmp_size);) { __gmp_x = (__gmp_src)[__gmp_i]; __gmp_r = __gmp_x + 1; (__gmp_dst)[__gmp_i] = __gmp_r; ++__gmp_i; if (!((__gmp_r) < (1))) { if ((__gmp_src) != (__gmp_dst)) do { mp_size_t __gmp_j; ; for (__gmp_j = (__gmp_i); __gmp_j < (__gmp_size); __gmp_j++) (__gmp_dst)[__gmp_j] = (__gmp_src)[__gmp_j]; } while (0); (__gmp_c) = 0; break; } } } else { if ((__gmp_src) != (__gmp_dst)) do { mp_size_t __gmp_j; ; for (__gmp_j = (1); __gmp_j < (__gmp_size); __gmp_j++) (__gmp_dst)[__gmp_j] = (__gmp_src)[__gmp_j]; } while (0); (__gmp_c) = 0; } } while (0); -2441: return __gmp_c; -2441: } -2441: -2441: -2441: -2441: -2441: extern __inline__ __attribute__ ((__gnu_inline__)) -2441: -2441: int -2441: __gmpn_cmp (mp_srcptr __gmp_xp, mp_srcptr __gmp_yp, mp_size_t __gmp_size) throw () -2441: { -2441: int __gmp_result; -2441: do { mp_size_t __gmp_i; mp_limb_t __gmp_x, __gmp_y; (__gmp_result) = 0; __gmp_i = (__gmp_size); while (--__gmp_i >= 0) { __gmp_x = (__gmp_xp)[__gmp_i]; __gmp_y = (__gmp_yp)[__gmp_i]; if (__gmp_x != __gmp_y) { (__gmp_result) = (__gmp_x > __gmp_y ? 1 : -1); break; } } } while (0); -2441: return __gmp_result; -2441: } -2441: -2441: -2441: -2441: -2441: extern __inline__ __attribute__ ((__gnu_inline__)) -2441: -2441: int -2441: __gmpn_zero_p (mp_srcptr __gmp_p, mp_size_t __gmp_n) throw () -2441: { -2441: -2441: do { -2441: if (__gmp_p[--__gmp_n] != 0) -2441: return 0; -2441: } while (__gmp_n != 0); -2441: return 1; -2441: } -2441: -2441: -2441: -2441: -2441: extern __inline__ __attribute__ ((__gnu_inline__)) -2441: -2441: mp_limb_t -2441: __gmpn_sub (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize) -2441: { -2441: mp_limb_t __gmp_c; -2441: do { mp_size_t __gmp_i; mp_limb_t __gmp_x; __gmp_i = (__gmp_ysize); if (__gmp_i != 0) { if (__gmpn_sub_n (__gmp_wp, __gmp_xp, __gmp_yp, __gmp_i)) { do { if (__gmp_i >= (__gmp_xsize)) { (__gmp_c) = 1; goto __gmp_done; } __gmp_x = (__gmp_xp)[__gmp_i]; } while ((((__gmp_wp)[__gmp_i++] = (__gmp_x - 1) & ((~ (static_cast (0))) >> 0)), __gmp_x == 0)); } } if ((__gmp_wp) != (__gmp_xp)) do { mp_size_t __gmp_j; ; for (__gmp_j = (__gmp_i); __gmp_j < (__gmp_xsize); __gmp_j++) (__gmp_wp)[__gmp_j] = (__gmp_xp)[__gmp_j]; } while (0); (__gmp_c) = 0; __gmp_done: ; } while (0); -2441: return __gmp_c; -2441: } -2441: -2441: -2441: -2441: -2441: extern __inline__ __attribute__ ((__gnu_inline__)) -2441: -2441: mp_limb_t -2441: __gmpn_sub_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) throw () -2441: { -2441: mp_limb_t __gmp_c; -2441: do { mp_size_t __gmp_i; mp_limb_t __gmp_x, __gmp_r; __gmp_x = (__gmp_src)[0]; __gmp_r = __gmp_x - (__gmp_n); (__gmp_dst)[0] = __gmp_r; if (((__gmp_x) < ((__gmp_n)))) { (__gmp_c) = 1; for (__gmp_i = 1; __gmp_i < (__gmp_size);) { __gmp_x = (__gmp_src)[__gmp_i]; __gmp_r = __gmp_x - 1; (__gmp_dst)[__gmp_i] = __gmp_r; ++__gmp_i; if (!((__gmp_x) < (1))) { if ((__gmp_src) != (__gmp_dst)) do { mp_size_t __gmp_j; ; for (__gmp_j = (__gmp_i); __gmp_j < (__gmp_size); __gmp_j++) (__gmp_dst)[__gmp_j] = (__gmp_src)[__gmp_j]; } while (0); (__gmp_c) = 0; break; } } } else { if ((__gmp_src) != (__gmp_dst)) do { mp_size_t __gmp_j; ; for (__gmp_j = (1); __gmp_j < (__gmp_size); __gmp_j++) (__gmp_dst)[__gmp_j] = (__gmp_src)[__gmp_j]; } while (0); (__gmp_c) = 0; } } while (0); -2441: return __gmp_c; -2441: } -2441: -2441: -2441: -2441: -2441: extern __inline__ __attribute__ ((__gnu_inline__)) -2441: -2441: mp_limb_t -2441: __gmpn_neg (mp_ptr __gmp_rp, mp_srcptr __gmp_up, mp_size_t __gmp_n) -2441: { -2441: while (*__gmp_up == 0) -2441: { -2441: *__gmp_rp = 0; -2441: if (!--__gmp_n) -2441: return 0; -2441: ++__gmp_up; ++__gmp_rp; -2441: } -2441: -2441: *__gmp_rp = (- *__gmp_up) & ((~ (static_cast (0))) >> 0); -2441: -2441: if (--__gmp_n) -2441: __gmpn_com (++__gmp_rp, ++__gmp_up, __gmp_n); -2441: -2441: return 1; -2441: } -2441: -2441: -2441: -2441: } -2441: # 2278 "/usr/include/i386-linux-gnu/gmp.h" 3 4 -2441: std::ostream& operator<< (std::ostream &, mpz_srcptr); -2441: std::ostream& operator<< (std::ostream &, mpq_srcptr); -2441: std::ostream& operator<< (std::ostream &, mpf_srcptr); -2441: std::istream& operator>> (std::istream &, mpz_ptr); -2441: std::istream& operator>> (std::istream &, mpq_ptr); -2441: std::istream& operator>> (std::istream &, mpf_ptr); -2441: # 2309 "/usr/include/i386-linux-gnu/gmp.h" 3 4 -2441: enum -2441: { -2441: GMP_ERROR_NONE = 0, -2441: GMP_ERROR_UNSUPPORTED_ARGUMENT = 1, -2441: GMP_ERROR_DIVISION_BY_ZERO = 2, -2441: GMP_ERROR_SQRT_OF_NEGATIVE = 4, -2441: GMP_ERROR_INVALID_ARGUMENT = 8 -2441: }; -2441: # 44 "/usr/include/gmpxx.h" 2 3 4 -2441: # 85 "/usr/include/gmpxx.h" 3 4 -2441: inline void __mpz_set_ui_safe(mpz_ptr p, unsigned long l) -2441: { -2441: p->_mp_size = (l != 0); -2441: p->_mp_d[0] = l & ((~ (static_cast (0))) >> 0); -2441: -2441: -2441: -2441: -2441: -2441: } -2441: -2441: inline void __mpz_set_si_safe(mpz_ptr p, long l) -2441: { -2441: if(l < 0) -2441: { -2441: __mpz_set_ui_safe(p, -static_cast(l)); -2441: __gmpz_neg(p, p); -2441: } -2441: else -2441: __mpz_set_ui_safe(p, l); -2441: -2441: } -2441: # 151 "/usr/include/gmpxx.h" 3 4 -2441: inline unsigned long __gmpxx_abs_ui (signed long l) -2441: { -2441: return l >= 0 ? static_cast(l) -2441: : -static_cast(l); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: struct __gmp_unary_plus -2441: { -2441: static void eval(mpz_ptr z, mpz_srcptr w) { __gmpz_set(z, w); } -2441: static void eval(mpq_ptr q, mpq_srcptr r) { __gmpq_set(q, r); } -2441: static void eval(mpf_ptr f, mpf_srcptr g) { __gmpf_set(f, g); } -2441: }; -2441: -2441: struct __gmp_unary_minus -2441: { -2441: static void eval(mpz_ptr z, mpz_srcptr w) { __gmpz_neg(z, w); } -2441: static void eval(mpq_ptr q, mpq_srcptr r) { __gmpq_neg(q, r); } -2441: static void eval(mpf_ptr f, mpf_srcptr g) { __gmpf_neg(f, g); } -2441: }; -2441: -2441: struct __gmp_unary_com -2441: { -2441: static void eval(mpz_ptr z, mpz_srcptr w) { __gmpz_com(z, w); } -2441: }; -2441: -2441: struct __gmp_binary_plus -2441: { -2441: static void eval(mpz_ptr z, mpz_srcptr w, mpz_srcptr v) -2441: { __gmpz_add(z, w, v); } -2441: -2441: static void eval(mpz_ptr z, mpz_srcptr w, unsigned long int l) -2441: { -2441: -2441: -2441: if (__builtin_constant_p(l) && l == 0) -2441: { -2441: if (z != w) __gmpz_set(z, w); -2441: } -2441: else -2441: __gmpz_add_ui(z, w, l); -2441: } -2441: static void eval(mpz_ptr z, unsigned long int l, mpz_srcptr w) -2441: { eval(z, w, l); } -2441: static void eval(mpz_ptr z, mpz_srcptr w, signed long int l) -2441: { -2441: if (l >= 0) -2441: eval(z, w, static_cast(l)); -2441: else -2441: __gmpz_sub_ui(z, w, -static_cast(l)); -2441: } -2441: static void eval(mpz_ptr z, signed long int l, mpz_srcptr w) -2441: { eval(z, w, l); } -2441: static void eval(mpz_ptr z, mpz_srcptr w, double d) -2441: { mpz_t temp; mp_limb_t limbs[(((1024) + ((32 - 0) - 1)) / (32 - 0))+1]; temp->_mp_d = limbs; temp->_mp_alloc = (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; __gmpz_set_d (temp, d); __gmpz_add (z, w, temp); } -2441: static void eval(mpz_ptr z, double d, mpz_srcptr w) -2441: { eval(z, w, d); } -2441: -2441: static void eval(mpq_ptr q, mpq_srcptr r, mpq_srcptr s) -2441: { __gmpq_add(q, r, s); } -2441: -2441: static void eval(mpq_ptr q, mpq_srcptr r, unsigned long int l) -2441: { -2441: if (__builtin_constant_p(l) && l == 0) -2441: { -2441: if (q != r) __gmpq_set(q, r); -2441: } -2441: else -2441: { -2441: if (q == r) -2441: __gmpz_addmul_ui((&((q)->_mp_num)), (&((q)->_mp_den)), l); -2441: else -2441: { -2441: __gmpz_mul_ui((&((q)->_mp_num)), (&((r)->_mp_den)), l); -2441: __gmpz_add((&((q)->_mp_num)), (&((q)->_mp_num)), (&((r)->_mp_num))); -2441: __gmpz_set((&((q)->_mp_den)), (&((r)->_mp_den))); -2441: } -2441: } -2441: } -2441: static void eval(mpq_ptr q, unsigned long int l, mpq_srcptr r) -2441: { eval(q, r, l); } -2441: static inline void eval(mpq_ptr q, mpq_srcptr r, signed long int l); -2441: -2441: static void eval(mpq_ptr q, signed long int l, mpq_srcptr r) -2441: { eval(q, r, l); } -2441: static void eval(mpq_ptr q, mpq_srcptr r, double d) -2441: { mpq_t temp; mp_limb_t limbs[(((1024) + ((32 - 0) - 1)) / (32 - 0))+1 + (((53 +1-(-1021)) + ((32 - 0) - 1)) / (32 - 0))+1]; (&((temp)->_mp_num))->_mp_d = limbs; (&((temp)->_mp_num))->_mp_alloc = (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; (&((temp)->_mp_den))->_mp_d = limbs + (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; (&((temp)->_mp_den))->_mp_alloc = (((53 +1-(-1021)) + ((32 - 0) - 1)) / (32 - 0))+1; __gmpq_set_d (temp, d); __gmpq_add (q, r, temp); } -2441: static void eval(mpq_ptr q, double d, mpq_srcptr r) -2441: { eval(q, r, d); } -2441: -2441: static void eval(mpq_ptr q, mpq_srcptr r, mpz_srcptr z) -2441: { -2441: if (q == r) -2441: __gmpz_addmul((&((q)->_mp_num)), (&((q)->_mp_den)), z); -2441: else -2441: { -2441: __gmpz_mul((&((q)->_mp_num)), (&((r)->_mp_den)), z); -2441: __gmpz_add((&((q)->_mp_num)), (&((q)->_mp_num)), (&((r)->_mp_num))); -2441: __gmpz_set((&((q)->_mp_den)), (&((r)->_mp_den))); -2441: } -2441: } -2441: static void eval(mpq_ptr q, mpz_srcptr z, mpq_srcptr r) -2441: { eval(q, r, z); } -2441: -2441: static void eval(mpf_ptr f, mpf_srcptr g, mpf_srcptr h) -2441: { __gmpf_add(f, g, h); } -2441: -2441: static void eval(mpf_ptr f, mpf_srcptr g, unsigned long int l) -2441: { __gmpf_add_ui(f, g, l); } -2441: static void eval(mpf_ptr f, unsigned long int l, mpf_srcptr g) -2441: { __gmpf_add_ui(f, g, l); } -2441: static void eval(mpf_ptr f, mpf_srcptr g, signed long int l) -2441: { -2441: if (l >= 0) -2441: __gmpf_add_ui(f, g, l); -2441: else -2441: __gmpf_sub_ui(f, g, -static_cast(l)); -2441: } -2441: static void eval(mpf_ptr f, signed long int l, mpf_srcptr g) -2441: { eval(f, g, l); } -2441: static void eval(mpf_ptr f, mpf_srcptr g, double d) -2441: { -2441: mpf_t temp; -2441: __gmpf_init2(temp, 8*sizeof(double)); -2441: __gmpf_set_d(temp, d); -2441: __gmpf_add(f, g, temp); -2441: __gmpf_clear(temp); -2441: } -2441: static void eval(mpf_ptr f, double d, mpf_srcptr g) -2441: { eval(f, g, d); } -2441: }; -2441: -2441: struct __gmp_binary_minus -2441: { -2441: static void eval(mpz_ptr z, mpz_srcptr w, mpz_srcptr v) -2441: { __gmpz_sub(z, w, v); } -2441: -2441: static void eval(mpz_ptr z, mpz_srcptr w, unsigned long int l) -2441: { -2441: if (__builtin_constant_p(l) && l == 0) -2441: { -2441: if (z != w) __gmpz_set(z, w); -2441: } -2441: else -2441: __gmpz_sub_ui(z, w, l); -2441: } -2441: static void eval(mpz_ptr z, unsigned long int l, mpz_srcptr w) -2441: { -2441: if (__builtin_constant_p(l) && l == 0) -2441: { -2441: __gmpz_neg(z, w); -2441: } -2441: else -2441: __gmpz_ui_sub(z, l, w); -2441: } -2441: static void eval(mpz_ptr z, mpz_srcptr w, signed long int l) -2441: { -2441: if (l >= 0) -2441: eval(z, w, static_cast(l)); -2441: else -2441: __gmpz_add_ui(z, w, -static_cast(l)); -2441: } -2441: static void eval(mpz_ptr z, signed long int l, mpz_srcptr w) -2441: { -2441: if (l >= 0) -2441: eval(z, static_cast(l), w); -2441: else -2441: { -2441: __gmpz_add_ui(z, w, -static_cast(l)); -2441: __gmpz_neg(z, z); -2441: } -2441: } -2441: static void eval(mpz_ptr z, mpz_srcptr w, double d) -2441: { mpz_t temp; mp_limb_t limbs[(((1024) + ((32 - 0) - 1)) / (32 - 0))+1]; temp->_mp_d = limbs; temp->_mp_alloc = (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; __gmpz_set_d (temp, d); __gmpz_sub (z, w, temp); } -2441: static void eval(mpz_ptr z, double d, mpz_srcptr w) -2441: { mpz_t temp; mp_limb_t limbs[(((1024) + ((32 - 0) - 1)) / (32 - 0))+1]; temp->_mp_d = limbs; temp->_mp_alloc = (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; __gmpz_set_d (temp, d); __gmpz_sub (z, temp, w); } -2441: -2441: static void eval(mpq_ptr q, mpq_srcptr r, mpq_srcptr s) -2441: { __gmpq_sub(q, r, s); } -2441: -2441: static void eval(mpq_ptr q, mpq_srcptr r, unsigned long int l) -2441: { -2441: if (__builtin_constant_p(l) && l == 0) -2441: { -2441: if (q != r) __gmpq_set(q, r); -2441: } -2441: else -2441: { -2441: if (q == r) -2441: __gmpz_submul_ui((&((q)->_mp_num)), (&((q)->_mp_den)), l); -2441: else -2441: { -2441: __gmpz_mul_ui((&((q)->_mp_num)), (&((r)->_mp_den)), l); -2441: __gmpz_sub((&((q)->_mp_num)), (&((r)->_mp_num)), (&((q)->_mp_num))); -2441: __gmpz_set((&((q)->_mp_den)), (&((r)->_mp_den))); -2441: } -2441: } -2441: } -2441: static void eval(mpq_ptr q, unsigned long int l, mpq_srcptr r) -2441: { eval(q, r, l); __gmpq_neg(q, q); } -2441: static void eval(mpq_ptr q, mpq_srcptr r, signed long int l) -2441: { -2441: if (l >= 0) -2441: eval(q, r, static_cast(l)); -2441: else -2441: __gmp_binary_plus::eval(q, r, -static_cast(l)); -2441: } -2441: static void eval(mpq_ptr q, signed long int l, mpq_srcptr r) -2441: { eval(q, r, l); __gmpq_neg(q, q); } -2441: static void eval(mpq_ptr q, mpq_srcptr r, double d) -2441: { mpq_t temp; mp_limb_t limbs[(((1024) + ((32 - 0) - 1)) / (32 - 0))+1 + (((53 +1-(-1021)) + ((32 - 0) - 1)) / (32 - 0))+1]; (&((temp)->_mp_num))->_mp_d = limbs; (&((temp)->_mp_num))->_mp_alloc = (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; (&((temp)->_mp_den))->_mp_d = limbs + (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; (&((temp)->_mp_den))->_mp_alloc = (((53 +1-(-1021)) + ((32 - 0) - 1)) / (32 - 0))+1; __gmpq_set_d (temp, d); __gmpq_sub (q, r, temp); } -2441: static void eval(mpq_ptr q, double d, mpq_srcptr r) -2441: { mpq_t temp; mp_limb_t limbs[(((1024) + ((32 - 0) - 1)) / (32 - 0))+1 + (((53 +1-(-1021)) + ((32 - 0) - 1)) / (32 - 0))+1]; (&((temp)->_mp_num))->_mp_d = limbs; (&((temp)->_mp_num))->_mp_alloc = (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; (&((temp)->_mp_den))->_mp_d = limbs + (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; (&((temp)->_mp_den))->_mp_alloc = (((53 +1-(-1021)) + ((32 - 0) - 1)) / (32 - 0))+1; __gmpq_set_d (temp, d); __gmpq_sub (q, temp, r); } -2441: -2441: static void eval(mpq_ptr q, mpq_srcptr r, mpz_srcptr z) -2441: { -2441: if (q == r) -2441: __gmpz_submul((&((q)->_mp_num)), (&((q)->_mp_den)), z); -2441: else -2441: { -2441: __gmpz_mul((&((q)->_mp_num)), (&((r)->_mp_den)), z); -2441: __gmpz_sub((&((q)->_mp_num)), (&((r)->_mp_num)), (&((q)->_mp_num))); -2441: __gmpz_set((&((q)->_mp_den)), (&((r)->_mp_den))); -2441: } -2441: } -2441: static void eval(mpq_ptr q, mpz_srcptr z, mpq_srcptr r) -2441: { eval(q, r, z); __gmpq_neg(q, q); } -2441: -2441: static void eval(mpf_ptr f, mpf_srcptr g, mpf_srcptr h) -2441: { __gmpf_sub(f, g, h); } -2441: -2441: static void eval(mpf_ptr f, mpf_srcptr g, unsigned long int l) -2441: { __gmpf_sub_ui(f, g, l); } -2441: static void eval(mpf_ptr f, unsigned long int l, mpf_srcptr g) -2441: { __gmpf_ui_sub(f, l, g); } -2441: static void eval(mpf_ptr f, mpf_srcptr g, signed long int l) -2441: { -2441: if (l >= 0) -2441: __gmpf_sub_ui(f, g, l); -2441: else -2441: __gmpf_add_ui(f, g, -static_cast(l)); -2441: } -2441: static void eval(mpf_ptr f, signed long int l, mpf_srcptr g) -2441: { -2441: if (l >= 0) -2441: __gmpf_sub_ui(f, g, l); -2441: else -2441: __gmpf_add_ui(f, g, -static_cast(l)); -2441: __gmpf_neg(f, f); -2441: } -2441: static void eval(mpf_ptr f, mpf_srcptr g, double d) -2441: { -2441: mpf_t temp; -2441: __gmpf_init2(temp, 8*sizeof(double)); -2441: __gmpf_set_d(temp, d); -2441: __gmpf_sub(f, g, temp); -2441: __gmpf_clear(temp); -2441: } -2441: static void eval(mpf_ptr f, double d, mpf_srcptr g) -2441: { -2441: mpf_t temp; -2441: __gmpf_init2(temp, 8*sizeof(double)); -2441: __gmpf_set_d(temp, d); -2441: __gmpf_sub(f, temp, g); -2441: __gmpf_clear(temp); -2441: } -2441: }; -2441: -2441: -2441: inline void -2441: __gmp_binary_plus::eval(mpq_ptr q, mpq_srcptr r, signed long int l) -2441: { -2441: if (l >= 0) -2441: eval(q, r, static_cast(l)); -2441: else -2441: __gmp_binary_minus::eval(q, r, -static_cast(l)); -2441: } -2441: -2441: struct __gmp_binary_lshift -2441: { -2441: static void eval(mpz_ptr z, mpz_srcptr w, mp_bitcnt_t l) -2441: { -2441: if (__builtin_constant_p(l) && (l == 0)) -2441: { -2441: if (z != w) __gmpz_set(z, w); -2441: } -2441: else -2441: __gmpz_mul_2exp(z, w, l); -2441: } -2441: static void eval(mpq_ptr q, mpq_srcptr r, mp_bitcnt_t l) -2441: { -2441: if (__builtin_constant_p(l) && (l == 0)) -2441: { -2441: if (q != r) __gmpq_set(q, r); -2441: } -2441: else -2441: __gmpq_mul_2exp(q, r, l); -2441: } -2441: static void eval(mpf_ptr f, mpf_srcptr g, mp_bitcnt_t l) -2441: { __gmpf_mul_2exp(f, g, l); } -2441: }; -2441: -2441: struct __gmp_binary_rshift -2441: { -2441: static void eval(mpz_ptr z, mpz_srcptr w, mp_bitcnt_t l) -2441: { -2441: if (__builtin_constant_p(l) && (l == 0)) -2441: { -2441: if (z != w) __gmpz_set(z, w); -2441: } -2441: else -2441: __gmpz_fdiv_q_2exp(z, w, l); -2441: } -2441: static void eval(mpq_ptr q, mpq_srcptr r, mp_bitcnt_t l) -2441: { -2441: if (__builtin_constant_p(l) && (l == 0)) -2441: { -2441: if (q != r) __gmpq_set(q, r); -2441: } -2441: else -2441: __gmpq_div_2exp(q, r, l); -2441: } -2441: static void eval(mpf_ptr f, mpf_srcptr g, mp_bitcnt_t l) -2441: { __gmpf_div_2exp(f, g, l); } -2441: }; -2441: -2441: struct __gmp_binary_multiplies -2441: { -2441: static void eval(mpz_ptr z, mpz_srcptr w, mpz_srcptr v) -2441: { __gmpz_mul(z, w, v); } -2441: -2441: static void eval(mpz_ptr z, mpz_srcptr w, unsigned long int l) -2441: { -2441: -2441: -2441: if (__builtin_constant_p(l) && (l & (l-1)) == 0) -2441: { -2441: if (l == 0) -2441: { -2441: z->_mp_size = 0; -2441: } -2441: else -2441: { -2441: __gmp_binary_lshift::eval(z, w, __builtin_ctzl(l)); -2441: } -2441: } -2441: else -2441: -2441: __gmpz_mul_ui(z, w, l); -2441: } -2441: static void eval(mpz_ptr z, unsigned long int l, mpz_srcptr w) -2441: { eval(z, w, l); } -2441: static void eval(mpz_ptr z, mpz_srcptr w, signed long int l) -2441: { -2441: if ((__builtin_constant_p(l >= 0) && (l >= 0))) -2441: eval(z, w, static_cast(l)); -2441: else if ((__builtin_constant_p(l <= 0) && (l <= 0))) -2441: { -2441: eval(z, w, -static_cast(l)); -2441: __gmpz_neg(z, z); -2441: } -2441: else -2441: __gmpz_mul_si (z, w, l); -2441: } -2441: static void eval(mpz_ptr z, signed long int l, mpz_srcptr w) -2441: { eval(z, w, l); } -2441: static void eval(mpz_ptr z, mpz_srcptr w, double d) -2441: { mpz_t temp; mp_limb_t limbs[(((1024) + ((32 - 0) - 1)) / (32 - 0))+1]; temp->_mp_d = limbs; temp->_mp_alloc = (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; __gmpz_set_d (temp, d); __gmpz_mul (z, w, temp); } -2441: static void eval(mpz_ptr z, double d, mpz_srcptr w) -2441: { eval(z, w, d); } -2441: -2441: static void eval(mpq_ptr q, mpq_srcptr r, mpq_srcptr s) -2441: { __gmpq_mul(q, r, s); } -2441: -2441: static void eval(mpq_ptr q, mpq_srcptr r, unsigned long int l) -2441: { -2441: -2441: if (__builtin_constant_p(l) && (l & (l-1)) == 0) -2441: { -2441: if (l == 0) -2441: { -2441: __gmpq_set_ui(q, 0, 1); -2441: } -2441: else -2441: { -2441: __gmp_binary_lshift::eval(q, r, __builtin_ctzl(l)); -2441: } -2441: } -2441: else -2441: -2441: { -2441: mpq_t temp; mp_limb_t limbs[1 +1]; (&((temp)->_mp_num))->_mp_d = limbs; __mpz_set_ui_safe ((&((temp)->_mp_num)), l); (&((temp)->_mp_den))->_mp_d = limbs + 1; (&((temp)->_mp_den))->_mp_size = 1; (&((temp)->_mp_den))->_mp_d[0] = 1; -2441: __gmpq_mul (q, r, temp); -2441: } -2441: } -2441: static void eval(mpq_ptr q, unsigned long int l, mpq_srcptr r) -2441: { eval(q, r, l); } -2441: static void eval(mpq_ptr q, mpq_srcptr r, signed long int l) -2441: { -2441: if ((__builtin_constant_p(l >= 0) && (l >= 0))) -2441: eval(q, r, static_cast(l)); -2441: else if ((__builtin_constant_p(l <= 0) && (l <= 0))) -2441: { -2441: eval(q, r, -static_cast(l)); -2441: __gmpq_neg(q, q); -2441: } -2441: else -2441: { -2441: mpq_t temp; mp_limb_t limbs[1 +1]; (&((temp)->_mp_num))->_mp_d = limbs; __mpz_set_si_safe ((&((temp)->_mp_num)), l); (&((temp)->_mp_den))->_mp_d = limbs + 1; (&((temp)->_mp_den))->_mp_size = 1; (&((temp)->_mp_den))->_mp_d[0] = 1; -2441: __gmpq_mul (q, r, temp); -2441: } -2441: } -2441: static void eval(mpq_ptr q, signed long int l, mpq_srcptr r) -2441: { eval(q, r, l); } -2441: static void eval(mpq_ptr q, mpq_srcptr r, double d) -2441: { mpq_t temp; mp_limb_t limbs[(((1024) + ((32 - 0) - 1)) / (32 - 0))+1 + (((53 +1-(-1021)) + ((32 - 0) - 1)) / (32 - 0))+1]; (&((temp)->_mp_num))->_mp_d = limbs; (&((temp)->_mp_num))->_mp_alloc = (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; (&((temp)->_mp_den))->_mp_d = limbs + (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; (&((temp)->_mp_den))->_mp_alloc = (((53 +1-(-1021)) + ((32 - 0) - 1)) / (32 - 0))+1; __gmpq_set_d (temp, d); __gmpq_mul (q, r, temp); } -2441: static void eval(mpq_ptr q, double d, mpq_srcptr r) -2441: { eval(q, r, d); } -2441: -2441: static void eval(mpf_ptr f, mpf_srcptr g, mpf_srcptr h) -2441: { __gmpf_mul(f, g, h); } -2441: -2441: static void eval(mpf_ptr f, mpf_srcptr g, unsigned long int l) -2441: { __gmpf_mul_ui(f, g, l); } -2441: static void eval(mpf_ptr f, unsigned long int l, mpf_srcptr g) -2441: { __gmpf_mul_ui(f, g, l); } -2441: static void eval(mpf_ptr f, mpf_srcptr g, signed long int l) -2441: { -2441: if (l >= 0) -2441: __gmpf_mul_ui(f, g, l); -2441: else -2441: { -2441: __gmpf_mul_ui(f, g, -static_cast(l)); -2441: __gmpf_neg(f, f); -2441: } -2441: } -2441: static void eval(mpf_ptr f, signed long int l, mpf_srcptr g) -2441: { eval(f, g, l); } -2441: static void eval(mpf_ptr f, mpf_srcptr g, double d) -2441: { -2441: mpf_t temp; -2441: __gmpf_init2(temp, 8*sizeof(double)); -2441: __gmpf_set_d(temp, d); -2441: __gmpf_mul(f, g, temp); -2441: __gmpf_clear(temp); -2441: } -2441: static void eval(mpf_ptr f, double d, mpf_srcptr g) -2441: { eval(f, g, d); } -2441: }; -2441: -2441: struct __gmp_binary_divides -2441: { -2441: static void eval(mpz_ptr z, mpz_srcptr w, mpz_srcptr v) -2441: { __gmpz_tdiv_q(z, w, v); } -2441: -2441: static void eval(mpz_ptr z, mpz_srcptr w, unsigned long int l) -2441: { -2441: -2441: -2441: if (__builtin_constant_p(l) && (l & (l-1)) == 0 && l != 0) -2441: { -2441: if (l == 1) -2441: { -2441: if (z != w) __gmpz_set(z, w); -2441: } -2441: else -2441: __gmpz_tdiv_q_2exp(z, w, __builtin_ctzl(l)); -2441: -2441: } -2441: else -2441: -2441: __gmpz_tdiv_q_ui(z, w, l); -2441: } -2441: static void eval(mpz_ptr z, unsigned long int l, mpz_srcptr w) -2441: { -2441: if (((w)->_mp_size < 0 ? -1 : (w)->_mp_size > 0) >= 0) -2441: { -2441: if (__gmpz_fits_ulong_p(w)) -2441: __gmpz_set_ui(z, l / __gmpz_get_ui(w)); -2441: else -2441: __gmpz_set_ui(z, 0); -2441: } -2441: else -2441: { -2441: __gmpz_neg(z, w); -2441: if (__gmpz_fits_ulong_p(z)) -2441: { -2441: __gmpz_set_ui(z, l / __gmpz_get_ui(z)); -2441: __gmpz_neg(z, z); -2441: } -2441: else -2441: __gmpz_set_ui(z, 0); -2441: } -2441: } -2441: static void eval(mpz_ptr z, mpz_srcptr w, signed long int l) -2441: { -2441: if (l >= 0) -2441: eval(z, w, static_cast(l)); -2441: else -2441: { -2441: eval(z, w, -static_cast(l)); -2441: __gmpz_neg(z, z); -2441: } -2441: } -2441: static void eval(mpz_ptr z, signed long int l, mpz_srcptr w) -2441: { -2441: if (__gmpz_fits_slong_p(w)) -2441: __gmpz_set_si(z, l / __gmpz_get_si(w)); -2441: else -2441: { -2441: -2441: -2441: __gmpz_set_si (z, (__gmpz_cmpabs_ui (w, __gmpxx_abs_ui(l)) == 0 ? -1 : 0)); -2441: } -2441: } -2441: static void eval(mpz_ptr z, mpz_srcptr w, double d) -2441: { mpz_t temp; mp_limb_t limbs[(((1024) + ((32 - 0) - 1)) / (32 - 0))+1]; temp->_mp_d = limbs; temp->_mp_alloc = (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; __gmpz_set_d (temp, d); __gmpz_tdiv_q (z, w, temp); } -2441: static void eval(mpz_ptr z, double d, mpz_srcptr w) -2441: { mpz_t temp; mp_limb_t limbs[(((1024) + ((32 - 0) - 1)) / (32 - 0))+1]; temp->_mp_d = limbs; temp->_mp_alloc = (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; __gmpz_set_d (temp, d); __gmpz_tdiv_q (z, temp, w); } -2441: -2441: static void eval(mpq_ptr q, mpq_srcptr r, mpq_srcptr s) -2441: { __gmpq_div(q, r, s); } -2441: -2441: static void eval(mpq_ptr q, mpq_srcptr r, unsigned long int l) -2441: { -2441: -2441: if (__builtin_constant_p(l) && (l & (l-1)) == 0 && l != 0) -2441: __gmp_binary_rshift::eval(q, r, __builtin_ctzl(l)); -2441: else -2441: -2441: { -2441: mpq_t temp; mp_limb_t limbs[1 +1]; (&((temp)->_mp_num))->_mp_d = limbs; __mpz_set_ui_safe ((&((temp)->_mp_num)), l); (&((temp)->_mp_den))->_mp_d = limbs + 1; (&((temp)->_mp_den))->_mp_size = 1; (&((temp)->_mp_den))->_mp_d[0] = 1; -2441: __gmpq_div (q, r, temp); -2441: } -2441: } -2441: static void eval(mpq_ptr q, unsigned long int l, mpq_srcptr r) -2441: { mpq_t temp; mp_limb_t limbs[1 +1]; (&((temp)->_mp_num))->_mp_d = limbs; __mpz_set_ui_safe ((&((temp)->_mp_num)), l); (&((temp)->_mp_den))->_mp_d = limbs + 1; (&((temp)->_mp_den))->_mp_size = 1; (&((temp)->_mp_den))->_mp_d[0] = 1; __gmpq_div (q, temp, r); } -2441: static void eval(mpq_ptr q, mpq_srcptr r, signed long int l) -2441: { -2441: if ((__builtin_constant_p(l >= 0) && (l >= 0))) -2441: eval(q, r, static_cast(l)); -2441: else if ((__builtin_constant_p(l <= 0) && (l <= 0))) -2441: { -2441: eval(q, r, -static_cast(l)); -2441: __gmpq_neg(q, q); -2441: } -2441: else -2441: { -2441: mpq_t temp; mp_limb_t limbs[1 +1]; (&((temp)->_mp_num))->_mp_d = limbs; __mpz_set_si_safe ((&((temp)->_mp_num)), l); (&((temp)->_mp_den))->_mp_d = limbs + 1; (&((temp)->_mp_den))->_mp_size = 1; (&((temp)->_mp_den))->_mp_d[0] = 1; -2441: __gmpq_div (q, r, temp); -2441: } -2441: } -2441: static void eval(mpq_ptr q, signed long int l, mpq_srcptr r) -2441: { mpq_t temp; mp_limb_t limbs[1 +1]; (&((temp)->_mp_num))->_mp_d = limbs; __mpz_set_si_safe ((&((temp)->_mp_num)), l); (&((temp)->_mp_den))->_mp_d = limbs + 1; (&((temp)->_mp_den))->_mp_size = 1; (&((temp)->_mp_den))->_mp_d[0] = 1; __gmpq_div (q, temp, r); } -2441: static void eval(mpq_ptr q, mpq_srcptr r, double d) -2441: { mpq_t temp; mp_limb_t limbs[(((1024) + ((32 - 0) - 1)) / (32 - 0))+1 + (((53 +1-(-1021)) + ((32 - 0) - 1)) / (32 - 0))+1]; (&((temp)->_mp_num))->_mp_d = limbs; (&((temp)->_mp_num))->_mp_alloc = (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; (&((temp)->_mp_den))->_mp_d = limbs + (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; (&((temp)->_mp_den))->_mp_alloc = (((53 +1-(-1021)) + ((32 - 0) - 1)) / (32 - 0))+1; __gmpq_set_d (temp, d); __gmpq_div (q, r, temp); } -2441: static void eval(mpq_ptr q, double d, mpq_srcptr r) -2441: { mpq_t temp; mp_limb_t limbs[(((1024) + ((32 - 0) - 1)) / (32 - 0))+1 + (((53 +1-(-1021)) + ((32 - 0) - 1)) / (32 - 0))+1]; (&((temp)->_mp_num))->_mp_d = limbs; (&((temp)->_mp_num))->_mp_alloc = (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; (&((temp)->_mp_den))->_mp_d = limbs + (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; (&((temp)->_mp_den))->_mp_alloc = (((53 +1-(-1021)) + ((32 - 0) - 1)) / (32 - 0))+1; __gmpq_set_d (temp, d); __gmpq_div (q, temp, r); } -2441: -2441: static void eval(mpf_ptr f, mpf_srcptr g, mpf_srcptr h) -2441: { __gmpf_div(f, g, h); } -2441: -2441: static void eval(mpf_ptr f, mpf_srcptr g, unsigned long int l) -2441: { __gmpf_div_ui(f, g, l); } -2441: static void eval(mpf_ptr f, unsigned long int l, mpf_srcptr g) -2441: { __gmpf_ui_div(f, l, g); } -2441: static void eval(mpf_ptr f, mpf_srcptr g, signed long int l) -2441: { -2441: if (l >= 0) -2441: __gmpf_div_ui(f, g, l); -2441: else -2441: { -2441: __gmpf_div_ui(f, g, -static_cast(l)); -2441: __gmpf_neg(f, f); -2441: } -2441: } -2441: static void eval(mpf_ptr f, signed long int l, mpf_srcptr g) -2441: { -2441: if (l >= 0) -2441: __gmpf_ui_div(f, l, g); -2441: else -2441: { -2441: __gmpf_ui_div(f, -static_cast(l), g); -2441: __gmpf_neg(f, f); -2441: } -2441: } -2441: static void eval(mpf_ptr f, mpf_srcptr g, double d) -2441: { -2441: mpf_t temp; -2441: __gmpf_init2(temp, 8*sizeof(double)); -2441: __gmpf_set_d(temp, d); -2441: __gmpf_div(f, g, temp); -2441: __gmpf_clear(temp); -2441: } -2441: static void eval(mpf_ptr f, double d, mpf_srcptr g) -2441: { -2441: mpf_t temp; -2441: __gmpf_init2(temp, 8*sizeof(double)); -2441: __gmpf_set_d(temp, d); -2441: __gmpf_div(f, temp, g); -2441: __gmpf_clear(temp); -2441: } -2441: }; -2441: -2441: struct __gmp_binary_modulus -2441: { -2441: static void eval(mpz_ptr z, mpz_srcptr w, mpz_srcptr v) -2441: { __gmpz_tdiv_r(z, w, v); } -2441: -2441: static void eval(mpz_ptr z, mpz_srcptr w, unsigned long int l) -2441: { __gmpz_tdiv_r_ui(z, w, l); } -2441: static void eval(mpz_ptr z, unsigned long int l, mpz_srcptr w) -2441: { -2441: if (((w)->_mp_size < 0 ? -1 : (w)->_mp_size > 0) >= 0) -2441: { -2441: if (__gmpz_fits_ulong_p(w)) -2441: __gmpz_set_ui(z, l % __gmpz_get_ui(w)); -2441: else -2441: __gmpz_set_ui(z, l); -2441: } -2441: else -2441: { -2441: __gmpz_neg(z, w); -2441: if (__gmpz_fits_ulong_p(z)) -2441: __gmpz_set_ui(z, l % __gmpz_get_ui(z)); -2441: else -2441: __gmpz_set_ui(z, l); -2441: } -2441: } -2441: static void eval(mpz_ptr z, mpz_srcptr w, signed long int l) -2441: { -2441: __gmpz_tdiv_r_ui (z, w, __gmpxx_abs_ui(l)); -2441: } -2441: static void eval(mpz_ptr z, signed long int l, mpz_srcptr w) -2441: { -2441: if (__gmpz_fits_slong_p(w)) -2441: __gmpz_set_si(z, l % __gmpz_get_si(w)); -2441: else -2441: { -2441: -2441: -2441: __gmpz_set_si (z, __gmpz_cmpabs_ui (w, __gmpxx_abs_ui(l)) == 0 ? 0 : l); -2441: } -2441: } -2441: static void eval(mpz_ptr z, mpz_srcptr w, double d) -2441: { mpz_t temp; mp_limb_t limbs[(((1024) + ((32 - 0) - 1)) / (32 - 0))+1]; temp->_mp_d = limbs; temp->_mp_alloc = (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; __gmpz_set_d (temp, d); __gmpz_tdiv_r (z, w, temp); } -2441: static void eval(mpz_ptr z, double d, mpz_srcptr w) -2441: { mpz_t temp; mp_limb_t limbs[(((1024) + ((32 - 0) - 1)) / (32 - 0))+1]; temp->_mp_d = limbs; temp->_mp_alloc = (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; __gmpz_set_d (temp, d); __gmpz_tdiv_r (z, temp, w); } -2441: }; -2441: -2441: struct __gmp_binary_and -2441: { -2441: static void eval(mpz_ptr z, mpz_srcptr w, mpz_srcptr v) -2441: { __gmpz_and(z, w, v); } -2441: -2441: static void eval(mpz_ptr z, mpz_srcptr w, unsigned long int l) -2441: { mpz_t temp; mp_limb_t limbs[1]; temp->_mp_d = limbs; __mpz_set_ui_safe (temp, l); __gmpz_and (z, w, temp); } -2441: static void eval(mpz_ptr z, unsigned long int l, mpz_srcptr w) -2441: { eval(z, w, l); } -2441: static void eval(mpz_ptr z, mpz_srcptr w, signed long int l) -2441: { mpz_t temp; mp_limb_t limbs[1]; temp->_mp_d = limbs; __mpz_set_si_safe (temp, l); __gmpz_and (z, w, temp); } -2441: static void eval(mpz_ptr z, signed long int l, mpz_srcptr w) -2441: { eval(z, w, l); } -2441: static void eval(mpz_ptr z, mpz_srcptr w, double d) -2441: { mpz_t temp; mp_limb_t limbs[(((1024) + ((32 - 0) - 1)) / (32 - 0))+1]; temp->_mp_d = limbs; temp->_mp_alloc = (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; __gmpz_set_d (temp, d); __gmpz_and (z, w, temp); } -2441: static void eval(mpz_ptr z, double d, mpz_srcptr w) -2441: { eval(z, w, d); } -2441: }; -2441: -2441: struct __gmp_binary_ior -2441: { -2441: static void eval(mpz_ptr z, mpz_srcptr w, mpz_srcptr v) -2441: { __gmpz_ior(z, w, v); } -2441: static void eval(mpz_ptr z, mpz_srcptr w, unsigned long int l) -2441: { mpz_t temp; mp_limb_t limbs[1]; temp->_mp_d = limbs; __mpz_set_ui_safe (temp, l); __gmpz_ior (z, w, temp); } -2441: static void eval(mpz_ptr z, unsigned long int l, mpz_srcptr w) -2441: { eval(z, w, l); } -2441: static void eval(mpz_ptr z, mpz_srcptr w, signed long int l) -2441: { mpz_t temp; mp_limb_t limbs[1]; temp->_mp_d = limbs; __mpz_set_si_safe (temp, l); __gmpz_ior (z, w, temp); } -2441: static void eval(mpz_ptr z, signed long int l, mpz_srcptr w) -2441: { eval(z, w, l); } -2441: static void eval(mpz_ptr z, mpz_srcptr w, double d) -2441: { mpz_t temp; mp_limb_t limbs[(((1024) + ((32 - 0) - 1)) / (32 - 0))+1]; temp->_mp_d = limbs; temp->_mp_alloc = (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; __gmpz_set_d (temp, d); __gmpz_ior (z, w, temp); } -2441: static void eval(mpz_ptr z, double d, mpz_srcptr w) -2441: { eval(z, w, d); } -2441: }; -2441: -2441: struct __gmp_binary_xor -2441: { -2441: static void eval(mpz_ptr z, mpz_srcptr w, mpz_srcptr v) -2441: { __gmpz_xor(z, w, v); } -2441: static void eval(mpz_ptr z, mpz_srcptr w, unsigned long int l) -2441: { mpz_t temp; mp_limb_t limbs[1]; temp->_mp_d = limbs; __mpz_set_ui_safe (temp, l); __gmpz_xor (z, w, temp); } -2441: static void eval(mpz_ptr z, unsigned long int l, mpz_srcptr w) -2441: { eval(z, w, l); } -2441: static void eval(mpz_ptr z, mpz_srcptr w, signed long int l) -2441: { mpz_t temp; mp_limb_t limbs[1]; temp->_mp_d = limbs; __mpz_set_si_safe (temp, l); __gmpz_xor (z, w, temp); } -2441: static void eval(mpz_ptr z, signed long int l, mpz_srcptr w) -2441: { eval(z, w, l); } -2441: static void eval(mpz_ptr z, mpz_srcptr w, double d) -2441: { mpz_t temp; mp_limb_t limbs[(((1024) + ((32 - 0) - 1)) / (32 - 0))+1]; temp->_mp_d = limbs; temp->_mp_alloc = (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; __gmpz_set_d (temp, d); __gmpz_xor (z, w, temp); } -2441: static void eval(mpz_ptr z, double d, mpz_srcptr w) -2441: { eval(z, w, d); } -2441: }; -2441: -2441: struct __gmp_cmp_function -2441: { -2441: static int eval(mpz_srcptr z, mpz_srcptr w) { return __gmpz_cmp(z, w); } -2441: -2441: static int eval(mpz_srcptr z, unsigned long int l) -2441: { return (__builtin_constant_p (l) && (l) == 0 ? ((z)->_mp_size < 0 ? -1 : (z)->_mp_size > 0) : __gmpz_cmp_ui (z,l)); } -2441: static int eval(unsigned long int l, mpz_srcptr z) -2441: { return -(__builtin_constant_p (l) && (l) == 0 ? ((z)->_mp_size < 0 ? -1 : (z)->_mp_size > 0) : __gmpz_cmp_ui (z,l)); } -2441: static int eval(mpz_srcptr z, signed long int l) -2441: { return (__builtin_constant_p ((l) >= 0) && (l) >= 0 ? (__builtin_constant_p ((static_cast (l))) && ((static_cast (l))) == 0 ? ((z)->_mp_size < 0 ? -1 : (z)->_mp_size > 0) : __gmpz_cmp_ui (z,(static_cast (l)))) : __gmpz_cmp_si (z,l)); } -2441: static int eval(signed long int l, mpz_srcptr z) -2441: { return -(__builtin_constant_p ((l) >= 0) && (l) >= 0 ? (__builtin_constant_p ((static_cast (l))) && ((static_cast (l))) == 0 ? ((z)->_mp_size < 0 ? -1 : (z)->_mp_size > 0) : __gmpz_cmp_ui (z,(static_cast (l)))) : __gmpz_cmp_si (z,l)); } -2441: static int eval(mpz_srcptr z, double d) -2441: { return __gmpz_cmp_d(z, d); } -2441: static int eval(double d, mpz_srcptr z) -2441: { return -__gmpz_cmp_d(z, d); } -2441: -2441: static int eval(mpq_srcptr q, mpq_srcptr r) { return __gmpq_cmp(q, r); } -2441: -2441: static int eval(mpq_srcptr q, unsigned long int l) -2441: { return (__builtin_constant_p (l) && (l) == 0 ? ((q)->_mp_num._mp_size < 0 ? -1 : (q)->_mp_num._mp_size > 0) : __builtin_constant_p ((l) == (1)) && (l) == (1) ? __gmpz_cmp ((&((q)->_mp_num)), (&((q)->_mp_den))) : __gmpq_cmp_ui (q,l,1)); } -2441: static int eval(unsigned long int l, mpq_srcptr q) -2441: { return -(__builtin_constant_p (l) && (l) == 0 ? ((q)->_mp_num._mp_size < 0 ? -1 : (q)->_mp_num._mp_size > 0) : __builtin_constant_p ((l) == (1)) && (l) == (1) ? __gmpz_cmp ((&((q)->_mp_num)), (&((q)->_mp_den))) : __gmpq_cmp_ui (q,l,1)); } -2441: static int eval(mpq_srcptr q, signed long int l) -2441: { return (__builtin_constant_p ((l) >= 0) && (l) >= 0 ? (__builtin_constant_p ((static_cast (l))) && ((static_cast (l))) == 0 ? ((q)->_mp_num._mp_size < 0 ? -1 : (q)->_mp_num._mp_size > 0) : __builtin_constant_p (((static_cast (l))) == (1)) && ((static_cast (l))) == (1) ? __gmpz_cmp ((&((q)->_mp_num)), (&((q)->_mp_den))) : __gmpq_cmp_ui (q,(static_cast (l)),1)) : __gmpq_cmp_si (q, l, 1)); } -2441: static int eval(signed long int l, mpq_srcptr q) -2441: { return -(__builtin_constant_p ((l) >= 0) && (l) >= 0 ? (__builtin_constant_p ((static_cast (l))) && ((static_cast (l))) == 0 ? ((q)->_mp_num._mp_size < 0 ? -1 : (q)->_mp_num._mp_size > 0) : __builtin_constant_p (((static_cast (l))) == (1)) && ((static_cast (l))) == (1) ? __gmpz_cmp ((&((q)->_mp_num)), (&((q)->_mp_den))) : __gmpq_cmp_ui (q,(static_cast (l)),1)) : __gmpq_cmp_si (q, l, 1)); } -2441: static int eval(mpq_srcptr q, double d) -2441: { mpq_t temp; mp_limb_t limbs[(((1024) + ((32 - 0) - 1)) / (32 - 0))+1 + (((53 +1-(-1021)) + ((32 - 0) - 1)) / (32 - 0))+1]; (&((temp)->_mp_num))->_mp_d = limbs; (&((temp)->_mp_num))->_mp_alloc = (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; (&((temp)->_mp_den))->_mp_d = limbs + (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; (&((temp)->_mp_den))->_mp_alloc = (((53 +1-(-1021)) + ((32 - 0) - 1)) / (32 - 0))+1; __gmpq_set_d (temp, d); return __gmpq_cmp (q, temp); } -2441: static int eval(double d, mpq_srcptr q) -2441: { mpq_t temp; mp_limb_t limbs[(((1024) + ((32 - 0) - 1)) / (32 - 0))+1 + (((53 +1-(-1021)) + ((32 - 0) - 1)) / (32 - 0))+1]; (&((temp)->_mp_num))->_mp_d = limbs; (&((temp)->_mp_num))->_mp_alloc = (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; (&((temp)->_mp_den))->_mp_d = limbs + (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; (&((temp)->_mp_den))->_mp_alloc = (((53 +1-(-1021)) + ((32 - 0) - 1)) / (32 - 0))+1; __gmpq_set_d (temp, d); return __gmpq_cmp (temp, q); } -2441: static int eval(mpq_srcptr q, mpz_srcptr z) -2441: { return __gmpq_cmp_z(q, z); } -2441: static int eval(mpz_srcptr z, mpq_srcptr q) -2441: { return -__gmpq_cmp_z(q, z); } -2441: -2441: static int eval(mpf_srcptr f, mpf_srcptr g) { return __gmpf_cmp(f, g); } -2441: -2441: static int eval(mpf_srcptr f, unsigned long int l) -2441: { return __gmpf_cmp_ui(f, l); } -2441: static int eval(unsigned long int l, mpf_srcptr f) -2441: { return -__gmpf_cmp_ui(f, l); } -2441: static int eval(mpf_srcptr f, signed long int l) -2441: { return __gmpf_cmp_si(f, l); } -2441: static int eval(signed long int l, mpf_srcptr f) -2441: { return -__gmpf_cmp_si(f, l); } -2441: static int eval(mpf_srcptr f, double d) -2441: { return __gmpf_cmp_d(f, d); } -2441: static int eval(double d, mpf_srcptr f) -2441: { return -__gmpf_cmp_d(f, d); } -2441: static int eval(mpf_srcptr f, mpz_srcptr z) -2441: { return __gmpf_cmp_z(f, z); } -2441: static int eval(mpz_srcptr z, mpf_srcptr f) -2441: { return -__gmpf_cmp_z(f, z); } -2441: static int eval(mpf_srcptr f, mpq_srcptr q) -2441: { -2441: mpf_t qf; -2441: __gmpf_init(qf); -2441: __gmpf_set_q(qf, q); -2441: int ret = eval(f, qf); -2441: __gmpf_clear(qf); -2441: return ret; -2441: } -2441: static int eval(mpq_srcptr q, mpf_srcptr f) -2441: { return -eval(f, q); } -2441: }; -2441: -2441: struct __gmp_binary_equal -2441: { -2441: static bool eval(mpz_srcptr z, mpz_srcptr w) { return __gmpz_cmp(z, w) == 0; } -2441: -2441: static bool eval(mpz_srcptr z, unsigned long int l) -2441: { return (__builtin_constant_p (l) && (l) == 0 ? ((z)->_mp_size < 0 ? -1 : (z)->_mp_size > 0) : __gmpz_cmp_ui (z,l)) == 0; } -2441: static bool eval(unsigned long int l, mpz_srcptr z) -2441: { return eval(z, l); } -2441: static bool eval(mpz_srcptr z, signed long int l) -2441: { return (__builtin_constant_p ((l) >= 0) && (l) >= 0 ? (__builtin_constant_p ((static_cast (l))) && ((static_cast (l))) == 0 ? ((z)->_mp_size < 0 ? -1 : (z)->_mp_size > 0) : __gmpz_cmp_ui (z,(static_cast (l)))) : __gmpz_cmp_si (z,l)) == 0; } -2441: static bool eval(signed long int l, mpz_srcptr z) -2441: { return eval(z, l); } -2441: static bool eval(mpz_srcptr z, double d) -2441: { return __gmpz_cmp_d(z, d) == 0; } -2441: static bool eval(double d, mpz_srcptr z) -2441: { return eval(z, d); } -2441: -2441: static bool eval(mpq_srcptr q, mpq_srcptr r) -2441: { return __gmpq_equal(q, r) != 0; } -2441: -2441: static bool eval(mpq_srcptr q, unsigned long int l) -2441: { return (__builtin_constant_p (l) && (l) == 0 ? ((q)->_mp_num._mp_size < 0 ? -1 : (q)->_mp_num._mp_size > 0) : __builtin_constant_p ((l) == (1)) && (l) == (1) ? __gmpz_cmp ((&((q)->_mp_num)), (&((q)->_mp_den))) : __gmpq_cmp_ui (q,l,1)) == 0; } -2441: static bool eval(unsigned long int l, mpq_srcptr q) -2441: { return eval(q, l); } -2441: static bool eval(mpq_srcptr q, signed long int l) -2441: { return (__builtin_constant_p ((l) >= 0) && (l) >= 0 ? (__builtin_constant_p ((static_cast (l))) && ((static_cast (l))) == 0 ? ((q)->_mp_num._mp_size < 0 ? -1 : (q)->_mp_num._mp_size > 0) : __builtin_constant_p (((static_cast (l))) == (1)) && ((static_cast (l))) == (1) ? __gmpz_cmp ((&((q)->_mp_num)), (&((q)->_mp_den))) : __gmpq_cmp_ui (q,(static_cast (l)),1)) : __gmpq_cmp_si (q, l, 1)) == 0; } -2441: static bool eval(signed long int l, mpq_srcptr q) -2441: { return eval(q, l); } -2441: static bool eval(mpq_srcptr q, double d) -2441: { mpq_t temp; mp_limb_t limbs[(((1024) + ((32 - 0) - 1)) / (32 - 0))+1 + (((53 +1-(-1021)) + ((32 - 0) - 1)) / (32 - 0))+1]; (&((temp)->_mp_num))->_mp_d = limbs; (&((temp)->_mp_num))->_mp_alloc = (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; (&((temp)->_mp_den))->_mp_d = limbs + (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; (&((temp)->_mp_den))->_mp_alloc = (((53 +1-(-1021)) + ((32 - 0) - 1)) / (32 - 0))+1; __gmpq_set_d (temp, d); return __gmpq_equal (q, temp) != 0; } -2441: static bool eval(double d, mpq_srcptr q) -2441: { return eval(q, d); } -2441: static bool eval(mpq_srcptr q, mpz_srcptr z) -2441: { return __gmpq_cmp_z(q, z) == 0; } -2441: static bool eval(mpz_srcptr z, mpq_srcptr q) -2441: { return eval(q, z); } -2441: -2441: static bool eval(mpf_srcptr f, mpf_srcptr g) { return __gmpf_cmp(f, g) == 0; } -2441: -2441: static bool eval(mpf_srcptr f, unsigned long int l) -2441: { return __gmpf_cmp_ui(f, l) == 0; } -2441: static bool eval(unsigned long int l, mpf_srcptr f) -2441: { return eval(f, l); } -2441: static bool eval(mpf_srcptr f, signed long int l) -2441: { return __gmpf_cmp_si(f, l) == 0; } -2441: static bool eval(signed long int l, mpf_srcptr f) -2441: { return eval(f, l); } -2441: static bool eval(mpf_srcptr f, double d) -2441: { return __gmpf_cmp_d(f, d) == 0; } -2441: static bool eval(double d, mpf_srcptr f) -2441: { return eval(f, d); } -2441: static bool eval(mpf_srcptr f, mpz_srcptr z) -2441: { return __gmpf_cmp_z(f, z) == 0; } -2441: static bool eval(mpz_srcptr z, mpf_srcptr f) -2441: { return eval(f, z); } -2441: static bool eval(mpf_srcptr f, mpq_srcptr q) -2441: { return __gmp_cmp_function::eval(f, q) == 0; } -2441: static bool eval(mpq_srcptr q, mpf_srcptr f) -2441: { return eval(f, q); } -2441: }; -2441: -2441: struct __gmp_binary_less -2441: { -2441: static bool eval(mpz_srcptr z, mpz_srcptr w) { return __gmpz_cmp(z, w) < 0; } -2441: -2441: static bool eval(mpz_srcptr z, unsigned long int l) -2441: { return (__builtin_constant_p (l) && (l) == 0 ? ((z)->_mp_size < 0 ? -1 : (z)->_mp_size > 0) : __gmpz_cmp_ui (z,l)) < 0; } -2441: static bool eval(unsigned long int l, mpz_srcptr z) -2441: { return (__builtin_constant_p (l) && (l) == 0 ? ((z)->_mp_size < 0 ? -1 : (z)->_mp_size > 0) : __gmpz_cmp_ui (z,l)) > 0; } -2441: static bool eval(mpz_srcptr z, signed long int l) -2441: { return (__builtin_constant_p ((l) >= 0) && (l) >= 0 ? (__builtin_constant_p ((static_cast (l))) && ((static_cast (l))) == 0 ? ((z)->_mp_size < 0 ? -1 : (z)->_mp_size > 0) : __gmpz_cmp_ui (z,(static_cast (l)))) : __gmpz_cmp_si (z,l)) < 0; } -2441: static bool eval(signed long int l, mpz_srcptr z) -2441: { return (__builtin_constant_p ((l) >= 0) && (l) >= 0 ? (__builtin_constant_p ((static_cast (l))) && ((static_cast (l))) == 0 ? ((z)->_mp_size < 0 ? -1 : (z)->_mp_size > 0) : __gmpz_cmp_ui (z,(static_cast (l)))) : __gmpz_cmp_si (z,l)) > 0; } -2441: static bool eval(mpz_srcptr z, double d) -2441: { return __gmpz_cmp_d(z, d) < 0; } -2441: static bool eval(double d, mpz_srcptr z) -2441: { return __gmpz_cmp_d(z, d) > 0; } -2441: -2441: static bool eval(mpq_srcptr q, mpq_srcptr r) { return __gmpq_cmp(q, r) < 0; } -2441: -2441: static bool eval(mpq_srcptr q, unsigned long int l) -2441: { return (__builtin_constant_p (l) && (l) == 0 ? ((q)->_mp_num._mp_size < 0 ? -1 : (q)->_mp_num._mp_size > 0) : __builtin_constant_p ((l) == (1)) && (l) == (1) ? __gmpz_cmp ((&((q)->_mp_num)), (&((q)->_mp_den))) : __gmpq_cmp_ui (q,l,1)) < 0; } -2441: static bool eval(unsigned long int l, mpq_srcptr q) -2441: { return (__builtin_constant_p (l) && (l) == 0 ? ((q)->_mp_num._mp_size < 0 ? -1 : (q)->_mp_num._mp_size > 0) : __builtin_constant_p ((l) == (1)) && (l) == (1) ? __gmpz_cmp ((&((q)->_mp_num)), (&((q)->_mp_den))) : __gmpq_cmp_ui (q,l,1)) > 0; } -2441: static bool eval(mpq_srcptr q, signed long int l) -2441: { return (__builtin_constant_p ((l) >= 0) && (l) >= 0 ? (__builtin_constant_p ((static_cast (l))) && ((static_cast (l))) == 0 ? ((q)->_mp_num._mp_size < 0 ? -1 : (q)->_mp_num._mp_size > 0) : __builtin_constant_p (((static_cast (l))) == (1)) && ((static_cast (l))) == (1) ? __gmpz_cmp ((&((q)->_mp_num)), (&((q)->_mp_den))) : __gmpq_cmp_ui (q,(static_cast (l)),1)) : __gmpq_cmp_si (q, l, 1)) < 0; } -2441: static bool eval(signed long int l, mpq_srcptr q) -2441: { return (__builtin_constant_p ((l) >= 0) && (l) >= 0 ? (__builtin_constant_p ((static_cast (l))) && ((static_cast (l))) == 0 ? ((q)->_mp_num._mp_size < 0 ? -1 : (q)->_mp_num._mp_size > 0) : __builtin_constant_p (((static_cast (l))) == (1)) && ((static_cast (l))) == (1) ? __gmpz_cmp ((&((q)->_mp_num)), (&((q)->_mp_den))) : __gmpq_cmp_ui (q,(static_cast (l)),1)) : __gmpq_cmp_si (q, l, 1)) > 0; } -2441: static bool eval(mpq_srcptr q, double d) -2441: { mpq_t temp; mp_limb_t limbs[(((1024) + ((32 - 0) - 1)) / (32 - 0))+1 + (((53 +1-(-1021)) + ((32 - 0) - 1)) / (32 - 0))+1]; (&((temp)->_mp_num))->_mp_d = limbs; (&((temp)->_mp_num))->_mp_alloc = (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; (&((temp)->_mp_den))->_mp_d = limbs + (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; (&((temp)->_mp_den))->_mp_alloc = (((53 +1-(-1021)) + ((32 - 0) - 1)) / (32 - 0))+1; __gmpq_set_d (temp, d); return __gmpq_cmp (q, temp) < 0; } -2441: static bool eval(double d, mpq_srcptr q) -2441: { mpq_t temp; mp_limb_t limbs[(((1024) + ((32 - 0) - 1)) / (32 - 0))+1 + (((53 +1-(-1021)) + ((32 - 0) - 1)) / (32 - 0))+1]; (&((temp)->_mp_num))->_mp_d = limbs; (&((temp)->_mp_num))->_mp_alloc = (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; (&((temp)->_mp_den))->_mp_d = limbs + (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; (&((temp)->_mp_den))->_mp_alloc = (((53 +1-(-1021)) + ((32 - 0) - 1)) / (32 - 0))+1; __gmpq_set_d (temp, d); return __gmpq_cmp (temp, q) < 0; } -2441: static bool eval(mpq_srcptr q, mpz_srcptr z) -2441: { return __gmpq_cmp_z(q, z) < 0; } -2441: static bool eval(mpz_srcptr z, mpq_srcptr q) -2441: { return __gmpq_cmp_z(q, z) > 0; } -2441: -2441: static bool eval(mpf_srcptr f, mpf_srcptr g) { return __gmpf_cmp(f, g) < 0; } -2441: -2441: static bool eval(mpf_srcptr f, unsigned long int l) -2441: { return __gmpf_cmp_ui(f, l) < 0; } -2441: static bool eval(unsigned long int l, mpf_srcptr f) -2441: { return __gmpf_cmp_ui(f, l) > 0; } -2441: static bool eval(mpf_srcptr f, signed long int l) -2441: { return __gmpf_cmp_si(f, l) < 0; } -2441: static bool eval(signed long int l, mpf_srcptr f) -2441: { return __gmpf_cmp_si(f, l) > 0; } -2441: static bool eval(mpf_srcptr f, double d) -2441: { return __gmpf_cmp_d(f, d) < 0; } -2441: static bool eval(double d, mpf_srcptr f) -2441: { return __gmpf_cmp_d(f, d) > 0; } -2441: static bool eval(mpf_srcptr f, mpz_srcptr z) -2441: { return __gmpf_cmp_z(f, z) < 0; } -2441: static bool eval(mpz_srcptr z, mpf_srcptr f) -2441: { return __gmpf_cmp_z(f, z) > 0; } -2441: static bool eval(mpf_srcptr f, mpq_srcptr q) -2441: { return __gmp_cmp_function::eval(f, q) < 0; } -2441: static bool eval(mpq_srcptr q, mpf_srcptr f) -2441: { return __gmp_cmp_function::eval(q, f) < 0; } -2441: }; -2441: -2441: struct __gmp_binary_greater -2441: { -2441: template -2441: static inline bool eval(T t, U u) { return __gmp_binary_less::eval(u, t); } -2441: }; -2441: -2441: struct __gmp_unary_increment -2441: { -2441: static void eval(mpz_ptr z) { __gmpz_add_ui(z, z, 1); } -2441: static void eval(mpq_ptr q) -2441: { __gmpz_add((&((q)->_mp_num)), (&((q)->_mp_num)), (&((q)->_mp_den))); } -2441: static void eval(mpf_ptr f) { __gmpf_add_ui(f, f, 1); } -2441: }; -2441: -2441: struct __gmp_unary_decrement -2441: { -2441: static void eval(mpz_ptr z) { __gmpz_sub_ui(z, z, 1); } -2441: static void eval(mpq_ptr q) -2441: { __gmpz_sub((&((q)->_mp_num)), (&((q)->_mp_num)), (&((q)->_mp_den))); } -2441: static void eval(mpf_ptr f) { __gmpf_sub_ui(f, f, 1); } -2441: }; -2441: -2441: struct __gmp_abs_function -2441: { -2441: static void eval(mpz_ptr z, mpz_srcptr w) { __gmpz_abs(z, w); } -2441: static void eval(mpq_ptr q, mpq_srcptr r) { __gmpq_abs(q, r); } -2441: static void eval(mpf_ptr f, mpf_srcptr g) { __gmpf_abs(f, g); } -2441: }; -2441: -2441: struct __gmp_trunc_function -2441: { -2441: static void eval(mpf_ptr f, mpf_srcptr g) { __gmpf_trunc(f, g); } -2441: }; -2441: -2441: struct __gmp_floor_function -2441: { -2441: static void eval(mpf_ptr f, mpf_srcptr g) { __gmpf_floor(f, g); } -2441: }; -2441: -2441: struct __gmp_ceil_function -2441: { -2441: static void eval(mpf_ptr f, mpf_srcptr g) { __gmpf_ceil(f, g); } -2441: }; -2441: -2441: struct __gmp_sqrt_function -2441: { -2441: static void eval(mpz_ptr z, mpz_srcptr w) { __gmpz_sqrt(z, w); } -2441: static void eval(mpf_ptr f, mpf_srcptr g) { __gmpf_sqrt(f, g); } -2441: }; -2441: -2441: struct __gmp_hypot_function -2441: { -2441: static void eval(mpf_ptr f, mpf_srcptr g, mpf_srcptr h) -2441: { -2441: mpf_t temp; -2441: __gmpf_init2(temp, __gmpf_get_prec(f)); -2441: __gmpf_mul(temp, g, g); -2441: __gmpf_mul(f, h, h); -2441: __gmpf_add(f, f, temp); -2441: __gmpf_sqrt(f, f); -2441: __gmpf_clear(temp); -2441: } -2441: -2441: static void eval(mpf_ptr f, mpf_srcptr g, unsigned long int l) -2441: { -2441: mpf_t temp; -2441: __gmpf_init2(temp, __gmpf_get_prec(f)); -2441: __gmpf_mul(temp, g, g); -2441: __gmpf_set_ui(f, l); -2441: __gmpf_mul_ui(f, f, l); -2441: __gmpf_add(f, f, temp); -2441: __gmpf_clear(temp); -2441: __gmpf_sqrt(f, f); -2441: } -2441: static void eval(mpf_ptr f, unsigned long int l, mpf_srcptr g) -2441: { eval(f, g, l); } -2441: static void eval(mpf_ptr f, mpf_srcptr g, signed long int l) -2441: { eval(f, g, __gmpxx_abs_ui(l)); } -2441: static void eval(mpf_ptr f, signed long int l, mpf_srcptr g) -2441: { eval(f, g, l); } -2441: static void eval(mpf_ptr f, mpf_srcptr g, double d) -2441: { -2441: mpf_t temp; -2441: __gmpf_init2(temp, __gmpf_get_prec(f)); -2441: __gmpf_mul(temp, g, g); -2441: __gmpf_set_d(f, d); -2441: __gmpf_mul(f, f, f); -2441: __gmpf_add(f, f, temp); -2441: __gmpf_sqrt(f, f); -2441: __gmpf_clear(temp); -2441: } -2441: static void eval(mpf_ptr f, double d, mpf_srcptr g) -2441: { eval(f, g, d); } -2441: }; -2441: -2441: struct __gmp_sgn_function -2441: { -2441: static int eval(mpz_srcptr z) { return ((z)->_mp_size < 0 ? -1 : (z)->_mp_size > 0); } -2441: static int eval(mpq_srcptr q) { return ((q)->_mp_num._mp_size < 0 ? -1 : (q)->_mp_num._mp_size > 0); } -2441: static int eval(mpf_srcptr f) { return ((f)->_mp_size < 0 ? -1 : (f)->_mp_size > 0); } -2441: }; -2441: -2441: struct __gmp_gcd_function -2441: { -2441: static void eval(mpz_ptr z, mpz_srcptr w, mpz_srcptr v) -2441: { __gmpz_gcd(z, w, v); } -2441: static void eval(mpz_ptr z, mpz_srcptr w, unsigned long int l) -2441: { __gmpz_gcd_ui(z, w, l); } -2441: static void eval(mpz_ptr z, unsigned long int l, mpz_srcptr w) -2441: { eval(z, w, l); } -2441: static void eval(mpz_ptr z, mpz_srcptr w, signed long int l) -2441: { eval(z, w, __gmpxx_abs_ui(l)); } -2441: static void eval(mpz_ptr z, signed long int l, mpz_srcptr w) -2441: { eval(z, w, l); } -2441: static void eval(mpz_ptr z, mpz_srcptr w, double d) -2441: { mpz_t temp; mp_limb_t limbs[(((1024) + ((32 - 0) - 1)) / (32 - 0))+1]; temp->_mp_d = limbs; temp->_mp_alloc = (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; __gmpz_set_d (temp, d); __gmpz_gcd (z, w, temp); } -2441: static void eval(mpz_ptr z, double d, mpz_srcptr w) -2441: { eval(z, w, d); } -2441: }; -2441: -2441: struct __gmp_lcm_function -2441: { -2441: static void eval(mpz_ptr z, mpz_srcptr w, mpz_srcptr v) -2441: { __gmpz_lcm(z, w, v); } -2441: static void eval(mpz_ptr z, mpz_srcptr w, unsigned long int l) -2441: { __gmpz_lcm_ui(z, w, l); } -2441: static void eval(mpz_ptr z, unsigned long int l, mpz_srcptr w) -2441: { eval(z, w, l); } -2441: static void eval(mpz_ptr z, mpz_srcptr w, signed long int l) -2441: { eval(z, w, __gmpxx_abs_ui(l)); } -2441: static void eval(mpz_ptr z, signed long int l, mpz_srcptr w) -2441: { eval(z, w, l); } -2441: static void eval(mpz_ptr z, mpz_srcptr w, double d) -2441: { mpz_t temp; mp_limb_t limbs[(((1024) + ((32 - 0) - 1)) / (32 - 0))+1]; temp->_mp_d = limbs; temp->_mp_alloc = (((1024) + ((32 - 0) - 1)) / (32 - 0))+1; __gmpz_set_d (temp, d); __gmpz_lcm (z, w, temp); } -2441: static void eval(mpz_ptr z, double d, mpz_srcptr w) -2441: { eval(z, w, d); } -2441: }; -2441: -2441: struct __gmp_rand_function -2441: { -2441: static void eval(mpz_ptr z, gmp_randstate_t s, mp_bitcnt_t l) -2441: { __gmpz_urandomb(z, s, l); } -2441: static void eval(mpz_ptr z, gmp_randstate_t s, mpz_srcptr w) -2441: { __gmpz_urandomm(z, s, w); } -2441: static void eval(mpf_ptr f, gmp_randstate_t s, mp_bitcnt_t prec) -2441: { __gmpf_urandomb(f, s, prec); } -2441: }; -2441: # 1204 "/usr/include/gmpxx.h" 3 4 -2441: extern "C" { -2441: typedef void (*__gmp_freefunc_t) (void *, size_t); -2441: } -2441: struct __gmp_alloc_cstring -2441: { -2441: char *str; -2441: __gmp_alloc_cstring(char *s) { str = s; } -2441: ~__gmp_alloc_cstring() -2441: { -2441: __gmp_freefunc_t freefunc; -2441: __gmp_get_memory_functions (__null, __null, &freefunc); -2441: (*freefunc) (str, std::strlen(str)+1); -2441: } -2441: }; -2441: -2441: -2441: -2441: template -2441: class __gmp_expr; -2441: -2441: -2441: -2441: template -2441: struct __gmp_resolve_ref -2441: { -2441: typedef T ref_type; -2441: }; -2441: -2441: template -2441: struct __gmp_resolve_ref<__gmp_expr > -2441: { -2441: typedef const __gmp_expr & ref_type; -2441: }; -2441: -2441: -2441: template -2441: struct __gmp_resolve_expr; -2441: -2441: template <> -2441: struct __gmp_resolve_expr -2441: { -2441: typedef mpz_t value_type; -2441: typedef mpz_ptr ptr_type; -2441: typedef mpz_srcptr srcptr_type; -2441: }; -2441: -2441: template <> -2441: struct __gmp_resolve_expr -2441: { -2441: typedef mpq_t value_type; -2441: typedef mpq_ptr ptr_type; -2441: typedef mpq_srcptr srcptr_type; -2441: }; -2441: -2441: template <> -2441: struct __gmp_resolve_expr -2441: { -2441: typedef mpf_t value_type; -2441: typedef mpf_ptr ptr_type; -2441: typedef mpf_srcptr srcptr_type; -2441: }; -2441: -2441: template <> -2441: struct __gmp_resolve_expr -2441: { -2441: typedef mpq_t value_type; -2441: }; -2441: -2441: template <> -2441: struct __gmp_resolve_expr -2441: { -2441: typedef mpq_t value_type; -2441: }; -2441: -2441: template <> -2441: struct __gmp_resolve_expr -2441: { -2441: typedef mpf_t value_type; -2441: }; -2441: -2441: template <> -2441: struct __gmp_resolve_expr -2441: { -2441: typedef mpf_t value_type; -2441: }; -2441: -2441: template <> -2441: struct __gmp_resolve_expr -2441: { -2441: typedef mpf_t value_type; -2441: }; -2441: -2441: template <> -2441: struct __gmp_resolve_expr -2441: { -2441: typedef mpf_t value_type; -2441: }; -2441: -2441: -2441: namespace std { -2441: template -2441: struct common_type <__gmp_expr, __gmp_expr > -2441: { -2441: private: -2441: typedef typename __gmp_resolve_expr::value_type X; -2441: public: -2441: typedef __gmp_expr type; -2441: }; -2441: -2441: template -2441: struct common_type <__gmp_expr > -2441: { -2441: typedef __gmp_expr type; -2441: }; -2441: # 1332 "/usr/include/gmpxx.h" 3 4 -2441: template struct common_type <__gmp_expr, signed char > { typedef __gmp_expr type; }; template struct common_type > { typedef __gmp_expr type; }; -2441: template struct common_type <__gmp_expr, unsigned char > { typedef __gmp_expr type; }; template struct common_type > { typedef __gmp_expr type; }; -2441: template struct common_type <__gmp_expr, signed int > { typedef __gmp_expr type; }; template struct common_type > { typedef __gmp_expr type; }; -2441: template struct common_type <__gmp_expr, unsigned int > { typedef __gmp_expr type; }; template struct common_type > { typedef __gmp_expr type; }; -2441: template struct common_type <__gmp_expr, signed short int > { typedef __gmp_expr type; }; template struct common_type > { typedef __gmp_expr type; }; -2441: template struct common_type <__gmp_expr, unsigned short int > { typedef __gmp_expr type; }; template struct common_type > { typedef __gmp_expr type; }; -2441: template struct common_type <__gmp_expr, signed long int > { typedef __gmp_expr type; }; template struct common_type > { typedef __gmp_expr type; }; -2441: template struct common_type <__gmp_expr, unsigned long int > { typedef __gmp_expr type; }; template struct common_type > { typedef __gmp_expr type; }; -2441: template struct common_type <__gmp_expr, float > { typedef __gmp_expr type; }; template struct common_type > { typedef __gmp_expr type; }; -2441: template struct common_type <__gmp_expr, double > { typedef __gmp_expr type; }; template struct common_type > { typedef __gmp_expr type; }; -2441: -2441: } -2441: -2441: -2441: -2441: template -2441: struct __gmp_unary_expr -2441: { -2441: typename __gmp_resolve_ref::ref_type val; -2441: -2441: __gmp_unary_expr(const T &v) : val(v) { } -2441: private: -2441: __gmp_unary_expr(); -2441: }; -2441: -2441: template -2441: struct __gmp_binary_expr -2441: { -2441: typename __gmp_resolve_ref::ref_type val1; -2441: typename __gmp_resolve_ref::ref_type val2; -2441: -2441: __gmp_binary_expr(const T &v1, const U &v2) : val1(v1), val2(v2) { } -2441: private: -2441: __gmp_binary_expr(); -2441: }; -2441: # 1428 "/usr/include/gmpxx.h" 3 4 -2441: template <> -2441: class __gmp_expr -2441: { -2441: private: -2441: typedef mpz_t value_type; -2441: value_type mp; -2441: -2441: -2441: void assign_ui(unsigned long l) -2441: { -2441: if ((__builtin_constant_p(l == 0) && (l == 0))) -2441: mp->_mp_size = 0; -2441: else -2441: __gmpz_set_ui(mp, l); -2441: } -2441: void assign_si(signed long l) -2441: { -2441: if ((__builtin_constant_p(l >= 0) && (l >= 0))) -2441: assign_ui(l); -2441: else if ((__builtin_constant_p(l <= 0) && (l <= 0))) -2441: { -2441: assign_ui(-static_cast(l)); -2441: __gmpz_neg(mp, mp); -2441: } -2441: else -2441: __gmpz_set_si(mp, l); -2441: } -2441: void assign_d (double d) -2441: { -2441: __gmpz_set_d (mp, d); -2441: } -2441: -2441: void init_ui(unsigned long l) -2441: { -2441: if ((__builtin_constant_p(l == 0) && (l == 0))) -2441: __gmpz_init(mp); -2441: else -2441: __gmpz_init_set_ui(mp, l); -2441: } -2441: void init_si(signed long l) -2441: { -2441: if ((__builtin_constant_p(l >= 0) && (l >= 0))) -2441: init_ui(l); -2441: else if ((__builtin_constant_p(l <= 0) && (l <= 0))) -2441: { -2441: init_ui(-static_cast(l)); -2441: __gmpz_neg(mp, mp); -2441: } -2441: else -2441: __gmpz_init_set_si(mp, l); -2441: } -2441: void init_d (double d) -2441: { -2441: __gmpz_init_set_d (mp, d); -2441: } -2441: -2441: public: -2441: mp_bitcnt_t get_prec() const { return __gmpf_get_default_prec(); } -2441: -2441: -2441: __gmp_expr() { __gmpz_init(mp); } -2441: -2441: __gmp_expr(const __gmp_expr &z) { __gmpz_init_set(mp, z.mp); } -2441: -2441: __gmp_expr(__gmp_expr &&z) -2441: { *mp = *z.mp; __gmpz_init(z.mp); } -2441: -2441: template -2441: __gmp_expr(const __gmp_expr &expr) -2441: { __gmpz_init(mp); __gmp_set_expr(mp, expr); } -2441: template -2441: explicit __gmp_expr(const __gmp_expr &expr) -2441: { __gmpz_init(mp); __gmp_set_expr(mp, expr); } -2441: -2441: __gmp_expr(signed char c) { init_si(c); } __gmp_expr(unsigned char c) { init_ui(c); } __gmp_expr(signed int i) { init_si(i); } __gmp_expr(unsigned int i) { init_ui(i); } __gmp_expr(signed short int s) { init_si(s); } __gmp_expr(unsigned short int s) { init_ui(s); } __gmp_expr(signed long int l) { init_si(l); } __gmp_expr(unsigned long int l) { init_ui(l); } __gmp_expr(float f) { init_d(f); } __gmp_expr(double d) { init_d(d); } -2441: -2441: explicit __gmp_expr(const char *s, int base = 0) -2441: { -2441: if (__gmpz_init_set_str (mp, s, base) != 0) -2441: { -2441: __gmpz_clear (mp); -2441: throw std::invalid_argument ("mpz_set_str"); -2441: } -2441: } -2441: explicit __gmp_expr(const std::string &s, int base = 0) -2441: { -2441: if (__gmpz_init_set_str(mp, s.c_str(), base) != 0) -2441: { -2441: __gmpz_clear (mp); -2441: throw std::invalid_argument ("mpz_set_str"); -2441: } -2441: } -2441: -2441: explicit __gmp_expr(mpz_srcptr z) { __gmpz_init_set(mp, z); } -2441: -2441: ~__gmp_expr() { __gmpz_clear(mp); } -2441: -2441: void swap(__gmp_expr& z) noexcept { std::swap(*mp, *z.mp); } -2441: -2441: -2441: __gmp_expr & operator=(const __gmp_expr &z) -2441: { __gmpz_set(mp, z.mp); return *this; } -2441: -2441: __gmp_expr & operator=(__gmp_expr &&z) noexcept -2441: { swap(z); return *this; } -2441: -2441: template -2441: __gmp_expr & operator=(const __gmp_expr &expr) -2441: { __gmp_set_expr(mp, expr); return *this; } -2441: -2441: __gmp_expr & operator=(signed char c) { assign_si(c); return *this; } __gmp_expr & operator=(unsigned char c) { assign_ui(c); return *this; } __gmp_expr & operator=(signed int i) { assign_si(i); return *this; } __gmp_expr & operator=(unsigned int i) { assign_ui(i); return *this; } __gmp_expr & operator=(signed short int s) { assign_si(s); return *this; } __gmp_expr & operator=(unsigned short int s) { assign_ui(s); return *this; } __gmp_expr & operator=(signed long int l) { assign_si(l); return *this; } __gmp_expr & operator=(unsigned long int l) { assign_ui(l); return *this; } __gmp_expr & operator=(float f) { assign_d(f); return *this; } __gmp_expr & operator=(double d) { assign_d(d); return *this; } -2441: -2441: __gmp_expr & operator=(const char *s) -2441: { -2441: if (__gmpz_set_str (mp, s, 0) != 0) -2441: throw std::invalid_argument ("mpz_set_str"); -2441: return *this; -2441: } -2441: __gmp_expr & operator=(const std::string &s) -2441: { -2441: if (__gmpz_set_str(mp, s.c_str(), 0) != 0) -2441: throw std::invalid_argument ("mpz_set_str"); -2441: return *this; -2441: } -2441: -2441: -2441: int set_str(const char *s, int base) -2441: { return __gmpz_set_str(mp, s, base); } -2441: int set_str(const std::string &s, int base) -2441: { return __gmpz_set_str(mp, s.c_str(), base); } -2441: std::string get_str(int base = 10) const -2441: { -2441: __gmp_alloc_cstring temp(__gmpz_get_str(0, base, mp)); -2441: return std::string(temp.str); -2441: } -2441: -2441: -2441: mpz_srcptr __get_mp() const { return mp; } -2441: mpz_ptr __get_mp() { return mp; } -2441: mpz_srcptr get_mpz_t() const { return mp; } -2441: mpz_ptr get_mpz_t() { return mp; } -2441: -2441: signed long int get_si() const { return __gmpz_get_si(mp); } -2441: unsigned long int get_ui() const { return __gmpz_get_ui(mp); } -2441: double get_d() const { return __gmpz_get_d(mp); } -2441: -2441: -2441: -2441: bool fits_sint_p() const { return __gmpz_fits_sint_p(mp); } -2441: bool fits_uint_p() const { return __gmpz_fits_uint_p(mp); } -2441: bool fits_sshort_p() const { return __gmpz_fits_sshort_p(mp); } -2441: bool fits_ushort_p() const { return __gmpz_fits_ushort_p(mp); } -2441: bool fits_slong_p() const { return __gmpz_fits_slong_p(mp); } -2441: bool fits_ulong_p() const { return __gmpz_fits_ulong_p(mp); } -2441: -2441: -2441: -2441: -2441: -2441: explicit operator bool() const { return mp->_mp_size != 0; } -2441: -2441: -2441: -2441: template __gmp_expr & operator+=(const __gmp_expr &); __gmp_expr & operator+=(signed char); __gmp_expr & operator+=(unsigned char); __gmp_expr & operator+=(signed int); __gmp_expr & operator+=(unsigned int); __gmp_expr & operator+=(signed short int); __gmp_expr & operator+=(unsigned short int); __gmp_expr & operator+=(signed long int); __gmp_expr & operator+=(unsigned long int); __gmp_expr & operator+=(float); __gmp_expr & operator+=(double); -2441: template __gmp_expr & operator-=(const __gmp_expr &); __gmp_expr & operator-=(signed char); __gmp_expr & operator-=(unsigned char); __gmp_expr & operator-=(signed int); __gmp_expr & operator-=(unsigned int); __gmp_expr & operator-=(signed short int); __gmp_expr & operator-=(unsigned short int); __gmp_expr & operator-=(signed long int); __gmp_expr & operator-=(unsigned long int); __gmp_expr & operator-=(float); __gmp_expr & operator-=(double); -2441: template __gmp_expr & operator*=(const __gmp_expr &); __gmp_expr & operator*=(signed char); __gmp_expr & operator*=(unsigned char); __gmp_expr & operator*=(signed int); __gmp_expr & operator*=(unsigned int); __gmp_expr & operator*=(signed short int); __gmp_expr & operator*=(unsigned short int); __gmp_expr & operator*=(signed long int); __gmp_expr & operator*=(unsigned long int); __gmp_expr & operator*=(float); __gmp_expr & operator*=(double); -2441: template __gmp_expr & operator/=(const __gmp_expr &); __gmp_expr & operator/=(signed char); __gmp_expr & operator/=(unsigned char); __gmp_expr & operator/=(signed int); __gmp_expr & operator/=(unsigned int); __gmp_expr & operator/=(signed short int); __gmp_expr & operator/=(unsigned short int); __gmp_expr & operator/=(signed long int); __gmp_expr & operator/=(unsigned long int); __gmp_expr & operator/=(float); __gmp_expr & operator/=(double); -2441: template __gmp_expr & operator%=(const __gmp_expr &); __gmp_expr & operator%=(signed char); __gmp_expr & operator%=(unsigned char); __gmp_expr & operator%=(signed int); __gmp_expr & operator%=(unsigned int); __gmp_expr & operator%=(signed short int); __gmp_expr & operator%=(unsigned short int); __gmp_expr & operator%=(signed long int); __gmp_expr & operator%=(unsigned long int); __gmp_expr & operator%=(float); __gmp_expr & operator%=(double); -2441: -2441: template __gmp_expr & operator&=(const __gmp_expr &); __gmp_expr & operator&=(signed char); __gmp_expr & operator&=(unsigned char); __gmp_expr & operator&=(signed int); __gmp_expr & operator&=(unsigned int); __gmp_expr & operator&=(signed short int); __gmp_expr & operator&=(unsigned short int); __gmp_expr & operator&=(signed long int); __gmp_expr & operator&=(unsigned long int); __gmp_expr & operator&=(float); __gmp_expr & operator&=(double); -2441: template __gmp_expr & operator|=(const __gmp_expr &); __gmp_expr & operator|=(signed char); __gmp_expr & operator|=(unsigned char); __gmp_expr & operator|=(signed int); __gmp_expr & operator|=(unsigned int); __gmp_expr & operator|=(signed short int); __gmp_expr & operator|=(unsigned short int); __gmp_expr & operator|=(signed long int); __gmp_expr & operator|=(unsigned long int); __gmp_expr & operator|=(float); __gmp_expr & operator|=(double); -2441: template __gmp_expr & operator^=(const __gmp_expr &); __gmp_expr & operator^=(signed char); __gmp_expr & operator^=(unsigned char); __gmp_expr & operator^=(signed int); __gmp_expr & operator^=(unsigned int); __gmp_expr & operator^=(signed short int); __gmp_expr & operator^=(unsigned short int); __gmp_expr & operator^=(signed long int); __gmp_expr & operator^=(unsigned long int); __gmp_expr & operator^=(float); __gmp_expr & operator^=(double); -2441: -2441: __gmp_expr & operator<<=(mp_bitcnt_t); -2441: __gmp_expr & operator>>=(mp_bitcnt_t); -2441: -2441: inline __gmp_expr & operator++(); inline __gmp_expr operator++(int); -2441: inline __gmp_expr & operator--(); inline __gmp_expr operator--(int); -2441: }; -2441: -2441: typedef __gmp_expr mpz_class; -2441: -2441: -2441: -2441: -2441: template <> -2441: class __gmp_expr -2441: { -2441: private: -2441: typedef mpq_t value_type; -2441: value_type mp; -2441: -2441: -2441: void assign_ui(unsigned long l) { __gmpq_set_ui(mp, l, 1); } -2441: void assign_si(signed long l) -2441: { -2441: if ((__builtin_constant_p(l >= 0) && (l >= 0))) -2441: assign_ui(l); -2441: else -2441: __gmpq_set_si(mp, l, 1); -2441: } -2441: void assign_d (double d) { __gmpq_set_d (mp, d); } -2441: -2441: void init_ui(unsigned long l) { __gmpq_init(mp); get_num() = l; } -2441: void init_si(signed long l) { __gmpq_init(mp); get_num() = l; } -2441: void init_d (double d) { __gmpq_init(mp); assign_d (d); } -2441: -2441: public: -2441: mp_bitcnt_t get_prec() const { return __gmpf_get_default_prec(); } -2441: void canonicalize() { __gmpq_canonicalize(mp); } -2441: -2441: -2441: __gmp_expr() { __gmpq_init(mp); } -2441: -2441: __gmp_expr(const __gmp_expr &q) -2441: { -2441: __gmpz_init_set((&((mp)->_mp_num)), (&((q.mp)->_mp_num))); -2441: __gmpz_init_set((&((mp)->_mp_den)), (&((q.mp)->_mp_den))); -2441: } -2441: -2441: __gmp_expr(__gmp_expr &&q) -2441: { *mp = *q.mp; __gmpq_init(q.mp); } -2441: -2441: template -2441: __gmp_expr(const __gmp_expr &expr) -2441: { __gmpq_init(mp); __gmp_set_expr(mp, expr); } -2441: template -2441: __gmp_expr(const __gmp_expr &expr) -2441: { __gmpq_init(mp); __gmp_set_expr(mp, expr); } -2441: template -2441: explicit __gmp_expr(const __gmp_expr &expr) -2441: { __gmpq_init(mp); __gmp_set_expr(mp, expr); } -2441: -2441: __gmp_expr(signed char c) { init_si(c); } __gmp_expr(unsigned char c) { init_ui(c); } __gmp_expr(signed int i) { init_si(i); } __gmp_expr(unsigned int i) { init_ui(i); } __gmp_expr(signed short int s) { init_si(s); } __gmp_expr(unsigned short int s) { init_ui(s); } __gmp_expr(signed long int l) { init_si(l); } __gmp_expr(unsigned long int l) { init_ui(l); } __gmp_expr(float f) { init_d(f); } __gmp_expr(double d) { init_d(d); } -2441: -2441: explicit __gmp_expr(const char *s, int base = 0) -2441: { -2441: __gmpq_init (mp); -2441: -2441: -2441: if (s == 0) -2441: { -2441: -2441: __gmpz_set_si((&((mp)->_mp_den)), base); -2441: } -2441: else if (__gmpq_set_str(mp, s, base) != 0) -2441: { -2441: __gmpq_clear (mp); -2441: throw std::invalid_argument ("mpq_set_str"); -2441: } -2441: } -2441: explicit __gmp_expr(const std::string &s, int base = 0) -2441: { -2441: __gmpq_init(mp); -2441: if (__gmpq_set_str (mp, s.c_str(), base) != 0) -2441: { -2441: __gmpq_clear (mp); -2441: throw std::invalid_argument ("mpq_set_str"); -2441: } -2441: } -2441: explicit __gmp_expr(mpq_srcptr q) -2441: { -2441: __gmpz_init_set((&((mp)->_mp_num)), (&((q)->_mp_num))); -2441: __gmpz_init_set((&((mp)->_mp_den)), (&((q)->_mp_den))); -2441: } -2441: -2441: __gmp_expr(const mpz_class &num, const mpz_class &den) -2441: { -2441: __gmpz_init_set((&((mp)->_mp_num)), num.get_mpz_t()); -2441: __gmpz_init_set((&((mp)->_mp_den)), den.get_mpz_t()); -2441: } -2441: -2441: ~__gmp_expr() { __gmpq_clear(mp); } -2441: -2441: void swap(__gmp_expr& q) noexcept { std::swap(*mp, *q.mp); } -2441: -2441: -2441: __gmp_expr & operator=(const __gmp_expr &q) -2441: { __gmpq_set(mp, q.mp); return *this; } -2441: -2441: __gmp_expr & operator=(__gmp_expr &&q) noexcept -2441: { swap(q); return *this; } -2441: __gmp_expr & operator=(mpz_class &&z) noexcept -2441: { get_num() = std::move(z); get_den() = 1u; return *this; } -2441: -2441: template -2441: __gmp_expr & operator=(const __gmp_expr &expr) -2441: { __gmp_set_expr(mp, expr); return *this; } -2441: -2441: __gmp_expr & operator=(signed char c) { assign_si(c); return *this; } __gmp_expr & operator=(unsigned char c) { assign_ui(c); return *this; } __gmp_expr & operator=(signed int i) { assign_si(i); return *this; } __gmp_expr & operator=(unsigned int i) { assign_ui(i); return *this; } __gmp_expr & operator=(signed short int s) { assign_si(s); return *this; } __gmp_expr & operator=(unsigned short int s) { assign_ui(s); return *this; } __gmp_expr & operator=(signed long int l) { assign_si(l); return *this; } __gmp_expr & operator=(unsigned long int l) { assign_ui(l); return *this; } __gmp_expr & operator=(float f) { assign_d(f); return *this; } __gmp_expr & operator=(double d) { assign_d(d); return *this; } -2441: -2441: __gmp_expr & operator=(const char *s) -2441: { -2441: if (__gmpq_set_str (mp, s, 0) != 0) -2441: throw std::invalid_argument ("mpq_set_str"); -2441: return *this; -2441: } -2441: __gmp_expr & operator=(const std::string &s) -2441: { -2441: if (__gmpq_set_str(mp, s.c_str(), 0) != 0) -2441: throw std::invalid_argument ("mpq_set_str"); -2441: return *this; -2441: } -2441: -2441: -2441: int set_str(const char *s, int base) -2441: { return __gmpq_set_str(mp, s, base); } -2441: int set_str(const std::string &s, int base) -2441: { return __gmpq_set_str(mp, s.c_str(), base); } -2441: std::string get_str(int base = 10) const -2441: { -2441: __gmp_alloc_cstring temp(__gmpq_get_str(0, base, mp)); -2441: return std::string(temp.str); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const mpz_class & get_num() const -2441: { return reinterpret_cast(*(&((mp)->_mp_num))); } -2441: mpz_class & get_num() -2441: { return reinterpret_cast(*(&((mp)->_mp_num))); } -2441: const mpz_class & get_den() const -2441: { return reinterpret_cast(*(&((mp)->_mp_den))); } -2441: mpz_class & get_den() -2441: { return reinterpret_cast(*(&((mp)->_mp_den))); } -2441: -2441: mpq_srcptr __get_mp() const { return mp; } -2441: mpq_ptr __get_mp() { return mp; } -2441: mpq_srcptr get_mpq_t() const { return mp; } -2441: mpq_ptr get_mpq_t() { return mp; } -2441: -2441: mpz_srcptr get_num_mpz_t() const { return (&((mp)->_mp_num)); } -2441: mpz_ptr get_num_mpz_t() { return (&((mp)->_mp_num)); } -2441: mpz_srcptr get_den_mpz_t() const { return (&((mp)->_mp_den)); } -2441: mpz_ptr get_den_mpz_t() { return (&((mp)->_mp_den)); } -2441: -2441: double get_d() const { return __gmpq_get_d(mp); } -2441: -2441: -2441: explicit operator bool() const { return (&((mp)->_mp_num))->_mp_size != 0; } -2441: -2441: -2441: -2441: template __gmp_expr & operator+=(const __gmp_expr &); __gmp_expr & operator+=(signed char); __gmp_expr & operator+=(unsigned char); __gmp_expr & operator+=(signed int); __gmp_expr & operator+=(unsigned int); __gmp_expr & operator+=(signed short int); __gmp_expr & operator+=(unsigned short int); __gmp_expr & operator+=(signed long int); __gmp_expr & operator+=(unsigned long int); __gmp_expr & operator+=(float); __gmp_expr & operator+=(double); -2441: template __gmp_expr & operator-=(const __gmp_expr &); __gmp_expr & operator-=(signed char); __gmp_expr & operator-=(unsigned char); __gmp_expr & operator-=(signed int); __gmp_expr & operator-=(unsigned int); __gmp_expr & operator-=(signed short int); __gmp_expr & operator-=(unsigned short int); __gmp_expr & operator-=(signed long int); __gmp_expr & operator-=(unsigned long int); __gmp_expr & operator-=(float); __gmp_expr & operator-=(double); -2441: template __gmp_expr & operator*=(const __gmp_expr &); __gmp_expr & operator*=(signed char); __gmp_expr & operator*=(unsigned char); __gmp_expr & operator*=(signed int); __gmp_expr & operator*=(unsigned int); __gmp_expr & operator*=(signed short int); __gmp_expr & operator*=(unsigned short int); __gmp_expr & operator*=(signed long int); __gmp_expr & operator*=(unsigned long int); __gmp_expr & operator*=(float); __gmp_expr & operator*=(double); -2441: template __gmp_expr & operator/=(const __gmp_expr &); __gmp_expr & operator/=(signed char); __gmp_expr & operator/=(unsigned char); __gmp_expr & operator/=(signed int); __gmp_expr & operator/=(unsigned int); __gmp_expr & operator/=(signed short int); __gmp_expr & operator/=(unsigned short int); __gmp_expr & operator/=(signed long int); __gmp_expr & operator/=(unsigned long int); __gmp_expr & operator/=(float); __gmp_expr & operator/=(double); -2441: -2441: __gmp_expr & operator<<=(mp_bitcnt_t); -2441: __gmp_expr & operator>>=(mp_bitcnt_t); -2441: -2441: inline __gmp_expr & operator++(); inline __gmp_expr operator++(int); -2441: inline __gmp_expr & operator--(); inline __gmp_expr operator--(int); -2441: }; -2441: -2441: typedef __gmp_expr mpq_class; -2441: -2441: -2441: -2441: -2441: template <> -2441: class __gmp_expr -2441: { -2441: private: -2441: typedef mpf_t value_type; -2441: value_type mp; -2441: -2441: -2441: void assign_ui(unsigned long l) { __gmpf_set_ui(mp, l); } -2441: void assign_si(signed long l) -2441: { -2441: if ((__builtin_constant_p(l >= 0) && (l >= 0))) -2441: assign_ui(l); -2441: else -2441: __gmpf_set_si(mp, l); -2441: } -2441: void assign_d (double d) { __gmpf_set_d (mp, d); } -2441: -2441: void init_ui(unsigned long l) -2441: { -2441: if ((__builtin_constant_p(l == 0) && (l == 0))) -2441: __gmpf_init(mp); -2441: else -2441: __gmpf_init_set_ui(mp, l); -2441: } -2441: void init_si(signed long l) -2441: { -2441: if ((__builtin_constant_p(l >= 0) && (l >= 0))) -2441: init_ui(l); -2441: else -2441: __gmpf_init_set_si(mp, l); -2441: } -2441: void init_d (double d) { __gmpf_init_set_d (mp, d); } -2441: -2441: public: -2441: mp_bitcnt_t get_prec() const { return __gmpf_get_prec(mp); } -2441: -2441: void set_prec(mp_bitcnt_t prec) { __gmpf_set_prec(mp, prec); } -2441: void set_prec_raw(mp_bitcnt_t prec) { __gmpf_set_prec_raw(mp, prec); } -2441: -2441: -2441: __gmp_expr() { __gmpf_init(mp); } -2441: -2441: __gmp_expr(const __gmp_expr &f) -2441: { __gmpf_init2(mp, f.get_prec()); __gmpf_set(mp, f.mp); } -2441: -2441: __gmp_expr(__gmp_expr &&f) -2441: { *mp = *f.mp; __gmpf_init2(f.mp, get_prec()); } -2441: -2441: __gmp_expr(const __gmp_expr &f, mp_bitcnt_t prec) -2441: { __gmpf_init2(mp, prec); __gmpf_set(mp, f.mp); } -2441: template -2441: __gmp_expr(const __gmp_expr &expr) -2441: { __gmpf_init2(mp, expr.get_prec()); __gmp_set_expr(mp, expr); } -2441: template -2441: __gmp_expr(const __gmp_expr &expr, mp_bitcnt_t prec) -2441: { __gmpf_init2(mp, prec); __gmp_set_expr(mp, expr); } -2441: -2441: __gmp_expr(signed char c) { init_si(c); } __gmp_expr(unsigned char c) { init_ui(c); } __gmp_expr(signed int i) { init_si(i); } __gmp_expr(unsigned int i) { init_ui(i); } __gmp_expr(signed short int s) { init_si(s); } __gmp_expr(unsigned short int s) { init_ui(s); } __gmp_expr(signed long int l) { init_si(l); } __gmp_expr(unsigned long int l) { init_ui(l); } __gmp_expr(float f) { init_d(f); } __gmp_expr(double d) { init_d(d); } -2441: -2441: __gmp_expr(signed char c, mp_bitcnt_t prec) -2441: { __gmpf_init2(mp, prec); __gmpf_set_si(mp, c); } -2441: __gmp_expr(unsigned char c, mp_bitcnt_t prec) -2441: { __gmpf_init2(mp, prec); __gmpf_set_ui(mp, c); } -2441: -2441: __gmp_expr(signed int i, mp_bitcnt_t prec) -2441: { __gmpf_init2(mp, prec); __gmpf_set_si(mp, i); } -2441: __gmp_expr(unsigned int i, mp_bitcnt_t prec) -2441: { __gmpf_init2(mp, prec); __gmpf_set_ui(mp, i); } -2441: -2441: __gmp_expr(signed short int s, mp_bitcnt_t prec) -2441: { __gmpf_init2(mp, prec); __gmpf_set_si(mp, s); } -2441: __gmp_expr(unsigned short int s, mp_bitcnt_t prec) -2441: { __gmpf_init2(mp, prec); __gmpf_set_ui(mp, s); } -2441: -2441: __gmp_expr(signed long int l, mp_bitcnt_t prec) -2441: { __gmpf_init2(mp, prec); __gmpf_set_si(mp, l); } -2441: __gmp_expr(unsigned long int l, mp_bitcnt_t prec) -2441: { __gmpf_init2(mp, prec); __gmpf_set_ui(mp, l); } -2441: -2441: __gmp_expr(float f, mp_bitcnt_t prec) -2441: { __gmpf_init2(mp, prec); __gmpf_set_d(mp, f); } -2441: __gmp_expr(double d, mp_bitcnt_t prec) -2441: { __gmpf_init2(mp, prec); __gmpf_set_d(mp, d); } -2441: -2441: -2441: -2441: -2441: explicit __gmp_expr(const char *s) -2441: { -2441: if (__gmpf_init_set_str (mp, s, 0) != 0) -2441: { -2441: __gmpf_clear (mp); -2441: throw std::invalid_argument ("mpf_set_str"); -2441: } -2441: } -2441: __gmp_expr(const char *s, mp_bitcnt_t prec, int base = 0) -2441: { -2441: __gmpf_init2(mp, prec); -2441: if (__gmpf_set_str(mp, s, base) != 0) -2441: { -2441: __gmpf_clear (mp); -2441: throw std::invalid_argument ("mpf_set_str"); -2441: } -2441: } -2441: explicit __gmp_expr(const std::string &s) -2441: { -2441: if (__gmpf_init_set_str(mp, s.c_str(), 0) != 0) -2441: { -2441: __gmpf_clear (mp); -2441: throw std::invalid_argument ("mpf_set_str"); -2441: } -2441: } -2441: __gmp_expr(const std::string &s, mp_bitcnt_t prec, int base = 0) -2441: { -2441: __gmpf_init2(mp, prec); -2441: if (__gmpf_set_str(mp, s.c_str(), base) != 0) -2441: { -2441: __gmpf_clear (mp); -2441: throw std::invalid_argument ("mpf_set_str"); -2441: } -2441: } -2441: -2441: explicit __gmp_expr(mpf_srcptr f) -2441: { __gmpf_init2(mp, __gmpf_get_prec(f)); __gmpf_set(mp, f); } -2441: __gmp_expr(mpf_srcptr f, mp_bitcnt_t prec) -2441: { __gmpf_init2(mp, prec); __gmpf_set(mp, f); } -2441: -2441: ~__gmp_expr() { __gmpf_clear(mp); } -2441: -2441: void swap(__gmp_expr& f) noexcept { std::swap(*mp, *f.mp); } -2441: -2441: -2441: __gmp_expr & operator=(const __gmp_expr &f) -2441: { __gmpf_set(mp, f.mp); return *this; } -2441: -2441: __gmp_expr & operator=(__gmp_expr &&f) noexcept -2441: { swap(f); return *this; } -2441: -2441: template -2441: __gmp_expr & operator=(const __gmp_expr &expr) -2441: { __gmp_set_expr(mp, expr); return *this; } -2441: -2441: __gmp_expr & operator=(signed char c) { assign_si(c); return *this; } __gmp_expr & operator=(unsigned char c) { assign_ui(c); return *this; } __gmp_expr & operator=(signed int i) { assign_si(i); return *this; } __gmp_expr & operator=(unsigned int i) { assign_ui(i); return *this; } __gmp_expr & operator=(signed short int s) { assign_si(s); return *this; } __gmp_expr & operator=(unsigned short int s) { assign_ui(s); return *this; } __gmp_expr & operator=(signed long int l) { assign_si(l); return *this; } __gmp_expr & operator=(unsigned long int l) { assign_ui(l); return *this; } __gmp_expr & operator=(float f) { assign_d(f); return *this; } __gmp_expr & operator=(double d) { assign_d(d); return *this; } -2441: -2441: __gmp_expr & operator=(const char *s) -2441: { -2441: if (__gmpf_set_str (mp, s, 0) != 0) -2441: throw std::invalid_argument ("mpf_set_str"); -2441: return *this; -2441: } -2441: __gmp_expr & operator=(const std::string &s) -2441: { -2441: if (__gmpf_set_str(mp, s.c_str(), 0) != 0) -2441: throw std::invalid_argument ("mpf_set_str"); -2441: return *this; -2441: } -2441: -2441: -2441: int set_str(const char *s, int base) -2441: { return __gmpf_set_str(mp, s, base); } -2441: int set_str(const std::string &s, int base) -2441: { return __gmpf_set_str(mp, s.c_str(), base); } -2441: std::string get_str(mp_exp_t &expo, int base = 10, size_t size = 0) const -2441: { -2441: __gmp_alloc_cstring temp(__gmpf_get_str(0, &expo, base, size, mp)); -2441: return std::string(temp.str); -2441: } -2441: -2441: -2441: mpf_srcptr __get_mp() const { return mp; } -2441: mpf_ptr __get_mp() { return mp; } -2441: mpf_srcptr get_mpf_t() const { return mp; } -2441: mpf_ptr get_mpf_t() { return mp; } -2441: -2441: signed long int get_si() const { return __gmpf_get_si(mp); } -2441: unsigned long int get_ui() const { return __gmpf_get_ui(mp); } -2441: double get_d() const { return __gmpf_get_d(mp); } -2441: -2441: -2441: -2441: bool fits_sint_p() const { return __gmpf_fits_sint_p(mp); } -2441: bool fits_uint_p() const { return __gmpf_fits_uint_p(mp); } -2441: bool fits_sshort_p() const { return __gmpf_fits_sshort_p(mp); } -2441: bool fits_ushort_p() const { return __gmpf_fits_ushort_p(mp); } -2441: bool fits_slong_p() const { return __gmpf_fits_slong_p(mp); } -2441: bool fits_ulong_p() const { return __gmpf_fits_ulong_p(mp); } -2441: -2441: -2441: -2441: -2441: -2441: explicit operator bool() const { return mp->_mp_size != 0; } -2441: -2441: -2441: -2441: template __gmp_expr & operator+=(const __gmp_expr &); __gmp_expr & operator+=(signed char); __gmp_expr & operator+=(unsigned char); __gmp_expr & operator+=(signed int); __gmp_expr & operator+=(unsigned int); __gmp_expr & operator+=(signed short int); __gmp_expr & operator+=(unsigned short int); __gmp_expr & operator+=(signed long int); __gmp_expr & operator+=(unsigned long int); __gmp_expr & operator+=(float); __gmp_expr & operator+=(double); -2441: template __gmp_expr & operator-=(const __gmp_expr &); __gmp_expr & operator-=(signed char); __gmp_expr & operator-=(unsigned char); __gmp_expr & operator-=(signed int); __gmp_expr & operator-=(unsigned int); __gmp_expr & operator-=(signed short int); __gmp_expr & operator-=(unsigned short int); __gmp_expr & operator-=(signed long int); __gmp_expr & operator-=(unsigned long int); __gmp_expr & operator-=(float); __gmp_expr & operator-=(double); -2441: template __gmp_expr & operator*=(const __gmp_expr &); __gmp_expr & operator*=(signed char); __gmp_expr & operator*=(unsigned char); __gmp_expr & operator*=(signed int); __gmp_expr & operator*=(unsigned int); __gmp_expr & operator*=(signed short int); __gmp_expr & operator*=(unsigned short int); __gmp_expr & operator*=(signed long int); __gmp_expr & operator*=(unsigned long int); __gmp_expr & operator*=(float); __gmp_expr & operator*=(double); -2441: template __gmp_expr & operator/=(const __gmp_expr &); __gmp_expr & operator/=(signed char); __gmp_expr & operator/=(unsigned char); __gmp_expr & operator/=(signed int); __gmp_expr & operator/=(unsigned int); __gmp_expr & operator/=(signed short int); __gmp_expr & operator/=(unsigned short int); __gmp_expr & operator/=(signed long int); __gmp_expr & operator/=(unsigned long int); __gmp_expr & operator/=(float); __gmp_expr & operator/=(double); -2441: -2441: __gmp_expr & operator<<=(mp_bitcnt_t); -2441: __gmp_expr & operator>>=(mp_bitcnt_t); -2441: -2441: inline __gmp_expr & operator++(); inline __gmp_expr operator++(int); -2441: inline __gmp_expr & operator--(); inline __gmp_expr operator--(int); -2441: }; -2441: -2441: typedef __gmp_expr mpf_class; -2441: -2441: -2441: -2441: -2441: -2441: -2441: inline mpz_class operator"" _mpz(const char* s) -2441: { -2441: return mpz_class(s); -2441: } -2441: -2441: inline mpq_class operator"" _mpq(const char* s) -2441: { -2441: mpq_class q; -2441: q.get_num() = s; -2441: return q; -2441: } -2441: -2441: inline mpf_class operator"" _mpf(const char* s) -2441: { -2441: return mpf_class(s); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline std::ostream & operator<< -2441: (std::ostream &o, const __gmp_expr &expr) -2441: { -2441: __gmp_expr const& temp(expr); -2441: return o << temp.__get_mp(); -2441: } -2441: -2441: template -2441: inline std::istream & operator>>(std::istream &i, __gmp_expr &expr) -2441: { -2441: return i >> expr.__get_mp(); -2441: } -2441: # 2055 "/usr/include/gmpxx.h" 3 4 -2441: inline void __gmp_set_expr(mpz_ptr z, const mpz_class &w) -2441: { -2441: __gmpz_set(z, w.get_mpz_t()); -2441: } -2441: -2441: template -2441: inline void __gmp_set_expr(mpz_ptr z, const __gmp_expr &expr) -2441: { -2441: expr.eval(z); -2441: } -2441: -2441: template -2441: inline void __gmp_set_expr(mpz_ptr z, const __gmp_expr &expr) -2441: { -2441: mpq_class const& temp(expr); -2441: __gmpz_set_q(z, temp.get_mpq_t()); -2441: } -2441: -2441: template -2441: inline void __gmp_set_expr(mpz_ptr z, const __gmp_expr &expr) -2441: { -2441: mpf_class const& temp(expr); -2441: __gmpz_set_f(z, temp.get_mpf_t()); -2441: } -2441: -2441: inline void __gmp_set_expr(mpq_ptr q, const mpz_class &z) -2441: { -2441: __gmpq_set_z(q, z.get_mpz_t()); -2441: } -2441: -2441: template -2441: inline void __gmp_set_expr(mpq_ptr q, const __gmp_expr &expr) -2441: { -2441: __gmp_set_expr((&((q)->_mp_num)), expr); -2441: __gmpz_set_ui((&((q)->_mp_den)), 1); -2441: } -2441: -2441: inline void __gmp_set_expr(mpq_ptr q, const mpq_class &r) -2441: { -2441: __gmpq_set(q, r.get_mpq_t()); -2441: } -2441: -2441: template -2441: inline void __gmp_set_expr(mpq_ptr q, const __gmp_expr &expr) -2441: { -2441: expr.eval(q); -2441: } -2441: -2441: template -2441: inline void __gmp_set_expr(mpq_ptr q, const __gmp_expr &expr) -2441: { -2441: mpf_class const& temp(expr); -2441: __gmpq_set_f(q, temp.get_mpf_t()); -2441: } -2441: -2441: template -2441: inline void __gmp_set_expr(mpf_ptr f, const __gmp_expr &expr) -2441: { -2441: mpz_class const& temp(expr); -2441: __gmpf_set_z(f, temp.get_mpz_t()); -2441: } -2441: -2441: template -2441: inline void __gmp_set_expr(mpf_ptr f, const __gmp_expr &expr) -2441: { -2441: mpq_class const& temp(expr); -2441: __gmpf_set_q(f, temp.get_mpq_t()); -2441: } -2441: -2441: inline void __gmp_set_expr(mpf_ptr f, const mpf_class &g) -2441: { -2441: __gmpf_set(f, g.get_mpf_t()); -2441: } -2441: -2441: template -2441: inline void __gmp_set_expr(mpf_ptr f, const __gmp_expr &expr) -2441: { -2441: expr.eval(f); -2441: } -2441: -2441: -2441: -2441: -2441: template -2441: class __gmp_temp -2441: { -2441: __gmp_expr val; -2441: public: -2441: template -2441: __gmp_temp(U const& u, V) : val (u) {} -2441: typename __gmp_resolve_expr::srcptr_type -2441: __get_mp() const { return val.__get_mp(); } -2441: }; -2441: -2441: template <> -2441: class __gmp_temp -2441: { -2441: mpf_class val; -2441: public: -2441: template -2441: __gmp_temp(U const& u, mpf_ptr res) : val (u, __gmpf_get_prec(res)) {} -2441: mpf_srcptr __get_mp() const { return val.__get_mp(); } -2441: }; -2441: # 2178 "/usr/include/gmpxx.h" 3 4 -2441: template -2441: class __gmp_expr, Op> > -2441: { -2441: private: -2441: typedef __gmp_expr val_type; -2441: -2441: __gmp_unary_expr expr; -2441: public: -2441: explicit __gmp_expr(const val_type &val) : expr(val) { } -2441: void eval(typename __gmp_resolve_expr::ptr_type p) const -2441: { Op::eval(p, expr.val.__get_mp()); } -2441: const val_type & get_val() const { return expr.val; } -2441: mp_bitcnt_t get_prec() const { return expr.val.get_prec(); } -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: class __gmp_expr > -2441: { -2441: private: -2441: typedef U val_type; -2441: -2441: __gmp_unary_expr expr; -2441: public: -2441: explicit __gmp_expr(const val_type &val) : expr(val) { } -2441: void eval(typename __gmp_resolve_expr::ptr_type p) const -2441: { Op::eval(p, expr.val); } -2441: const val_type & get_val() const { return expr.val; } -2441: mp_bitcnt_t get_prec() const { return __gmpf_get_default_prec(); } -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: class __gmp_expr, Op> > -2441: { -2441: private: -2441: typedef __gmp_expr val_type; -2441: -2441: __gmp_unary_expr expr; -2441: public: -2441: explicit __gmp_expr(const val_type &val) : expr(val) { } -2441: void eval(typename __gmp_resolve_expr::ptr_type p) const -2441: { expr.val.eval(p); Op::eval(p, p); } -2441: const val_type & get_val() const { return expr.val; } -2441: mp_bitcnt_t get_prec() const { return expr.val.get_prec(); } -2441: }; -2441: # 2242 "/usr/include/gmpxx.h" 3 4 -2441: template -2441: class __gmp_expr -2441: , __gmp_expr, Op> > -2441: { -2441: private: -2441: typedef __gmp_expr val1_type; -2441: typedef __gmp_expr val2_type; -2441: -2441: __gmp_binary_expr expr; -2441: public: -2441: __gmp_expr(const val1_type &val1, const val2_type &val2) -2441: : expr(val1, val2) { } -2441: void eval(typename __gmp_resolve_expr::ptr_type p) const -2441: { Op::eval(p, expr.val1.__get_mp(), expr.val2.__get_mp()); } -2441: const val1_type & get_val1() const { return expr.val1; } -2441: const val2_type & get_val2() const { return expr.val2; } -2441: mp_bitcnt_t get_prec() const -2441: { -2441: mp_bitcnt_t prec1 = expr.val1.get_prec(), -2441: prec2 = expr.val2.get_prec(); -2441: return (prec1 > prec2) ? prec1 : prec2; -2441: } -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: class __gmp_expr, U, Op> > -2441: { -2441: private: -2441: typedef __gmp_expr val1_type; -2441: typedef U val2_type; -2441: -2441: __gmp_binary_expr expr; -2441: public: -2441: __gmp_expr(const val1_type &val1, const val2_type &val2) -2441: : expr(val1, val2) { } -2441: void eval(typename __gmp_resolve_expr::ptr_type p) const -2441: { Op::eval(p, expr.val1.__get_mp(), expr.val2); } -2441: const val1_type & get_val1() const { return expr.val1; } -2441: const val2_type & get_val2() const { return expr.val2; } -2441: mp_bitcnt_t get_prec() const { return expr.val1.get_prec(); } -2441: }; -2441: -2441: template -2441: class __gmp_expr, Op> > -2441: { -2441: private: -2441: typedef U val1_type; -2441: typedef __gmp_expr val2_type; -2441: -2441: __gmp_binary_expr expr; -2441: public: -2441: __gmp_expr(const val1_type &val1, const val2_type &val2) -2441: : expr(val1, val2) { } -2441: void eval(typename __gmp_resolve_expr::ptr_type p) const -2441: { Op::eval(p, expr.val1, expr.val2.__get_mp()); } -2441: const val1_type & get_val1() const { return expr.val1; } -2441: const val2_type & get_val2() const { return expr.val2; } -2441: mp_bitcnt_t get_prec() const { return expr.val2.get_prec(); } -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: class __gmp_expr -2441: , __gmp_expr, Op> > -2441: { -2441: private: -2441: typedef __gmp_expr val1_type; -2441: typedef __gmp_expr val2_type; -2441: -2441: __gmp_binary_expr expr; -2441: public: -2441: __gmp_expr(const val1_type &val1, const val2_type &val2) -2441: : expr(val1, val2) { } -2441: void eval(typename __gmp_resolve_expr::ptr_type p) const -2441: { -2441: if(p != expr.val1.__get_mp()) -2441: { -2441: __gmp_set_expr(p, expr.val2); -2441: Op::eval(p, expr.val1.__get_mp(), p); -2441: } -2441: else -2441: { -2441: __gmp_temp temp(expr.val2, p); -2441: Op::eval(p, expr.val1.__get_mp(), temp.__get_mp()); -2441: } -2441: } -2441: const val1_type & get_val1() const { return expr.val1; } -2441: const val2_type & get_val2() const { return expr.val2; } -2441: mp_bitcnt_t get_prec() const -2441: { -2441: mp_bitcnt_t prec1 = expr.val1.get_prec(), -2441: prec2 = expr.val2.get_prec(); -2441: return (prec1 > prec2) ? prec1 : prec2; -2441: } -2441: }; -2441: -2441: template -2441: class __gmp_expr -2441: , __gmp_expr, Op> > -2441: { -2441: private: -2441: typedef __gmp_expr val1_type; -2441: typedef __gmp_expr val2_type; -2441: -2441: __gmp_binary_expr expr; -2441: public: -2441: __gmp_expr(const val1_type &val1, const val2_type &val2) -2441: : expr(val1, val2) { } -2441: void eval(typename __gmp_resolve_expr::ptr_type p) const -2441: { -2441: if(p != expr.val2.__get_mp()) -2441: { -2441: __gmp_set_expr(p, expr.val1); -2441: Op::eval(p, p, expr.val2.__get_mp()); -2441: } -2441: else -2441: { -2441: __gmp_temp temp(expr.val1, p); -2441: Op::eval(p, temp.__get_mp(), expr.val2.__get_mp()); -2441: } -2441: } -2441: const val1_type & get_val1() const { return expr.val1; } -2441: const val2_type & get_val2() const { return expr.val2; } -2441: mp_bitcnt_t get_prec() const -2441: { -2441: mp_bitcnt_t prec1 = expr.val1.get_prec(), -2441: prec2 = expr.val2.get_prec(); -2441: return (prec1 > prec2) ? prec1 : prec2; -2441: } -2441: }; -2441: -2441: template -2441: class __gmp_expr -2441: , __gmp_expr, Op> > -2441: { -2441: private: -2441: typedef __gmp_expr val1_type; -2441: typedef __gmp_expr val2_type; -2441: -2441: __gmp_binary_expr expr; -2441: public: -2441: __gmp_expr(const val1_type &val1, const val2_type &val2) -2441: : expr(val1, val2) { } -2441: void eval(typename __gmp_resolve_expr::ptr_type p) const -2441: { -2441: if(p != expr.val1.__get_mp()) -2441: { -2441: __gmp_set_expr(p, expr.val2); -2441: Op::eval(p, expr.val1.__get_mp(), p); -2441: } -2441: else -2441: { -2441: __gmp_temp temp(expr.val2, p); -2441: Op::eval(p, expr.val1.__get_mp(), temp.__get_mp()); -2441: } -2441: } -2441: const val1_type & get_val1() const { return expr.val1; } -2441: const val2_type & get_val2() const { return expr.val2; } -2441: mp_bitcnt_t get_prec() const -2441: { -2441: mp_bitcnt_t prec1 = expr.val1.get_prec(), -2441: prec2 = expr.val2.get_prec(); -2441: return (prec1 > prec2) ? prec1 : prec2; -2441: } -2441: }; -2441: -2441: template -2441: class __gmp_expr -2441: , __gmp_expr, Op> > -2441: { -2441: private: -2441: typedef __gmp_expr val1_type; -2441: typedef __gmp_expr val2_type; -2441: -2441: __gmp_binary_expr expr; -2441: public: -2441: __gmp_expr(const val1_type &val1, const val2_type &val2) -2441: : expr(val1, val2) { } -2441: void eval(typename __gmp_resolve_expr::ptr_type p) const -2441: { -2441: if(p != expr.val2.__get_mp()) -2441: { -2441: __gmp_set_expr(p, expr.val1); -2441: Op::eval(p, p, expr.val2.__get_mp()); -2441: } -2441: else -2441: { -2441: __gmp_temp temp(expr.val1, p); -2441: Op::eval(p, temp.__get_mp(), expr.val2.__get_mp()); -2441: } -2441: } -2441: const val1_type & get_val1() const { return expr.val1; } -2441: const val2_type & get_val2() const { return expr.val2; } -2441: mp_bitcnt_t get_prec() const -2441: { -2441: mp_bitcnt_t prec1 = expr.val1.get_prec(), -2441: prec2 = expr.val2.get_prec(); -2441: return (prec1 > prec2) ? prec1 : prec2; -2441: } -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: class __gmp_expr, V, Op> > -2441: { -2441: private: -2441: typedef __gmp_expr val1_type; -2441: typedef V val2_type; -2441: -2441: __gmp_binary_expr expr; -2441: public: -2441: __gmp_expr(const val1_type &val1, const val2_type &val2) -2441: : expr(val1, val2) { } -2441: void eval(typename __gmp_resolve_expr::ptr_type p) const -2441: { -2441: expr.val1.eval(p); -2441: Op::eval(p, p, expr.val2); -2441: } -2441: const val1_type & get_val1() const { return expr.val1; } -2441: const val2_type & get_val2() const { return expr.val2; } -2441: mp_bitcnt_t get_prec() const { return expr.val1.get_prec(); } -2441: }; -2441: -2441: template -2441: class __gmp_expr, Op> > -2441: { -2441: private: -2441: typedef U val1_type; -2441: typedef __gmp_expr val2_type; -2441: -2441: __gmp_binary_expr expr; -2441: public: -2441: __gmp_expr(const val1_type &val1, const val2_type &val2) -2441: : expr(val1, val2) { } -2441: void eval(typename __gmp_resolve_expr::ptr_type p) const -2441: { -2441: expr.val2.eval(p); -2441: Op::eval(p, expr.val1, p); -2441: } -2441: const val1_type & get_val1() const { return expr.val1; } -2441: const val2_type & get_val2() const { return expr.val2; } -2441: mp_bitcnt_t get_prec() const { return expr.val2.get_prec(); } -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: class __gmp_expr -2441: , __gmp_expr, Op> > -2441: { -2441: private: -2441: typedef __gmp_expr val1_type; -2441: typedef __gmp_expr val2_type; -2441: -2441: __gmp_binary_expr expr; -2441: public: -2441: __gmp_expr(const val1_type &val1, const val2_type &val2) -2441: : expr(val1, val2) { } -2441: void eval(typename __gmp_resolve_expr::ptr_type p) const -2441: { -2441: __gmp_temp temp2(expr.val2, p); -2441: expr.val1.eval(p); -2441: Op::eval(p, p, temp2.__get_mp()); -2441: } -2441: const val1_type & get_val1() const { return expr.val1; } -2441: const val2_type & get_val2() const { return expr.val2; } -2441: mp_bitcnt_t get_prec() const -2441: { -2441: mp_bitcnt_t prec1 = expr.val1.get_prec(), -2441: prec2 = expr.val2.get_prec(); -2441: return (prec1 > prec2) ? prec1 : prec2; -2441: } -2441: }; -2441: -2441: template -2441: class __gmp_expr -2441: , __gmp_expr, Op> > -2441: { -2441: private: -2441: typedef __gmp_expr val1_type; -2441: typedef __gmp_expr val2_type; -2441: -2441: __gmp_binary_expr expr; -2441: public: -2441: __gmp_expr(const val1_type &val1, const val2_type &val2) -2441: : expr(val1, val2) { } -2441: void eval(typename __gmp_resolve_expr::ptr_type p) const -2441: { -2441: __gmp_temp temp1(expr.val1, p); -2441: expr.val2.eval(p); -2441: Op::eval(p, temp1.__get_mp(), p); -2441: } -2441: const val1_type & get_val1() const { return expr.val1; } -2441: const val2_type & get_val2() const { return expr.val2; } -2441: mp_bitcnt_t get_prec() const -2441: { -2441: mp_bitcnt_t prec1 = expr.val1.get_prec(), -2441: prec2 = expr.val2.get_prec(); -2441: return (prec1 > prec2) ? prec1 : prec2; -2441: } -2441: }; -2441: -2441: template -2441: class __gmp_expr -2441: , __gmp_expr, Op> > -2441: { -2441: private: -2441: typedef __gmp_expr val1_type; -2441: typedef __gmp_expr val2_type; -2441: -2441: __gmp_binary_expr expr; -2441: public: -2441: __gmp_expr(const val1_type &val1, const val2_type &val2) -2441: : expr(val1, val2) { } -2441: void eval(typename __gmp_resolve_expr::ptr_type p) const -2441: { -2441: __gmp_temp temp2(expr.val2, p); -2441: expr.val1.eval(p); -2441: Op::eval(p, p, temp2.__get_mp()); -2441: } -2441: const val1_type & get_val1() const { return expr.val1; } -2441: const val2_type & get_val2() const { return expr.val2; } -2441: mp_bitcnt_t get_prec() const -2441: { -2441: mp_bitcnt_t prec1 = expr.val1.get_prec(), -2441: prec2 = expr.val2.get_prec(); -2441: return (prec1 > prec2) ? prec1 : prec2; -2441: } -2441: }; -2441: # 2761 "/usr/include/gmpxx.h" 3 4 -2441: template <> class __gmp_expr > { private: typedef mpz_class val1_type; typedef mpq_class val2_type; __gmp_binary_expr expr; public: __gmp_expr(const val1_type &val1, const val2_type &val2) : expr(val1, val2) { } void eval(mpq_ptr q) const { __gmp_binary_plus::eval(q, expr.val1.get_mpz_t(), expr.val2.get_mpq_t()); } const val1_type & get_val1() const { return expr.val1; } const val2_type & get_val2() const { return expr.val2; } mp_bitcnt_t get_prec() const { return __gmpf_get_default_prec(); } }; template <> class __gmp_expr > { private: typedef mpq_class val1_type; typedef mpz_class val2_type; __gmp_binary_expr expr; public: __gmp_expr(const val1_type &val1, const val2_type &val2) : expr(val1, val2) { } void eval(mpq_ptr q) const { __gmp_binary_plus::eval(q, expr.val1.get_mpq_t(), expr.val2.get_mpz_t()); } const val1_type & get_val1() const { return expr.val1; } const val2_type & get_val2() const { return expr.val2; } mp_bitcnt_t get_prec() const { return __gmpf_get_default_prec(); } }; template class __gmp_expr , __gmp_binary_plus> > { private: typedef mpz_class val1_type; typedef __gmp_expr val2_type; __gmp_binary_expr expr; public: __gmp_expr(const val1_type &val1, const val2_type &val2) : expr(val1, val2) { } void eval(mpq_ptr q) const { mpq_class temp(expr.val2); __gmp_binary_plus::eval(q, expr.val1.get_mpz_t(), temp.get_mpq_t()); } const val1_type & get_val1() const { return expr.val1; } const val2_type & get_val2() const { return expr.val2; } mp_bitcnt_t get_prec() const { return __gmpf_get_default_prec(); } }; template class __gmp_expr , __gmp_binary_plus> > { private: typedef mpq_class val1_type; typedef __gmp_expr val2_type; __gmp_binary_expr expr; public: __gmp_expr(const val1_type &val1, const val2_type &val2) : expr(val1, val2) { } void eval(mpq_ptr q) const { mpz_class temp(expr.val2); __gmp_binary_plus::eval(q, expr.val1.get_mpq_t(), temp.get_mpz_t()); } const val1_type & get_val1() const { return expr.val1; } const val2_type & get_val2() const { return expr.val2; } mp_bitcnt_t get_prec() const { return __gmpf_get_default_prec(); } }; template class __gmp_expr , mpq_class, __gmp_binary_plus> > { private: typedef __gmp_expr val1_type; typedef mpq_class val2_type; __gmp_binary_expr expr; public: __gmp_expr(const val1_type &val1, const val2_type &val2) : expr(val1, val2) { } void eval(mpq_ptr q) const { mpz_class temp(expr.val1); __gmp_binary_plus::eval(q, temp.get_mpz_t(), expr.val2.get_mpq_t()); } const val1_type & get_val1() const { return expr.val1; } const val2_type & get_val2() const { return expr.val2; } mp_bitcnt_t get_prec() const { return __gmpf_get_default_prec(); } }; template class __gmp_expr , mpz_class, __gmp_binary_plus> > { private: typedef __gmp_expr val1_type; typedef mpz_class val2_type; __gmp_binary_expr expr; public: __gmp_expr(const val1_type &val1, const val2_type &val2) : expr(val1, val2) { } void eval(mpq_ptr q) const { mpq_class temp(expr.val1); __gmp_binary_plus::eval(q, temp.get_mpq_t(), expr.val2.get_mpz_t()); } const val1_type & get_val1() const { return expr.val1; } const val2_type & get_val2() const { return expr.val2; } mp_bitcnt_t get_prec() const { return __gmpf_get_default_prec(); } }; template class __gmp_expr, __gmp_expr, __gmp_binary_plus> > { private: typedef __gmp_expr val1_type; typedef __gmp_expr val2_type; __gmp_binary_expr expr; public: __gmp_expr(const val1_type &val1, const val2_type &val2) : expr(val1, val2) { } void eval(mpq_ptr q) const { mpz_class temp1(expr.val1); expr.val2.eval(q); __gmp_binary_plus::eval(q, temp1.get_mpz_t(), q); } const val1_type & get_val1() const { return expr.val1; } const val2_type & get_val2() const { return expr.val2; } mp_bitcnt_t get_prec() const { return __gmpf_get_default_prec(); } }; template class __gmp_expr, __gmp_expr, __gmp_binary_plus> > { private: typedef __gmp_expr val1_type; typedef __gmp_expr val2_type; __gmp_binary_expr expr; public: __gmp_expr(const val1_type &val1, const val2_type &val2) : expr(val1, val2) { } void eval(mpq_ptr q) const { mpz_class temp2(expr.val2); expr.val1.eval(q); __gmp_binary_plus::eval(q, q, temp2.get_mpz_t()); } const val1_type & get_val1() const { return expr.val1; } const val2_type & get_val2() const { return expr.val2; } mp_bitcnt_t get_prec() const { return __gmpf_get_default_prec(); } }; -2441: template <> class __gmp_expr > { private: typedef mpz_class val1_type; typedef mpq_class val2_type; __gmp_binary_expr expr; public: __gmp_expr(const val1_type &val1, const val2_type &val2) : expr(val1, val2) { } void eval(mpq_ptr q) const { __gmp_binary_minus::eval(q, expr.val1.get_mpz_t(), expr.val2.get_mpq_t()); } const val1_type & get_val1() const { return expr.val1; } const val2_type & get_val2() const { return expr.val2; } mp_bitcnt_t get_prec() const { return __gmpf_get_default_prec(); } }; template <> class __gmp_expr > { private: typedef mpq_class val1_type; typedef mpz_class val2_type; __gmp_binary_expr expr; public: __gmp_expr(const val1_type &val1, const val2_type &val2) : expr(val1, val2) { } void eval(mpq_ptr q) const { __gmp_binary_minus::eval(q, expr.val1.get_mpq_t(), expr.val2.get_mpz_t()); } const val1_type & get_val1() const { return expr.val1; } const val2_type & get_val2() const { return expr.val2; } mp_bitcnt_t get_prec() const { return __gmpf_get_default_prec(); } }; template class __gmp_expr , __gmp_binary_minus> > { private: typedef mpz_class val1_type; typedef __gmp_expr val2_type; __gmp_binary_expr expr; public: __gmp_expr(const val1_type &val1, const val2_type &val2) : expr(val1, val2) { } void eval(mpq_ptr q) const { mpq_class temp(expr.val2); __gmp_binary_minus::eval(q, expr.val1.get_mpz_t(), temp.get_mpq_t()); } const val1_type & get_val1() const { return expr.val1; } const val2_type & get_val2() const { return expr.val2; } mp_bitcnt_t get_prec() const { return __gmpf_get_default_prec(); } }; template class __gmp_expr , __gmp_binary_minus> > { private: typedef mpq_class val1_type; typedef __gmp_expr val2_type; __gmp_binary_expr expr; public: __gmp_expr(const val1_type &val1, const val2_type &val2) : expr(val1, val2) { } void eval(mpq_ptr q) const { mpz_class temp(expr.val2); __gmp_binary_minus::eval(q, expr.val1.get_mpq_t(), temp.get_mpz_t()); } const val1_type & get_val1() const { return expr.val1; } const val2_type & get_val2() const { return expr.val2; } mp_bitcnt_t get_prec() const { return __gmpf_get_default_prec(); } }; template class __gmp_expr , mpq_class, __gmp_binary_minus> > { private: typedef __gmp_expr val1_type; typedef mpq_class val2_type; __gmp_binary_expr expr; public: __gmp_expr(const val1_type &val1, const val2_type &val2) : expr(val1, val2) { } void eval(mpq_ptr q) const { mpz_class temp(expr.val1); __gmp_binary_minus::eval(q, temp.get_mpz_t(), expr.val2.get_mpq_t()); } const val1_type & get_val1() const { return expr.val1; } const val2_type & get_val2() const { return expr.val2; } mp_bitcnt_t get_prec() const { return __gmpf_get_default_prec(); } }; template class __gmp_expr , mpz_class, __gmp_binary_minus> > { private: typedef __gmp_expr val1_type; typedef mpz_class val2_type; __gmp_binary_expr expr; public: __gmp_expr(const val1_type &val1, const val2_type &val2) : expr(val1, val2) { } void eval(mpq_ptr q) const { mpq_class temp(expr.val1); __gmp_binary_minus::eval(q, temp.get_mpq_t(), expr.val2.get_mpz_t()); } const val1_type & get_val1() const { return expr.val1; } const val2_type & get_val2() const { return expr.val2; } mp_bitcnt_t get_prec() const { return __gmpf_get_default_prec(); } }; template class __gmp_expr, __gmp_expr, __gmp_binary_minus> > { private: typedef __gmp_expr val1_type; typedef __gmp_expr val2_type; __gmp_binary_expr expr; public: __gmp_expr(const val1_type &val1, const val2_type &val2) : expr(val1, val2) { } void eval(mpq_ptr q) const { mpz_class temp1(expr.val1); expr.val2.eval(q); __gmp_binary_minus::eval(q, temp1.get_mpz_t(), q); } const val1_type & get_val1() const { return expr.val1; } const val2_type & get_val2() const { return expr.val2; } mp_bitcnt_t get_prec() const { return __gmpf_get_default_prec(); } }; template class __gmp_expr, __gmp_expr, __gmp_binary_minus> > { private: typedef __gmp_expr val1_type; typedef __gmp_expr val2_type; __gmp_binary_expr expr; public: __gmp_expr(const val1_type &val1, const val2_type &val2) : expr(val1, val2) { } void eval(mpq_ptr q) const { mpz_class temp2(expr.val2); expr.val1.eval(q); __gmp_binary_minus::eval(q, q, temp2.get_mpz_t()); } const val1_type & get_val1() const { return expr.val1; } const val2_type & get_val2() const { return expr.val2; } mp_bitcnt_t get_prec() const { return __gmpf_get_default_prec(); } }; -2441: # 3054 "/usr/include/gmpxx.h" 3 4 -2441: template inline __gmp_expr, __gmp_unary_plus> > operator+(const __gmp_expr &expr) { return __gmp_expr, __gmp_unary_plus> >(expr); } -2441: template inline __gmp_expr, __gmp_unary_minus> > operator-(const __gmp_expr &expr) { return __gmp_expr, __gmp_unary_minus> >(expr); } -2441: template inline __gmp_expr, __gmp_unary_com> > operator~(const __gmp_expr &expr) { return __gmp_expr, __gmp_unary_com> >(expr); } -2441: -2441: template inline __gmp_expr::value_type, __gmp_binary_expr<__gmp_expr, __gmp_expr, __gmp_binary_plus> > operator+(const __gmp_expr &expr1, const __gmp_expr &expr2) { return __gmp_expr::value_type, __gmp_binary_expr<__gmp_expr, __gmp_expr, __gmp_binary_plus> > (expr1, expr2); } template inline __gmp_expr , signed long int, __gmp_binary_plus> > operator+(const __gmp_expr &expr, signed char t) { return __gmp_expr , signed long int, __gmp_binary_plus> >(expr, t); } template inline __gmp_expr , __gmp_binary_plus> > operator+(signed char t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_plus> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_binary_plus> > operator+(const __gmp_expr &expr, unsigned char t) { return __gmp_expr , unsigned long int, __gmp_binary_plus> >(expr, t); } template inline __gmp_expr , __gmp_binary_plus> > operator+(unsigned char t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_plus> >(t, expr); } template inline __gmp_expr , signed long int, __gmp_binary_plus> > operator+(const __gmp_expr &expr, signed int t) { return __gmp_expr , signed long int, __gmp_binary_plus> >(expr, t); } template inline __gmp_expr , __gmp_binary_plus> > operator+(signed int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_plus> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_binary_plus> > operator+(const __gmp_expr &expr, unsigned int t) { return __gmp_expr , unsigned long int, __gmp_binary_plus> >(expr, t); } template inline __gmp_expr , __gmp_binary_plus> > operator+(unsigned int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_plus> >(t, expr); } template inline __gmp_expr , signed long int, __gmp_binary_plus> > operator+(const __gmp_expr &expr, signed short int t) { return __gmp_expr , signed long int, __gmp_binary_plus> >(expr, t); } template inline __gmp_expr , __gmp_binary_plus> > operator+(signed short int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_plus> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_binary_plus> > operator+(const __gmp_expr &expr, unsigned short int t) { return __gmp_expr , unsigned long int, __gmp_binary_plus> >(expr, t); } template inline __gmp_expr , __gmp_binary_plus> > operator+(unsigned short int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_plus> >(t, expr); } template inline __gmp_expr , signed long int, __gmp_binary_plus> > operator+(const __gmp_expr &expr, signed long int t) { return __gmp_expr , signed long int, __gmp_binary_plus> >(expr, t); } template inline __gmp_expr , __gmp_binary_plus> > operator+(signed long int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_plus> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_binary_plus> > operator+(const __gmp_expr &expr, unsigned long int t) { return __gmp_expr , unsigned long int, __gmp_binary_plus> >(expr, t); } template inline __gmp_expr , __gmp_binary_plus> > operator+(unsigned long int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_plus> >(t, expr); } template inline __gmp_expr , double, __gmp_binary_plus> > operator+(const __gmp_expr &expr, float t) { return __gmp_expr , double, __gmp_binary_plus> >(expr, t); } template inline __gmp_expr , __gmp_binary_plus> > operator+(float t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_plus> >(t, expr); } template inline __gmp_expr , double, __gmp_binary_plus> > operator+(const __gmp_expr &expr, double t) { return __gmp_expr , double, __gmp_binary_plus> >(expr, t); } template inline __gmp_expr , __gmp_binary_plus> > operator+(double t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_plus> >(t, expr); } -2441: template inline __gmp_expr::value_type, __gmp_binary_expr<__gmp_expr, __gmp_expr, __gmp_binary_minus> > operator-(const __gmp_expr &expr1, const __gmp_expr &expr2) { return __gmp_expr::value_type, __gmp_binary_expr<__gmp_expr, __gmp_expr, __gmp_binary_minus> > (expr1, expr2); } template inline __gmp_expr , signed long int, __gmp_binary_minus> > operator-(const __gmp_expr &expr, signed char t) { return __gmp_expr , signed long int, __gmp_binary_minus> >(expr, t); } template inline __gmp_expr , __gmp_binary_minus> > operator-(signed char t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_minus> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_binary_minus> > operator-(const __gmp_expr &expr, unsigned char t) { return __gmp_expr , unsigned long int, __gmp_binary_minus> >(expr, t); } template inline __gmp_expr , __gmp_binary_minus> > operator-(unsigned char t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_minus> >(t, expr); } template inline __gmp_expr , signed long int, __gmp_binary_minus> > operator-(const __gmp_expr &expr, signed int t) { return __gmp_expr , signed long int, __gmp_binary_minus> >(expr, t); } template inline __gmp_expr , __gmp_binary_minus> > operator-(signed int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_minus> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_binary_minus> > operator-(const __gmp_expr &expr, unsigned int t) { return __gmp_expr , unsigned long int, __gmp_binary_minus> >(expr, t); } template inline __gmp_expr , __gmp_binary_minus> > operator-(unsigned int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_minus> >(t, expr); } template inline __gmp_expr , signed long int, __gmp_binary_minus> > operator-(const __gmp_expr &expr, signed short int t) { return __gmp_expr , signed long int, __gmp_binary_minus> >(expr, t); } template inline __gmp_expr , __gmp_binary_minus> > operator-(signed short int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_minus> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_binary_minus> > operator-(const __gmp_expr &expr, unsigned short int t) { return __gmp_expr , unsigned long int, __gmp_binary_minus> >(expr, t); } template inline __gmp_expr , __gmp_binary_minus> > operator-(unsigned short int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_minus> >(t, expr); } template inline __gmp_expr , signed long int, __gmp_binary_minus> > operator-(const __gmp_expr &expr, signed long int t) { return __gmp_expr , signed long int, __gmp_binary_minus> >(expr, t); } template inline __gmp_expr , __gmp_binary_minus> > operator-(signed long int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_minus> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_binary_minus> > operator-(const __gmp_expr &expr, unsigned long int t) { return __gmp_expr , unsigned long int, __gmp_binary_minus> >(expr, t); } template inline __gmp_expr , __gmp_binary_minus> > operator-(unsigned long int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_minus> >(t, expr); } template inline __gmp_expr , double, __gmp_binary_minus> > operator-(const __gmp_expr &expr, float t) { return __gmp_expr , double, __gmp_binary_minus> >(expr, t); } template inline __gmp_expr , __gmp_binary_minus> > operator-(float t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_minus> >(t, expr); } template inline __gmp_expr , double, __gmp_binary_minus> > operator-(const __gmp_expr &expr, double t) { return __gmp_expr , double, __gmp_binary_minus> >(expr, t); } template inline __gmp_expr , __gmp_binary_minus> > operator-(double t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_minus> >(t, expr); } -2441: template inline __gmp_expr::value_type, __gmp_binary_expr<__gmp_expr, __gmp_expr, __gmp_binary_multiplies> > operator*(const __gmp_expr &expr1, const __gmp_expr &expr2) { return __gmp_expr::value_type, __gmp_binary_expr<__gmp_expr, __gmp_expr, __gmp_binary_multiplies> > (expr1, expr2); } template inline __gmp_expr , signed long int, __gmp_binary_multiplies> > operator*(const __gmp_expr &expr, signed char t) { return __gmp_expr , signed long int, __gmp_binary_multiplies> >(expr, t); } template inline __gmp_expr , __gmp_binary_multiplies> > operator*(signed char t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_multiplies> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_binary_multiplies> > operator*(const __gmp_expr &expr, unsigned char t) { return __gmp_expr , unsigned long int, __gmp_binary_multiplies> >(expr, t); } template inline __gmp_expr , __gmp_binary_multiplies> > operator*(unsigned char t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_multiplies> >(t, expr); } template inline __gmp_expr , signed long int, __gmp_binary_multiplies> > operator*(const __gmp_expr &expr, signed int t) { return __gmp_expr , signed long int, __gmp_binary_multiplies> >(expr, t); } template inline __gmp_expr , __gmp_binary_multiplies> > operator*(signed int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_multiplies> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_binary_multiplies> > operator*(const __gmp_expr &expr, unsigned int t) { return __gmp_expr , unsigned long int, __gmp_binary_multiplies> >(expr, t); } template inline __gmp_expr , __gmp_binary_multiplies> > operator*(unsigned int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_multiplies> >(t, expr); } template inline __gmp_expr , signed long int, __gmp_binary_multiplies> > operator*(const __gmp_expr &expr, signed short int t) { return __gmp_expr , signed long int, __gmp_binary_multiplies> >(expr, t); } template inline __gmp_expr , __gmp_binary_multiplies> > operator*(signed short int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_multiplies> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_binary_multiplies> > operator*(const __gmp_expr &expr, unsigned short int t) { return __gmp_expr , unsigned long int, __gmp_binary_multiplies> >(expr, t); } template inline __gmp_expr , __gmp_binary_multiplies> > operator*(unsigned short int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_multiplies> >(t, expr); } template inline __gmp_expr , signed long int, __gmp_binary_multiplies> > operator*(const __gmp_expr &expr, signed long int t) { return __gmp_expr , signed long int, __gmp_binary_multiplies> >(expr, t); } template inline __gmp_expr , __gmp_binary_multiplies> > operator*(signed long int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_multiplies> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_binary_multiplies> > operator*(const __gmp_expr &expr, unsigned long int t) { return __gmp_expr , unsigned long int, __gmp_binary_multiplies> >(expr, t); } template inline __gmp_expr , __gmp_binary_multiplies> > operator*(unsigned long int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_multiplies> >(t, expr); } template inline __gmp_expr , double, __gmp_binary_multiplies> > operator*(const __gmp_expr &expr, float t) { return __gmp_expr , double, __gmp_binary_multiplies> >(expr, t); } template inline __gmp_expr , __gmp_binary_multiplies> > operator*(float t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_multiplies> >(t, expr); } template inline __gmp_expr , double, __gmp_binary_multiplies> > operator*(const __gmp_expr &expr, double t) { return __gmp_expr , double, __gmp_binary_multiplies> >(expr, t); } template inline __gmp_expr , __gmp_binary_multiplies> > operator*(double t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_multiplies> >(t, expr); } -2441: template inline __gmp_expr::value_type, __gmp_binary_expr<__gmp_expr, __gmp_expr, __gmp_binary_divides> > operator/(const __gmp_expr &expr1, const __gmp_expr &expr2) { return __gmp_expr::value_type, __gmp_binary_expr<__gmp_expr, __gmp_expr, __gmp_binary_divides> > (expr1, expr2); } template inline __gmp_expr , signed long int, __gmp_binary_divides> > operator/(const __gmp_expr &expr, signed char t) { return __gmp_expr , signed long int, __gmp_binary_divides> >(expr, t); } template inline __gmp_expr , __gmp_binary_divides> > operator/(signed char t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_divides> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_binary_divides> > operator/(const __gmp_expr &expr, unsigned char t) { return __gmp_expr , unsigned long int, __gmp_binary_divides> >(expr, t); } template inline __gmp_expr , __gmp_binary_divides> > operator/(unsigned char t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_divides> >(t, expr); } template inline __gmp_expr , signed long int, __gmp_binary_divides> > operator/(const __gmp_expr &expr, signed int t) { return __gmp_expr , signed long int, __gmp_binary_divides> >(expr, t); } template inline __gmp_expr , __gmp_binary_divides> > operator/(signed int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_divides> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_binary_divides> > operator/(const __gmp_expr &expr, unsigned int t) { return __gmp_expr , unsigned long int, __gmp_binary_divides> >(expr, t); } template inline __gmp_expr , __gmp_binary_divides> > operator/(unsigned int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_divides> >(t, expr); } template inline __gmp_expr , signed long int, __gmp_binary_divides> > operator/(const __gmp_expr &expr, signed short int t) { return __gmp_expr , signed long int, __gmp_binary_divides> >(expr, t); } template inline __gmp_expr , __gmp_binary_divides> > operator/(signed short int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_divides> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_binary_divides> > operator/(const __gmp_expr &expr, unsigned short int t) { return __gmp_expr , unsigned long int, __gmp_binary_divides> >(expr, t); } template inline __gmp_expr , __gmp_binary_divides> > operator/(unsigned short int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_divides> >(t, expr); } template inline __gmp_expr , signed long int, __gmp_binary_divides> > operator/(const __gmp_expr &expr, signed long int t) { return __gmp_expr , signed long int, __gmp_binary_divides> >(expr, t); } template inline __gmp_expr , __gmp_binary_divides> > operator/(signed long int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_divides> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_binary_divides> > operator/(const __gmp_expr &expr, unsigned long int t) { return __gmp_expr , unsigned long int, __gmp_binary_divides> >(expr, t); } template inline __gmp_expr , __gmp_binary_divides> > operator/(unsigned long int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_divides> >(t, expr); } template inline __gmp_expr , double, __gmp_binary_divides> > operator/(const __gmp_expr &expr, float t) { return __gmp_expr , double, __gmp_binary_divides> >(expr, t); } template inline __gmp_expr , __gmp_binary_divides> > operator/(float t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_divides> >(t, expr); } template inline __gmp_expr , double, __gmp_binary_divides> > operator/(const __gmp_expr &expr, double t) { return __gmp_expr , double, __gmp_binary_divides> >(expr, t); } template inline __gmp_expr , __gmp_binary_divides> > operator/(double t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_divides> >(t, expr); } -2441: template inline __gmp_expr::value_type, __gmp_binary_expr<__gmp_expr, __gmp_expr, __gmp_binary_modulus> > operator%(const __gmp_expr &expr1, const __gmp_expr &expr2) { return __gmp_expr::value_type, __gmp_binary_expr<__gmp_expr, __gmp_expr, __gmp_binary_modulus> > (expr1, expr2); } template inline __gmp_expr , signed long int, __gmp_binary_modulus> > operator%(const __gmp_expr &expr, signed char t) { return __gmp_expr , signed long int, __gmp_binary_modulus> >(expr, t); } template inline __gmp_expr , __gmp_binary_modulus> > operator%(signed char t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_modulus> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_binary_modulus> > operator%(const __gmp_expr &expr, unsigned char t) { return __gmp_expr , unsigned long int, __gmp_binary_modulus> >(expr, t); } template inline __gmp_expr , __gmp_binary_modulus> > operator%(unsigned char t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_modulus> >(t, expr); } template inline __gmp_expr , signed long int, __gmp_binary_modulus> > operator%(const __gmp_expr &expr, signed int t) { return __gmp_expr , signed long int, __gmp_binary_modulus> >(expr, t); } template inline __gmp_expr , __gmp_binary_modulus> > operator%(signed int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_modulus> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_binary_modulus> > operator%(const __gmp_expr &expr, unsigned int t) { return __gmp_expr , unsigned long int, __gmp_binary_modulus> >(expr, t); } template inline __gmp_expr , __gmp_binary_modulus> > operator%(unsigned int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_modulus> >(t, expr); } template inline __gmp_expr , signed long int, __gmp_binary_modulus> > operator%(const __gmp_expr &expr, signed short int t) { return __gmp_expr , signed long int, __gmp_binary_modulus> >(expr, t); } template inline __gmp_expr , __gmp_binary_modulus> > operator%(signed short int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_modulus> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_binary_modulus> > operator%(const __gmp_expr &expr, unsigned short int t) { return __gmp_expr , unsigned long int, __gmp_binary_modulus> >(expr, t); } template inline __gmp_expr , __gmp_binary_modulus> > operator%(unsigned short int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_modulus> >(t, expr); } template inline __gmp_expr , signed long int, __gmp_binary_modulus> > operator%(const __gmp_expr &expr, signed long int t) { return __gmp_expr , signed long int, __gmp_binary_modulus> >(expr, t); } template inline __gmp_expr , __gmp_binary_modulus> > operator%(signed long int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_modulus> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_binary_modulus> > operator%(const __gmp_expr &expr, unsigned long int t) { return __gmp_expr , unsigned long int, __gmp_binary_modulus> >(expr, t); } template inline __gmp_expr , __gmp_binary_modulus> > operator%(unsigned long int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_modulus> >(t, expr); } template inline __gmp_expr , double, __gmp_binary_modulus> > operator%(const __gmp_expr &expr, float t) { return __gmp_expr , double, __gmp_binary_modulus> >(expr, t); } template inline __gmp_expr , __gmp_binary_modulus> > operator%(float t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_modulus> >(t, expr); } template inline __gmp_expr , double, __gmp_binary_modulus> > operator%(const __gmp_expr &expr, double t) { return __gmp_expr , double, __gmp_binary_modulus> >(expr, t); } template inline __gmp_expr , __gmp_binary_modulus> > operator%(double t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_modulus> >(t, expr); } -2441: template inline __gmp_expr::value_type, __gmp_binary_expr<__gmp_expr, __gmp_expr, __gmp_binary_and> > operator&(const __gmp_expr &expr1, const __gmp_expr &expr2) { return __gmp_expr::value_type, __gmp_binary_expr<__gmp_expr, __gmp_expr, __gmp_binary_and> > (expr1, expr2); } template inline __gmp_expr , signed long int, __gmp_binary_and> > operator&(const __gmp_expr &expr, signed char t) { return __gmp_expr , signed long int, __gmp_binary_and> >(expr, t); } template inline __gmp_expr , __gmp_binary_and> > operator&(signed char t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_and> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_binary_and> > operator&(const __gmp_expr &expr, unsigned char t) { return __gmp_expr , unsigned long int, __gmp_binary_and> >(expr, t); } template inline __gmp_expr , __gmp_binary_and> > operator&(unsigned char t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_and> >(t, expr); } template inline __gmp_expr , signed long int, __gmp_binary_and> > operator&(const __gmp_expr &expr, signed int t) { return __gmp_expr , signed long int, __gmp_binary_and> >(expr, t); } template inline __gmp_expr , __gmp_binary_and> > operator&(signed int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_and> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_binary_and> > operator&(const __gmp_expr &expr, unsigned int t) { return __gmp_expr , unsigned long int, __gmp_binary_and> >(expr, t); } template inline __gmp_expr , __gmp_binary_and> > operator&(unsigned int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_and> >(t, expr); } template inline __gmp_expr , signed long int, __gmp_binary_and> > operator&(const __gmp_expr &expr, signed short int t) { return __gmp_expr , signed long int, __gmp_binary_and> >(expr, t); } template inline __gmp_expr , __gmp_binary_and> > operator&(signed short int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_and> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_binary_and> > operator&(const __gmp_expr &expr, unsigned short int t) { return __gmp_expr , unsigned long int, __gmp_binary_and> >(expr, t); } template inline __gmp_expr , __gmp_binary_and> > operator&(unsigned short int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_and> >(t, expr); } template inline __gmp_expr , signed long int, __gmp_binary_and> > operator&(const __gmp_expr &expr, signed long int t) { return __gmp_expr , signed long int, __gmp_binary_and> >(expr, t); } template inline __gmp_expr , __gmp_binary_and> > operator&(signed long int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_and> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_binary_and> > operator&(const __gmp_expr &expr, unsigned long int t) { return __gmp_expr , unsigned long int, __gmp_binary_and> >(expr, t); } template inline __gmp_expr , __gmp_binary_and> > operator&(unsigned long int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_and> >(t, expr); } template inline __gmp_expr , double, __gmp_binary_and> > operator&(const __gmp_expr &expr, float t) { return __gmp_expr , double, __gmp_binary_and> >(expr, t); } template inline __gmp_expr , __gmp_binary_and> > operator&(float t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_and> >(t, expr); } template inline __gmp_expr , double, __gmp_binary_and> > operator&(const __gmp_expr &expr, double t) { return __gmp_expr , double, __gmp_binary_and> >(expr, t); } template inline __gmp_expr , __gmp_binary_and> > operator&(double t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_and> >(t, expr); } -2441: template inline __gmp_expr::value_type, __gmp_binary_expr<__gmp_expr, __gmp_expr, __gmp_binary_ior> > operator|(const __gmp_expr &expr1, const __gmp_expr &expr2) { return __gmp_expr::value_type, __gmp_binary_expr<__gmp_expr, __gmp_expr, __gmp_binary_ior> > (expr1, expr2); } template inline __gmp_expr , signed long int, __gmp_binary_ior> > operator|(const __gmp_expr &expr, signed char t) { return __gmp_expr , signed long int, __gmp_binary_ior> >(expr, t); } template inline __gmp_expr , __gmp_binary_ior> > operator|(signed char t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_ior> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_binary_ior> > operator|(const __gmp_expr &expr, unsigned char t) { return __gmp_expr , unsigned long int, __gmp_binary_ior> >(expr, t); } template inline __gmp_expr , __gmp_binary_ior> > operator|(unsigned char t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_ior> >(t, expr); } template inline __gmp_expr , signed long int, __gmp_binary_ior> > operator|(const __gmp_expr &expr, signed int t) { return __gmp_expr , signed long int, __gmp_binary_ior> >(expr, t); } template inline __gmp_expr , __gmp_binary_ior> > operator|(signed int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_ior> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_binary_ior> > operator|(const __gmp_expr &expr, unsigned int t) { return __gmp_expr , unsigned long int, __gmp_binary_ior> >(expr, t); } template inline __gmp_expr , __gmp_binary_ior> > operator|(unsigned int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_ior> >(t, expr); } template inline __gmp_expr , signed long int, __gmp_binary_ior> > operator|(const __gmp_expr &expr, signed short int t) { return __gmp_expr , signed long int, __gmp_binary_ior> >(expr, t); } template inline __gmp_expr , __gmp_binary_ior> > operator|(signed short int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_ior> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_binary_ior> > operator|(const __gmp_expr &expr, unsigned short int t) { return __gmp_expr , unsigned long int, __gmp_binary_ior> >(expr, t); } template inline __gmp_expr , __gmp_binary_ior> > operator|(unsigned short int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_ior> >(t, expr); } template inline __gmp_expr , signed long int, __gmp_binary_ior> > operator|(const __gmp_expr &expr, signed long int t) { return __gmp_expr , signed long int, __gmp_binary_ior> >(expr, t); } template inline __gmp_expr , __gmp_binary_ior> > operator|(signed long int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_ior> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_binary_ior> > operator|(const __gmp_expr &expr, unsigned long int t) { return __gmp_expr , unsigned long int, __gmp_binary_ior> >(expr, t); } template inline __gmp_expr , __gmp_binary_ior> > operator|(unsigned long int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_ior> >(t, expr); } template inline __gmp_expr , double, __gmp_binary_ior> > operator|(const __gmp_expr &expr, float t) { return __gmp_expr , double, __gmp_binary_ior> >(expr, t); } template inline __gmp_expr , __gmp_binary_ior> > operator|(float t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_ior> >(t, expr); } template inline __gmp_expr , double, __gmp_binary_ior> > operator|(const __gmp_expr &expr, double t) { return __gmp_expr , double, __gmp_binary_ior> >(expr, t); } template inline __gmp_expr , __gmp_binary_ior> > operator|(double t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_ior> >(t, expr); } -2441: template inline __gmp_expr::value_type, __gmp_binary_expr<__gmp_expr, __gmp_expr, __gmp_binary_xor> > operator^(const __gmp_expr &expr1, const __gmp_expr &expr2) { return __gmp_expr::value_type, __gmp_binary_expr<__gmp_expr, __gmp_expr, __gmp_binary_xor> > (expr1, expr2); } template inline __gmp_expr , signed long int, __gmp_binary_xor> > operator^(const __gmp_expr &expr, signed char t) { return __gmp_expr , signed long int, __gmp_binary_xor> >(expr, t); } template inline __gmp_expr , __gmp_binary_xor> > operator^(signed char t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_xor> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_binary_xor> > operator^(const __gmp_expr &expr, unsigned char t) { return __gmp_expr , unsigned long int, __gmp_binary_xor> >(expr, t); } template inline __gmp_expr , __gmp_binary_xor> > operator^(unsigned char t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_xor> >(t, expr); } template inline __gmp_expr , signed long int, __gmp_binary_xor> > operator^(const __gmp_expr &expr, signed int t) { return __gmp_expr , signed long int, __gmp_binary_xor> >(expr, t); } template inline __gmp_expr , __gmp_binary_xor> > operator^(signed int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_xor> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_binary_xor> > operator^(const __gmp_expr &expr, unsigned int t) { return __gmp_expr , unsigned long int, __gmp_binary_xor> >(expr, t); } template inline __gmp_expr , __gmp_binary_xor> > operator^(unsigned int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_xor> >(t, expr); } template inline __gmp_expr , signed long int, __gmp_binary_xor> > operator^(const __gmp_expr &expr, signed short int t) { return __gmp_expr , signed long int, __gmp_binary_xor> >(expr, t); } template inline __gmp_expr , __gmp_binary_xor> > operator^(signed short int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_xor> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_binary_xor> > operator^(const __gmp_expr &expr, unsigned short int t) { return __gmp_expr , unsigned long int, __gmp_binary_xor> >(expr, t); } template inline __gmp_expr , __gmp_binary_xor> > operator^(unsigned short int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_xor> >(t, expr); } template inline __gmp_expr , signed long int, __gmp_binary_xor> > operator^(const __gmp_expr &expr, signed long int t) { return __gmp_expr , signed long int, __gmp_binary_xor> >(expr, t); } template inline __gmp_expr , __gmp_binary_xor> > operator^(signed long int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_xor> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_binary_xor> > operator^(const __gmp_expr &expr, unsigned long int t) { return __gmp_expr , unsigned long int, __gmp_binary_xor> >(expr, t); } template inline __gmp_expr , __gmp_binary_xor> > operator^(unsigned long int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_xor> >(t, expr); } template inline __gmp_expr , double, __gmp_binary_xor> > operator^(const __gmp_expr &expr, float t) { return __gmp_expr , double, __gmp_binary_xor> >(expr, t); } template inline __gmp_expr , __gmp_binary_xor> > operator^(float t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_xor> >(t, expr); } template inline __gmp_expr , double, __gmp_binary_xor> > operator^(const __gmp_expr &expr, double t) { return __gmp_expr , double, __gmp_binary_xor> >(expr, t); } template inline __gmp_expr , __gmp_binary_xor> > operator^(double t, const __gmp_expr &expr) { return __gmp_expr , __gmp_binary_xor> >(t, expr); } -2441: -2441: template inline __gmp_expr , mp_bitcnt_t, __gmp_binary_lshift> > operator<<(const __gmp_expr &expr, mp_bitcnt_t l) { return __gmp_expr, mp_bitcnt_t, __gmp_binary_lshift> >(expr, l); } -2441: template inline __gmp_expr , mp_bitcnt_t, __gmp_binary_rshift> > operator>>(const __gmp_expr &expr, mp_bitcnt_t l) { return __gmp_expr, mp_bitcnt_t, __gmp_binary_rshift> >(expr, l); } -2441: -2441: template inline bool operator==(const __gmp_expr &expr1, const __gmp_expr &expr2) { __gmp_expr const& temp1(expr1); __gmp_expr const& temp2(expr2); return __gmp_binary_equal::eval(temp1.__get_mp(), temp2.__get_mp()); } template inline bool operator==(const __gmp_expr &expr, signed char t) { __gmp_expr const& temp(expr); return __gmp_binary_equal::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator==(signed char t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_binary_equal::eval(static_cast(t), temp.__get_mp()); } template inline bool operator==(const __gmp_expr &expr, unsigned char t) { __gmp_expr const& temp(expr); return __gmp_binary_equal::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator==(unsigned char t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_binary_equal::eval(static_cast(t), temp.__get_mp()); } template inline bool operator==(const __gmp_expr &expr, signed int t) { __gmp_expr const& temp(expr); return __gmp_binary_equal::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator==(signed int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_binary_equal::eval(static_cast(t), temp.__get_mp()); } template inline bool operator==(const __gmp_expr &expr, unsigned int t) { __gmp_expr const& temp(expr); return __gmp_binary_equal::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator==(unsigned int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_binary_equal::eval(static_cast(t), temp.__get_mp()); } template inline bool operator==(const __gmp_expr &expr, signed short int t) { __gmp_expr const& temp(expr); return __gmp_binary_equal::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator==(signed short int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_binary_equal::eval(static_cast(t), temp.__get_mp()); } template inline bool operator==(const __gmp_expr &expr, unsigned short int t) { __gmp_expr const& temp(expr); return __gmp_binary_equal::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator==(unsigned short int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_binary_equal::eval(static_cast(t), temp.__get_mp()); } template inline bool operator==(const __gmp_expr &expr, signed long int t) { __gmp_expr const& temp(expr); return __gmp_binary_equal::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator==(signed long int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_binary_equal::eval(static_cast(t), temp.__get_mp()); } template inline bool operator==(const __gmp_expr &expr, unsigned long int t) { __gmp_expr const& temp(expr); return __gmp_binary_equal::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator==(unsigned long int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_binary_equal::eval(static_cast(t), temp.__get_mp()); } template inline bool operator==(const __gmp_expr &expr, float t) { __gmp_expr const& temp(expr); return __gmp_binary_equal::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator==(float t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_binary_equal::eval(static_cast(t), temp.__get_mp()); } template inline bool operator==(const __gmp_expr &expr, double t) { __gmp_expr const& temp(expr); return __gmp_binary_equal::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator==(double t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_binary_equal::eval(static_cast(t), temp.__get_mp()); } -2441: template inline bool operator!=(const __gmp_expr &expr1, const __gmp_expr &expr2) { __gmp_expr const& temp1(expr1); __gmp_expr const& temp2(expr2); return ! __gmp_binary_equal::eval(temp1.__get_mp(), temp2.__get_mp()); } template inline bool operator!=(const __gmp_expr &expr, signed char t) { __gmp_expr const& temp(expr); return ! __gmp_binary_equal::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator!=(signed char t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return ! __gmp_binary_equal::eval(static_cast(t), temp.__get_mp()); } template inline bool operator!=(const __gmp_expr &expr, unsigned char t) { __gmp_expr const& temp(expr); return ! __gmp_binary_equal::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator!=(unsigned char t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return ! __gmp_binary_equal::eval(static_cast(t), temp.__get_mp()); } template inline bool operator!=(const __gmp_expr &expr, signed int t) { __gmp_expr const& temp(expr); return ! __gmp_binary_equal::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator!=(signed int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return ! __gmp_binary_equal::eval(static_cast(t), temp.__get_mp()); } template inline bool operator!=(const __gmp_expr &expr, unsigned int t) { __gmp_expr const& temp(expr); return ! __gmp_binary_equal::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator!=(unsigned int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return ! __gmp_binary_equal::eval(static_cast(t), temp.__get_mp()); } template inline bool operator!=(const __gmp_expr &expr, signed short int t) { __gmp_expr const& temp(expr); return ! __gmp_binary_equal::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator!=(signed short int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return ! __gmp_binary_equal::eval(static_cast(t), temp.__get_mp()); } template inline bool operator!=(const __gmp_expr &expr, unsigned short int t) { __gmp_expr const& temp(expr); return ! __gmp_binary_equal::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator!=(unsigned short int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return ! __gmp_binary_equal::eval(static_cast(t), temp.__get_mp()); } template inline bool operator!=(const __gmp_expr &expr, signed long int t) { __gmp_expr const& temp(expr); return ! __gmp_binary_equal::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator!=(signed long int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return ! __gmp_binary_equal::eval(static_cast(t), temp.__get_mp()); } template inline bool operator!=(const __gmp_expr &expr, unsigned long int t) { __gmp_expr const& temp(expr); return ! __gmp_binary_equal::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator!=(unsigned long int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return ! __gmp_binary_equal::eval(static_cast(t), temp.__get_mp()); } template inline bool operator!=(const __gmp_expr &expr, float t) { __gmp_expr const& temp(expr); return ! __gmp_binary_equal::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator!=(float t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return ! __gmp_binary_equal::eval(static_cast(t), temp.__get_mp()); } template inline bool operator!=(const __gmp_expr &expr, double t) { __gmp_expr const& temp(expr); return ! __gmp_binary_equal::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator!=(double t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return ! __gmp_binary_equal::eval(static_cast(t), temp.__get_mp()); } -2441: template inline bool operator<(const __gmp_expr &expr1, const __gmp_expr &expr2) { __gmp_expr const& temp1(expr1); __gmp_expr const& temp2(expr2); return __gmp_binary_less::eval(temp1.__get_mp(), temp2.__get_mp()); } template inline bool operator<(const __gmp_expr &expr, signed char t) { __gmp_expr const& temp(expr); return __gmp_binary_less::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator<(signed char t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_binary_less::eval(static_cast(t), temp.__get_mp()); } template inline bool operator<(const __gmp_expr &expr, unsigned char t) { __gmp_expr const& temp(expr); return __gmp_binary_less::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator<(unsigned char t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_binary_less::eval(static_cast(t), temp.__get_mp()); } template inline bool operator<(const __gmp_expr &expr, signed int t) { __gmp_expr const& temp(expr); return __gmp_binary_less::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator<(signed int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_binary_less::eval(static_cast(t), temp.__get_mp()); } template inline bool operator<(const __gmp_expr &expr, unsigned int t) { __gmp_expr const& temp(expr); return __gmp_binary_less::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator<(unsigned int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_binary_less::eval(static_cast(t), temp.__get_mp()); } template inline bool operator<(const __gmp_expr &expr, signed short int t) { __gmp_expr const& temp(expr); return __gmp_binary_less::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator<(signed short int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_binary_less::eval(static_cast(t), temp.__get_mp()); } template inline bool operator<(const __gmp_expr &expr, unsigned short int t) { __gmp_expr const& temp(expr); return __gmp_binary_less::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator<(unsigned short int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_binary_less::eval(static_cast(t), temp.__get_mp()); } template inline bool operator<(const __gmp_expr &expr, signed long int t) { __gmp_expr const& temp(expr); return __gmp_binary_less::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator<(signed long int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_binary_less::eval(static_cast(t), temp.__get_mp()); } template inline bool operator<(const __gmp_expr &expr, unsigned long int t) { __gmp_expr const& temp(expr); return __gmp_binary_less::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator<(unsigned long int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_binary_less::eval(static_cast(t), temp.__get_mp()); } template inline bool operator<(const __gmp_expr &expr, float t) { __gmp_expr const& temp(expr); return __gmp_binary_less::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator<(float t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_binary_less::eval(static_cast(t), temp.__get_mp()); } template inline bool operator<(const __gmp_expr &expr, double t) { __gmp_expr const& temp(expr); return __gmp_binary_less::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator<(double t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_binary_less::eval(static_cast(t), temp.__get_mp()); } -2441: template inline bool operator<=(const __gmp_expr &expr1, const __gmp_expr &expr2) { __gmp_expr const& temp1(expr1); __gmp_expr const& temp2(expr2); return ! __gmp_binary_greater::eval(temp1.__get_mp(), temp2.__get_mp()); } template inline bool operator<=(const __gmp_expr &expr, signed char t) { __gmp_expr const& temp(expr); return ! __gmp_binary_greater::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator<=(signed char t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return ! __gmp_binary_greater::eval(static_cast(t), temp.__get_mp()); } template inline bool operator<=(const __gmp_expr &expr, unsigned char t) { __gmp_expr const& temp(expr); return ! __gmp_binary_greater::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator<=(unsigned char t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return ! __gmp_binary_greater::eval(static_cast(t), temp.__get_mp()); } template inline bool operator<=(const __gmp_expr &expr, signed int t) { __gmp_expr const& temp(expr); return ! __gmp_binary_greater::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator<=(signed int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return ! __gmp_binary_greater::eval(static_cast(t), temp.__get_mp()); } template inline bool operator<=(const __gmp_expr &expr, unsigned int t) { __gmp_expr const& temp(expr); return ! __gmp_binary_greater::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator<=(unsigned int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return ! __gmp_binary_greater::eval(static_cast(t), temp.__get_mp()); } template inline bool operator<=(const __gmp_expr &expr, signed short int t) { __gmp_expr const& temp(expr); return ! __gmp_binary_greater::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator<=(signed short int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return ! __gmp_binary_greater::eval(static_cast(t), temp.__get_mp()); } template inline bool operator<=(const __gmp_expr &expr, unsigned short int t) { __gmp_expr const& temp(expr); return ! __gmp_binary_greater::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator<=(unsigned short int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return ! __gmp_binary_greater::eval(static_cast(t), temp.__get_mp()); } template inline bool operator<=(const __gmp_expr &expr, signed long int t) { __gmp_expr const& temp(expr); return ! __gmp_binary_greater::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator<=(signed long int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return ! __gmp_binary_greater::eval(static_cast(t), temp.__get_mp()); } template inline bool operator<=(const __gmp_expr &expr, unsigned long int t) { __gmp_expr const& temp(expr); return ! __gmp_binary_greater::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator<=(unsigned long int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return ! __gmp_binary_greater::eval(static_cast(t), temp.__get_mp()); } template inline bool operator<=(const __gmp_expr &expr, float t) { __gmp_expr const& temp(expr); return ! __gmp_binary_greater::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator<=(float t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return ! __gmp_binary_greater::eval(static_cast(t), temp.__get_mp()); } template inline bool operator<=(const __gmp_expr &expr, double t) { __gmp_expr const& temp(expr); return ! __gmp_binary_greater::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator<=(double t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return ! __gmp_binary_greater::eval(static_cast(t), temp.__get_mp()); } -2441: template inline bool operator>(const __gmp_expr &expr1, const __gmp_expr &expr2) { __gmp_expr const& temp1(expr1); __gmp_expr const& temp2(expr2); return __gmp_binary_greater::eval(temp1.__get_mp(), temp2.__get_mp()); } template inline bool operator>(const __gmp_expr &expr, signed char t) { __gmp_expr const& temp(expr); return __gmp_binary_greater::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator>(signed char t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_binary_greater::eval(static_cast(t), temp.__get_mp()); } template inline bool operator>(const __gmp_expr &expr, unsigned char t) { __gmp_expr const& temp(expr); return __gmp_binary_greater::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator>(unsigned char t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_binary_greater::eval(static_cast(t), temp.__get_mp()); } template inline bool operator>(const __gmp_expr &expr, signed int t) { __gmp_expr const& temp(expr); return __gmp_binary_greater::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator>(signed int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_binary_greater::eval(static_cast(t), temp.__get_mp()); } template inline bool operator>(const __gmp_expr &expr, unsigned int t) { __gmp_expr const& temp(expr); return __gmp_binary_greater::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator>(unsigned int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_binary_greater::eval(static_cast(t), temp.__get_mp()); } template inline bool operator>(const __gmp_expr &expr, signed short int t) { __gmp_expr const& temp(expr); return __gmp_binary_greater::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator>(signed short int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_binary_greater::eval(static_cast(t), temp.__get_mp()); } template inline bool operator>(const __gmp_expr &expr, unsigned short int t) { __gmp_expr const& temp(expr); return __gmp_binary_greater::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator>(unsigned short int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_binary_greater::eval(static_cast(t), temp.__get_mp()); } template inline bool operator>(const __gmp_expr &expr, signed long int t) { __gmp_expr const& temp(expr); return __gmp_binary_greater::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator>(signed long int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_binary_greater::eval(static_cast(t), temp.__get_mp()); } template inline bool operator>(const __gmp_expr &expr, unsigned long int t) { __gmp_expr const& temp(expr); return __gmp_binary_greater::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator>(unsigned long int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_binary_greater::eval(static_cast(t), temp.__get_mp()); } template inline bool operator>(const __gmp_expr &expr, float t) { __gmp_expr const& temp(expr); return __gmp_binary_greater::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator>(float t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_binary_greater::eval(static_cast(t), temp.__get_mp()); } template inline bool operator>(const __gmp_expr &expr, double t) { __gmp_expr const& temp(expr); return __gmp_binary_greater::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator>(double t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_binary_greater::eval(static_cast(t), temp.__get_mp()); } -2441: template inline bool operator>=(const __gmp_expr &expr1, const __gmp_expr &expr2) { __gmp_expr const& temp1(expr1); __gmp_expr const& temp2(expr2); return ! __gmp_binary_less::eval(temp1.__get_mp(), temp2.__get_mp()); } template inline bool operator>=(const __gmp_expr &expr, signed char t) { __gmp_expr const& temp(expr); return ! __gmp_binary_less::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator>=(signed char t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return ! __gmp_binary_less::eval(static_cast(t), temp.__get_mp()); } template inline bool operator>=(const __gmp_expr &expr, unsigned char t) { __gmp_expr const& temp(expr); return ! __gmp_binary_less::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator>=(unsigned char t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return ! __gmp_binary_less::eval(static_cast(t), temp.__get_mp()); } template inline bool operator>=(const __gmp_expr &expr, signed int t) { __gmp_expr const& temp(expr); return ! __gmp_binary_less::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator>=(signed int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return ! __gmp_binary_less::eval(static_cast(t), temp.__get_mp()); } template inline bool operator>=(const __gmp_expr &expr, unsigned int t) { __gmp_expr const& temp(expr); return ! __gmp_binary_less::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator>=(unsigned int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return ! __gmp_binary_less::eval(static_cast(t), temp.__get_mp()); } template inline bool operator>=(const __gmp_expr &expr, signed short int t) { __gmp_expr const& temp(expr); return ! __gmp_binary_less::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator>=(signed short int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return ! __gmp_binary_less::eval(static_cast(t), temp.__get_mp()); } template inline bool operator>=(const __gmp_expr &expr, unsigned short int t) { __gmp_expr const& temp(expr); return ! __gmp_binary_less::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator>=(unsigned short int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return ! __gmp_binary_less::eval(static_cast(t), temp.__get_mp()); } template inline bool operator>=(const __gmp_expr &expr, signed long int t) { __gmp_expr const& temp(expr); return ! __gmp_binary_less::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator>=(signed long int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return ! __gmp_binary_less::eval(static_cast(t), temp.__get_mp()); } template inline bool operator>=(const __gmp_expr &expr, unsigned long int t) { __gmp_expr const& temp(expr); return ! __gmp_binary_less::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator>=(unsigned long int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return ! __gmp_binary_less::eval(static_cast(t), temp.__get_mp()); } template inline bool operator>=(const __gmp_expr &expr, float t) { __gmp_expr const& temp(expr); return ! __gmp_binary_less::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator>=(float t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return ! __gmp_binary_less::eval(static_cast(t), temp.__get_mp()); } template inline bool operator>=(const __gmp_expr &expr, double t) { __gmp_expr const& temp(expr); return ! __gmp_binary_less::eval(temp.__get_mp(), static_cast(t)); } template inline bool operator>=(double t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return ! __gmp_binary_less::eval(static_cast(t), temp.__get_mp()); } -2441: -2441: template inline __gmp_expr, __gmp_abs_function> > abs(const __gmp_expr &expr) { return __gmp_expr, __gmp_abs_function> >(expr); } -2441: template inline __gmp_expr, __gmp_trunc_function> > trunc(const __gmp_expr &expr) { return __gmp_expr, __gmp_trunc_function> >(expr); } -2441: template inline __gmp_expr, __gmp_floor_function> > floor(const __gmp_expr &expr) { return __gmp_expr, __gmp_floor_function> >(expr); } -2441: template inline __gmp_expr, __gmp_ceil_function> > ceil(const __gmp_expr &expr) { return __gmp_expr, __gmp_ceil_function> >(expr); } -2441: template inline __gmp_expr, __gmp_sqrt_function> > sqrt(const __gmp_expr &expr) { return __gmp_expr, __gmp_sqrt_function> >(expr); } -2441: template inline __gmp_expr::value_type, __gmp_binary_expr<__gmp_expr, __gmp_expr, __gmp_hypot_function> > hypot(const __gmp_expr &expr1, const __gmp_expr &expr2) { return __gmp_expr::value_type, __gmp_binary_expr<__gmp_expr, __gmp_expr, __gmp_hypot_function> > (expr1, expr2); } template inline __gmp_expr , signed long int, __gmp_hypot_function> > hypot(const __gmp_expr &expr, signed char t) { return __gmp_expr , signed long int, __gmp_hypot_function> >(expr, t); } template inline __gmp_expr , __gmp_hypot_function> > hypot(signed char t, const __gmp_expr &expr) { return __gmp_expr , __gmp_hypot_function> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_hypot_function> > hypot(const __gmp_expr &expr, unsigned char t) { return __gmp_expr , unsigned long int, __gmp_hypot_function> >(expr, t); } template inline __gmp_expr , __gmp_hypot_function> > hypot(unsigned char t, const __gmp_expr &expr) { return __gmp_expr , __gmp_hypot_function> >(t, expr); } template inline __gmp_expr , signed long int, __gmp_hypot_function> > hypot(const __gmp_expr &expr, signed int t) { return __gmp_expr , signed long int, __gmp_hypot_function> >(expr, t); } template inline __gmp_expr , __gmp_hypot_function> > hypot(signed int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_hypot_function> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_hypot_function> > hypot(const __gmp_expr &expr, unsigned int t) { return __gmp_expr , unsigned long int, __gmp_hypot_function> >(expr, t); } template inline __gmp_expr , __gmp_hypot_function> > hypot(unsigned int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_hypot_function> >(t, expr); } template inline __gmp_expr , signed long int, __gmp_hypot_function> > hypot(const __gmp_expr &expr, signed short int t) { return __gmp_expr , signed long int, __gmp_hypot_function> >(expr, t); } template inline __gmp_expr , __gmp_hypot_function> > hypot(signed short int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_hypot_function> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_hypot_function> > hypot(const __gmp_expr &expr, unsigned short int t) { return __gmp_expr , unsigned long int, __gmp_hypot_function> >(expr, t); } template inline __gmp_expr , __gmp_hypot_function> > hypot(unsigned short int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_hypot_function> >(t, expr); } template inline __gmp_expr , signed long int, __gmp_hypot_function> > hypot(const __gmp_expr &expr, signed long int t) { return __gmp_expr , signed long int, __gmp_hypot_function> >(expr, t); } template inline __gmp_expr , __gmp_hypot_function> > hypot(signed long int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_hypot_function> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_hypot_function> > hypot(const __gmp_expr &expr, unsigned long int t) { return __gmp_expr , unsigned long int, __gmp_hypot_function> >(expr, t); } template inline __gmp_expr , __gmp_hypot_function> > hypot(unsigned long int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_hypot_function> >(t, expr); } template inline __gmp_expr , double, __gmp_hypot_function> > hypot(const __gmp_expr &expr, float t) { return __gmp_expr , double, __gmp_hypot_function> >(expr, t); } template inline __gmp_expr , __gmp_hypot_function> > hypot(float t, const __gmp_expr &expr) { return __gmp_expr , __gmp_hypot_function> >(t, expr); } template inline __gmp_expr , double, __gmp_hypot_function> > hypot(const __gmp_expr &expr, double t) { return __gmp_expr , double, __gmp_hypot_function> >(expr, t); } template inline __gmp_expr , __gmp_hypot_function> > hypot(double t, const __gmp_expr &expr) { return __gmp_expr , __gmp_hypot_function> >(t, expr); } -2441: template inline __gmp_expr::value_type, __gmp_binary_expr<__gmp_expr, __gmp_expr, __gmp_gcd_function> > gcd(const __gmp_expr &expr1, const __gmp_expr &expr2) { return __gmp_expr::value_type, __gmp_binary_expr<__gmp_expr, __gmp_expr, __gmp_gcd_function> > (expr1, expr2); } template inline __gmp_expr , signed long int, __gmp_gcd_function> > gcd(const __gmp_expr &expr, signed char t) { return __gmp_expr , signed long int, __gmp_gcd_function> >(expr, t); } template inline __gmp_expr , __gmp_gcd_function> > gcd(signed char t, const __gmp_expr &expr) { return __gmp_expr , __gmp_gcd_function> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_gcd_function> > gcd(const __gmp_expr &expr, unsigned char t) { return __gmp_expr , unsigned long int, __gmp_gcd_function> >(expr, t); } template inline __gmp_expr , __gmp_gcd_function> > gcd(unsigned char t, const __gmp_expr &expr) { return __gmp_expr , __gmp_gcd_function> >(t, expr); } template inline __gmp_expr , signed long int, __gmp_gcd_function> > gcd(const __gmp_expr &expr, signed int t) { return __gmp_expr , signed long int, __gmp_gcd_function> >(expr, t); } template inline __gmp_expr , __gmp_gcd_function> > gcd(signed int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_gcd_function> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_gcd_function> > gcd(const __gmp_expr &expr, unsigned int t) { return __gmp_expr , unsigned long int, __gmp_gcd_function> >(expr, t); } template inline __gmp_expr , __gmp_gcd_function> > gcd(unsigned int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_gcd_function> >(t, expr); } template inline __gmp_expr , signed long int, __gmp_gcd_function> > gcd(const __gmp_expr &expr, signed short int t) { return __gmp_expr , signed long int, __gmp_gcd_function> >(expr, t); } template inline __gmp_expr , __gmp_gcd_function> > gcd(signed short int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_gcd_function> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_gcd_function> > gcd(const __gmp_expr &expr, unsigned short int t) { return __gmp_expr , unsigned long int, __gmp_gcd_function> >(expr, t); } template inline __gmp_expr , __gmp_gcd_function> > gcd(unsigned short int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_gcd_function> >(t, expr); } template inline __gmp_expr , signed long int, __gmp_gcd_function> > gcd(const __gmp_expr &expr, signed long int t) { return __gmp_expr , signed long int, __gmp_gcd_function> >(expr, t); } template inline __gmp_expr , __gmp_gcd_function> > gcd(signed long int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_gcd_function> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_gcd_function> > gcd(const __gmp_expr &expr, unsigned long int t) { return __gmp_expr , unsigned long int, __gmp_gcd_function> >(expr, t); } template inline __gmp_expr , __gmp_gcd_function> > gcd(unsigned long int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_gcd_function> >(t, expr); } template inline __gmp_expr , double, __gmp_gcd_function> > gcd(const __gmp_expr &expr, float t) { return __gmp_expr , double, __gmp_gcd_function> >(expr, t); } template inline __gmp_expr , __gmp_gcd_function> > gcd(float t, const __gmp_expr &expr) { return __gmp_expr , __gmp_gcd_function> >(t, expr); } template inline __gmp_expr , double, __gmp_gcd_function> > gcd(const __gmp_expr &expr, double t) { return __gmp_expr , double, __gmp_gcd_function> >(expr, t); } template inline __gmp_expr , __gmp_gcd_function> > gcd(double t, const __gmp_expr &expr) { return __gmp_expr , __gmp_gcd_function> >(t, expr); } -2441: template inline __gmp_expr::value_type, __gmp_binary_expr<__gmp_expr, __gmp_expr, __gmp_lcm_function> > lcm(const __gmp_expr &expr1, const __gmp_expr &expr2) { return __gmp_expr::value_type, __gmp_binary_expr<__gmp_expr, __gmp_expr, __gmp_lcm_function> > (expr1, expr2); } template inline __gmp_expr , signed long int, __gmp_lcm_function> > lcm(const __gmp_expr &expr, signed char t) { return __gmp_expr , signed long int, __gmp_lcm_function> >(expr, t); } template inline __gmp_expr , __gmp_lcm_function> > lcm(signed char t, const __gmp_expr &expr) { return __gmp_expr , __gmp_lcm_function> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_lcm_function> > lcm(const __gmp_expr &expr, unsigned char t) { return __gmp_expr , unsigned long int, __gmp_lcm_function> >(expr, t); } template inline __gmp_expr , __gmp_lcm_function> > lcm(unsigned char t, const __gmp_expr &expr) { return __gmp_expr , __gmp_lcm_function> >(t, expr); } template inline __gmp_expr , signed long int, __gmp_lcm_function> > lcm(const __gmp_expr &expr, signed int t) { return __gmp_expr , signed long int, __gmp_lcm_function> >(expr, t); } template inline __gmp_expr , __gmp_lcm_function> > lcm(signed int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_lcm_function> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_lcm_function> > lcm(const __gmp_expr &expr, unsigned int t) { return __gmp_expr , unsigned long int, __gmp_lcm_function> >(expr, t); } template inline __gmp_expr , __gmp_lcm_function> > lcm(unsigned int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_lcm_function> >(t, expr); } template inline __gmp_expr , signed long int, __gmp_lcm_function> > lcm(const __gmp_expr &expr, signed short int t) { return __gmp_expr , signed long int, __gmp_lcm_function> >(expr, t); } template inline __gmp_expr , __gmp_lcm_function> > lcm(signed short int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_lcm_function> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_lcm_function> > lcm(const __gmp_expr &expr, unsigned short int t) { return __gmp_expr , unsigned long int, __gmp_lcm_function> >(expr, t); } template inline __gmp_expr , __gmp_lcm_function> > lcm(unsigned short int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_lcm_function> >(t, expr); } template inline __gmp_expr , signed long int, __gmp_lcm_function> > lcm(const __gmp_expr &expr, signed long int t) { return __gmp_expr , signed long int, __gmp_lcm_function> >(expr, t); } template inline __gmp_expr , __gmp_lcm_function> > lcm(signed long int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_lcm_function> >(t, expr); } template inline __gmp_expr , unsigned long int, __gmp_lcm_function> > lcm(const __gmp_expr &expr, unsigned long int t) { return __gmp_expr , unsigned long int, __gmp_lcm_function> >(expr, t); } template inline __gmp_expr , __gmp_lcm_function> > lcm(unsigned long int t, const __gmp_expr &expr) { return __gmp_expr , __gmp_lcm_function> >(t, expr); } template inline __gmp_expr , double, __gmp_lcm_function> > lcm(const __gmp_expr &expr, float t) { return __gmp_expr , double, __gmp_lcm_function> >(expr, t); } template inline __gmp_expr , __gmp_lcm_function> > lcm(float t, const __gmp_expr &expr) { return __gmp_expr , __gmp_lcm_function> >(t, expr); } template inline __gmp_expr , double, __gmp_lcm_function> > lcm(const __gmp_expr &expr, double t) { return __gmp_expr , double, __gmp_lcm_function> >(expr, t); } template inline __gmp_expr , __gmp_lcm_function> > lcm(double t, const __gmp_expr &expr) { return __gmp_expr , __gmp_lcm_function> >(t, expr); } -2441: -2441: template inline int sgn(const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_sgn_function::eval(temp.__get_mp()); } -2441: template inline int cmp(const __gmp_expr &expr1, const __gmp_expr &expr2) { __gmp_expr const& temp1(expr1); __gmp_expr const& temp2(expr2); return __gmp_cmp_function::eval(temp1.__get_mp(), temp2.__get_mp()); } template inline int cmp(const __gmp_expr &expr, signed char t) { __gmp_expr const& temp(expr); return __gmp_cmp_function::eval(temp.__get_mp(), static_cast(t)); } template inline int cmp(signed char t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_cmp_function::eval(static_cast(t), temp.__get_mp()); } template inline int cmp(const __gmp_expr &expr, unsigned char t) { __gmp_expr const& temp(expr); return __gmp_cmp_function::eval(temp.__get_mp(), static_cast(t)); } template inline int cmp(unsigned char t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_cmp_function::eval(static_cast(t), temp.__get_mp()); } template inline int cmp(const __gmp_expr &expr, signed int t) { __gmp_expr const& temp(expr); return __gmp_cmp_function::eval(temp.__get_mp(), static_cast(t)); } template inline int cmp(signed int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_cmp_function::eval(static_cast(t), temp.__get_mp()); } template inline int cmp(const __gmp_expr &expr, unsigned int t) { __gmp_expr const& temp(expr); return __gmp_cmp_function::eval(temp.__get_mp(), static_cast(t)); } template inline int cmp(unsigned int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_cmp_function::eval(static_cast(t), temp.__get_mp()); } template inline int cmp(const __gmp_expr &expr, signed short int t) { __gmp_expr const& temp(expr); return __gmp_cmp_function::eval(temp.__get_mp(), static_cast(t)); } template inline int cmp(signed short int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_cmp_function::eval(static_cast(t), temp.__get_mp()); } template inline int cmp(const __gmp_expr &expr, unsigned short int t) { __gmp_expr const& temp(expr); return __gmp_cmp_function::eval(temp.__get_mp(), static_cast(t)); } template inline int cmp(unsigned short int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_cmp_function::eval(static_cast(t), temp.__get_mp()); } template inline int cmp(const __gmp_expr &expr, signed long int t) { __gmp_expr const& temp(expr); return __gmp_cmp_function::eval(temp.__get_mp(), static_cast(t)); } template inline int cmp(signed long int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_cmp_function::eval(static_cast(t), temp.__get_mp()); } template inline int cmp(const __gmp_expr &expr, unsigned long int t) { __gmp_expr const& temp(expr); return __gmp_cmp_function::eval(temp.__get_mp(), static_cast(t)); } template inline int cmp(unsigned long int t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_cmp_function::eval(static_cast(t), temp.__get_mp()); } template inline int cmp(const __gmp_expr &expr, float t) { __gmp_expr const& temp(expr); return __gmp_cmp_function::eval(temp.__get_mp(), static_cast(t)); } template inline int cmp(float t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_cmp_function::eval(static_cast(t), temp.__get_mp()); } template inline int cmp(const __gmp_expr &expr, double t) { __gmp_expr const& temp(expr); return __gmp_cmp_function::eval(temp.__get_mp(), static_cast(t)); } template inline int cmp(double t, const __gmp_expr &expr) { __gmp_expr const& temp(expr); return __gmp_cmp_function::eval(static_cast(t), temp.__get_mp()); } -2441: -2441: template -2441: void swap(__gmp_expr& x, __gmp_expr& y) noexcept -2441: { x.swap(y); } -2441: -2441: -2441: -2441: template inline mpz_class & mpz_class::operator+=(const __gmp_expr &expr) { __gmp_set_expr(mp, __gmp_expr, __gmp_binary_plus> >(*this, expr)); return *this; } inline mpz_class & mpz_class::operator+=(signed char t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator+=(unsigned char t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator+=(signed int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator+=(unsigned int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator+=(signed short int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator+=(unsigned short int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator+=(signed long int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator+=(unsigned long int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator+=(float t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator+=(double t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } -2441: template inline mpz_class & mpz_class::operator-=(const __gmp_expr &expr) { __gmp_set_expr(mp, __gmp_expr, __gmp_binary_minus> >(*this, expr)); return *this; } inline mpz_class & mpz_class::operator-=(signed char t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator-=(unsigned char t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator-=(signed int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator-=(unsigned int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator-=(signed short int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator-=(unsigned short int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator-=(signed long int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator-=(unsigned long int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator-=(float t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator-=(double t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } -2441: template inline mpz_class & mpz_class::operator*=(const __gmp_expr &expr) { __gmp_set_expr(mp, __gmp_expr, __gmp_binary_multiplies> >(*this, expr)); return *this; } inline mpz_class & mpz_class::operator*=(signed char t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator*=(unsigned char t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator*=(signed int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator*=(unsigned int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator*=(signed short int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator*=(unsigned short int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator*=(signed long int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator*=(unsigned long int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator*=(float t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator*=(double t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } -2441: template inline mpz_class & mpz_class::operator/=(const __gmp_expr &expr) { __gmp_set_expr(mp, __gmp_expr, __gmp_binary_divides> >(*this, expr)); return *this; } inline mpz_class & mpz_class::operator/=(signed char t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator/=(unsigned char t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator/=(signed int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator/=(unsigned int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator/=(signed short int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator/=(unsigned short int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator/=(signed long int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator/=(unsigned long int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator/=(float t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator/=(double t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } -2441: template inline mpz_class & mpz_class::operator%=(const __gmp_expr &expr) { __gmp_set_expr(mp, __gmp_expr, __gmp_binary_modulus> >(*this, expr)); return *this; } inline mpz_class & mpz_class::operator%=(signed char t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator%=(unsigned char t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator%=(signed int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator%=(unsigned int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator%=(signed short int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator%=(unsigned short int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator%=(signed long int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator%=(unsigned long int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator%=(float t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator%=(double t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } -2441: -2441: template inline mpz_class & mpz_class::operator&=(const __gmp_expr &expr) { __gmp_set_expr(mp, __gmp_expr, __gmp_binary_and> >(*this, expr)); return *this; } inline mpz_class & mpz_class::operator&=(signed char t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator&=(unsigned char t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator&=(signed int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator&=(unsigned int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator&=(signed short int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator&=(unsigned short int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator&=(signed long int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator&=(unsigned long int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator&=(float t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator&=(double t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } -2441: template inline mpz_class & mpz_class::operator|=(const __gmp_expr &expr) { __gmp_set_expr(mp, __gmp_expr, __gmp_binary_ior> >(*this, expr)); return *this; } inline mpz_class & mpz_class::operator|=(signed char t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator|=(unsigned char t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator|=(signed int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator|=(unsigned int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator|=(signed short int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator|=(unsigned short int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator|=(signed long int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator|=(unsigned long int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator|=(float t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator|=(double t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } -2441: template inline mpz_class & mpz_class::operator^=(const __gmp_expr &expr) { __gmp_set_expr(mp, __gmp_expr, __gmp_binary_xor> >(*this, expr)); return *this; } inline mpz_class & mpz_class::operator^=(signed char t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator^=(unsigned char t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator^=(signed int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator^=(unsigned int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator^=(signed short int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator^=(unsigned short int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator^=(signed long int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator^=(unsigned long int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator^=(float t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpz_class & mpz_class::operator^=(double t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } -2441: -2441: inline mpz_class & mpz_class::operator<<=(mp_bitcnt_t l) { __gmp_set_expr(mp, __gmp_expr >(*this, l)); return *this; } -2441: inline mpz_class & mpz_class::operator>>=(mp_bitcnt_t l) { __gmp_set_expr(mp, __gmp_expr >(*this, l)); return *this; } -2441: -2441: inline mpz_class & mpz_class::operator++() { __gmp_unary_increment::eval(mp); return *this; } inline mpz_class mpz_class::operator++(int) { mpz_class temp(*this); __gmp_unary_increment::eval(mp); return temp; } -2441: inline mpz_class & mpz_class::operator--() { __gmp_unary_decrement::eval(mp); return *this; } inline mpz_class mpz_class::operator--(int) { mpz_class temp(*this); __gmp_unary_decrement::eval(mp); return temp; } -2441: -2441: -2441: -2441: template inline mpq_class & mpq_class::operator+=(const __gmp_expr &expr) { __gmp_set_expr(mp, __gmp_expr, __gmp_binary_plus> >(*this, expr)); return *this; } inline mpq_class & mpq_class::operator+=(signed char t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator+=(unsigned char t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator+=(signed int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator+=(unsigned int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator+=(signed short int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator+=(unsigned short int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator+=(signed long int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator+=(unsigned long int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator+=(float t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator+=(double t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } -2441: template inline mpq_class & mpq_class::operator-=(const __gmp_expr &expr) { __gmp_set_expr(mp, __gmp_expr, __gmp_binary_minus> >(*this, expr)); return *this; } inline mpq_class & mpq_class::operator-=(signed char t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator-=(unsigned char t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator-=(signed int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator-=(unsigned int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator-=(signed short int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator-=(unsigned short int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator-=(signed long int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator-=(unsigned long int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator-=(float t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator-=(double t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } -2441: template inline mpq_class & mpq_class::operator*=(const __gmp_expr &expr) { __gmp_set_expr(mp, __gmp_expr, __gmp_binary_multiplies> >(*this, expr)); return *this; } inline mpq_class & mpq_class::operator*=(signed char t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator*=(unsigned char t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator*=(signed int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator*=(unsigned int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator*=(signed short int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator*=(unsigned short int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator*=(signed long int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator*=(unsigned long int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator*=(float t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator*=(double t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } -2441: template inline mpq_class & mpq_class::operator/=(const __gmp_expr &expr) { __gmp_set_expr(mp, __gmp_expr, __gmp_binary_divides> >(*this, expr)); return *this; } inline mpq_class & mpq_class::operator/=(signed char t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator/=(unsigned char t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator/=(signed int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator/=(unsigned int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator/=(signed short int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator/=(unsigned short int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator/=(signed long int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator/=(unsigned long int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator/=(float t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpq_class & mpq_class::operator/=(double t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } -2441: -2441: inline mpq_class & mpq_class::operator<<=(mp_bitcnt_t l) { __gmp_set_expr(mp, __gmp_expr >(*this, l)); return *this; } -2441: inline mpq_class & mpq_class::operator>>=(mp_bitcnt_t l) { __gmp_set_expr(mp, __gmp_expr >(*this, l)); return *this; } -2441: -2441: inline mpq_class & mpq_class::operator++() { __gmp_unary_increment::eval(mp); return *this; } inline mpq_class mpq_class::operator++(int) { mpq_class temp(*this); __gmp_unary_increment::eval(mp); return temp; } -2441: inline mpq_class & mpq_class::operator--() { __gmp_unary_decrement::eval(mp); return *this; } inline mpq_class mpq_class::operator--(int) { mpq_class temp(*this); __gmp_unary_decrement::eval(mp); return temp; } -2441: -2441: -2441: -2441: template inline mpf_class & mpf_class::operator+=(const __gmp_expr &expr) { __gmp_set_expr(mp, __gmp_expr, __gmp_binary_plus> >(*this, expr)); return *this; } inline mpf_class & mpf_class::operator+=(signed char t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator+=(unsigned char t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator+=(signed int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator+=(unsigned int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator+=(signed short int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator+=(unsigned short int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator+=(signed long int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator+=(unsigned long int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator+=(float t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator+=(double t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } -2441: template inline mpf_class & mpf_class::operator-=(const __gmp_expr &expr) { __gmp_set_expr(mp, __gmp_expr, __gmp_binary_minus> >(*this, expr)); return *this; } inline mpf_class & mpf_class::operator-=(signed char t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator-=(unsigned char t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator-=(signed int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator-=(unsigned int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator-=(signed short int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator-=(unsigned short int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator-=(signed long int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator-=(unsigned long int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator-=(float t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator-=(double t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } -2441: template inline mpf_class & mpf_class::operator*=(const __gmp_expr &expr) { __gmp_set_expr(mp, __gmp_expr, __gmp_binary_multiplies> >(*this, expr)); return *this; } inline mpf_class & mpf_class::operator*=(signed char t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator*=(unsigned char t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator*=(signed int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator*=(unsigned int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator*=(signed short int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator*=(unsigned short int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator*=(signed long int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator*=(unsigned long int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator*=(float t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator*=(double t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } -2441: template inline mpf_class & mpf_class::operator/=(const __gmp_expr &expr) { __gmp_set_expr(mp, __gmp_expr, __gmp_binary_divides> >(*this, expr)); return *this; } inline mpf_class & mpf_class::operator/=(signed char t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator/=(unsigned char t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator/=(signed int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator/=(unsigned int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator/=(signed short int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator/=(unsigned short int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator/=(signed long int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator/=(unsigned long int t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator/=(float t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } inline mpf_class & mpf_class::operator/=(double t) { __gmp_set_expr(mp, __gmp_expr >(*this, t)); return *this; } -2441: -2441: inline mpf_class & mpf_class::operator<<=(mp_bitcnt_t l) { __gmp_set_expr(mp, __gmp_expr >(*this, l)); return *this; } -2441: inline mpf_class & mpf_class::operator>>=(mp_bitcnt_t l) { __gmp_set_expr(mp, __gmp_expr >(*this, l)); return *this; } -2441: -2441: inline mpf_class & mpf_class::operator++() { __gmp_unary_increment::eval(mp); return *this; } inline mpf_class mpf_class::operator++(int) { mpf_class temp(*this); __gmp_unary_increment::eval(mp); return temp; } -2441: inline mpf_class & mpf_class::operator--() { __gmp_unary_decrement::eval(mp); return *this; } inline mpf_class mpf_class::operator--(int) { mpf_class temp(*this); __gmp_unary_decrement::eval(mp); return temp; } -2441: -2441: -2441: -2441: -2441: -2441: class __gmp_urandomb_value { }; -2441: class __gmp_urandomm_value { }; -2441: -2441: template <> -2441: class __gmp_expr -2441: { -2441: private: -2441: __gmp_randstate_struct *state; -2441: mp_bitcnt_t bits; -2441: public: -2441: __gmp_expr(gmp_randstate_t s, mp_bitcnt_t l) : state(s), bits(l) { } -2441: void eval(mpz_ptr z) const { __gmp_rand_function::eval(z, state, bits); } -2441: mp_bitcnt_t get_prec() const { return __gmpf_get_default_prec(); } -2441: }; -2441: -2441: template <> -2441: class __gmp_expr -2441: { -2441: private: -2441: __gmp_randstate_struct *state; -2441: mpz_class range; -2441: public: -2441: __gmp_expr(gmp_randstate_t s, const mpz_class &z) : state(s), range(z) { } -2441: void eval(mpz_ptr z) const -2441: { __gmp_rand_function::eval(z, state, range.get_mpz_t()); } -2441: mp_bitcnt_t get_prec() const { return __gmpf_get_default_prec(); } -2441: }; -2441: -2441: template <> -2441: class __gmp_expr -2441: { -2441: private: -2441: __gmp_randstate_struct *state; -2441: mp_bitcnt_t bits; -2441: public: -2441: __gmp_expr(gmp_randstate_t s, mp_bitcnt_t l) : state(s), bits(l) { } -2441: void eval(mpf_ptr f) const -2441: { -2441: __gmp_rand_function::eval(f, state, -2441: (bits>0) ? bits : __gmpf_get_prec(f)); -2441: } -2441: mp_bitcnt_t get_prec() const -2441: { -2441: if (bits == 0) -2441: return __gmpf_get_default_prec(); -2441: else -2441: return bits; -2441: } -2441: }; -2441: -2441: extern "C" { -2441: typedef void __gmp_randinit_default_t (gmp_randstate_t); -2441: typedef void __gmp_randinit_lc_2exp_t (gmp_randstate_t, mpz_srcptr, unsigned long int, mp_bitcnt_t); -2441: typedef int __gmp_randinit_lc_2exp_size_t (gmp_randstate_t, mp_bitcnt_t); -2441: } -2441: -2441: class gmp_randclass -2441: { -2441: private: -2441: gmp_randstate_t state; -2441: -2441: -2441: gmp_randclass(const gmp_randclass &); -2441: void operator=(const gmp_randclass &); -2441: public: -2441: -2441: gmp_randclass(gmp_randalg_t alg, unsigned long int size) -2441: { -2441: switch (alg) -2441: { -2441: case GMP_RAND_ALG_LC: -2441: default: -2441: __gmp_randinit(state, alg, size); -2441: break; -2441: } -2441: } -2441: -2441: -2441: gmp_randclass(__gmp_randinit_default_t* f) { f(state); } -2441: -2441: -2441: gmp_randclass(__gmp_randinit_lc_2exp_t* f, -2441: mpz_class z, unsigned long int l1, mp_bitcnt_t l2) -2441: { f(state, z.get_mpz_t(), l1, l2); } -2441: -2441: -2441: gmp_randclass(__gmp_randinit_lc_2exp_size_t* f, -2441: mp_bitcnt_t size) -2441: { -2441: if (f (state, size) == 0) -2441: throw std::length_error ("gmp_randinit_lc_2exp_size"); -2441: } -2441: -2441: ~gmp_randclass() { __gmp_randclear(state); } -2441: -2441: -2441: void seed(); -2441: void seed(unsigned long int s) { __gmp_randseed_ui(state, s); } -2441: void seed(const mpz_class &z) { __gmp_randseed(state, z.get_mpz_t()); } -2441: -2441: -2441: __gmp_expr get_z_bits(mp_bitcnt_t l) -2441: { return __gmp_expr(state, l); } -2441: __gmp_expr get_z_bits(const mpz_class &z) -2441: { return get_z_bits(z.get_ui()); } -2441: -2441: -2441: __gmp_expr get_z_range(const mpz_class &z) -2441: { return __gmp_expr(state, z); } -2441: -2441: __gmp_expr get_f(mp_bitcnt_t prec = 0) -2441: { return __gmp_expr(state, prec); } -2441: }; -2441: -2441: -2441: -2441: -2441: namespace std { -2441: template <> class numeric_limits -2441: { -2441: public: -2441: static const bool is_specialized = true; -2441: static mpz_class min() { return mpz_class(); } -2441: static mpz_class max() { return mpz_class(); } -2441: static mpz_class lowest() { return mpz_class(); } -2441: static const int digits = 0; -2441: static const int digits10 = 0; -2441: static const int max_digits10 = 0; -2441: static const bool is_signed = true; -2441: static const bool is_integer = true; -2441: static const bool is_exact = true; -2441: static const int radix = 2; -2441: static mpz_class epsilon() { return mpz_class(); } -2441: static mpz_class round_error() { return mpz_class(); } -2441: static const int min_exponent = 0; -2441: static const int min_exponent10 = 0; -2441: static const int max_exponent = 0; -2441: static const int max_exponent10 = 0; -2441: static const bool has_infinity = false; -2441: static const bool has_quiet_NaN = false; -2441: static const bool has_signaling_NaN = false; -2441: static const float_denorm_style has_denorm = denorm_absent; -2441: static const bool has_denorm_loss = false; -2441: static mpz_class infinity() { return mpz_class(); } -2441: static mpz_class quiet_NaN() { return mpz_class(); } -2441: static mpz_class signaling_NaN() { return mpz_class(); } -2441: static mpz_class denorm_min() { return mpz_class(); } -2441: static const bool is_iec559 = false; -2441: static const bool is_bounded = false; -2441: static const bool is_modulo = false; -2441: static const bool traps = false; -2441: static const bool tinyness_before = false; -2441: static const float_round_style round_style = round_toward_zero; -2441: }; -2441: -2441: template <> class numeric_limits -2441: { -2441: public: -2441: static const bool is_specialized = true; -2441: static mpq_class min() { return mpq_class(); } -2441: static mpq_class max() { return mpq_class(); } -2441: static mpq_class lowest() { return mpq_class(); } -2441: static const int digits = 0; -2441: static const int digits10 = 0; -2441: static const int max_digits10 = 0; -2441: static const bool is_signed = true; -2441: static const bool is_integer = false; -2441: static const bool is_exact = true; -2441: static const int radix = 2; -2441: static mpq_class epsilon() { return mpq_class(); } -2441: static mpq_class round_error() { return mpq_class(); } -2441: static const int min_exponent = 0; -2441: static const int min_exponent10 = 0; -2441: static const int max_exponent = 0; -2441: static const int max_exponent10 = 0; -2441: static const bool has_infinity = false; -2441: static const bool has_quiet_NaN = false; -2441: static const bool has_signaling_NaN = false; -2441: static const float_denorm_style has_denorm = denorm_absent; -2441: static const bool has_denorm_loss = false; -2441: static mpq_class infinity() { return mpq_class(); } -2441: static mpq_class quiet_NaN() { return mpq_class(); } -2441: static mpq_class signaling_NaN() { return mpq_class(); } -2441: static mpq_class denorm_min() { return mpq_class(); } -2441: static const bool is_iec559 = false; -2441: static const bool is_bounded = false; -2441: static const bool is_modulo = false; -2441: static const bool traps = false; -2441: static const bool tinyness_before = false; -2441: static const float_round_style round_style = round_toward_zero; -2441: }; -2441: -2441: template <> class numeric_limits -2441: { -2441: public: -2441: static const bool is_specialized = true; -2441: static mpf_class min() { return mpf_class(); } -2441: static mpf_class max() { return mpf_class(); } -2441: static mpf_class lowest() { return mpf_class(); } -2441: static const int digits = 0; -2441: static const int digits10 = 0; -2441: static const int max_digits10 = 0; -2441: static const bool is_signed = true; -2441: static const bool is_integer = false; -2441: static const bool is_exact = false; -2441: static const int radix = 2; -2441: static mpf_class epsilon() { return mpf_class(); } -2441: static mpf_class round_error() { return mpf_class(); } -2441: static const int min_exponent = 0; -2441: static const int min_exponent10 = 0; -2441: static const int max_exponent = 0; -2441: static const int max_exponent10 = 0; -2441: static const bool has_infinity = false; -2441: static const bool has_quiet_NaN = false; -2441: static const bool has_signaling_NaN = false; -2441: static const float_denorm_style has_denorm = denorm_absent; -2441: static const bool has_denorm_loss = false; -2441: static mpf_class infinity() { return mpf_class(); } -2441: static mpf_class quiet_NaN() { return mpf_class(); } -2441: static mpf_class signaling_NaN() { return mpf_class(); } -2441: static mpf_class denorm_min() { return mpf_class(); } -2441: static const bool is_iec559 = false; -2441: static const bool is_bounded = false; -2441: static const bool is_modulo = false; -2441: static const bool traps = false; -2441: static const bool tinyness_before = false; -2441: static const float_round_style round_style = round_indeterminate; -2441: }; -2441: } -2441: # 29 "../../src/mp_std_bits_defs.hh" 2 -2441: -2441: -2441: -2441: -2441: -2441: -2441: # 34 "../../src/mp_std_bits_defs.hh" -2441: void swap(mpz_class& x, mpz_class& y); -2441: -2441: -2441: -2441: -2441: void swap(mpq_class& x, mpq_class& y); -2441: # 173 "../../src/mp_std_bits_defs.hh" -2441: # 1 "../../src/mp_std_bits_inlines.hh" 1 -2441: # 28 "../../src/mp_std_bits_inlines.hh" -2441: inline void -2441: swap(mpz_class& x, mpz_class& y) { -2441: -2441: # 30 "../../src/mp_std_bits_inlines.hh" 3 4 -2441: __gmpz_swap -2441: # 30 "../../src/mp_std_bits_inlines.hh" -2441: (x.get_mpz_t(), y.get_mpz_t()); -2441: } -2441: -2441: inline void -2441: swap(mpq_class& x, mpq_class& y) { -2441: -2441: # 35 "../../src/mp_std_bits_inlines.hh" 3 4 -2441: __gmpq_swap -2441: # 35 "../../src/mp_std_bits_inlines.hh" -2441: (x.get_mpq_t(), y.get_mpq_t()); -2441: } -2441: # 174 "../../src/mp_std_bits_defs.hh" 2 -2441: # 28 "../../src/checked_defs.hh" 2 -2441: # 1 "../../src/Temp_defs.hh" 1 -2441: # 27 "../../src/Temp_defs.hh" -2441: # 1 "../../src/meta_programming.hh" 1 -2441: # 29 "../../src/meta_programming.hh" -2441: namespace Parma_Polyhedra_Library { -2441: # 102 "../../src/meta_programming.hh" -2441: template -2441: struct Compile_Time_Check; -2441: # 114 "../../src/meta_programming.hh" -2441: template <> -2441: struct Compile_Time_Check { -2441: }; -2441: # 142 "../../src/meta_programming.hh" -2441: template -2441: struct Bool { -2441: enum const_bool_value { -2441: value = b -2441: }; -2441: }; -2441: # 156 "../../src/meta_programming.hh" -2441: struct True : public Bool { -2441: }; -2441: # 166 "../../src/meta_programming.hh" -2441: struct False : public Bool { -2441: }; -2441: # 178 "../../src/meta_programming.hh" -2441: template -2441: struct Is_Same : public False { -2441: }; -2441: # 191 "../../src/meta_programming.hh" -2441: template -2441: struct Is_Same : public True { -2441: }; -2441: # 222 "../../src/meta_programming.hh" -2441: template -2441: struct Is_Same_Or_Derived { -2441: -2441: -2441: -2441: -2441: struct Any { -2441: -2441: template -2441: Any(const T&); -2441: }; -2441: -2441: -2441: static char func(const Base&); -2441: -2441: -2441: static double func(Any); -2441: -2441: -2441: static const Derived& derived_object(); -2441: -2441: enum anonymous_enum_compile_time_check___LINE__ { compile_time_check_245 = sizeof(Parma_Polyhedra_Library::Compile_Time_Check<(sizeof(char) != sizeof(double))>) } -2441: -2441: ; -2441: -2441: enum const_bool_value { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: value = (sizeof(func(derived_object())) == sizeof(char)) -2441: }; -2441: }; -2441: # 269 "../../src/meta_programming.hh" -2441: template -2441: struct Enable_If { -2441: }; -2441: -2441: template -2441: struct Enable_If_Is { -2441: typedef T type; -2441: }; -2441: # 304 "../../src/meta_programming.hh" -2441: template -2441: struct Enable_If { -2441: typedef T type; -2441: }; -2441: -2441: template -2441: struct Is_Native : public False { -2441: }; -2441: -2441: template <> struct Is_Native : public True { }; -2441: template <> struct Is_Native : public True { }; -2441: template <> struct Is_Native : public True { }; -2441: template <> struct Is_Native : public True { }; -2441: template <> struct Is_Native : public True { }; -2441: template <> struct Is_Native : public True { }; -2441: template <> struct Is_Native : public True { }; -2441: template <> struct Is_Native : public True { }; -2441: template <> struct Is_Native : public True { }; -2441: template <> struct Is_Native : public True { }; -2441: template <> struct Is_Native : public True { }; -2441: -2441: -2441: template <> struct Is_Native : public True { }; -2441: -2441: -2441: template <> struct Is_Native : public True { }; -2441: -2441: -2441: template <> struct Is_Native : public True { }; -2441: -2441: -2441: template <> struct Is_Native : public True { }; -2441: -2441: template <> struct Is_Native : public True { }; -2441: -2441: } -2441: # 28 "../../src/Temp_defs.hh" 2 -2441: # 1 "../../src/Slow_Copy.hh" 1 -2441: # 30 "../../src/Slow_Copy.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct Slow_Copy : public False { -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: template <> -2441: struct Slow_Copy : public True { -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: template <> -2441: struct Slow_Copy : public True { -2441: }; -2441: -2441: } -2441: # 29 "../../src/Temp_defs.hh" 2 -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: -2441: template -2441: class Temp_Item { -2441: public: -2441: -2441: static Temp_Item& obtain(); -2441: -2441: -2441: static void release(Temp_Item& p); -2441: -2441: -2441: T& item(); -2441: -2441: private: -2441: -2441: T item_; -2441: -2441: -2441: Temp_Item* next; -2441: -2441: class Free_List { -2441: public: -2441: Free_List(); -2441: ~Free_List(); -2441: Temp_Item* head_ptr; -2441: private: -2441: Free_List(const Free_List&); -2441: Free_List& operator=(const Free_List&); -2441: }; -2441: -2441: friend class Free_List; -2441: -2441: -2441: static Temp_Item*& free_list_ref(); -2441: -2441: -2441: Temp_Item(); -2441: -2441: -2441: Temp_Item(const Temp_Item&); -2441: -2441: -2441: Temp_Item& operator=(const Temp_Item&); -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: class Temp_Reference_Holder { -2441: public: -2441: -2441: Temp_Reference_Holder(); -2441: -2441: -2441: ~Temp_Reference_Holder(); -2441: -2441: -2441: T& item(); -2441: -2441: private: -2441: -2441: Temp_Reference_Holder(const Temp_Reference_Holder&); -2441: -2441: -2441: Temp_Reference_Holder& operator=(const Temp_Reference_Holder&); -2441: -2441: -2441: Temp_Item& held; -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: class Temp_Value_Holder { -2441: public: -2441: -2441: Temp_Value_Holder(); -2441: -2441: -2441: T& item(); -2441: -2441: private: -2441: -2441: Temp_Value_Holder(const Temp_Value_Holder&); -2441: -2441: -2441: Temp_Value_Holder& operator=(const Temp_Value_Holder&); -2441: -2441: -2441: T item_; -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: class Dirty_Temp; -2441: -2441: -2441: -2441: -2441: template -2441: class Dirty_Temp::value>::type> -2441: : public Temp_Reference_Holder { -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: class Dirty_Temp::value>::type> -2441: : public Temp_Value_Holder { -2441: }; -2441: -2441: } -2441: -2441: # 1 "../../src/Temp_inlines.hh" 1 -2441: # 29 "../../src/Temp_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: inline -2441: Temp_Item::Temp_Item() -2441: : item_() { -2441: } -2441: -2441: template -2441: inline T& -2441: Temp_Item::item() { -2441: return item_; -2441: } -2441: -2441: template -2441: inline -2441: Temp_Item::Free_List::Free_List() -2441: : head_ptr(0) { -2441: } -2441: -2441: template -2441: inline Temp_Item*& -2441: Temp_Item::free_list_ref() { -2441: static Free_List free_list; -2441: return free_list.head_ptr; -2441: } -2441: -2441: template -2441: inline Temp_Item& -2441: Temp_Item::obtain() { -2441: Temp_Item* const p = free_list_ref(); -2441: if (p != 0) { -2441: free_list_ref() = p->next; -2441: return *p; -2441: } -2441: else { -2441: return *new Temp_Item(); -2441: } -2441: } -2441: -2441: template -2441: inline void -2441: Temp_Item::release(Temp_Item& p) { -2441: p.next = free_list_ref(); -2441: free_list_ref() = &p; -2441: } -2441: -2441: template -2441: inline -2441: Temp_Reference_Holder::Temp_Reference_Holder() -2441: : held(Temp_Item::obtain()) { -2441: } -2441: -2441: template -2441: inline -2441: Temp_Reference_Holder::~Temp_Reference_Holder() { -2441: Temp_Item::release(held); -2441: } -2441: -2441: template -2441: inline T& -2441: Temp_Reference_Holder::item() { -2441: return held.item(); -2441: } -2441: -2441: template -2441: inline -2441: Temp_Value_Holder::Temp_Value_Holder() { -2441: } -2441: -2441: template -2441: inline T& -2441: Temp_Value_Holder::item() { -2441: return item_; -2441: } -2441: -2441: } -2441: # 153 "../../src/Temp_defs.hh" 2 -2441: # 1 "../../src/Temp_templates.hh" 1 -2441: # 27 "../../src/Temp_templates.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: Temp_Item::Free_List::~Free_List() { -2441: while (head_ptr != 0) { -2441: Temp_Item* const p = head_ptr; -2441: head_ptr = head_ptr->next; -2441: delete p; -2441: } -2441: } -2441: -2441: } -2441: # 154 "../../src/Temp_defs.hh" 2 -2441: # 29 "../../src/checked_defs.hh" 2 -2441: # 1 "../../src/Rounding_Dir_defs.hh" 1 -2441: # 27 "../../src/Rounding_Dir_defs.hh" -2441: # 1 "../../src/Result_defs.hh" 1 -2441: # 27 "../../src/Result_defs.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: enum Result_Class { -2441: -2441: VC_NORMAL = 0U << 4, -2441: -2441: -2441: VC_MINUS_INFINITY = 1U << 4, -2441: -2441: -2441: VC_PLUS_INFINITY = 2U << 4, -2441: -2441: -2441: VC_NAN = 3U << 4, -2441: -2441: VC_MASK = VC_NAN -2441: }; -2441: -2441: -2441: enum Result_Relation { -2441: -2441: VR_EMPTY = 0U, -2441: -2441: -2441: VR_EQ = 1U, -2441: -2441: -2441: VR_LT = 2U, -2441: -2441: -2441: VR_GT = 4U, -2441: -2441: -2441: VR_NE = VR_LT | VR_GT, -2441: -2441: -2441: VR_LE = VR_EQ | VR_LT, -2441: -2441: -2441: VR_GE = VR_EQ | VR_GT, -2441: -2441: -2441: VR_LGE = VR_LT | VR_EQ | VR_GT, -2441: -2441: VR_MASK = VR_LGE -2441: }; -2441: -2441: -2441: -2441: enum Result { -2441: -2441: V_EMPTY = VR_EMPTY, -2441: -2441: -2441: V_EQ = static_cast(VR_EQ), -2441: -2441: -2441: V_LT = static_cast(VR_LT), -2441: -2441: -2441: V_GT = static_cast(VR_GT), -2441: -2441: -2441: V_NE = VR_NE, -2441: -2441: -2441: V_LE = VR_LE, -2441: -2441: -2441: V_GE = VR_GE, -2441: -2441: -2441: V_LGE = VR_LGE, -2441: -2441: -2441: V_OVERFLOW = 1U << 6, -2441: -2441: -2441: V_LT_INF = V_LT | V_OVERFLOW, -2441: -2441: -2441: V_GT_SUP = V_GT | V_OVERFLOW, -2441: -2441: -2441: V_LT_PLUS_INFINITY = V_LT | static_cast(VC_PLUS_INFINITY), -2441: -2441: -2441: V_GT_MINUS_INFINITY = V_GT | static_cast(VC_MINUS_INFINITY), -2441: -2441: -2441: V_EQ_MINUS_INFINITY = V_EQ | static_cast(VC_MINUS_INFINITY), -2441: -2441: -2441: V_EQ_PLUS_INFINITY = V_EQ | static_cast(VC_PLUS_INFINITY), -2441: -2441: -2441: V_NAN = static_cast(VC_NAN), -2441: -2441: -2441: V_CVT_STR_UNK = V_NAN | (1U << 8), -2441: -2441: -2441: V_DIV_ZERO = V_NAN | (2U << 8), -2441: -2441: -2441: V_INF_ADD_INF = V_NAN | (3U << 8), -2441: -2441: -2441: V_INF_DIV_INF = V_NAN | (4U << 8), -2441: -2441: -2441: V_INF_MOD = V_NAN | (5U << 8), -2441: -2441: -2441: V_INF_MUL_ZERO = V_NAN | (6U << 8), -2441: -2441: -2441: V_INF_SUB_INF = V_NAN | (7U << 8), -2441: -2441: -2441: V_MOD_ZERO = V_NAN | (8U << 8), -2441: -2441: -2441: V_SQRT_NEG = V_NAN | (9U << 8), -2441: -2441: -2441: V_UNKNOWN_NEG_OVERFLOW = V_NAN | (10U << 8), -2441: -2441: -2441: V_UNKNOWN_POS_OVERFLOW = V_NAN | (11U << 8), -2441: -2441: -2441: V_UNREPRESENTABLE = 1U << 7 -2441: -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: Result operator&(Result x, Result y); -2441: -2441: -2441: Result operator|(Result x, Result y); -2441: -2441: -2441: Result operator-(Result x, Result y); -2441: -2441: -2441: -2441: -2441: -2441: Result_Class result_class(Result r); -2441: -2441: -2441: -2441: -2441: Result_Relation result_relation(Result r); -2441: -2441: -2441: Result result_relation_class(Result r); -2441: -2441: -2441: -2441: } -2441: -2441: # 1 "../../src/Result_inlines.hh" 1 -2441: # 27 "../../src/Result_inlines.hh" -2441: # 1 "../../src/assertions.hh" 1 -2441: # 99 "../../src/assertions.hh" -2441: namespace Parma_Polyhedra_Library { -2441: # 110 "../../src/assertions.hh" -2441: void ppl_unreachable() __attribute__((weak, noreturn)); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void ppl_unreachable_msg(const char* msg, -2441: const char* file, unsigned int line, -2441: const char* function) __attribute__((weak, noreturn)); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void ppl_assertion_failed(const char* assertion_text, -2441: const char* file, unsigned int line, -2441: const char* function) __attribute__((weak, noreturn)); -2441: # 143 "../../src/assertions.hh" -2441: template -2441: bool copy_contains(T x_copy, T y_copy) { -2441: return x_copy.contains(y_copy); -2441: } -2441: -2441: } -2441: # 28 "../../src/Result_inlines.hh" 2 -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: inline Result -2441: operator&(Result x, Result y) { -2441: const unsigned res = static_cast(x) & static_cast(y); -2441: return static_cast(res); -2441: } -2441: -2441: -2441: inline Result -2441: operator|(Result x, Result y) { -2441: const unsigned res = static_cast(x) | static_cast(y); -2441: return static_cast(res); -2441: } -2441: -2441: -2441: inline Result -2441: operator-(Result x, Result y) { -2441: const Result y_neg = static_cast(~static_cast(y)); -2441: return x & y_neg; -2441: } -2441: -2441: -2441: inline Result_Class -2441: result_class(Result r) { -2441: const Result rc = r & static_cast(VC_MASK); -2441: return static_cast(rc); -2441: } -2441: -2441: -2441: inline Result_Relation -2441: result_relation(Result r) { -2441: const Result rc = r & static_cast(VR_MASK); -2441: return static_cast(rc); -2441: } -2441: -2441: -2441: inline Result -2441: result_relation_class(Result r) { -2441: return r & (static_cast(VR_MASK) | static_cast(VC_MASK)); -2441: } -2441: -2441: inline int -2441: result_overflow(Result r) { -2441: switch (result_class(r)) { -2441: case VC_NORMAL: -2441: switch (r) { -2441: case V_LT_INF: -2441: return -1; -2441: case V_GT_SUP: -2441: return 1; -2441: default: -2441: break; -2441: } -2441: break; -2441: case VC_MINUS_INFINITY: -2441: return -1; -2441: case VC_PLUS_INFINITY: -2441: return 1; -2441: default: -2441: break; -2441: } -2441: return 0; -2441: } -2441: -2441: inline bool -2441: result_representable(Result r) { -2441: return (r & V_UNREPRESENTABLE) != V_UNREPRESENTABLE; -2441: } -2441: -2441: } -2441: # 194 "../../src/Result_defs.hh" 2 -2441: # 28 "../../src/Rounding_Dir_defs.hh" 2 -2441: # 1 "../../src/fpu_defs.hh" 1 -2441: # 27 "../../src/fpu_defs.hh" -2441: # 1 "../../src/fpu_types.hh" 1 -2441: # 20 "../../src/fpu_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: enum fpu_rounding_direction_type {}; -2441: enum fpu_rounding_control_word_type {}; -2441: -2441: } -2441: # 28 "../../src/fpu_defs.hh" 2 -2441: # 1 "../../src/compiler.hh" 1 -2441: # 27 "../../src/compiler.hh" -2441: # 1 "/usr/include/c++/8/cstddef" 1 3 -2441: # 42 "/usr/include/c++/8/cstddef" 3 -2441: -2441: # 43 "/usr/include/c++/8/cstddef" 3 -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: # 1 "/usr/lib/gcc/i686-linux-gnu/8/include/stddef.h" 1 3 4 -2441: # 51 "/usr/include/c++/8/cstddef" 2 3 -2441: -2441: -2441: -2441: # 53 "/usr/include/c++/8/cstddef" 3 -2441: namespace std -2441: { -2441: -2441: using ::max_align_t; -2441: } -2441: # 28 "../../src/compiler.hh" 2 -2441: # 1 "/usr/include/c++/8/climits" 1 3 -2441: # 39 "/usr/include/c++/8/climits" 3 -2441: -2441: # 40 "/usr/include/c++/8/climits" 3 -2441: -2441: -2441: # 1 "/usr/lib/gcc/i686-linux-gnu/8/include-fixed/limits.h" 1 3 4 -2441: # 43 "/usr/include/c++/8/climits" 2 3 -2441: # 29 "../../src/compiler.hh" 2 -2441: # 1 "/usr/include/c++/8/cassert" 1 3 -2441: # 41 "/usr/include/c++/8/cassert" 3 -2441: -2441: # 42 "/usr/include/c++/8/cassert" 3 -2441: -2441: -2441: # 1 "/usr/include/assert.h" 1 3 4 -2441: # 44 "/usr/include/c++/8/cassert" 2 3 -2441: # 30 "../../src/compiler.hh" 2 -2441: -2441: -2441: # 31 "../../src/compiler.hh" -2441: namespace Parma_Polyhedra_Library { -2441: # 47 "../../src/compiler.hh" -2441: template -2441: inline void -2441: PPL_CC_FLUSH(const T& x) { -2441: -2441: __asm__ __volatile__ ("" : "+m" (const_cast(x))); -2441: -2441: -2441: -2441: -2441: } -2441: # 67 "../../src/compiler.hh" -2441: template -2441: struct Suppress_Uninitialized_Warnings_Type { -2441: typedef T synonym; -2441: }; -2441: # 142 "../../src/compiler.hh" -2441: inline unsigned int -2441: clz(unsigned int u) { -2441: -2441: # 144 "../../src/compiler.hh" 3 4 -2441: (static_cast (0)) -2441: # 144 "../../src/compiler.hh" -2441: ; -2441: -2441: return static_cast(__builtin_clz(u)); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: } -2441: -2441: inline unsigned int -2441: clz(unsigned long ul) { -2441: -2441: # 158 "../../src/compiler.hh" 3 4 -2441: (static_cast (0)) -2441: # 158 "../../src/compiler.hh" -2441: ; -2441: -2441: return static_cast(__builtin_clzl(ul)); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: } -2441: -2441: inline unsigned int -2441: clz(unsigned long long ull) { -2441: -2441: # 172 "../../src/compiler.hh" 3 4 -2441: (static_cast (0)) -2441: # 172 "../../src/compiler.hh" -2441: ; -2441: -2441: return static_cast(__builtin_clzll(ull)); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: } -2441: -2441: -2441: inline unsigned int -2441: ctz(unsigned int u) { -2441: -2441: # 187 "../../src/compiler.hh" 3 4 -2441: (static_cast (0)) -2441: # 187 "../../src/compiler.hh" -2441: ; -2441: -2441: return static_cast(__builtin_ctz(u)); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: } -2441: -2441: inline unsigned int -2441: ctz(unsigned long ul) { -2441: -2441: # 201 "../../src/compiler.hh" 3 4 -2441: (static_cast (0)) -2441: # 201 "../../src/compiler.hh" -2441: ; -2441: -2441: return static_cast(__builtin_ctzl(ul)); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: } -2441: -2441: inline unsigned int -2441: ctz(unsigned long long ull) { -2441: -2441: # 215 "../../src/compiler.hh" 3 4 -2441: (static_cast (0)) -2441: # 215 "../../src/compiler.hh" -2441: ; -2441: -2441: return static_cast(__builtin_ctzll(ull)); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: } -2441: -2441: } -2441: # 29 "../../src/fpu_defs.hh" 2 -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: -2441: -2441: void -2441: fpu_initialize_control_functions(); -2441: -2441: -2441: fpu_rounding_direction_type -2441: fpu_get_rounding_direction(); -2441: -2441: -2441: void -2441: fpu_set_rounding_direction(fpu_rounding_direction_type dir); -2441: -2441: -2441: -2441: -2441: -2441: fpu_rounding_control_word_type -2441: fpu_save_rounding_direction(fpu_rounding_direction_type dir); -2441: -2441: -2441: -2441: -2441: -2441: -2441: fpu_rounding_control_word_type -2441: fpu_save_rounding_direction_reset_inexact(fpu_rounding_direction_type dir); -2441: -2441: -2441: void -2441: fpu_restore_rounding_direction(fpu_rounding_control_word_type w); -2441: -2441: -2441: void -2441: fpu_reset_inexact(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: int -2441: fpu_check_inexact(); -2441: -2441: -2441: -2441: } -2441: -2441: -2441: -2441: -2441: # 1 "../../src/fpu-ia32_inlines.hh" 1 -2441: # 27 "../../src/fpu-ia32_inlines.hh" -2441: # 1 "/usr/include/c++/8/csetjmp" 1 3 -2441: # 39 "/usr/include/c++/8/csetjmp" 3 -2441: -2441: # 40 "/usr/include/c++/8/csetjmp" 3 -2441: -2441: -2441: # 1 "/usr/include/setjmp.h" 1 3 4 -2441: # 27 "/usr/include/setjmp.h" 3 4 -2441: -2441: # 27 "/usr/include/setjmp.h" 3 4 -2441: extern "C" { -2441: -2441: -2441: -2441: -2441: -2441: struct __jmp_buf_tag -2441: { -2441: -2441: -2441: -2441: -2441: __jmp_buf __jmpbuf; -2441: int __mask_was_saved; -2441: __sigset_t __saved_mask; -2441: }; -2441: -2441: -2441: typedef struct __jmp_buf_tag jmp_buf[1]; -2441: -2441: -2441: -2441: extern int setjmp (jmp_buf __env) throw (); -2441: -2441: -2441: -2441: -2441: extern int __sigsetjmp (struct __jmp_buf_tag __env[1], int __savemask) throw (); -2441: -2441: -2441: -2441: extern int _setjmp (struct __jmp_buf_tag __env[1]) throw (); -2441: # 67 "/usr/include/setjmp.h" 3 4 -2441: extern void longjmp (struct __jmp_buf_tag __env[1], int __val) -2441: throw () __attribute__ ((__noreturn__)); -2441: -2441: -2441: -2441: -2441: -2441: extern void _longjmp (struct __jmp_buf_tag __env[1], int __val) -2441: throw () __attribute__ ((__noreturn__)); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: typedef struct __jmp_buf_tag sigjmp_buf[1]; -2441: # 93 "/usr/include/setjmp.h" 3 4 -2441: extern void siglongjmp (sigjmp_buf __env, int __val) -2441: throw () __attribute__ ((__noreturn__)); -2441: -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/setjmp2.h" 1 3 4 -2441: # 25 "/usr/include/i386-linux-gnu/bits/setjmp2.h" 3 4 -2441: extern void longjmp (struct __jmp_buf_tag __env[1], int __val) throw () __asm__ ("" "__longjmp_chk") -2441: -2441: __attribute__ ((__noreturn__)); -2441: extern void _longjmp (struct __jmp_buf_tag __env[1], int __val) throw () __asm__ ("" "__longjmp_chk") -2441: -2441: __attribute__ ((__noreturn__)); -2441: extern void siglongjmp (struct __jmp_buf_tag __env[1], int __val) throw () __asm__ ("" "__longjmp_chk") -2441: -2441: __attribute__ ((__noreturn__)); -2441: # 101 "/usr/include/setjmp.h" 2 3 4 -2441: -2441: -2441: } -2441: # 43 "/usr/include/c++/8/csetjmp" 2 3 -2441: # 55 "/usr/include/c++/8/csetjmp" 3 -2441: namespace std -2441: { -2441: using ::jmp_buf; -2441: using ::longjmp; -2441: } -2441: # 28 "../../src/fpu-ia32_inlines.hh" 2 -2441: # 1 "/usr/include/c++/8/csignal" 1 3 -2441: # 39 "/usr/include/c++/8/csignal" 3 -2441: -2441: # 40 "/usr/include/c++/8/csignal" 3 -2441: -2441: -2441: # 1 "/usr/include/signal.h" 1 3 4 -2441: # 27 "/usr/include/signal.h" 3 4 -2441: extern "C" { -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/signum.h" 1 3 4 -2441: # 26 "/usr/include/i386-linux-gnu/bits/signum.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/signum-generic.h" 1 3 4 -2441: # 27 "/usr/include/i386-linux-gnu/bits/signum.h" 2 3 4 -2441: # 31 "/usr/include/signal.h" 2 3 4 -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/types/sig_atomic_t.h" 1 3 4 -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: typedef __sig_atomic_t sig_atomic_t; -2441: # 33 "/usr/include/signal.h" 2 3 4 -2441: # 57 "/usr/include/signal.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/types/siginfo_t.h" 1 3 4 -2441: -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/wordsize.h" 1 3 4 -2441: # 5 "/usr/include/i386-linux-gnu/bits/types/siginfo_t.h" 2 3 4 -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/types/__sigval_t.h" 1 3 4 -2441: # 24 "/usr/include/i386-linux-gnu/bits/types/__sigval_t.h" 3 4 -2441: union sigval -2441: { -2441: int sival_int; -2441: void *sival_ptr; -2441: }; -2441: -2441: typedef union sigval __sigval_t; -2441: # 7 "/usr/include/i386-linux-gnu/bits/types/siginfo_t.h" 2 3 4 -2441: # 16 "/usr/include/i386-linux-gnu/bits/types/siginfo_t.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/siginfo-arch.h" 1 3 4 -2441: # 17 "/usr/include/i386-linux-gnu/bits/types/siginfo_t.h" 2 3 4 -2441: # 36 "/usr/include/i386-linux-gnu/bits/types/siginfo_t.h" 3 4 -2441: typedef struct -2441: { -2441: int si_signo; -2441: -2441: int si_errno; -2441: -2441: int si_code; -2441: # 51 "/usr/include/i386-linux-gnu/bits/types/siginfo_t.h" 3 4 -2441: union -2441: { -2441: int _pad[((128 / sizeof (int)) - 3)]; -2441: -2441: -2441: struct -2441: { -2441: __pid_t si_pid; -2441: __uid_t si_uid; -2441: } _kill; -2441: -2441: -2441: struct -2441: { -2441: int si_tid; -2441: int si_overrun; -2441: __sigval_t si_sigval; -2441: } _timer; -2441: -2441: -2441: struct -2441: { -2441: __pid_t si_pid; -2441: __uid_t si_uid; -2441: __sigval_t si_sigval; -2441: } _rt; -2441: -2441: -2441: struct -2441: { -2441: __pid_t si_pid; -2441: __uid_t si_uid; -2441: int si_status; -2441: __clock_t si_utime; -2441: __clock_t si_stime; -2441: } _sigchld; -2441: -2441: -2441: struct -2441: { -2441: void *si_addr; -2441: -2441: short int si_addr_lsb; -2441: union -2441: { -2441: -2441: struct -2441: { -2441: void *_lower; -2441: void *_upper; -2441: } _addr_bnd; -2441: -2441: __uint32_t _pkey; -2441: } _bounds; -2441: } _sigfault; -2441: -2441: -2441: struct -2441: { -2441: long int si_band; -2441: int si_fd; -2441: } _sigpoll; -2441: -2441: -2441: -2441: struct -2441: { -2441: void *_call_addr; -2441: int _syscall; -2441: unsigned int _arch; -2441: } _sigsys; -2441: -2441: } _sifields; -2441: } siginfo_t ; -2441: # 58 "/usr/include/signal.h" 2 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/siginfo-consts.h" 1 3 4 -2441: # 35 "/usr/include/i386-linux-gnu/bits/siginfo-consts.h" 3 4 -2441: enum -2441: { -2441: SI_ASYNCNL = -60, -2441: SI_TKILL = -6, -2441: SI_SIGIO, -2441: -2441: SI_ASYNCIO, -2441: SI_MESGQ, -2441: SI_TIMER, -2441: -2441: -2441: -2441: -2441: -2441: SI_QUEUE, -2441: SI_USER, -2441: SI_KERNEL = 0x80 -2441: # 63 "/usr/include/i386-linux-gnu/bits/siginfo-consts.h" 3 4 -2441: }; -2441: -2441: -2441: -2441: -2441: enum -2441: { -2441: ILL_ILLOPC = 1, -2441: -2441: ILL_ILLOPN, -2441: -2441: ILL_ILLADR, -2441: -2441: ILL_ILLTRP, -2441: -2441: ILL_PRVOPC, -2441: -2441: ILL_PRVREG, -2441: -2441: ILL_COPROC, -2441: -2441: ILL_BADSTK -2441: -2441: }; -2441: -2441: -2441: enum -2441: { -2441: FPE_INTDIV = 1, -2441: -2441: FPE_INTOVF, -2441: -2441: FPE_FLTDIV, -2441: -2441: FPE_FLTOVF, -2441: -2441: FPE_FLTUND, -2441: -2441: FPE_FLTRES, -2441: -2441: FPE_FLTINV, -2441: -2441: FPE_FLTSUB -2441: -2441: }; -2441: -2441: -2441: enum -2441: { -2441: SEGV_MAPERR = 1, -2441: -2441: SEGV_ACCERR, -2441: -2441: SEGV_BNDERR, -2441: -2441: SEGV_PKUERR -2441: -2441: }; -2441: -2441: -2441: enum -2441: { -2441: BUS_ADRALN = 1, -2441: -2441: BUS_ADRERR, -2441: -2441: BUS_OBJERR, -2441: -2441: BUS_MCEERR_AR, -2441: -2441: BUS_MCEERR_AO -2441: -2441: }; -2441: -2441: -2441: -2441: -2441: enum -2441: { -2441: TRAP_BRKPT = 1, -2441: -2441: TRAP_TRACE -2441: -2441: }; -2441: -2441: -2441: -2441: -2441: enum -2441: { -2441: CLD_EXITED = 1, -2441: -2441: CLD_KILLED, -2441: -2441: CLD_DUMPED, -2441: -2441: CLD_TRAPPED, -2441: -2441: CLD_STOPPED, -2441: -2441: CLD_CONTINUED -2441: -2441: }; -2441: -2441: -2441: enum -2441: { -2441: POLL_IN = 1, -2441: -2441: POLL_OUT, -2441: -2441: POLL_MSG, -2441: -2441: POLL_ERR, -2441: -2441: POLL_PRI, -2441: -2441: POLL_HUP -2441: -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/siginfo-consts-arch.h" 1 3 4 -2441: # 189 "/usr/include/i386-linux-gnu/bits/siginfo-consts.h" 2 3 4 -2441: # 59 "/usr/include/signal.h" 2 3 4 -2441: -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/types/sigval_t.h" 1 3 4 -2441: # 16 "/usr/include/i386-linux-gnu/bits/types/sigval_t.h" 3 4 -2441: typedef __sigval_t sigval_t; -2441: # 63 "/usr/include/signal.h" 2 3 4 -2441: -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/types/sigevent_t.h" 1 3 4 -2441: -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/wordsize.h" 1 3 4 -2441: # 5 "/usr/include/i386-linux-gnu/bits/types/sigevent_t.h" 2 3 4 -2441: # 22 "/usr/include/i386-linux-gnu/bits/types/sigevent_t.h" 3 4 -2441: typedef struct sigevent -2441: { -2441: __sigval_t sigev_value; -2441: int sigev_signo; -2441: int sigev_notify; -2441: -2441: union -2441: { -2441: int _pad[((64 / sizeof (int)) - 3)]; -2441: -2441: -2441: -2441: __pid_t _tid; -2441: -2441: struct -2441: { -2441: void (*_function) (__sigval_t); -2441: pthread_attr_t *_attribute; -2441: } _sigev_thread; -2441: } _sigev_un; -2441: } sigevent_t; -2441: # 67 "/usr/include/signal.h" 2 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/sigevent-consts.h" 1 3 4 -2441: # 27 "/usr/include/i386-linux-gnu/bits/sigevent-consts.h" 3 4 -2441: enum -2441: { -2441: SIGEV_SIGNAL = 0, -2441: -2441: SIGEV_NONE, -2441: -2441: SIGEV_THREAD, -2441: -2441: -2441: SIGEV_THREAD_ID = 4 -2441: -2441: -2441: }; -2441: # 68 "/usr/include/signal.h" 2 3 4 -2441: -2441: -2441: -2441: -2441: typedef void (*__sighandler_t) (int); -2441: -2441: -2441: -2441: -2441: extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler) -2441: throw (); -2441: -2441: extern __sighandler_t sysv_signal (int __sig, __sighandler_t __handler) -2441: throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern __sighandler_t signal (int __sig, __sighandler_t __handler) -2441: throw (); -2441: # 112 "/usr/include/signal.h" 3 4 -2441: extern int kill (__pid_t __pid, int __sig) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int killpg (__pid_t __pgrp, int __sig) throw (); -2441: -2441: -2441: -2441: extern int raise (int __sig) throw (); -2441: -2441: -2441: -2441: extern __sighandler_t ssignal (int __sig, __sighandler_t __handler) -2441: throw (); -2441: extern int gsignal (int __sig) throw (); -2441: -2441: -2441: -2441: -2441: extern void psignal (int __sig, const char *__s); -2441: -2441: -2441: extern void psiginfo (const siginfo_t *__pinfo, const char *__s); -2441: # 151 "/usr/include/signal.h" 3 4 -2441: extern int sigpause (int __sig) __asm__ ("__xpg_sigpause"); -2441: # 170 "/usr/include/signal.h" 3 4 -2441: extern int sigblock (int __mask) throw () __attribute__ ((__deprecated__)); -2441: -2441: -2441: extern int sigsetmask (int __mask) throw () __attribute__ ((__deprecated__)); -2441: -2441: -2441: extern int siggetmask (void) throw () __attribute__ ((__deprecated__)); -2441: # 185 "/usr/include/signal.h" 3 4 -2441: typedef __sighandler_t sighandler_t; -2441: -2441: -2441: -2441: -2441: typedef __sighandler_t sig_t; -2441: -2441: -2441: -2441: -2441: -2441: extern int sigemptyset (sigset_t *__set) throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int sigfillset (sigset_t *__set) throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int sigaddset (sigset_t *__set, int __signo) throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int sigdelset (sigset_t *__set, int __signo) throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int sigismember (const sigset_t *__set, int __signo) -2441: throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: extern int sigisemptyset (const sigset_t *__set) throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int sigandset (sigset_t *__set, const sigset_t *__left, -2441: const sigset_t *__right) throw () __attribute__ ((__nonnull__ (1, 2, 3))); -2441: -2441: -2441: extern int sigorset (sigset_t *__set, const sigset_t *__left, -2441: const sigset_t *__right) throw () __attribute__ ((__nonnull__ (1, 2, 3))); -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/sigaction.h" 1 3 4 -2441: # 27 "/usr/include/i386-linux-gnu/bits/sigaction.h" 3 4 -2441: struct sigaction -2441: { -2441: -2441: -2441: union -2441: { -2441: -2441: __sighandler_t sa_handler; -2441: -2441: void (*sa_sigaction) (int, siginfo_t *, void *); -2441: } -2441: __sigaction_handler; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: __sigset_t sa_mask; -2441: -2441: -2441: int sa_flags; -2441: -2441: -2441: void (*sa_restorer) (void); -2441: }; -2441: # 227 "/usr/include/signal.h" 2 3 4 -2441: -2441: -2441: extern int sigprocmask (int __how, const sigset_t *__restrict __set, -2441: sigset_t *__restrict __oset) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int sigsuspend (const sigset_t *__set) __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: extern int sigaction (int __sig, const struct sigaction *__restrict __act, -2441: struct sigaction *__restrict __oact) throw (); -2441: -2441: -2441: extern int sigpending (sigset_t *__set) throw () __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int sigwait (const sigset_t *__restrict __set, int *__restrict __sig) -2441: __attribute__ ((__nonnull__ (1, 2))); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int sigwaitinfo (const sigset_t *__restrict __set, -2441: siginfo_t *__restrict __info) __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int sigtimedwait (const sigset_t *__restrict __set, -2441: siginfo_t *__restrict __info, -2441: const struct timespec *__restrict __timeout) -2441: __attribute__ ((__nonnull__ (1))); -2441: -2441: -2441: -2441: extern int sigqueue (__pid_t __pid, int __sig, const union sigval __val) -2441: throw (); -2441: # 286 "/usr/include/signal.h" 3 4 -2441: extern const char *const _sys_siglist[(64 + 1)]; -2441: extern const char *const sys_siglist[(64 + 1)]; -2441: -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/sigcontext.h" 1 3 4 -2441: # 31 "/usr/include/i386-linux-gnu/bits/sigcontext.h" 3 4 -2441: struct _fpx_sw_bytes -2441: { -2441: __uint32_t magic1; -2441: __uint32_t extended_size; -2441: __uint64_t xstate_bv; -2441: __uint32_t xstate_size; -2441: __uint32_t __glibc_reserved1[7]; -2441: }; -2441: -2441: struct _fpreg -2441: { -2441: unsigned short significand[4]; -2441: unsigned short exponent; -2441: }; -2441: -2441: struct _fpxreg -2441: { -2441: unsigned short significand[4]; -2441: unsigned short exponent; -2441: unsigned short __glibc_reserved1[3]; -2441: }; -2441: -2441: struct _xmmreg -2441: { -2441: __uint32_t element[4]; -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: struct _fpstate -2441: { -2441: -2441: __uint32_t cw; -2441: __uint32_t sw; -2441: __uint32_t tag; -2441: __uint32_t ipoff; -2441: __uint32_t cssel; -2441: __uint32_t dataoff; -2441: __uint32_t datasel; -2441: struct _fpreg _st[8]; -2441: unsigned short status; -2441: unsigned short magic; -2441: -2441: -2441: __uint32_t _fxsr_env[6]; -2441: __uint32_t mxcsr; -2441: __uint32_t __glibc_reserved1; -2441: struct _fpxreg _fxsr_st[8]; -2441: struct _xmmreg _xmm[8]; -2441: __uint32_t __glibc_reserved2[56]; -2441: }; -2441: # 95 "/usr/include/i386-linux-gnu/bits/sigcontext.h" 3 4 -2441: struct sigcontext -2441: { -2441: unsigned short gs, __gsh; -2441: unsigned short fs, __fsh; -2441: unsigned short es, __esh; -2441: unsigned short ds, __dsh; -2441: unsigned long edi; -2441: unsigned long esi; -2441: unsigned long ebp; -2441: unsigned long esp; -2441: unsigned long ebx; -2441: unsigned long edx; -2441: unsigned long ecx; -2441: unsigned long eax; -2441: unsigned long trapno; -2441: unsigned long err; -2441: unsigned long eip; -2441: unsigned short cs, __csh; -2441: unsigned long eflags; -2441: unsigned long esp_at_signal; -2441: unsigned short ss, __ssh; -2441: struct _fpstate * fpstate; -2441: unsigned long oldmask; -2441: unsigned long cr2; -2441: }; -2441: # 177 "/usr/include/i386-linux-gnu/bits/sigcontext.h" 3 4 -2441: struct _xsave_hdr -2441: { -2441: __uint64_t xstate_bv; -2441: __uint64_t __glibc_reserved1[2]; -2441: __uint64_t __glibc_reserved2[5]; -2441: }; -2441: -2441: struct _ymmh_state -2441: { -2441: __uint32_t ymmh_space[64]; -2441: }; -2441: -2441: struct _xstate -2441: { -2441: struct _fpstate fpstate; -2441: struct _xsave_hdr xstate_hdr; -2441: struct _ymmh_state ymmh; -2441: }; -2441: # 292 "/usr/include/signal.h" 2 3 4 -2441: -2441: -2441: extern int sigreturn (struct sigcontext *__scp) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: # 1 "/usr/lib/gcc/i686-linux-gnu/8/include/stddef.h" 1 3 4 -2441: # 302 "/usr/include/signal.h" 2 3 4 -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/types/stack_t.h" 1 3 4 -2441: # 23 "/usr/include/i386-linux-gnu/bits/types/stack_t.h" 3 4 -2441: # 1 "/usr/lib/gcc/i686-linux-gnu/8/include/stddef.h" 1 3 4 -2441: # 24 "/usr/include/i386-linux-gnu/bits/types/stack_t.h" 2 3 4 -2441: -2441: -2441: typedef struct -2441: { -2441: void *ss_sp; -2441: int ss_flags; -2441: size_t ss_size; -2441: } stack_t; -2441: # 304 "/usr/include/signal.h" 2 3 4 -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/sys/ucontext.h" 1 3 4 -2441: # 156 "/usr/include/i386-linux-gnu/sys/ucontext.h" 3 4 -2441: typedef int greg_t; -2441: # 165 "/usr/include/i386-linux-gnu/sys/ucontext.h" 3 4 -2441: typedef greg_t gregset_t[19]; -2441: -2441: -2441: -2441: enum -2441: { -2441: REG_GS = 0, -2441: -2441: REG_FS, -2441: -2441: REG_ES, -2441: -2441: REG_DS, -2441: -2441: REG_EDI, -2441: -2441: REG_ESI, -2441: -2441: REG_EBP, -2441: -2441: REG_ESP, -2441: -2441: REG_EBX, -2441: -2441: REG_EDX, -2441: -2441: REG_ECX, -2441: -2441: REG_EAX, -2441: -2441: REG_TRAPNO, -2441: -2441: REG_ERR, -2441: -2441: REG_EIP, -2441: -2441: REG_CS, -2441: -2441: REG_EFL, -2441: -2441: REG_UESP, -2441: -2441: REG_SS -2441: -2441: }; -2441: -2441: -2441: -2441: struct _libc_fpreg -2441: { -2441: unsigned short int significand[4]; -2441: unsigned short int exponent; -2441: }; -2441: -2441: struct _libc_fpstate -2441: { -2441: unsigned long int cw; -2441: unsigned long int sw; -2441: unsigned long int tag; -2441: unsigned long int ipoff; -2441: unsigned long int cssel; -2441: unsigned long int dataoff; -2441: unsigned long int datasel; -2441: struct _libc_fpreg _st[8]; -2441: unsigned long int status; -2441: }; -2441: -2441: -2441: typedef struct _libc_fpstate *fpregset_t; -2441: -2441: -2441: typedef struct -2441: { -2441: gregset_t gregs; -2441: -2441: -2441: fpregset_t fpregs; -2441: unsigned long int oldmask; -2441: unsigned long int cr2; -2441: } mcontext_t; -2441: -2441: -2441: typedef struct ucontext_t -2441: { -2441: unsigned long int uc_flags; -2441: struct ucontext_t *uc_link; -2441: stack_t uc_stack; -2441: mcontext_t uc_mcontext; -2441: sigset_t uc_sigmask; -2441: struct _libc_fpstate __fpregs_mem; -2441: unsigned long int __ssp[4]; -2441: } ucontext_t; -2441: # 307 "/usr/include/signal.h" 2 3 4 -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int siginterrupt (int __sig, int __interrupt) throw (); -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/sigstack.h" 1 3 4 -2441: # 317 "/usr/include/signal.h" 2 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/ss_flags.h" 1 3 4 -2441: # 27 "/usr/include/i386-linux-gnu/bits/ss_flags.h" 3 4 -2441: enum -2441: { -2441: SS_ONSTACK = 1, -2441: -2441: SS_DISABLE -2441: -2441: }; -2441: # 318 "/usr/include/signal.h" 2 3 4 -2441: -2441: -2441: -2441: extern int sigaltstack (const stack_t *__restrict __ss, -2441: stack_t *__restrict __oss) throw (); -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/types/struct_sigstack.h" 1 3 4 -2441: # 23 "/usr/include/i386-linux-gnu/bits/types/struct_sigstack.h" 3 4 -2441: struct sigstack -2441: { -2441: void *ss_sp; -2441: int ss_onstack; -2441: }; -2441: # 328 "/usr/include/signal.h" 2 3 4 -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int sigstack (struct sigstack *__ss, struct sigstack *__oss) -2441: throw () __attribute__ ((__deprecated__)); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int sighold (int __sig) throw (); -2441: -2441: -2441: extern int sigrelse (int __sig) throw (); -2441: -2441: -2441: extern int sigignore (int __sig) throw (); -2441: -2441: -2441: extern __sighandler_t sigset (int __sig, __sighandler_t __disp) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/sigthread.h" 1 3 4 -2441: # 31 "/usr/include/i386-linux-gnu/bits/sigthread.h" 3 4 -2441: extern int pthread_sigmask (int __how, -2441: const __sigset_t *__restrict __newmask, -2441: __sigset_t *__restrict __oldmask)throw (); -2441: -2441: -2441: extern int pthread_kill (pthread_t __threadid, int __signo) throw (); -2441: -2441: -2441: -2441: extern int pthread_sigqueue (pthread_t __threadid, int __signo, -2441: const union sigval __value) throw (); -2441: # 360 "/usr/include/signal.h" 2 3 4 -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int __libc_current_sigrtmin (void) throw (); -2441: -2441: extern int __libc_current_sigrtmax (void) throw (); -2441: -2441: -2441: -2441: -2441: } -2441: # 43 "/usr/include/c++/8/csignal" 2 3 -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: namespace std -2441: { -2441: using ::sig_atomic_t; -2441: using ::signal; -2441: using ::raise; -2441: } -2441: # 29 "../../src/fpu-ia32_inlines.hh" 2 -2441: # 57 "../../src/fpu-ia32_inlines.hh" -2441: -2441: # 57 "../../src/fpu-ia32_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: typedef struct { -2441: unsigned short control_word; -2441: unsigned short unused1; -2441: unsigned short status_word; -2441: unsigned short unused2; -2441: unsigned short tags; -2441: unsigned short unused3; -2441: unsigned int eip; -2441: unsigned short cs_selector; -2441: unsigned int opcode:11; -2441: unsigned int unused4:5; -2441: unsigned int data_offset; -2441: unsigned short data_selector; -2441: unsigned short unused5; -2441: } ia32_fenv_t; -2441: -2441: inline int -2441: fpu_get_control() { -2441: unsigned short cw; -2441: __asm__ __volatile__ ("fnstcw %0" : "=m" (*&cw) : : "memory"); -2441: return cw; -2441: } -2441: -2441: inline void -2441: fpu_set_control(int c) { -2441: unsigned short cw = static_cast(c); -2441: __asm__ __volatile__ ("fldcw %0" : : "m" (*&cw) : "memory"); -2441: } -2441: -2441: inline int -2441: fpu_get_status() { -2441: unsigned short sw; -2441: __asm__ __volatile__ ("fnstsw %0" : "=a" (sw) : : "memory"); -2441: return sw; -2441: } -2441: -2441: inline void -2441: fpu_clear_status(unsigned short bits) { -2441: -2441: ia32_fenv_t env; -2441: __asm__ __volatile__ ("fnstenv %0" : "=m" (env)); -2441: env.status_word = static_cast(env.status_word & ~bits); -2441: __asm__ __volatile__ ("fldenv %0" : : "m" (env) : "memory"); -2441: } -2441: -2441: inline void -2441: fpu_clear_exceptions() { -2441: __asm__ __volatile__ ("fnclex" : : : "memory"); -2441: } -2441: -2441: -2441: inline void -2441: sse_set_control(unsigned int cw) { -2441: __asm__ __volatile__ ("ldmxcsr %0" : : "m" (*&cw) : "memory"); -2441: } -2441: -2441: inline unsigned int -2441: sse_get_control() { -2441: unsigned int cw; -2441: __asm__ __volatile__ ("stmxcsr %0" : "=m" (*&cw) : : "memory"); -2441: return cw; -2441: } -2441: -2441: -2441: inline void -2441: fpu_initialize_control_functions() { -2441: -2441: extern void detect_sse_unit(); -2441: detect_sse_unit(); -2441: -2441: } -2441: -2441: inline fpu_rounding_direction_type -2441: fpu_get_rounding_direction() { -2441: return static_cast(fpu_get_control() & 0xc00); -2441: } -2441: -2441: inline void -2441: fpu_set_rounding_direction(fpu_rounding_direction_type dir) { -2441: -2441: fpu_set_control(0x37f | dir); -2441: -2441: -2441: extern bool have_sse_unit; -2441: if (have_sse_unit) -2441: sse_set_control(0x1f80 | (dir << 3)); -2441: -2441: } -2441: -2441: inline fpu_rounding_control_word_type -2441: fpu_save_rounding_direction(fpu_rounding_direction_type dir) { -2441: -2441: fpu_set_control(0x37f | dir); -2441: -2441: -2441: extern bool have_sse_unit; -2441: if (have_sse_unit) -2441: sse_set_control(0x1f80 | (dir << 3)); -2441: -2441: return static_cast(0); -2441: } -2441: -2441: inline void -2441: fpu_reset_inexact() { -2441: -2441: fpu_clear_exceptions(); -2441: -2441: -2441: -2441: -2441: extern bool have_sse_unit; -2441: if (have_sse_unit) { -2441: sse_set_control((0x1f80 | (0x800 << 3))); -2441: } -2441: -2441: } -2441: -2441: inline void -2441: fpu_restore_rounding_direction(fpu_rounding_control_word_type) { -2441: -2441: fpu_set_control((0x37f | 0x800)); -2441: -2441: -2441: extern bool have_sse_unit; -2441: if (have_sse_unit) { -2441: sse_set_control((0x1f80 | (0x800 << 3))); -2441: } -2441: -2441: } -2441: -2441: inline int -2441: fpu_check_inexact() { -2441: -2441: if (fpu_get_status() & 0x20) { -2441: return 1; -2441: } -2441: -2441: -2441: extern bool have_sse_unit; -2441: if (have_sse_unit && (sse_get_control() & 0x20)) { -2441: return 1; -2441: } -2441: -2441: return 0; -2441: } -2441: -2441: } -2441: # 87 "../../src/fpu_defs.hh" 2 -2441: # 29 "../../src/Rounding_Dir_defs.hh" 2 -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: enum Rounding_Dir { -2441: -2441: -2441: -2441: ROUND_DOWN = 0U, -2441: -2441: -2441: -2441: -2441: ROUND_UP = 1U, -2441: -2441: -2441: -2441: -2441: ROUND_IGNORE = 6U, -2441: ROUND_NATIVE = ROUND_IGNORE, -2441: -2441: -2441: -2441: -2441: -2441: -2441: ROUND_NOT_NEEDED = 7U, -2441: -2441: ROUND_DIRECT = ROUND_UP, -2441: ROUND_INVERSE = ROUND_DOWN, -2441: -2441: ROUND_DIR_MASK = 7U, -2441: -2441: -2441: -2441: -2441: -2441: ROUND_STRICT_RELATION = 8U, -2441: -2441: ROUND_CHECK = ROUND_DIRECT | ROUND_STRICT_RELATION -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: Rounding_Dir operator&(Rounding_Dir x, Rounding_Dir y); -2441: -2441: -2441: Rounding_Dir operator|(Rounding_Dir x, Rounding_Dir y); -2441: -2441: -2441: -2441: -2441: -2441: Rounding_Dir inverse(Rounding_Dir dir); -2441: -2441: -2441: Rounding_Dir round_dir(Rounding_Dir dir); -2441: -2441: -2441: bool round_down(Rounding_Dir dir); -2441: -2441: -2441: bool round_up(Rounding_Dir dir); -2441: -2441: -2441: bool round_ignore(Rounding_Dir dir); -2441: -2441: -2441: bool round_not_needed(Rounding_Dir dir); -2441: -2441: -2441: bool round_not_requested(Rounding_Dir dir); -2441: -2441: -2441: bool round_direct(Rounding_Dir dir); -2441: -2441: -2441: bool round_inverse(Rounding_Dir dir); -2441: -2441: -2441: bool round_strict_relation(Rounding_Dir dir); -2441: -2441: -2441: fpu_rounding_direction_type round_fpu_dir(Rounding_Dir dir); -2441: -2441: -2441: -2441: } -2441: -2441: # 1 "../../src/Rounding_Dir_inlines.hh" 1 -2441: # 29 "../../src/Rounding_Dir_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: inline Rounding_Dir -2441: operator&(Rounding_Dir x, Rounding_Dir y) { -2441: const unsigned res = static_cast(x) & static_cast(y); -2441: return static_cast(res); -2441: } -2441: -2441: -2441: inline Rounding_Dir -2441: operator|(Rounding_Dir x, Rounding_Dir y) { -2441: const unsigned res = static_cast(x) | static_cast(y); -2441: return static_cast(res); -2441: } -2441: -2441: -2441: inline Rounding_Dir -2441: round_dir(Rounding_Dir dir) { -2441: return dir & ROUND_DIR_MASK; -2441: } -2441: -2441: -2441: inline bool -2441: round_down(Rounding_Dir dir) { -2441: return round_dir(dir) == ROUND_DOWN; -2441: } -2441: -2441: -2441: inline bool -2441: round_up(Rounding_Dir dir) { -2441: return round_dir(dir) == ROUND_UP; -2441: } -2441: -2441: -2441: inline bool -2441: round_ignore(Rounding_Dir dir) { -2441: return round_dir(dir) == ROUND_IGNORE; -2441: } -2441: -2441: -2441: inline bool -2441: round_not_needed(Rounding_Dir dir) { -2441: return round_dir(dir) == ROUND_NOT_NEEDED; -2441: } -2441: -2441: -2441: inline bool -2441: round_not_requested(Rounding_Dir dir) { -2441: return round_dir(dir) == ROUND_IGNORE || round_dir(dir) == ROUND_NOT_NEEDED; -2441: } -2441: -2441: -2441: inline bool -2441: round_direct(Rounding_Dir dir) { -2441: return round_dir(dir) == ROUND_DIRECT; -2441: } -2441: -2441: -2441: inline bool -2441: round_inverse(Rounding_Dir dir) { -2441: return round_dir(dir) == ROUND_INVERSE; -2441: } -2441: -2441: -2441: inline bool -2441: round_strict_relation(Rounding_Dir dir) { -2441: return (dir & ROUND_STRICT_RELATION) == ROUND_STRICT_RELATION; -2441: } -2441: -2441: -2441: -2441: -2441: inline fpu_rounding_direction_type -2441: round_fpu_dir(Rounding_Dir dir) { -2441: switch (round_dir(dir)) { -2441: case ROUND_UP: -2441: return static_cast(0x800); -2441: case ROUND_DOWN: -2441: return static_cast(0x400); -2441: case ROUND_IGNORE: -2441: default: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return static_cast(0x800); -2441: } -2441: } -2441: # 124 "../../src/Rounding_Dir_inlines.hh" -2441: inline Rounding_Dir -2441: inverse(Rounding_Dir dir) { -2441: switch (round_dir(dir)) { -2441: case ROUND_UP: -2441: return ROUND_DOWN | (dir & ROUND_STRICT_RELATION); -2441: case ROUND_DOWN: -2441: return ROUND_UP | (dir & ROUND_STRICT_RELATION); -2441: case ROUND_IGNORE: -2441: return dir; -2441: default: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return dir; -2441: } -2441: } -2441: -2441: } -2441: # 122 "../../src/Rounding_Dir_defs.hh" 2 -2441: # 30 "../../src/checked_defs.hh" 2 -2441: # 1 "../../src/Numeric_Format_defs.hh" 1 -2441: # 30 "../../src/Numeric_Format_defs.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: class Numeric_Format { -2441: }; -2441: -2441: } -2441: # 31 "../../src/checked_defs.hh" 2 -2441: # 1 "../../src/Float_defs.hh" 1 -2441: # 27 "../../src/Float_defs.hh" -2441: # 1 "../../src/globals_types.hh" 1 -2441: # 18 "../../src/globals_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: typedef size_t dimension_type; -2441: -2441: -2441: -2441: typedef size_t memory_size_type; -2441: -2441: -2441: -2441: enum Degenerate_Element { -2441: -2441: UNIVERSE, -2441: -2441: EMPTY -2441: }; -2441: -2441: -2441: -2441: -2441: enum Relation_Symbol { -2441: -2441: EQUAL = 1U, -2441: -2441: LESS_THAN = 2U, -2441: -2441: LESS_OR_EQUAL = LESS_THAN | EQUAL, -2441: -2441: GREATER_THAN = 4U, -2441: -2441: GREATER_OR_EQUAL = GREATER_THAN | EQUAL, -2441: -2441: NOT_EQUAL = LESS_THAN | GREATER_THAN -2441: }; -2441: -2441: -2441: -2441: enum Complexity_Class { -2441: -2441: POLYNOMIAL_COMPLEXITY, -2441: -2441: SIMPLEX_COMPLEXITY, -2441: -2441: ANY_COMPLEXITY -2441: }; -2441: -2441: -2441: -2441: enum Optimization_Mode { -2441: -2441: MINIMIZATION, -2441: -2441: MAXIMIZATION -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: enum Bounded_Integer_Type_Width { -2441: -2441: BITS_8 = 8, -2441: -2441: -2441: BITS_16 = 16, -2441: -2441: -2441: BITS_32 = 32, -2441: -2441: -2441: BITS_64 = 64, -2441: -2441: -2441: BITS_128 = 128 -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: enum Bounded_Integer_Type_Representation { -2441: -2441: UNSIGNED, -2441: -2441: -2441: -2441: -2441: -2441: SIGNED_2_COMPLEMENT -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: enum Bounded_Integer_Type_Overflow { -2441: -2441: -2441: -2441: -2441: -2441: -2441: OVERFLOW_WRAPS, -2441: # 143 "../../src/globals_types.hh" -2441: OVERFLOW_UNDEFINED, -2441: # 153 "../../src/globals_types.hh" -2441: OVERFLOW_IMPOSSIBLE -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: enum Representation { -2441: -2441: -2441: -2441: -2441: -2441: -2441: DENSE, -2441: # 177 "../../src/globals_types.hh" -2441: SPARSE -2441: }; -2441: # 187 "../../src/globals_types.hh" -2441: enum Floating_Point_Format { -2441: -2441: IEEE754_HALF, -2441: -2441: -2441: IEEE754_SINGLE, -2441: -2441: -2441: IEEE754_DOUBLE, -2441: -2441: -2441: IEEE754_QUAD, -2441: -2441: -2441: INTEL_DOUBLE_EXTENDED, -2441: -2441: -2441: IBM_SINGLE, -2441: -2441: -2441: IBM_DOUBLE -2441: }; -2441: -2441: struct Weightwatch_Traits; -2441: -2441: } -2441: # 28 "../../src/Float_defs.hh" 2 -2441: -2441: -2441: # 1 "../../src/Concrete_Expression_types.hh" 1 -2441: # 16 "../../src/Concrete_Expression_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: # 27 "../../src/Concrete_Expression_types.hh" -2441: template -2441: class Concrete_Expression; -2441: -2441: -2441: -2441: -2441: template -2441: class Binary_Operator; -2441: -2441: -2441: -2441: -2441: template -2441: class Unary_Operator; -2441: -2441: -2441: -2441: -2441: template -2441: class Cast_Operator; -2441: -2441: -2441: -2441: -2441: template -2441: class Integer_Constant; -2441: -2441: -2441: -2441: -2441: template -2441: class Floating_Point_Constant; -2441: -2441: -2441: -2441: -2441: template -2441: class Approximable_Reference; -2441: -2441: class Concrete_Expression_Type; -2441: # 78 "../../src/Concrete_Expression_types.hh" -2441: typedef int Concrete_Expression_Kind; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: typedef int Concrete_Expression_BOP; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: typedef int Concrete_Expression_UOP; -2441: -2441: } -2441: # 31 "../../src/Float_defs.hh" 2 -2441: # 1 "../../src/Variable_types.hh" 1 -2441: # 16 "../../src/Variable_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: class Variable; -2441: -2441: } -2441: # 32 "../../src/Float_defs.hh" 2 -2441: # 1 "../../src/Linear_Form_types.hh" 1 -2441: # 16 "../../src/Linear_Form_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: class Linear_Form; -2441: -2441: } -2441: # 33 "../../src/Float_defs.hh" 2 -2441: # 1 "/usr/include/c++/8/set" 1 3 -2441: # 58 "/usr/include/c++/8/set" 3 -2441: -2441: # 59 "/usr/include/c++/8/set" 3 -2441: -2441: # 1 "/usr/include/c++/8/bits/stl_tree.h" 1 3 -2441: # 61 "/usr/include/c++/8/bits/stl_tree.h" 3 -2441: -2441: # 62 "/usr/include/c++/8/bits/stl_tree.h" 3 -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/c++/8/ext/aligned_buffer.h" 1 3 -2441: # 32 "/usr/include/c++/8/ext/aligned_buffer.h" 3 -2441: -2441: # 33 "/usr/include/c++/8/ext/aligned_buffer.h" 3 -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: # 40 "/usr/include/c++/8/ext/aligned_buffer.h" 3 -2441: namespace __gnu_cxx -2441: { -2441: -2441: -2441: -2441: -2441: template -2441: struct __aligned_membuf -2441: { -2441: -2441: -2441: -2441: -2441: -2441: struct _Tp2 { _Tp _M_t; }; -2441: -2441: alignas(__alignof__(_Tp2::_M_t)) unsigned char _M_storage[sizeof(_Tp)]; -2441: -2441: __aligned_membuf() = default; -2441: -2441: -2441: __aligned_membuf(std::nullptr_t) { } -2441: -2441: void* -2441: _M_addr() noexcept -2441: { return static_cast(&_M_storage); } -2441: -2441: const void* -2441: _M_addr() const noexcept -2441: { return static_cast(&_M_storage); } -2441: -2441: _Tp* -2441: _M_ptr() noexcept -2441: { return static_cast<_Tp*>(_M_addr()); } -2441: -2441: const _Tp* -2441: _M_ptr() const noexcept -2441: { return static_cast(_M_addr()); } -2441: }; -2441: # 89 "/usr/include/c++/8/ext/aligned_buffer.h" 3 -2441: template -2441: struct __aligned_buffer -2441: : std::aligned_storage -2441: { -2441: typename -2441: std::aligned_storage::type _M_storage; -2441: -2441: __aligned_buffer() = default; -2441: -2441: -2441: __aligned_buffer(std::nullptr_t) { } -2441: -2441: void* -2441: _M_addr() noexcept -2441: { -2441: return static_cast(&_M_storage); -2441: } -2441: -2441: const void* -2441: _M_addr() const noexcept -2441: { -2441: return static_cast(&_M_storage); -2441: } -2441: -2441: _Tp* -2441: _M_ptr() noexcept -2441: { return static_cast<_Tp*>(_M_addr()); } -2441: -2441: const _Tp* -2441: _M_ptr() const noexcept -2441: { return static_cast(_M_addr()); } -2441: }; -2441: -2441: -2441: } -2441: # 70 "/usr/include/c++/8/bits/stl_tree.h" 2 3 -2441: -2441: -2441: -2441: -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: # 99 "/usr/include/c++/8/bits/stl_tree.h" 3 -2441: enum _Rb_tree_color { _S_red = false, _S_black = true }; -2441: -2441: struct _Rb_tree_node_base -2441: { -2441: typedef _Rb_tree_node_base* _Base_ptr; -2441: typedef const _Rb_tree_node_base* _Const_Base_ptr; -2441: -2441: _Rb_tree_color _M_color; -2441: _Base_ptr _M_parent; -2441: _Base_ptr _M_left; -2441: _Base_ptr _M_right; -2441: -2441: static _Base_ptr -2441: _S_minimum(_Base_ptr __x) noexcept -2441: { -2441: while (__x->_M_left != 0) __x = __x->_M_left; -2441: return __x; -2441: } -2441: -2441: static _Const_Base_ptr -2441: _S_minimum(_Const_Base_ptr __x) noexcept -2441: { -2441: while (__x->_M_left != 0) __x = __x->_M_left; -2441: return __x; -2441: } -2441: -2441: static _Base_ptr -2441: _S_maximum(_Base_ptr __x) noexcept -2441: { -2441: while (__x->_M_right != 0) __x = __x->_M_right; -2441: return __x; -2441: } -2441: -2441: static _Const_Base_ptr -2441: _S_maximum(_Const_Base_ptr __x) noexcept -2441: { -2441: while (__x->_M_right != 0) __x = __x->_M_right; -2441: return __x; -2441: } -2441: }; -2441: -2441: -2441: template -2441: struct _Rb_tree_key_compare -2441: { -2441: _Key_compare _M_key_compare; -2441: -2441: _Rb_tree_key_compare() -2441: noexcept(is_nothrow_default_constructible<_Key_compare>::value) -2441: -2441: : _M_key_compare() -2441: { } -2441: -2441: _Rb_tree_key_compare(const _Key_compare& __comp) -2441: : _M_key_compare(__comp) -2441: { } -2441: -2441: -2441: -2441: _Rb_tree_key_compare(const _Rb_tree_key_compare&) = default; -2441: -2441: _Rb_tree_key_compare(_Rb_tree_key_compare&& __x) -2441: noexcept(is_nothrow_copy_constructible<_Key_compare>::value) -2441: : _M_key_compare(__x._M_key_compare) -2441: { } -2441: -2441: }; -2441: -2441: -2441: struct _Rb_tree_header -2441: { -2441: _Rb_tree_node_base _M_header; -2441: size_t _M_node_count; -2441: -2441: _Rb_tree_header() noexcept -2441: { -2441: _M_header._M_color = _S_red; -2441: _M_reset(); -2441: } -2441: -2441: -2441: _Rb_tree_header(_Rb_tree_header&& __x) noexcept -2441: { -2441: if (__x._M_header._M_parent != nullptr) -2441: _M_move_data(__x); -2441: else -2441: { -2441: _M_header._M_color = _S_red; -2441: _M_reset(); -2441: } -2441: } -2441: -2441: -2441: void -2441: _M_move_data(_Rb_tree_header& __from) -2441: { -2441: _M_header._M_color = __from._M_header._M_color; -2441: _M_header._M_parent = __from._M_header._M_parent; -2441: _M_header._M_left = __from._M_header._M_left; -2441: _M_header._M_right = __from._M_header._M_right; -2441: _M_header._M_parent->_M_parent = &_M_header; -2441: _M_node_count = __from._M_node_count; -2441: -2441: __from._M_reset(); -2441: } -2441: -2441: void -2441: _M_reset() -2441: { -2441: _M_header._M_parent = 0; -2441: _M_header._M_left = &_M_header; -2441: _M_header._M_right = &_M_header; -2441: _M_node_count = 0; -2441: } -2441: }; -2441: -2441: template -2441: struct _Rb_tree_node : public _Rb_tree_node_base -2441: { -2441: typedef _Rb_tree_node<_Val>* _Link_type; -2441: # 231 "/usr/include/c++/8/bits/stl_tree.h" 3 -2441: __gnu_cxx::__aligned_membuf<_Val> _M_storage; -2441: -2441: _Val* -2441: _M_valptr() -2441: { return _M_storage._M_ptr(); } -2441: -2441: const _Val* -2441: _M_valptr() const -2441: { return _M_storage._M_ptr(); } -2441: -2441: }; -2441: -2441: __attribute__ ((__pure__)) _Rb_tree_node_base* -2441: _Rb_tree_increment(_Rb_tree_node_base* __x) throw (); -2441: -2441: __attribute__ ((__pure__)) const _Rb_tree_node_base* -2441: _Rb_tree_increment(const _Rb_tree_node_base* __x) throw (); -2441: -2441: __attribute__ ((__pure__)) _Rb_tree_node_base* -2441: _Rb_tree_decrement(_Rb_tree_node_base* __x) throw (); -2441: -2441: __attribute__ ((__pure__)) const _Rb_tree_node_base* -2441: _Rb_tree_decrement(const _Rb_tree_node_base* __x) throw (); -2441: -2441: template -2441: struct _Rb_tree_iterator -2441: { -2441: typedef _Tp value_type; -2441: typedef _Tp& reference; -2441: typedef _Tp* pointer; -2441: -2441: typedef bidirectional_iterator_tag iterator_category; -2441: typedef ptrdiff_t difference_type; -2441: -2441: typedef _Rb_tree_iterator<_Tp> _Self; -2441: typedef _Rb_tree_node_base::_Base_ptr _Base_ptr; -2441: typedef _Rb_tree_node<_Tp>* _Link_type; -2441: -2441: _Rb_tree_iterator() noexcept -2441: : _M_node() { } -2441: -2441: explicit -2441: _Rb_tree_iterator(_Base_ptr __x) noexcept -2441: : _M_node(__x) { } -2441: -2441: reference -2441: operator*() const noexcept -2441: { return *static_cast<_Link_type>(_M_node)->_M_valptr(); } -2441: -2441: pointer -2441: operator->() const noexcept -2441: { return static_cast<_Link_type> (_M_node)->_M_valptr(); } -2441: -2441: _Self& -2441: operator++() noexcept -2441: { -2441: _M_node = _Rb_tree_increment(_M_node); -2441: return *this; -2441: } -2441: -2441: _Self -2441: operator++(int) noexcept -2441: { -2441: _Self __tmp = *this; -2441: _M_node = _Rb_tree_increment(_M_node); -2441: return __tmp; -2441: } -2441: -2441: _Self& -2441: operator--() noexcept -2441: { -2441: _M_node = _Rb_tree_decrement(_M_node); -2441: return *this; -2441: } -2441: -2441: _Self -2441: operator--(int) noexcept -2441: { -2441: _Self __tmp = *this; -2441: _M_node = _Rb_tree_decrement(_M_node); -2441: return __tmp; -2441: } -2441: -2441: bool -2441: operator==(const _Self& __x) const noexcept -2441: { return _M_node == __x._M_node; } -2441: -2441: bool -2441: operator!=(const _Self& __x) const noexcept -2441: { return _M_node != __x._M_node; } -2441: -2441: _Base_ptr _M_node; -2441: }; -2441: -2441: template -2441: struct _Rb_tree_const_iterator -2441: { -2441: typedef _Tp value_type; -2441: typedef const _Tp& reference; -2441: typedef const _Tp* pointer; -2441: -2441: typedef _Rb_tree_iterator<_Tp> iterator; -2441: -2441: typedef bidirectional_iterator_tag iterator_category; -2441: typedef ptrdiff_t difference_type; -2441: -2441: typedef _Rb_tree_const_iterator<_Tp> _Self; -2441: typedef _Rb_tree_node_base::_Const_Base_ptr _Base_ptr; -2441: typedef const _Rb_tree_node<_Tp>* _Link_type; -2441: -2441: _Rb_tree_const_iterator() noexcept -2441: : _M_node() { } -2441: -2441: explicit -2441: _Rb_tree_const_iterator(_Base_ptr __x) noexcept -2441: : _M_node(__x) { } -2441: -2441: _Rb_tree_const_iterator(const iterator& __it) noexcept -2441: : _M_node(__it._M_node) { } -2441: -2441: iterator -2441: _M_const_cast() const noexcept -2441: { return iterator(const_cast(_M_node)); } -2441: -2441: reference -2441: operator*() const noexcept -2441: { return *static_cast<_Link_type>(_M_node)->_M_valptr(); } -2441: -2441: pointer -2441: operator->() const noexcept -2441: { return static_cast<_Link_type>(_M_node)->_M_valptr(); } -2441: -2441: _Self& -2441: operator++() noexcept -2441: { -2441: _M_node = _Rb_tree_increment(_M_node); -2441: return *this; -2441: } -2441: -2441: _Self -2441: operator++(int) noexcept -2441: { -2441: _Self __tmp = *this; -2441: _M_node = _Rb_tree_increment(_M_node); -2441: return __tmp; -2441: } -2441: -2441: _Self& -2441: operator--() noexcept -2441: { -2441: _M_node = _Rb_tree_decrement(_M_node); -2441: return *this; -2441: } -2441: -2441: _Self -2441: operator--(int) noexcept -2441: { -2441: _Self __tmp = *this; -2441: _M_node = _Rb_tree_decrement(_M_node); -2441: return __tmp; -2441: } -2441: -2441: bool -2441: operator==(const _Self& __x) const noexcept -2441: { return _M_node == __x._M_node; } -2441: -2441: bool -2441: operator!=(const _Self& __x) const noexcept -2441: { return _M_node != __x._M_node; } -2441: -2441: _Base_ptr _M_node; -2441: }; -2441: -2441: template -2441: inline bool -2441: operator==(const _Rb_tree_iterator<_Val>& __x, -2441: const _Rb_tree_const_iterator<_Val>& __y) noexcept -2441: { return __x._M_node == __y._M_node; } -2441: -2441: template -2441: inline bool -2441: operator!=(const _Rb_tree_iterator<_Val>& __x, -2441: const _Rb_tree_const_iterator<_Val>& __y) noexcept -2441: { return __x._M_node != __y._M_node; } -2441: -2441: void -2441: _Rb_tree_insert_and_rebalance(const bool __insert_left, -2441: _Rb_tree_node_base* __x, -2441: _Rb_tree_node_base* __p, -2441: _Rb_tree_node_base& __header) throw (); -2441: -2441: _Rb_tree_node_base* -2441: _Rb_tree_rebalance_for_erase(_Rb_tree_node_base* const __z, -2441: _Rb_tree_node_base& __header) throw (); -2441: -2441: -2441: template> -2441: struct __has_is_transparent -2441: { }; -2441: -2441: template -2441: struct __has_is_transparent<_Cmp, _SfinaeType, -2441: __void_t> -2441: { typedef void type; }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template > -2441: class _Rb_tree -2441: { -2441: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template -2441: rebind<_Rb_tree_node<_Val> >::other _Node_allocator; -2441: -2441: typedef __gnu_cxx::__alloc_traits<_Node_allocator> _Alloc_traits; -2441: -2441: -2441: static_assert(__is_invocable<_Compare&, const _Key&, const _Key&>{}, -2441: "comparison object must be invocable with two arguments of key type"); -2441: # 462 "/usr/include/c++/8/bits/stl_tree.h" 3 -2441: protected: -2441: typedef _Rb_tree_node_base* _Base_ptr; -2441: typedef const _Rb_tree_node_base* _Const_Base_ptr; -2441: typedef _Rb_tree_node<_Val>* _Link_type; -2441: typedef const _Rb_tree_node<_Val>* _Const_Link_type; -2441: -2441: private: -2441: -2441: -2441: struct _Reuse_or_alloc_node -2441: { -2441: _Reuse_or_alloc_node(_Rb_tree& __t) -2441: : _M_root(__t._M_root()), _M_nodes(__t._M_rightmost()), _M_t(__t) -2441: { -2441: if (_M_root) -2441: { -2441: _M_root->_M_parent = 0; -2441: -2441: if (_M_nodes->_M_left) -2441: _M_nodes = _M_nodes->_M_left; -2441: } -2441: else -2441: _M_nodes = 0; -2441: } -2441: -2441: -2441: _Reuse_or_alloc_node(const _Reuse_or_alloc_node&) = delete; -2441: -2441: -2441: ~_Reuse_or_alloc_node() -2441: { _M_t._M_erase(static_cast<_Link_type>(_M_root)); } -2441: -2441: template -2441: _Link_type -2441: -2441: -2441: -2441: operator()(_Arg&& __arg) -2441: -2441: { -2441: _Link_type __node = static_cast<_Link_type>(_M_extract()); -2441: if (__node) -2441: { -2441: _M_t._M_destroy_node(__node); -2441: _M_t._M_construct_node(__node, std::forward<_Arg>(__arg)); -2441: return __node; -2441: } -2441: -2441: return _M_t._M_create_node(std::forward<_Arg>(__arg)); -2441: } -2441: -2441: private: -2441: _Base_ptr -2441: _M_extract() -2441: { -2441: if (!_M_nodes) -2441: return _M_nodes; -2441: -2441: _Base_ptr __node = _M_nodes; -2441: _M_nodes = _M_nodes->_M_parent; -2441: if (_M_nodes) -2441: { -2441: if (_M_nodes->_M_right == __node) -2441: { -2441: _M_nodes->_M_right = 0; -2441: -2441: if (_M_nodes->_M_left) -2441: { -2441: _M_nodes = _M_nodes->_M_left; -2441: -2441: while (_M_nodes->_M_right) -2441: _M_nodes = _M_nodes->_M_right; -2441: -2441: if (_M_nodes->_M_left) -2441: _M_nodes = _M_nodes->_M_left; -2441: } -2441: } -2441: else -2441: _M_nodes->_M_left = 0; -2441: } -2441: else -2441: _M_root = 0; -2441: -2441: return __node; -2441: } -2441: -2441: _Base_ptr _M_root; -2441: _Base_ptr _M_nodes; -2441: _Rb_tree& _M_t; -2441: }; -2441: -2441: -2441: -2441: struct _Alloc_node -2441: { -2441: _Alloc_node(_Rb_tree& __t) -2441: : _M_t(__t) { } -2441: -2441: template -2441: _Link_type -2441: -2441: -2441: -2441: operator()(_Arg&& __arg) const -2441: -2441: { return _M_t._M_create_node(std::forward<_Arg>(__arg)); } -2441: -2441: private: -2441: _Rb_tree& _M_t; -2441: }; -2441: -2441: public: -2441: typedef _Key key_type; -2441: typedef _Val value_type; -2441: typedef value_type* pointer; -2441: typedef const value_type* const_pointer; -2441: typedef value_type& reference; -2441: typedef const value_type& const_reference; -2441: typedef size_t size_type; -2441: typedef ptrdiff_t difference_type; -2441: typedef _Alloc allocator_type; -2441: -2441: _Node_allocator& -2441: _M_get_Node_allocator() noexcept -2441: { return this->_M_impl; } -2441: -2441: const _Node_allocator& -2441: _M_get_Node_allocator() const noexcept -2441: { return this->_M_impl; } -2441: -2441: allocator_type -2441: get_allocator() const noexcept -2441: { return allocator_type(_M_get_Node_allocator()); } -2441: -2441: protected: -2441: _Link_type -2441: _M_get_node() -2441: { return _Alloc_traits::allocate(_M_get_Node_allocator(), 1); } -2441: -2441: void -2441: _M_put_node(_Link_type __p) noexcept -2441: { _Alloc_traits::deallocate(_M_get_Node_allocator(), __p, 1); } -2441: # 630 "/usr/include/c++/8/bits/stl_tree.h" 3 -2441: template -2441: void -2441: _M_construct_node(_Link_type __node, _Args&&... __args) -2441: { -2441: try -2441: { -2441: ::new(__node) _Rb_tree_node<_Val>; -2441: _Alloc_traits::construct(_M_get_Node_allocator(), -2441: __node->_M_valptr(), -2441: std::forward<_Args>(__args)...); -2441: } -2441: catch(...) -2441: { -2441: __node->~_Rb_tree_node<_Val>(); -2441: _M_put_node(__node); -2441: throw; -2441: } -2441: } -2441: -2441: template -2441: _Link_type -2441: _M_create_node(_Args&&... __args) -2441: { -2441: _Link_type __tmp = _M_get_node(); -2441: _M_construct_node(__tmp, std::forward<_Args>(__args)...); -2441: return __tmp; -2441: } -2441: -2441: void -2441: _M_destroy_node(_Link_type __p) noexcept -2441: { -2441: _Alloc_traits::destroy(_M_get_Node_allocator(), __p->_M_valptr()); -2441: __p->~_Rb_tree_node<_Val>(); -2441: } -2441: -2441: -2441: void -2441: _M_drop_node(_Link_type __p) noexcept -2441: { -2441: _M_destroy_node(__p); -2441: _M_put_node(__p); -2441: } -2441: -2441: template -2441: _Link_type -2441: _M_clone_node(_Const_Link_type __x, _NodeGen& __node_gen) -2441: { -2441: _Link_type __tmp = __node_gen(*__x->_M_valptr()); -2441: __tmp->_M_color = __x->_M_color; -2441: __tmp->_M_left = 0; -2441: __tmp->_M_right = 0; -2441: return __tmp; -2441: } -2441: -2441: protected: -2441: -2441: -2441: -2441: -2441: template -2441: -2441: struct _Rb_tree_impl -2441: : public _Node_allocator -2441: , public _Rb_tree_key_compare<_Key_compare> -2441: , public _Rb_tree_header -2441: { -2441: typedef _Rb_tree_key_compare<_Key_compare> _Base_key_compare; -2441: -2441: _Rb_tree_impl() -2441: noexcept(is_nothrow_default_constructible<_Node_allocator>::value && is_nothrow_default_constructible<_Base_key_compare>::value) -2441: -2441: -2441: : _Node_allocator() -2441: { } -2441: -2441: _Rb_tree_impl(const _Rb_tree_impl& __x) -2441: : _Node_allocator(_Alloc_traits::_S_select_on_copy(__x)) -2441: , _Base_key_compare(__x._M_key_compare) -2441: { } -2441: -2441: -2441: -2441: -2441: -2441: -2441: _Rb_tree_impl(_Rb_tree_impl&&) = default; -2441: -2441: _Rb_tree_impl(const _Key_compare& __comp, _Node_allocator&& __a) -2441: : _Node_allocator(std::move(__a)), _Base_key_compare(__comp) -2441: { } -2441: -2441: }; -2441: -2441: _Rb_tree_impl<_Compare> _M_impl; -2441: -2441: protected: -2441: _Base_ptr& -2441: _M_root() noexcept -2441: { return this->_M_impl._M_header._M_parent; } -2441: -2441: _Const_Base_ptr -2441: _M_root() const noexcept -2441: { return this->_M_impl._M_header._M_parent; } -2441: -2441: _Base_ptr& -2441: _M_leftmost() noexcept -2441: { return this->_M_impl._M_header._M_left; } -2441: -2441: _Const_Base_ptr -2441: _M_leftmost() const noexcept -2441: { return this->_M_impl._M_header._M_left; } -2441: -2441: _Base_ptr& -2441: _M_rightmost() noexcept -2441: { return this->_M_impl._M_header._M_right; } -2441: -2441: _Const_Base_ptr -2441: _M_rightmost() const noexcept -2441: { return this->_M_impl._M_header._M_right; } -2441: -2441: _Link_type -2441: _M_begin() noexcept -2441: { return static_cast<_Link_type>(this->_M_impl._M_header._M_parent); } -2441: -2441: _Const_Link_type -2441: _M_begin() const noexcept -2441: { -2441: return static_cast<_Const_Link_type> -2441: (this->_M_impl._M_header._M_parent); -2441: } -2441: -2441: _Base_ptr -2441: _M_end() noexcept -2441: { return &this->_M_impl._M_header; } -2441: -2441: _Const_Base_ptr -2441: _M_end() const noexcept -2441: { return &this->_M_impl._M_header; } -2441: -2441: static const_reference -2441: _S_value(_Const_Link_type __x) -2441: { return *__x->_M_valptr(); } -2441: -2441: static const _Key& -2441: _S_key(_Const_Link_type __x) -2441: { return _KeyOfValue()(_S_value(__x)); } -2441: -2441: static _Link_type -2441: _S_left(_Base_ptr __x) noexcept -2441: { return static_cast<_Link_type>(__x->_M_left); } -2441: -2441: static _Const_Link_type -2441: _S_left(_Const_Base_ptr __x) noexcept -2441: { return static_cast<_Const_Link_type>(__x->_M_left); } -2441: -2441: static _Link_type -2441: _S_right(_Base_ptr __x) noexcept -2441: { return static_cast<_Link_type>(__x->_M_right); } -2441: -2441: static _Const_Link_type -2441: _S_right(_Const_Base_ptr __x) noexcept -2441: { return static_cast<_Const_Link_type>(__x->_M_right); } -2441: -2441: static const_reference -2441: _S_value(_Const_Base_ptr __x) -2441: { return *static_cast<_Const_Link_type>(__x)->_M_valptr(); } -2441: -2441: static const _Key& -2441: _S_key(_Const_Base_ptr __x) -2441: { return _KeyOfValue()(_S_value(__x)); } -2441: -2441: static _Base_ptr -2441: _S_minimum(_Base_ptr __x) noexcept -2441: { return _Rb_tree_node_base::_S_minimum(__x); } -2441: -2441: static _Const_Base_ptr -2441: _S_minimum(_Const_Base_ptr __x) noexcept -2441: { return _Rb_tree_node_base::_S_minimum(__x); } -2441: -2441: static _Base_ptr -2441: _S_maximum(_Base_ptr __x) noexcept -2441: { return _Rb_tree_node_base::_S_maximum(__x); } -2441: -2441: static _Const_Base_ptr -2441: _S_maximum(_Const_Base_ptr __x) noexcept -2441: { return _Rb_tree_node_base::_S_maximum(__x); } -2441: -2441: public: -2441: typedef _Rb_tree_iterator iterator; -2441: typedef _Rb_tree_const_iterator const_iterator; -2441: -2441: typedef std::reverse_iterator reverse_iterator; -2441: typedef std::reverse_iterator const_reverse_iterator; -2441: # 832 "/usr/include/c++/8/bits/stl_tree.h" 3 -2441: pair<_Base_ptr, _Base_ptr> -2441: _M_get_insert_unique_pos(const key_type& __k); -2441: -2441: pair<_Base_ptr, _Base_ptr> -2441: _M_get_insert_equal_pos(const key_type& __k); -2441: -2441: pair<_Base_ptr, _Base_ptr> -2441: _M_get_insert_hint_unique_pos(const_iterator __pos, -2441: const key_type& __k); -2441: -2441: pair<_Base_ptr, _Base_ptr> -2441: _M_get_insert_hint_equal_pos(const_iterator __pos, -2441: const key_type& __k); -2441: -2441: private: -2441: -2441: template -2441: iterator -2441: _M_insert_(_Base_ptr __x, _Base_ptr __y, _Arg&& __v, _NodeGen&); -2441: -2441: iterator -2441: _M_insert_node(_Base_ptr __x, _Base_ptr __y, _Link_type __z); -2441: -2441: template -2441: iterator -2441: _M_insert_lower(_Base_ptr __y, _Arg&& __v); -2441: -2441: template -2441: iterator -2441: _M_insert_equal_lower(_Arg&& __x); -2441: -2441: iterator -2441: _M_insert_lower_node(_Base_ptr __p, _Link_type __z); -2441: -2441: iterator -2441: _M_insert_equal_lower_node(_Link_type __z); -2441: # 883 "/usr/include/c++/8/bits/stl_tree.h" 3 -2441: template -2441: _Link_type -2441: _M_copy(_Const_Link_type __x, _Base_ptr __p, _NodeGen&); -2441: -2441: template -2441: _Link_type -2441: _M_copy(const _Rb_tree& __x, _NodeGen& __gen) -2441: { -2441: _Link_type __root = _M_copy(__x._M_begin(), _M_end(), __gen); -2441: _M_leftmost() = _S_minimum(__root); -2441: _M_rightmost() = _S_maximum(__root); -2441: _M_impl._M_node_count = __x._M_impl._M_node_count; -2441: return __root; -2441: } -2441: -2441: _Link_type -2441: _M_copy(const _Rb_tree& __x) -2441: { -2441: _Alloc_node __an(*this); -2441: return _M_copy(__x, __an); -2441: } -2441: -2441: void -2441: _M_erase(_Link_type __x); -2441: -2441: iterator -2441: _M_lower_bound(_Link_type __x, _Base_ptr __y, -2441: const _Key& __k); -2441: -2441: const_iterator -2441: _M_lower_bound(_Const_Link_type __x, _Const_Base_ptr __y, -2441: const _Key& __k) const; -2441: -2441: iterator -2441: _M_upper_bound(_Link_type __x, _Base_ptr __y, -2441: const _Key& __k); -2441: -2441: const_iterator -2441: _M_upper_bound(_Const_Link_type __x, _Const_Base_ptr __y, -2441: const _Key& __k) const; -2441: -2441: public: -2441: -2441: -2441: -2441: -2441: _Rb_tree() = default; -2441: -2441: -2441: _Rb_tree(const _Compare& __comp, -2441: const allocator_type& __a = allocator_type()) -2441: : _M_impl(__comp, _Node_allocator(__a)) { } -2441: -2441: _Rb_tree(const _Rb_tree& __x) -2441: : _M_impl(__x._M_impl) -2441: { -2441: if (__x._M_root() != 0) -2441: _M_root() = _M_copy(__x); -2441: } -2441: -2441: -2441: _Rb_tree(const allocator_type& __a) -2441: : _M_impl(_Compare(), _Node_allocator(__a)) -2441: { } -2441: -2441: _Rb_tree(const _Rb_tree& __x, const allocator_type& __a) -2441: : _M_impl(__x._M_impl._M_key_compare, _Node_allocator(__a)) -2441: { -2441: if (__x._M_root() != nullptr) -2441: _M_root() = _M_copy(__x); -2441: } -2441: -2441: _Rb_tree(_Rb_tree&&) = default; -2441: -2441: _Rb_tree(_Rb_tree&& __x, const allocator_type& __a) -2441: : _Rb_tree(std::move(__x), _Node_allocator(__a)) -2441: { } -2441: -2441: _Rb_tree(_Rb_tree&& __x, _Node_allocator&& __a); -2441: -2441: -2441: ~_Rb_tree() noexcept -2441: { _M_erase(_M_begin()); } -2441: -2441: _Rb_tree& -2441: operator=(const _Rb_tree& __x); -2441: -2441: -2441: _Compare -2441: key_comp() const -2441: { return _M_impl._M_key_compare; } -2441: -2441: iterator -2441: begin() noexcept -2441: { return iterator(this->_M_impl._M_header._M_left); } -2441: -2441: const_iterator -2441: begin() const noexcept -2441: { return const_iterator(this->_M_impl._M_header._M_left); } -2441: -2441: iterator -2441: end() noexcept -2441: { return iterator(&this->_M_impl._M_header); } -2441: -2441: const_iterator -2441: end() const noexcept -2441: { return const_iterator(&this->_M_impl._M_header); } -2441: -2441: reverse_iterator -2441: rbegin() noexcept -2441: { return reverse_iterator(end()); } -2441: -2441: const_reverse_iterator -2441: rbegin() const noexcept -2441: { return const_reverse_iterator(end()); } -2441: -2441: reverse_iterator -2441: rend() noexcept -2441: { return reverse_iterator(begin()); } -2441: -2441: const_reverse_iterator -2441: rend() const noexcept -2441: { return const_reverse_iterator(begin()); } -2441: -2441: bool -2441: empty() const noexcept -2441: { return _M_impl._M_node_count == 0; } -2441: -2441: size_type -2441: size() const noexcept -2441: { return _M_impl._M_node_count; } -2441: -2441: size_type -2441: max_size() const noexcept -2441: { return _Alloc_traits::max_size(_M_get_Node_allocator()); } -2441: -2441: void -2441: swap(_Rb_tree& __t) -2441: noexcept(__is_nothrow_swappable<_Compare>::value); -2441: -2441: -2441: -2441: template -2441: pair -2441: _M_insert_unique(_Arg&& __x); -2441: -2441: template -2441: iterator -2441: _M_insert_equal(_Arg&& __x); -2441: -2441: template -2441: iterator -2441: _M_insert_unique_(const_iterator __pos, _Arg&& __x, _NodeGen&); -2441: -2441: template -2441: iterator -2441: _M_insert_unique_(const_iterator __pos, _Arg&& __x) -2441: { -2441: _Alloc_node __an(*this); -2441: return _M_insert_unique_(__pos, std::forward<_Arg>(__x), __an); -2441: } -2441: -2441: template -2441: iterator -2441: _M_insert_equal_(const_iterator __pos, _Arg&& __x, _NodeGen&); -2441: -2441: template -2441: iterator -2441: _M_insert_equal_(const_iterator __pos, _Arg&& __x) -2441: { -2441: _Alloc_node __an(*this); -2441: return _M_insert_equal_(__pos, std::forward<_Arg>(__x), __an); -2441: } -2441: -2441: template -2441: pair -2441: _M_emplace_unique(_Args&&... __args); -2441: -2441: template -2441: iterator -2441: _M_emplace_equal(_Args&&... __args); -2441: -2441: template -2441: iterator -2441: _M_emplace_hint_unique(const_iterator __pos, _Args&&... __args); -2441: -2441: template -2441: iterator -2441: _M_emplace_hint_equal(const_iterator __pos, _Args&&... __args); -2441: # 1103 "/usr/include/c++/8/bits/stl_tree.h" 3 -2441: template -2441: void -2441: _M_insert_unique(_InputIterator __first, _InputIterator __last); -2441: -2441: template -2441: void -2441: _M_insert_equal(_InputIterator __first, _InputIterator __last); -2441: -2441: private: -2441: void -2441: _M_erase_aux(const_iterator __position); -2441: -2441: void -2441: _M_erase_aux(const_iterator __first, const_iterator __last); -2441: -2441: public: -2441: -2441: -2441: -2441: __attribute ((__abi_tag__ ("cxx11"))) -2441: iterator -2441: erase(const_iterator __position) -2441: { -2441: ; -2441: const_iterator __result = __position; -2441: ++__result; -2441: _M_erase_aux(__position); -2441: return __result._M_const_cast(); -2441: } -2441: -2441: -2441: __attribute ((__abi_tag__ ("cxx11"))) -2441: iterator -2441: erase(iterator __position) -2441: { -2441: ; -2441: iterator __result = __position; -2441: ++__result; -2441: _M_erase_aux(__position); -2441: return __result; -2441: } -2441: # 1159 "/usr/include/c++/8/bits/stl_tree.h" 3 -2441: size_type -2441: erase(const key_type& __x); -2441: -2441: -2441: -2441: -2441: __attribute ((__abi_tag__ ("cxx11"))) -2441: iterator -2441: erase(const_iterator __first, const_iterator __last) -2441: { -2441: _M_erase_aux(__first, __last); -2441: return __last._M_const_cast(); -2441: } -2441: # 1181 "/usr/include/c++/8/bits/stl_tree.h" 3 -2441: void -2441: erase(const key_type* __first, const key_type* __last); -2441: -2441: void -2441: clear() noexcept -2441: { -2441: _M_erase(_M_begin()); -2441: _M_impl._M_reset(); -2441: } -2441: -2441: -2441: iterator -2441: find(const key_type& __k); -2441: -2441: const_iterator -2441: find(const key_type& __k) const; -2441: -2441: size_type -2441: count(const key_type& __k) const; -2441: -2441: iterator -2441: lower_bound(const key_type& __k) -2441: { return _M_lower_bound(_M_begin(), _M_end(), __k); } -2441: -2441: const_iterator -2441: lower_bound(const key_type& __k) const -2441: { return _M_lower_bound(_M_begin(), _M_end(), __k); } -2441: -2441: iterator -2441: upper_bound(const key_type& __k) -2441: { return _M_upper_bound(_M_begin(), _M_end(), __k); } -2441: -2441: const_iterator -2441: upper_bound(const key_type& __k) const -2441: { return _M_upper_bound(_M_begin(), _M_end(), __k); } -2441: -2441: pair -2441: equal_range(const key_type& __k); -2441: -2441: pair -2441: equal_range(const key_type& __k) const; -2441: -2441: -2441: template::type> -2441: iterator -2441: _M_find_tr(const _Kt& __k) -2441: { -2441: const _Rb_tree* __const_this = this; -2441: return __const_this->_M_find_tr(__k)._M_const_cast(); -2441: } -2441: -2441: template::type> -2441: const_iterator -2441: _M_find_tr(const _Kt& __k) const -2441: { -2441: auto __j = _M_lower_bound_tr(__k); -2441: if (__j != end() && _M_impl._M_key_compare(__k, _S_key(__j._M_node))) -2441: __j = end(); -2441: return __j; -2441: } -2441: -2441: template::type> -2441: size_type -2441: _M_count_tr(const _Kt& __k) const -2441: { -2441: auto __p = _M_equal_range_tr(__k); -2441: return std::distance(__p.first, __p.second); -2441: } -2441: -2441: template::type> -2441: iterator -2441: _M_lower_bound_tr(const _Kt& __k) -2441: { -2441: const _Rb_tree* __const_this = this; -2441: return __const_this->_M_lower_bound_tr(__k)._M_const_cast(); -2441: } -2441: -2441: template::type> -2441: const_iterator -2441: _M_lower_bound_tr(const _Kt& __k) const -2441: { -2441: auto __x = _M_begin(); -2441: auto __y = _M_end(); -2441: while (__x != 0) -2441: if (!_M_impl._M_key_compare(_S_key(__x), __k)) -2441: { -2441: __y = __x; -2441: __x = _S_left(__x); -2441: } -2441: else -2441: __x = _S_right(__x); -2441: return const_iterator(__y); -2441: } -2441: -2441: template::type> -2441: iterator -2441: _M_upper_bound_tr(const _Kt& __k) -2441: { -2441: const _Rb_tree* __const_this = this; -2441: return __const_this->_M_upper_bound_tr(__k)._M_const_cast(); -2441: } -2441: -2441: template::type> -2441: const_iterator -2441: _M_upper_bound_tr(const _Kt& __k) const -2441: { -2441: auto __x = _M_begin(); -2441: auto __y = _M_end(); -2441: while (__x != 0) -2441: if (_M_impl._M_key_compare(__k, _S_key(__x))) -2441: { -2441: __y = __x; -2441: __x = _S_left(__x); -2441: } -2441: else -2441: __x = _S_right(__x); -2441: return const_iterator(__y); -2441: } -2441: -2441: template::type> -2441: pair -2441: _M_equal_range_tr(const _Kt& __k) -2441: { -2441: const _Rb_tree* __const_this = this; -2441: auto __ret = __const_this->_M_equal_range_tr(__k); -2441: return { __ret.first._M_const_cast(), __ret.second._M_const_cast() }; -2441: } -2441: -2441: template::type> -2441: pair -2441: _M_equal_range_tr(const _Kt& __k) const -2441: { -2441: auto __low = _M_lower_bound_tr(__k); -2441: auto __high = __low; -2441: auto& __cmp = _M_impl._M_key_compare; -2441: while (__high != end() && !__cmp(__k, _S_key(__high._M_node))) -2441: ++__high; -2441: return { __low, __high }; -2441: } -2441: -2441: -2441: -2441: bool -2441: __rb_verify() const; -2441: -2441: -2441: _Rb_tree& -2441: operator=(_Rb_tree&&) -2441: noexcept(_Alloc_traits::_S_nothrow_move() -2441: && is_nothrow_move_assignable<_Compare>::value); -2441: -2441: template -2441: void -2441: _M_assign_unique(_Iterator, _Iterator); -2441: -2441: template -2441: void -2441: _M_assign_equal(_Iterator, _Iterator); -2441: -2441: private: -2441: -2441: void -2441: _M_move_data(_Rb_tree& __x, std::true_type) -2441: { _M_impl._M_move_data(__x._M_impl); } -2441: -2441: -2441: -2441: void -2441: _M_move_data(_Rb_tree&, std::false_type); -2441: -2441: -2441: void -2441: _M_move_assign(_Rb_tree&, std::true_type); -2441: -2441: -2441: -2441: void -2441: _M_move_assign(_Rb_tree&, std::false_type); -2441: # 1544 "/usr/include/c++/8/bits/stl_tree.h" 3 -2441: }; -2441: -2441: template -2441: inline bool -2441: operator==(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, -2441: const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) -2441: { -2441: return __x.size() == __y.size() -2441: && std::equal(__x.begin(), __x.end(), __y.begin()); -2441: } -2441: -2441: template -2441: inline bool -2441: operator<(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, -2441: const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) -2441: { -2441: return std::lexicographical_compare(__x.begin(), __x.end(), -2441: __y.begin(), __y.end()); -2441: } -2441: -2441: template -2441: inline bool -2441: operator!=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, -2441: const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) -2441: { return !(__x == __y); } -2441: -2441: template -2441: inline bool -2441: operator>(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, -2441: const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) -2441: { return __y < __x; } -2441: -2441: template -2441: inline bool -2441: operator<=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, -2441: const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) -2441: { return !(__y < __x); } -2441: -2441: template -2441: inline bool -2441: operator>=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, -2441: const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) -2441: { return !(__x < __y); } -2441: -2441: template -2441: inline void -2441: swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) -2441: { __x.swap(__y); } -2441: -2441: -2441: template -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: _Rb_tree(_Rb_tree&& __x, _Node_allocator&& __a) -2441: : _M_impl(__x._M_impl._M_key_compare, std::move(__a)) -2441: { -2441: using __eq = typename _Alloc_traits::is_always_equal; -2441: if (__x._M_root() != nullptr) -2441: _M_move_data(__x, __eq()); -2441: } -2441: -2441: template -2441: void -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: _M_move_data(_Rb_tree& __x, std::false_type) -2441: { -2441: if (_M_get_Node_allocator() == __x._M_get_Node_allocator()) -2441: _M_move_data(__x, std::true_type()); -2441: else -2441: { -2441: _Alloc_node __an(*this); -2441: auto __lbd = -2441: [&__an](const value_type& __cval) -2441: { -2441: auto& __val = const_cast(__cval); -2441: return __an(std::move_if_noexcept(__val)); -2441: }; -2441: _M_root() = _M_copy(__x, __lbd); -2441: } -2441: } -2441: -2441: template -2441: inline void -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: _M_move_assign(_Rb_tree& __x, true_type) -2441: { -2441: clear(); -2441: if (__x._M_root() != nullptr) -2441: _M_move_data(__x, std::true_type()); -2441: std::__alloc_on_move(_M_get_Node_allocator(), -2441: __x._M_get_Node_allocator()); -2441: } -2441: -2441: template -2441: void -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: _M_move_assign(_Rb_tree& __x, false_type) -2441: { -2441: if (_M_get_Node_allocator() == __x._M_get_Node_allocator()) -2441: return _M_move_assign(__x, true_type{}); -2441: -2441: -2441: -2441: _Reuse_or_alloc_node __roan(*this); -2441: _M_impl._M_reset(); -2441: if (__x._M_root() != nullptr) -2441: { -2441: auto __lbd = -2441: [&__roan](const value_type& __cval) -2441: { -2441: auto& __val = const_cast(__cval); -2441: return __roan(std::move_if_noexcept(__val)); -2441: }; -2441: _M_root() = _M_copy(__x, __lbd); -2441: __x.clear(); -2441: } -2441: } -2441: -2441: template -2441: inline _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: operator=(_Rb_tree&& __x) -2441: noexcept(_Alloc_traits::_S_nothrow_move() -2441: && is_nothrow_move_assignable<_Compare>::value) -2441: { -2441: _M_impl._M_key_compare = std::move(__x._M_impl._M_key_compare); -2441: _M_move_assign(__x, __bool_constant<_Alloc_traits::_S_nothrow_move()>()); -2441: return *this; -2441: } -2441: -2441: template -2441: template -2441: void -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: _M_assign_unique(_Iterator __first, _Iterator __last) -2441: { -2441: _Reuse_or_alloc_node __roan(*this); -2441: _M_impl._M_reset(); -2441: for (; __first != __last; ++__first) -2441: _M_insert_unique_(end(), *__first, __roan); -2441: } -2441: -2441: template -2441: template -2441: void -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: _M_assign_equal(_Iterator __first, _Iterator __last) -2441: { -2441: _Reuse_or_alloc_node __roan(*this); -2441: _M_impl._M_reset(); -2441: for (; __first != __last; ++__first) -2441: _M_insert_equal_(end(), *__first, __roan); -2441: } -2441: -2441: -2441: template -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: operator=(const _Rb_tree& __x) -2441: { -2441: if (this != &__x) -2441: { -2441: -2441: -2441: if (_Alloc_traits::_S_propagate_on_copy_assign()) -2441: { -2441: auto& __this_alloc = this->_M_get_Node_allocator(); -2441: auto& __that_alloc = __x._M_get_Node_allocator(); -2441: if (!_Alloc_traits::_S_always_equal() -2441: && __this_alloc != __that_alloc) -2441: { -2441: -2441: -2441: clear(); -2441: std::__alloc_on_copy(__this_alloc, __that_alloc); -2441: } -2441: } -2441: -2441: -2441: _Reuse_or_alloc_node __roan(*this); -2441: _M_impl._M_reset(); -2441: _M_impl._M_key_compare = __x._M_impl._M_key_compare; -2441: if (__x._M_root() != 0) -2441: _M_root() = _M_copy(__x, __roan); -2441: } -2441: -2441: return *this; -2441: } -2441: -2441: template -2441: -2441: template -2441: -2441: -2441: -2441: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: _M_insert_(_Base_ptr __x, _Base_ptr __p, -2441: -2441: _Arg&& __v, -2441: -2441: -2441: -2441: _NodeGen& __node_gen) -2441: { -2441: bool __insert_left = (__x != 0 || __p == _M_end() -2441: || _M_impl._M_key_compare(_KeyOfValue()(__v), -2441: _S_key(__p))); -2441: -2441: _Link_type __z = __node_gen(std::forward<_Arg>(__v)); -2441: -2441: _Rb_tree_insert_and_rebalance(__insert_left, __z, __p, -2441: this->_M_impl._M_header); -2441: ++_M_impl._M_node_count; -2441: return iterator(__z); -2441: } -2441: -2441: template -2441: -2441: template -2441: -2441: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: -2441: _M_insert_lower(_Base_ptr __p, _Arg&& __v) -2441: -2441: -2441: -2441: { -2441: bool __insert_left = (__p == _M_end() -2441: || !_M_impl._M_key_compare(_S_key(__p), -2441: _KeyOfValue()(__v))); -2441: -2441: _Link_type __z = _M_create_node(std::forward<_Arg>(__v)); -2441: -2441: _Rb_tree_insert_and_rebalance(__insert_left, __z, __p, -2441: this->_M_impl._M_header); -2441: ++_M_impl._M_node_count; -2441: return iterator(__z); -2441: } -2441: -2441: template -2441: -2441: template -2441: -2441: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: -2441: _M_insert_equal_lower(_Arg&& __v) -2441: -2441: -2441: -2441: { -2441: _Link_type __x = _M_begin(); -2441: _Base_ptr __y = _M_end(); -2441: while (__x != 0) -2441: { -2441: __y = __x; -2441: __x = !_M_impl._M_key_compare(_S_key(__x), _KeyOfValue()(__v)) ? -2441: _S_left(__x) : _S_right(__x); -2441: } -2441: return _M_insert_lower(__y, std::forward<_Arg>(__v)); -2441: } -2441: -2441: template -2441: template -2441: typename _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>::_Link_type -2441: _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>:: -2441: _M_copy(_Const_Link_type __x, _Base_ptr __p, _NodeGen& __node_gen) -2441: { -2441: -2441: _Link_type __top = _M_clone_node(__x, __node_gen); -2441: __top->_M_parent = __p; -2441: -2441: try -2441: { -2441: if (__x->_M_right) -2441: __top->_M_right = _M_copy(_S_right(__x), __top, __node_gen); -2441: __p = __top; -2441: __x = _S_left(__x); -2441: -2441: while (__x != 0) -2441: { -2441: _Link_type __y = _M_clone_node(__x, __node_gen); -2441: __p->_M_left = __y; -2441: __y->_M_parent = __p; -2441: if (__x->_M_right) -2441: __y->_M_right = _M_copy(_S_right(__x), __y, __node_gen); -2441: __p = __y; -2441: __x = _S_left(__x); -2441: } -2441: } -2441: catch(...) -2441: { -2441: _M_erase(__top); -2441: throw; -2441: } -2441: return __top; -2441: } -2441: -2441: template -2441: void -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: _M_erase(_Link_type __x) -2441: { -2441: -2441: while (__x != 0) -2441: { -2441: _M_erase(_S_right(__x)); -2441: _Link_type __y = _S_left(__x); -2441: _M_drop_node(__x); -2441: __x = __y; -2441: } -2441: } -2441: -2441: template -2441: typename _Rb_tree<_Key, _Val, _KeyOfValue, -2441: _Compare, _Alloc>::iterator -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: _M_lower_bound(_Link_type __x, _Base_ptr __y, -2441: const _Key& __k) -2441: { -2441: while (__x != 0) -2441: if (!_M_impl._M_key_compare(_S_key(__x), __k)) -2441: __y = __x, __x = _S_left(__x); -2441: else -2441: __x = _S_right(__x); -2441: return iterator(__y); -2441: } -2441: -2441: template -2441: typename _Rb_tree<_Key, _Val, _KeyOfValue, -2441: _Compare, _Alloc>::const_iterator -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: _M_lower_bound(_Const_Link_type __x, _Const_Base_ptr __y, -2441: const _Key& __k) const -2441: { -2441: while (__x != 0) -2441: if (!_M_impl._M_key_compare(_S_key(__x), __k)) -2441: __y = __x, __x = _S_left(__x); -2441: else -2441: __x = _S_right(__x); -2441: return const_iterator(__y); -2441: } -2441: -2441: template -2441: typename _Rb_tree<_Key, _Val, _KeyOfValue, -2441: _Compare, _Alloc>::iterator -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: _M_upper_bound(_Link_type __x, _Base_ptr __y, -2441: const _Key& __k) -2441: { -2441: while (__x != 0) -2441: if (_M_impl._M_key_compare(__k, _S_key(__x))) -2441: __y = __x, __x = _S_left(__x); -2441: else -2441: __x = _S_right(__x); -2441: return iterator(__y); -2441: } -2441: -2441: template -2441: typename _Rb_tree<_Key, _Val, _KeyOfValue, -2441: _Compare, _Alloc>::const_iterator -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: _M_upper_bound(_Const_Link_type __x, _Const_Base_ptr __y, -2441: const _Key& __k) const -2441: { -2441: while (__x != 0) -2441: if (_M_impl._M_key_compare(__k, _S_key(__x))) -2441: __y = __x, __x = _S_left(__x); -2441: else -2441: __x = _S_right(__x); -2441: return const_iterator(__y); -2441: } -2441: -2441: template -2441: pair::iterator, -2441: typename _Rb_tree<_Key, _Val, _KeyOfValue, -2441: _Compare, _Alloc>::iterator> -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: equal_range(const _Key& __k) -2441: { -2441: _Link_type __x = _M_begin(); -2441: _Base_ptr __y = _M_end(); -2441: while (__x != 0) -2441: { -2441: if (_M_impl._M_key_compare(_S_key(__x), __k)) -2441: __x = _S_right(__x); -2441: else if (_M_impl._M_key_compare(__k, _S_key(__x))) -2441: __y = __x, __x = _S_left(__x); -2441: else -2441: { -2441: _Link_type __xu(__x); -2441: _Base_ptr __yu(__y); -2441: __y = __x, __x = _S_left(__x); -2441: __xu = _S_right(__xu); -2441: return pair(_M_lower_bound(__x, __y, __k), -2441: _M_upper_bound(__xu, __yu, __k)); -2441: } -2441: } -2441: return pair(iterator(__y), -2441: iterator(__y)); -2441: } -2441: -2441: template -2441: pair::const_iterator, -2441: typename _Rb_tree<_Key, _Val, _KeyOfValue, -2441: _Compare, _Alloc>::const_iterator> -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: equal_range(const _Key& __k) const -2441: { -2441: _Const_Link_type __x = _M_begin(); -2441: _Const_Base_ptr __y = _M_end(); -2441: while (__x != 0) -2441: { -2441: if (_M_impl._M_key_compare(_S_key(__x), __k)) -2441: __x = _S_right(__x); -2441: else if (_M_impl._M_key_compare(__k, _S_key(__x))) -2441: __y = __x, __x = _S_left(__x); -2441: else -2441: { -2441: _Const_Link_type __xu(__x); -2441: _Const_Base_ptr __yu(__y); -2441: __y = __x, __x = _S_left(__x); -2441: __xu = _S_right(__xu); -2441: return pair(_M_lower_bound(__x, __y, __k), -2441: _M_upper_bound(__xu, __yu, __k)); -2441: } -2441: } -2441: return pair(const_iterator(__y), -2441: const_iterator(__y)); -2441: } -2441: -2441: template -2441: void -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: swap(_Rb_tree& __t) -2441: noexcept(__is_nothrow_swappable<_Compare>::value) -2441: { -2441: if (_M_root() == 0) -2441: { -2441: if (__t._M_root() != 0) -2441: _M_impl._M_move_data(__t._M_impl); -2441: } -2441: else if (__t._M_root() == 0) -2441: __t._M_impl._M_move_data(_M_impl); -2441: else -2441: { -2441: std::swap(_M_root(),__t._M_root()); -2441: std::swap(_M_leftmost(),__t._M_leftmost()); -2441: std::swap(_M_rightmost(),__t._M_rightmost()); -2441: -2441: _M_root()->_M_parent = _M_end(); -2441: __t._M_root()->_M_parent = __t._M_end(); -2441: std::swap(this->_M_impl._M_node_count, __t._M_impl._M_node_count); -2441: } -2441: -2441: std::swap(this->_M_impl._M_key_compare, __t._M_impl._M_key_compare); -2441: -2441: _Alloc_traits::_S_on_swap(_M_get_Node_allocator(), -2441: __t._M_get_Node_allocator()); -2441: } -2441: -2441: template -2441: pair::_Base_ptr, -2441: typename _Rb_tree<_Key, _Val, _KeyOfValue, -2441: _Compare, _Alloc>::_Base_ptr> -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: _M_get_insert_unique_pos(const key_type& __k) -2441: { -2441: typedef pair<_Base_ptr, _Base_ptr> _Res; -2441: _Link_type __x = _M_begin(); -2441: _Base_ptr __y = _M_end(); -2441: bool __comp = true; -2441: while (__x != 0) -2441: { -2441: __y = __x; -2441: __comp = _M_impl._M_key_compare(__k, _S_key(__x)); -2441: __x = __comp ? _S_left(__x) : _S_right(__x); -2441: } -2441: iterator __j = iterator(__y); -2441: if (__comp) -2441: { -2441: if (__j == begin()) -2441: return _Res(__x, __y); -2441: else -2441: --__j; -2441: } -2441: if (_M_impl._M_key_compare(_S_key(__j._M_node), __k)) -2441: return _Res(__x, __y); -2441: return _Res(__j._M_node, 0); -2441: } -2441: -2441: template -2441: pair::_Base_ptr, -2441: typename _Rb_tree<_Key, _Val, _KeyOfValue, -2441: _Compare, _Alloc>::_Base_ptr> -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: _M_get_insert_equal_pos(const key_type& __k) -2441: { -2441: typedef pair<_Base_ptr, _Base_ptr> _Res; -2441: _Link_type __x = _M_begin(); -2441: _Base_ptr __y = _M_end(); -2441: while (__x != 0) -2441: { -2441: __y = __x; -2441: __x = _M_impl._M_key_compare(__k, _S_key(__x)) ? -2441: _S_left(__x) : _S_right(__x); -2441: } -2441: return _Res(__x, __y); -2441: } -2441: -2441: template -2441: -2441: template -2441: -2441: pair::iterator, bool> -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: -2441: _M_insert_unique(_Arg&& __v) -2441: -2441: -2441: -2441: { -2441: typedef pair _Res; -2441: pair<_Base_ptr, _Base_ptr> __res -2441: = _M_get_insert_unique_pos(_KeyOfValue()(__v)); -2441: -2441: if (__res.second) -2441: { -2441: _Alloc_node __an(*this); -2441: return _Res(_M_insert_(__res.first, __res.second, -2441: std::forward<_Arg>(__v), __an), -2441: true); -2441: } -2441: -2441: return _Res(iterator(__res.first), false); -2441: } -2441: -2441: template -2441: -2441: template -2441: -2441: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: -2441: _M_insert_equal(_Arg&& __v) -2441: -2441: -2441: -2441: { -2441: pair<_Base_ptr, _Base_ptr> __res -2441: = _M_get_insert_equal_pos(_KeyOfValue()(__v)); -2441: _Alloc_node __an(*this); -2441: return _M_insert_(__res.first, __res.second, -2441: std::forward<_Arg>(__v), __an); -2441: } -2441: -2441: template -2441: pair::_Base_ptr, -2441: typename _Rb_tree<_Key, _Val, _KeyOfValue, -2441: _Compare, _Alloc>::_Base_ptr> -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: _M_get_insert_hint_unique_pos(const_iterator __position, -2441: const key_type& __k) -2441: { -2441: iterator __pos = __position._M_const_cast(); -2441: typedef pair<_Base_ptr, _Base_ptr> _Res; -2441: -2441: -2441: if (__pos._M_node == _M_end()) -2441: { -2441: if (size() > 0 -2441: && _M_impl._M_key_compare(_S_key(_M_rightmost()), __k)) -2441: return _Res(0, _M_rightmost()); -2441: else -2441: return _M_get_insert_unique_pos(__k); -2441: } -2441: else if (_M_impl._M_key_compare(__k, _S_key(__pos._M_node))) -2441: { -2441: -2441: iterator __before = __pos; -2441: if (__pos._M_node == _M_leftmost()) -2441: return _Res(_M_leftmost(), _M_leftmost()); -2441: else if (_M_impl._M_key_compare(_S_key((--__before)._M_node), __k)) -2441: { -2441: if (_S_right(__before._M_node) == 0) -2441: return _Res(0, __before._M_node); -2441: else -2441: return _Res(__pos._M_node, __pos._M_node); -2441: } -2441: else -2441: return _M_get_insert_unique_pos(__k); -2441: } -2441: else if (_M_impl._M_key_compare(_S_key(__pos._M_node), __k)) -2441: { -2441: -2441: iterator __after = __pos; -2441: if (__pos._M_node == _M_rightmost()) -2441: return _Res(0, _M_rightmost()); -2441: else if (_M_impl._M_key_compare(__k, _S_key((++__after)._M_node))) -2441: { -2441: if (_S_right(__pos._M_node) == 0) -2441: return _Res(0, __pos._M_node); -2441: else -2441: return _Res(__after._M_node, __after._M_node); -2441: } -2441: else -2441: return _M_get_insert_unique_pos(__k); -2441: } -2441: else -2441: -2441: return _Res(__pos._M_node, 0); -2441: } -2441: -2441: template -2441: -2441: template -2441: -2441: -2441: -2441: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: _M_insert_unique_(const_iterator __position, -2441: -2441: _Arg&& __v, -2441: -2441: -2441: -2441: _NodeGen& __node_gen) -2441: { -2441: pair<_Base_ptr, _Base_ptr> __res -2441: = _M_get_insert_hint_unique_pos(__position, _KeyOfValue()(__v)); -2441: -2441: if (__res.second) -2441: return _M_insert_(__res.first, __res.second, -2441: std::forward<_Arg>(__v), -2441: __node_gen); -2441: return iterator(__res.first); -2441: } -2441: -2441: template -2441: pair::_Base_ptr, -2441: typename _Rb_tree<_Key, _Val, _KeyOfValue, -2441: _Compare, _Alloc>::_Base_ptr> -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: _M_get_insert_hint_equal_pos(const_iterator __position, const key_type& __k) -2441: { -2441: iterator __pos = __position._M_const_cast(); -2441: typedef pair<_Base_ptr, _Base_ptr> _Res; -2441: -2441: -2441: if (__pos._M_node == _M_end()) -2441: { -2441: if (size() > 0 -2441: && !_M_impl._M_key_compare(__k, _S_key(_M_rightmost()))) -2441: return _Res(0, _M_rightmost()); -2441: else -2441: return _M_get_insert_equal_pos(__k); -2441: } -2441: else if (!_M_impl._M_key_compare(_S_key(__pos._M_node), __k)) -2441: { -2441: -2441: iterator __before = __pos; -2441: if (__pos._M_node == _M_leftmost()) -2441: return _Res(_M_leftmost(), _M_leftmost()); -2441: else if (!_M_impl._M_key_compare(__k, _S_key((--__before)._M_node))) -2441: { -2441: if (_S_right(__before._M_node) == 0) -2441: return _Res(0, __before._M_node); -2441: else -2441: return _Res(__pos._M_node, __pos._M_node); -2441: } -2441: else -2441: return _M_get_insert_equal_pos(__k); -2441: } -2441: else -2441: { -2441: -2441: iterator __after = __pos; -2441: if (__pos._M_node == _M_rightmost()) -2441: return _Res(0, _M_rightmost()); -2441: else if (!_M_impl._M_key_compare(_S_key((++__after)._M_node), __k)) -2441: { -2441: if (_S_right(__pos._M_node) == 0) -2441: return _Res(0, __pos._M_node); -2441: else -2441: return _Res(__after._M_node, __after._M_node); -2441: } -2441: else -2441: return _Res(0, 0); -2441: } -2441: } -2441: -2441: template -2441: -2441: template -2441: -2441: -2441: -2441: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: _M_insert_equal_(const_iterator __position, -2441: -2441: _Arg&& __v, -2441: -2441: -2441: -2441: _NodeGen& __node_gen) -2441: { -2441: pair<_Base_ptr, _Base_ptr> __res -2441: = _M_get_insert_hint_equal_pos(__position, _KeyOfValue()(__v)); -2441: -2441: if (__res.second) -2441: return _M_insert_(__res.first, __res.second, -2441: std::forward<_Arg>(__v), -2441: __node_gen); -2441: -2441: return _M_insert_equal_lower(std::forward<_Arg>(__v)); -2441: } -2441: -2441: -2441: template -2441: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: _M_insert_node(_Base_ptr __x, _Base_ptr __p, _Link_type __z) -2441: { -2441: bool __insert_left = (__x != 0 || __p == _M_end() -2441: || _M_impl._M_key_compare(_S_key(__z), -2441: _S_key(__p))); -2441: -2441: _Rb_tree_insert_and_rebalance(__insert_left, __z, __p, -2441: this->_M_impl._M_header); -2441: ++_M_impl._M_node_count; -2441: return iterator(__z); -2441: } -2441: -2441: template -2441: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: _M_insert_lower_node(_Base_ptr __p, _Link_type __z) -2441: { -2441: bool __insert_left = (__p == _M_end() -2441: || !_M_impl._M_key_compare(_S_key(__p), -2441: _S_key(__z))); -2441: -2441: _Rb_tree_insert_and_rebalance(__insert_left, __z, __p, -2441: this->_M_impl._M_header); -2441: ++_M_impl._M_node_count; -2441: return iterator(__z); -2441: } -2441: -2441: template -2441: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: _M_insert_equal_lower_node(_Link_type __z) -2441: { -2441: _Link_type __x = _M_begin(); -2441: _Base_ptr __y = _M_end(); -2441: while (__x != 0) -2441: { -2441: __y = __x; -2441: __x = !_M_impl._M_key_compare(_S_key(__x), _S_key(__z)) ? -2441: _S_left(__x) : _S_right(__x); -2441: } -2441: return _M_insert_lower_node(__y, __z); -2441: } -2441: -2441: template -2441: template -2441: pair::iterator, bool> -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: _M_emplace_unique(_Args&&... __args) -2441: { -2441: _Link_type __z = _M_create_node(std::forward<_Args>(__args)...); -2441: -2441: try -2441: { -2441: typedef pair _Res; -2441: auto __res = _M_get_insert_unique_pos(_S_key(__z)); -2441: if (__res.second) -2441: return _Res(_M_insert_node(__res.first, __res.second, __z), true); -2441: -2441: _M_drop_node(__z); -2441: return _Res(iterator(__res.first), false); -2441: } -2441: catch(...) -2441: { -2441: _M_drop_node(__z); -2441: throw; -2441: } -2441: } -2441: -2441: template -2441: template -2441: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: _M_emplace_equal(_Args&&... __args) -2441: { -2441: _Link_type __z = _M_create_node(std::forward<_Args>(__args)...); -2441: -2441: try -2441: { -2441: auto __res = _M_get_insert_equal_pos(_S_key(__z)); -2441: return _M_insert_node(__res.first, __res.second, __z); -2441: } -2441: catch(...) -2441: { -2441: _M_drop_node(__z); -2441: throw; -2441: } -2441: } -2441: -2441: template -2441: template -2441: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: _M_emplace_hint_unique(const_iterator __pos, _Args&&... __args) -2441: { -2441: _Link_type __z = _M_create_node(std::forward<_Args>(__args)...); -2441: -2441: try -2441: { -2441: auto __res = _M_get_insert_hint_unique_pos(__pos, _S_key(__z)); -2441: -2441: if (__res.second) -2441: return _M_insert_node(__res.first, __res.second, __z); -2441: -2441: _M_drop_node(__z); -2441: return iterator(__res.first); -2441: } -2441: catch(...) -2441: { -2441: _M_drop_node(__z); -2441: throw; -2441: } -2441: } -2441: -2441: template -2441: template -2441: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: _M_emplace_hint_equal(const_iterator __pos, _Args&&... __args) -2441: { -2441: _Link_type __z = _M_create_node(std::forward<_Args>(__args)...); -2441: -2441: try -2441: { -2441: auto __res = _M_get_insert_hint_equal_pos(__pos, _S_key(__z)); -2441: -2441: if (__res.second) -2441: return _M_insert_node(__res.first, __res.second, __z); -2441: -2441: return _M_insert_equal_lower_node(__z); -2441: } -2441: catch(...) -2441: { -2441: _M_drop_node(__z); -2441: throw; -2441: } -2441: } -2441: -2441: -2441: template -2441: template -2441: void -2441: _Rb_tree<_Key, _Val, _KoV, _Cmp, _Alloc>:: -2441: _M_insert_unique(_II __first, _II __last) -2441: { -2441: _Alloc_node __an(*this); -2441: for (; __first != __last; ++__first) -2441: _M_insert_unique_(end(), *__first, __an); -2441: } -2441: -2441: template -2441: template -2441: void -2441: _Rb_tree<_Key, _Val, _KoV, _Cmp, _Alloc>:: -2441: _M_insert_equal(_II __first, _II __last) -2441: { -2441: _Alloc_node __an(*this); -2441: for (; __first != __last; ++__first) -2441: _M_insert_equal_(end(), *__first, __an); -2441: } -2441: -2441: template -2441: void -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: _M_erase_aux(const_iterator __position) -2441: { -2441: _Link_type __y = -2441: static_cast<_Link_type>(_Rb_tree_rebalance_for_erase -2441: (const_cast<_Base_ptr>(__position._M_node), -2441: this->_M_impl._M_header)); -2441: _M_drop_node(__y); -2441: --_M_impl._M_node_count; -2441: } -2441: -2441: template -2441: void -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: _M_erase_aux(const_iterator __first, const_iterator __last) -2441: { -2441: if (__first == begin() && __last == end()) -2441: clear(); -2441: else -2441: while (__first != __last) -2441: _M_erase_aux(__first++); -2441: } -2441: -2441: template -2441: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: erase(const _Key& __x) -2441: { -2441: pair __p = equal_range(__x); -2441: const size_type __old_size = size(); -2441: _M_erase_aux(__p.first, __p.second); -2441: return __old_size - size(); -2441: } -2441: -2441: template -2441: void -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: erase(const _Key* __first, const _Key* __last) -2441: { -2441: while (__first != __last) -2441: erase(*__first++); -2441: } -2441: -2441: template -2441: typename _Rb_tree<_Key, _Val, _KeyOfValue, -2441: _Compare, _Alloc>::iterator -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: find(const _Key& __k) -2441: { -2441: iterator __j = _M_lower_bound(_M_begin(), _M_end(), __k); -2441: return (__j == end() -2441: || _M_impl._M_key_compare(__k, -2441: _S_key(__j._M_node))) ? end() : __j; -2441: } -2441: -2441: template -2441: typename _Rb_tree<_Key, _Val, _KeyOfValue, -2441: _Compare, _Alloc>::const_iterator -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: find(const _Key& __k) const -2441: { -2441: const_iterator __j = _M_lower_bound(_M_begin(), _M_end(), __k); -2441: return (__j == end() -2441: || _M_impl._M_key_compare(__k, -2441: _S_key(__j._M_node))) ? end() : __j; -2441: } -2441: -2441: template -2441: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type -2441: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: -2441: count(const _Key& __k) const -2441: { -2441: pair __p = equal_range(__k); -2441: const size_type __n = std::distance(__p.first, __p.second); -2441: return __n; -2441: } -2441: -2441: __attribute__ ((__pure__)) unsigned int -2441: _Rb_tree_black_count(const _Rb_tree_node_base* __node, -2441: const _Rb_tree_node_base* __root) throw (); -2441: -2441: template -2441: bool -2441: _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::__rb_verify() const -2441: { -2441: if (_M_impl._M_node_count == 0 || begin() == end()) -2441: return _M_impl._M_node_count == 0 && begin() == end() -2441: && this->_M_impl._M_header._M_left == _M_end() -2441: && this->_M_impl._M_header._M_right == _M_end(); -2441: -2441: unsigned int __len = _Rb_tree_black_count(_M_leftmost(), _M_root()); -2441: for (const_iterator __it = begin(); __it != end(); ++__it) -2441: { -2441: _Const_Link_type __x = static_cast<_Const_Link_type>(__it._M_node); -2441: _Const_Link_type __L = _S_left(__x); -2441: _Const_Link_type __R = _S_right(__x); -2441: -2441: if (__x->_M_color == _S_red) -2441: if ((__L && __L->_M_color == _S_red) -2441: || (__R && __R->_M_color == _S_red)) -2441: return false; -2441: -2441: if (__L && _M_impl._M_key_compare(_S_key(__x), _S_key(__L))) -2441: return false; -2441: if (__R && _M_impl._M_key_compare(_S_key(__R), _S_key(__x))) -2441: return false; -2441: -2441: if (!__L && !__R && _Rb_tree_black_count(__x, _M_root()) != __len) -2441: return false; -2441: } -2441: -2441: if (_M_leftmost() != _Rb_tree_node_base::_S_minimum(_M_root())) -2441: return false; -2441: if (_M_rightmost() != _Rb_tree_node_base::_S_maximum(_M_root())) -2441: return false; -2441: return true; -2441: } -2441: # 2627 "/usr/include/c++/8/bits/stl_tree.h" 3 -2441: -2441: } -2441: # 61 "/usr/include/c++/8/set" 2 3 -2441: # 1 "/usr/include/c++/8/bits/stl_set.h" 1 3 -2441: # 64 "/usr/include/c++/8/bits/stl_set.h" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: template -2441: class multiset; -2441: # 92 "/usr/include/c++/8/bits/stl_set.h" 3 -2441: template, -2441: typename _Alloc = std::allocator<_Key> > -2441: class set -2441: { -2441: # 108 "/usr/include/c++/8/bits/stl_set.h" 3 -2441: static_assert(is_same::type, _Key>::value, -2441: "std::set must have a non-const, non-volatile value_type"); -2441: -2441: -2441: -2441: -2441: -2441: -2441: public: -2441: -2441: -2441: -2441: typedef _Key key_type; -2441: typedef _Key value_type; -2441: typedef _Compare key_compare; -2441: typedef _Compare value_compare; -2441: typedef _Alloc allocator_type; -2441: -2441: -2441: private: -2441: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template -2441: rebind<_Key>::other _Key_alloc_type; -2441: -2441: typedef _Rb_tree, -2441: key_compare, _Key_alloc_type> _Rep_type; -2441: _Rep_type _M_t; -2441: -2441: typedef __gnu_cxx::__alloc_traits<_Key_alloc_type> _Alloc_traits; -2441: -2441: public: -2441: -2441: -2441: typedef typename _Alloc_traits::pointer pointer; -2441: typedef typename _Alloc_traits::const_pointer const_pointer; -2441: typedef typename _Alloc_traits::reference reference; -2441: typedef typename _Alloc_traits::const_reference const_reference; -2441: -2441: -2441: -2441: typedef typename _Rep_type::const_iterator iterator; -2441: typedef typename _Rep_type::const_iterator const_iterator; -2441: typedef typename _Rep_type::const_reverse_iterator reverse_iterator; -2441: typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; -2441: typedef typename _Rep_type::size_type size_type; -2441: typedef typename _Rep_type::difference_type difference_type; -2441: # 167 "/usr/include/c++/8/bits/stl_set.h" 3 -2441: set() = default; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: explicit -2441: set(const _Compare& __comp, -2441: const allocator_type& __a = allocator_type()) -2441: : _M_t(__comp, _Key_alloc_type(__a)) { } -2441: # 190 "/usr/include/c++/8/bits/stl_set.h" 3 -2441: template -2441: set(_InputIterator __first, _InputIterator __last) -2441: : _M_t() -2441: { _M_t._M_insert_unique(__first, __last); } -2441: # 207 "/usr/include/c++/8/bits/stl_set.h" 3 -2441: template -2441: set(_InputIterator __first, _InputIterator __last, -2441: const _Compare& __comp, -2441: const allocator_type& __a = allocator_type()) -2441: : _M_t(__comp, _Key_alloc_type(__a)) -2441: { _M_t._M_insert_unique(__first, __last); } -2441: # 223 "/usr/include/c++/8/bits/stl_set.h" 3 -2441: set(const set&) = default; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: set(set&&) = default; -2441: # 243 "/usr/include/c++/8/bits/stl_set.h" 3 -2441: set(initializer_list __l, -2441: const _Compare& __comp = _Compare(), -2441: const allocator_type& __a = allocator_type()) -2441: : _M_t(__comp, _Key_alloc_type(__a)) -2441: { _M_t._M_insert_unique(__l.begin(), __l.end()); } -2441: -2441: -2441: explicit -2441: set(const allocator_type& __a) -2441: : _M_t(_Compare(), _Key_alloc_type(__a)) { } -2441: -2441: -2441: set(const set& __x, const allocator_type& __a) -2441: : _M_t(__x._M_t, _Key_alloc_type(__a)) { } -2441: -2441: -2441: set(set&& __x, const allocator_type& __a) -2441: noexcept(is_nothrow_copy_constructible<_Compare>::value -2441: && _Alloc_traits::_S_always_equal()) -2441: : _M_t(std::move(__x._M_t), _Key_alloc_type(__a)) { } -2441: -2441: -2441: set(initializer_list __l, const allocator_type& __a) -2441: : _M_t(_Compare(), _Key_alloc_type(__a)) -2441: { _M_t._M_insert_unique(__l.begin(), __l.end()); } -2441: -2441: -2441: template -2441: set(_InputIterator __first, _InputIterator __last, -2441: const allocator_type& __a) -2441: : _M_t(_Compare(), _Key_alloc_type(__a)) -2441: { _M_t._M_insert_unique(__first, __last); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: ~set() = default; -2441: # 297 "/usr/include/c++/8/bits/stl_set.h" 3 -2441: set& -2441: operator=(const set&) = default; -2441: -2441: -2441: set& -2441: operator=(set&&) = default; -2441: # 315 "/usr/include/c++/8/bits/stl_set.h" 3 -2441: set& -2441: operator=(initializer_list __l) -2441: { -2441: _M_t._M_assign_unique(__l.begin(), __l.end()); -2441: return *this; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: key_compare -2441: key_comp() const -2441: { return _M_t.key_comp(); } -2441: -2441: value_compare -2441: value_comp() const -2441: { return _M_t.key_comp(); } -2441: -2441: allocator_type -2441: get_allocator() const noexcept -2441: { return allocator_type(_M_t.get_allocator()); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: iterator -2441: begin() const noexcept -2441: { return _M_t.begin(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: iterator -2441: end() const noexcept -2441: { return _M_t.end(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: reverse_iterator -2441: rbegin() const noexcept -2441: { return _M_t.rbegin(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: reverse_iterator -2441: rend() const noexcept -2441: { return _M_t.rend(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: iterator -2441: cbegin() const noexcept -2441: { return _M_t.begin(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: iterator -2441: cend() const noexcept -2441: { return _M_t.end(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: reverse_iterator -2441: crbegin() const noexcept -2441: { return _M_t.rbegin(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: reverse_iterator -2441: crend() const noexcept -2441: { return _M_t.rend(); } -2441: -2441: -2441: -2441: bool -2441: empty() const noexcept -2441: { return _M_t.empty(); } -2441: -2441: -2441: size_type -2441: size() const noexcept -2441: { return _M_t.size(); } -2441: -2441: -2441: size_type -2441: max_size() const noexcept -2441: { return _M_t.max_size(); } -2441: # 440 "/usr/include/c++/8/bits/stl_set.h" 3 -2441: void -2441: swap(set& __x) -2441: noexcept(__is_nothrow_swappable<_Compare>::value) -2441: { _M_t.swap(__x._M_t); } -2441: # 460 "/usr/include/c++/8/bits/stl_set.h" 3 -2441: template -2441: std::pair -2441: emplace(_Args&&... __args) -2441: { return _M_t._M_emplace_unique(std::forward<_Args>(__args)...); } -2441: # 486 "/usr/include/c++/8/bits/stl_set.h" 3 -2441: template -2441: iterator -2441: emplace_hint(const_iterator __pos, _Args&&... __args) -2441: { -2441: return _M_t._M_emplace_hint_unique(__pos, -2441: std::forward<_Args>(__args)...); -2441: } -2441: # 508 "/usr/include/c++/8/bits/stl_set.h" 3 -2441: std::pair -2441: insert(const value_type& __x) -2441: { -2441: std::pair __p = -2441: _M_t._M_insert_unique(__x); -2441: return std::pair(__p.first, __p.second); -2441: } -2441: -2441: -2441: std::pair -2441: insert(value_type&& __x) -2441: { -2441: std::pair __p = -2441: _M_t._M_insert_unique(std::move(__x)); -2441: return std::pair(__p.first, __p.second); -2441: } -2441: # 545 "/usr/include/c++/8/bits/stl_set.h" 3 -2441: iterator -2441: insert(const_iterator __position, const value_type& __x) -2441: { return _M_t._M_insert_unique_(__position, __x); } -2441: -2441: -2441: iterator -2441: insert(const_iterator __position, value_type&& __x) -2441: { return _M_t._M_insert_unique_(__position, std::move(__x)); } -2441: # 564 "/usr/include/c++/8/bits/stl_set.h" 3 -2441: template -2441: void -2441: insert(_InputIterator __first, _InputIterator __last) -2441: { _M_t._M_insert_unique(__first, __last); } -2441: # 577 "/usr/include/c++/8/bits/stl_set.h" 3 -2441: void -2441: insert(initializer_list __l) -2441: { this->insert(__l.begin(), __l.end()); } -2441: # 652 "/usr/include/c++/8/bits/stl_set.h" 3 -2441: __attribute ((__abi_tag__ ("cxx11"))) -2441: iterator -2441: erase(const_iterator __position) -2441: { return _M_t.erase(__position); } -2441: # 683 "/usr/include/c++/8/bits/stl_set.h" 3 -2441: size_type -2441: erase(const key_type& __x) -2441: { return _M_t.erase(__x); } -2441: # 704 "/usr/include/c++/8/bits/stl_set.h" 3 -2441: __attribute ((__abi_tag__ ("cxx11"))) -2441: iterator -2441: erase(const_iterator __first, const_iterator __last) -2441: { return _M_t.erase(__first, __last); } -2441: # 732 "/usr/include/c++/8/bits/stl_set.h" 3 -2441: void -2441: clear() noexcept -2441: { _M_t.clear(); } -2441: # 747 "/usr/include/c++/8/bits/stl_set.h" 3 -2441: size_type -2441: count(const key_type& __x) const -2441: { return _M_t.find(__x) == _M_t.end() ? 0 : 1; } -2441: -2441: -2441: template -2441: auto -2441: count(const _Kt& __x) const -2441: -> decltype(_M_t._M_count_tr(__x)) -2441: { return _M_t._M_count_tr(__x); } -2441: # 774 "/usr/include/c++/8/bits/stl_set.h" 3 -2441: iterator -2441: find(const key_type& __x) -2441: { return _M_t.find(__x); } -2441: -2441: const_iterator -2441: find(const key_type& __x) const -2441: { return _M_t.find(__x); } -2441: -2441: -2441: template -2441: auto -2441: find(const _Kt& __x) -2441: -> decltype(iterator{_M_t._M_find_tr(__x)}) -2441: { return iterator{_M_t._M_find_tr(__x)}; } -2441: -2441: template -2441: auto -2441: find(const _Kt& __x) const -2441: -> decltype(const_iterator{_M_t._M_find_tr(__x)}) -2441: { return const_iterator{_M_t._M_find_tr(__x)}; } -2441: # 809 "/usr/include/c++/8/bits/stl_set.h" 3 -2441: iterator -2441: lower_bound(const key_type& __x) -2441: { return _M_t.lower_bound(__x); } -2441: -2441: const_iterator -2441: lower_bound(const key_type& __x) const -2441: { return _M_t.lower_bound(__x); } -2441: -2441: -2441: template -2441: auto -2441: lower_bound(const _Kt& __x) -2441: -> decltype(iterator(_M_t._M_lower_bound_tr(__x))) -2441: { return iterator(_M_t._M_lower_bound_tr(__x)); } -2441: -2441: template -2441: auto -2441: lower_bound(const _Kt& __x) const -2441: -> decltype(const_iterator(_M_t._M_lower_bound_tr(__x))) -2441: { return const_iterator(_M_t._M_lower_bound_tr(__x)); } -2441: # 839 "/usr/include/c++/8/bits/stl_set.h" 3 -2441: iterator -2441: upper_bound(const key_type& __x) -2441: { return _M_t.upper_bound(__x); } -2441: -2441: const_iterator -2441: upper_bound(const key_type& __x) const -2441: { return _M_t.upper_bound(__x); } -2441: -2441: -2441: template -2441: auto -2441: upper_bound(const _Kt& __x) -2441: -> decltype(iterator(_M_t._M_upper_bound_tr(__x))) -2441: { return iterator(_M_t._M_upper_bound_tr(__x)); } -2441: -2441: template -2441: auto -2441: upper_bound(const _Kt& __x) const -2441: -> decltype(iterator(_M_t._M_upper_bound_tr(__x))) -2441: { return const_iterator(_M_t._M_upper_bound_tr(__x)); } -2441: # 878 "/usr/include/c++/8/bits/stl_set.h" 3 -2441: std::pair -2441: equal_range(const key_type& __x) -2441: { return _M_t.equal_range(__x); } -2441: -2441: std::pair -2441: equal_range(const key_type& __x) const -2441: { return _M_t.equal_range(__x); } -2441: -2441: -2441: template -2441: auto -2441: equal_range(const _Kt& __x) -2441: -> decltype(pair(_M_t._M_equal_range_tr(__x))) -2441: { return pair(_M_t._M_equal_range_tr(__x)); } -2441: -2441: template -2441: auto -2441: equal_range(const _Kt& __x) const -2441: -> decltype(pair(_M_t._M_equal_range_tr(__x))) -2441: { return pair(_M_t._M_equal_range_tr(__x)); } -2441: -2441: -2441: -2441: template -2441: friend bool -2441: operator==(const set<_K1, _C1, _A1>&, const set<_K1, _C1, _A1>&); -2441: -2441: template -2441: friend bool -2441: operator<(const set<_K1, _C1, _A1>&, const set<_K1, _C1, _A1>&); -2441: }; -2441: # 956 "/usr/include/c++/8/bits/stl_set.h" 3 -2441: template -2441: inline bool -2441: operator==(const set<_Key, _Compare, _Alloc>& __x, -2441: const set<_Key, _Compare, _Alloc>& __y) -2441: { return __x._M_t == __y._M_t; } -2441: # 973 "/usr/include/c++/8/bits/stl_set.h" 3 -2441: template -2441: inline bool -2441: operator<(const set<_Key, _Compare, _Alloc>& __x, -2441: const set<_Key, _Compare, _Alloc>& __y) -2441: { return __x._M_t < __y._M_t; } -2441: -2441: -2441: template -2441: inline bool -2441: operator!=(const set<_Key, _Compare, _Alloc>& __x, -2441: const set<_Key, _Compare, _Alloc>& __y) -2441: { return !(__x == __y); } -2441: -2441: -2441: template -2441: inline bool -2441: operator>(const set<_Key, _Compare, _Alloc>& __x, -2441: const set<_Key, _Compare, _Alloc>& __y) -2441: { return __y < __x; } -2441: -2441: -2441: template -2441: inline bool -2441: operator<=(const set<_Key, _Compare, _Alloc>& __x, -2441: const set<_Key, _Compare, _Alloc>& __y) -2441: { return !(__y < __x); } -2441: -2441: -2441: template -2441: inline bool -2441: operator>=(const set<_Key, _Compare, _Alloc>& __x, -2441: const set<_Key, _Compare, _Alloc>& __y) -2441: { return !(__x < __y); } -2441: -2441: -2441: template -2441: inline void -2441: swap(set<_Key, _Compare, _Alloc>& __x, set<_Key, _Compare, _Alloc>& __y) -2441: noexcept(noexcept(__x.swap(__y))) -2441: { __x.swap(__y); } -2441: -2441: -2441: # 1035 "/usr/include/c++/8/bits/stl_set.h" 3 -2441: -2441: } -2441: # 62 "/usr/include/c++/8/set" 2 3 -2441: # 1 "/usr/include/c++/8/bits/stl_multiset.h" 1 3 -2441: # 64 "/usr/include/c++/8/bits/stl_multiset.h" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: template -2441: class set; -2441: # 94 "/usr/include/c++/8/bits/stl_multiset.h" 3 -2441: template , -2441: typename _Alloc = std::allocator<_Key> > -2441: class multiset -2441: { -2441: # 110 "/usr/include/c++/8/bits/stl_multiset.h" 3 -2441: static_assert(is_same::type, _Key>::value, -2441: "std::multiset must have a non-const, non-volatile value_type"); -2441: -2441: -2441: -2441: -2441: -2441: -2441: public: -2441: -2441: typedef _Key key_type; -2441: typedef _Key value_type; -2441: typedef _Compare key_compare; -2441: typedef _Compare value_compare; -2441: typedef _Alloc allocator_type; -2441: -2441: private: -2441: -2441: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template -2441: rebind<_Key>::other _Key_alloc_type; -2441: -2441: typedef _Rb_tree, -2441: key_compare, _Key_alloc_type> _Rep_type; -2441: -2441: _Rep_type _M_t; -2441: -2441: typedef __gnu_cxx::__alloc_traits<_Key_alloc_type> _Alloc_traits; -2441: -2441: public: -2441: typedef typename _Alloc_traits::pointer pointer; -2441: typedef typename _Alloc_traits::const_pointer const_pointer; -2441: typedef typename _Alloc_traits::reference reference; -2441: typedef typename _Alloc_traits::const_reference const_reference; -2441: -2441: -2441: -2441: typedef typename _Rep_type::const_iterator iterator; -2441: typedef typename _Rep_type::const_iterator const_iterator; -2441: typedef typename _Rep_type::const_reverse_iterator reverse_iterator; -2441: typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; -2441: typedef typename _Rep_type::size_type size_type; -2441: typedef typename _Rep_type::difference_type difference_type; -2441: # 164 "/usr/include/c++/8/bits/stl_multiset.h" 3 -2441: multiset() = default; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: explicit -2441: multiset(const _Compare& __comp, -2441: const allocator_type& __a = allocator_type()) -2441: : _M_t(__comp, _Key_alloc_type(__a)) { } -2441: # 186 "/usr/include/c++/8/bits/stl_multiset.h" 3 -2441: template -2441: multiset(_InputIterator __first, _InputIterator __last) -2441: : _M_t() -2441: { _M_t._M_insert_equal(__first, __last); } -2441: # 202 "/usr/include/c++/8/bits/stl_multiset.h" 3 -2441: template -2441: multiset(_InputIterator __first, _InputIterator __last, -2441: const _Compare& __comp, -2441: const allocator_type& __a = allocator_type()) -2441: : _M_t(__comp, _Key_alloc_type(__a)) -2441: { _M_t._M_insert_equal(__first, __last); } -2441: # 218 "/usr/include/c++/8/bits/stl_multiset.h" 3 -2441: multiset(const multiset&) = default; -2441: # 227 "/usr/include/c++/8/bits/stl_multiset.h" 3 -2441: multiset(multiset&&) = default; -2441: # 239 "/usr/include/c++/8/bits/stl_multiset.h" 3 -2441: multiset(initializer_list __l, -2441: const _Compare& __comp = _Compare(), -2441: const allocator_type& __a = allocator_type()) -2441: : _M_t(__comp, _Key_alloc_type(__a)) -2441: { _M_t._M_insert_equal(__l.begin(), __l.end()); } -2441: -2441: -2441: explicit -2441: multiset(const allocator_type& __a) -2441: : _M_t(_Compare(), _Key_alloc_type(__a)) { } -2441: -2441: -2441: multiset(const multiset& __m, const allocator_type& __a) -2441: : _M_t(__m._M_t, _Key_alloc_type(__a)) { } -2441: -2441: -2441: multiset(multiset&& __m, const allocator_type& __a) -2441: noexcept(is_nothrow_copy_constructible<_Compare>::value -2441: && _Alloc_traits::_S_always_equal()) -2441: : _M_t(std::move(__m._M_t), _Key_alloc_type(__a)) { } -2441: -2441: -2441: multiset(initializer_list __l, const allocator_type& __a) -2441: : _M_t(_Compare(), _Key_alloc_type(__a)) -2441: { _M_t._M_insert_equal(__l.begin(), __l.end()); } -2441: -2441: -2441: template -2441: multiset(_InputIterator __first, _InputIterator __last, -2441: const allocator_type& __a) -2441: : _M_t(_Compare(), _Key_alloc_type(__a)) -2441: { _M_t._M_insert_equal(__first, __last); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: ~multiset() = default; -2441: # 293 "/usr/include/c++/8/bits/stl_multiset.h" 3 -2441: multiset& -2441: operator=(const multiset&) = default; -2441: -2441: -2441: multiset& -2441: operator=(multiset&&) = default; -2441: # 311 "/usr/include/c++/8/bits/stl_multiset.h" 3 -2441: multiset& -2441: operator=(initializer_list __l) -2441: { -2441: _M_t._M_assign_equal(__l.begin(), __l.end()); -2441: return *this; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: key_compare -2441: key_comp() const -2441: { return _M_t.key_comp(); } -2441: -2441: value_compare -2441: value_comp() const -2441: { return _M_t.key_comp(); } -2441: -2441: allocator_type -2441: get_allocator() const noexcept -2441: { return allocator_type(_M_t.get_allocator()); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: iterator -2441: begin() const noexcept -2441: { return _M_t.begin(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: iterator -2441: end() const noexcept -2441: { return _M_t.end(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: reverse_iterator -2441: rbegin() const noexcept -2441: { return _M_t.rbegin(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: reverse_iterator -2441: rend() const noexcept -2441: { return _M_t.rend(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: iterator -2441: cbegin() const noexcept -2441: { return _M_t.begin(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: iterator -2441: cend() const noexcept -2441: { return _M_t.end(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: reverse_iterator -2441: crbegin() const noexcept -2441: { return _M_t.rbegin(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: reverse_iterator -2441: crend() const noexcept -2441: { return _M_t.rend(); } -2441: -2441: -2441: -2441: bool -2441: empty() const noexcept -2441: { return _M_t.empty(); } -2441: -2441: -2441: size_type -2441: size() const noexcept -2441: { return _M_t.size(); } -2441: -2441: -2441: size_type -2441: max_size() const noexcept -2441: { return _M_t.max_size(); } -2441: # 436 "/usr/include/c++/8/bits/stl_multiset.h" 3 -2441: void -2441: swap(multiset& __x) -2441: noexcept(__is_nothrow_swappable<_Compare>::value) -2441: { _M_t.swap(__x._M_t); } -2441: # 455 "/usr/include/c++/8/bits/stl_multiset.h" 3 -2441: template -2441: iterator -2441: emplace(_Args&&... __args) -2441: { return _M_t._M_emplace_equal(std::forward<_Args>(__args)...); } -2441: # 481 "/usr/include/c++/8/bits/stl_multiset.h" 3 -2441: template -2441: iterator -2441: emplace_hint(const_iterator __pos, _Args&&... __args) -2441: { -2441: return _M_t._M_emplace_hint_equal(__pos, -2441: std::forward<_Args>(__args)...); -2441: } -2441: # 501 "/usr/include/c++/8/bits/stl_multiset.h" 3 -2441: iterator -2441: insert(const value_type& __x) -2441: { return _M_t._M_insert_equal(__x); } -2441: -2441: -2441: iterator -2441: insert(value_type&& __x) -2441: { return _M_t._M_insert_equal(std::move(__x)); } -2441: # 531 "/usr/include/c++/8/bits/stl_multiset.h" 3 -2441: iterator -2441: insert(const_iterator __position, const value_type& __x) -2441: { return _M_t._M_insert_equal_(__position, __x); } -2441: -2441: -2441: iterator -2441: insert(const_iterator __position, value_type&& __x) -2441: { return _M_t._M_insert_equal_(__position, std::move(__x)); } -2441: # 549 "/usr/include/c++/8/bits/stl_multiset.h" 3 -2441: template -2441: void -2441: insert(_InputIterator __first, _InputIterator __last) -2441: { _M_t._M_insert_equal(__first, __last); } -2441: # 562 "/usr/include/c++/8/bits/stl_multiset.h" 3 -2441: void -2441: insert(initializer_list __l) -2441: { this->insert(__l.begin(), __l.end()); } -2441: # 637 "/usr/include/c++/8/bits/stl_multiset.h" 3 -2441: __attribute ((__abi_tag__ ("cxx11"))) -2441: iterator -2441: erase(const_iterator __position) -2441: { return _M_t.erase(__position); } -2441: # 668 "/usr/include/c++/8/bits/stl_multiset.h" 3 -2441: size_type -2441: erase(const key_type& __x) -2441: { return _M_t.erase(__x); } -2441: # 689 "/usr/include/c++/8/bits/stl_multiset.h" 3 -2441: __attribute ((__abi_tag__ ("cxx11"))) -2441: iterator -2441: erase(const_iterator __first, const_iterator __last) -2441: { return _M_t.erase(__first, __last); } -2441: # 717 "/usr/include/c++/8/bits/stl_multiset.h" 3 -2441: void -2441: clear() noexcept -2441: { _M_t.clear(); } -2441: # 729 "/usr/include/c++/8/bits/stl_multiset.h" 3 -2441: size_type -2441: count(const key_type& __x) const -2441: { return _M_t.count(__x); } -2441: -2441: -2441: template -2441: auto -2441: count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x)) -2441: { return _M_t._M_count_tr(__x); } -2441: # 755 "/usr/include/c++/8/bits/stl_multiset.h" 3 -2441: iterator -2441: find(const key_type& __x) -2441: { return _M_t.find(__x); } -2441: -2441: const_iterator -2441: find(const key_type& __x) const -2441: { return _M_t.find(__x); } -2441: -2441: -2441: template -2441: auto -2441: find(const _Kt& __x) -2441: -> decltype(iterator{_M_t._M_find_tr(__x)}) -2441: { return iterator{_M_t._M_find_tr(__x)}; } -2441: -2441: template -2441: auto -2441: find(const _Kt& __x) const -2441: -> decltype(const_iterator{_M_t._M_find_tr(__x)}) -2441: { return const_iterator{_M_t._M_find_tr(__x)}; } -2441: # 790 "/usr/include/c++/8/bits/stl_multiset.h" 3 -2441: iterator -2441: lower_bound(const key_type& __x) -2441: { return _M_t.lower_bound(__x); } -2441: -2441: const_iterator -2441: lower_bound(const key_type& __x) const -2441: { return _M_t.lower_bound(__x); } -2441: -2441: -2441: template -2441: auto -2441: lower_bound(const _Kt& __x) -2441: -> decltype(iterator(_M_t._M_lower_bound_tr(__x))) -2441: { return iterator(_M_t._M_lower_bound_tr(__x)); } -2441: -2441: template -2441: auto -2441: lower_bound(const _Kt& __x) const -2441: -> decltype(iterator(_M_t._M_lower_bound_tr(__x))) -2441: { return iterator(_M_t._M_lower_bound_tr(__x)); } -2441: # 820 "/usr/include/c++/8/bits/stl_multiset.h" 3 -2441: iterator -2441: upper_bound(const key_type& __x) -2441: { return _M_t.upper_bound(__x); } -2441: -2441: const_iterator -2441: upper_bound(const key_type& __x) const -2441: { return _M_t.upper_bound(__x); } -2441: -2441: -2441: template -2441: auto -2441: upper_bound(const _Kt& __x) -2441: -> decltype(iterator(_M_t._M_upper_bound_tr(__x))) -2441: { return iterator(_M_t._M_upper_bound_tr(__x)); } -2441: -2441: template -2441: auto -2441: upper_bound(const _Kt& __x) const -2441: -> decltype(iterator(_M_t._M_upper_bound_tr(__x))) -2441: { return iterator(_M_t._M_upper_bound_tr(__x)); } -2441: # 859 "/usr/include/c++/8/bits/stl_multiset.h" 3 -2441: std::pair -2441: equal_range(const key_type& __x) -2441: { return _M_t.equal_range(__x); } -2441: -2441: std::pair -2441: equal_range(const key_type& __x) const -2441: { return _M_t.equal_range(__x); } -2441: -2441: -2441: template -2441: auto -2441: equal_range(const _Kt& __x) -2441: -> decltype(pair(_M_t._M_equal_range_tr(__x))) -2441: { return pair(_M_t._M_equal_range_tr(__x)); } -2441: -2441: template -2441: auto -2441: equal_range(const _Kt& __x) const -2441: -> decltype(pair(_M_t._M_equal_range_tr(__x))) -2441: { return pair(_M_t._M_equal_range_tr(__x)); } -2441: -2441: -2441: -2441: template -2441: friend bool -2441: operator==(const multiset<_K1, _C1, _A1>&, -2441: const multiset<_K1, _C1, _A1>&); -2441: -2441: template -2441: friend bool -2441: operator< (const multiset<_K1, _C1, _A1>&, -2441: const multiset<_K1, _C1, _A1>&); -2441: }; -2441: # 941 "/usr/include/c++/8/bits/stl_multiset.h" 3 -2441: template -2441: inline bool -2441: operator==(const multiset<_Key, _Compare, _Alloc>& __x, -2441: const multiset<_Key, _Compare, _Alloc>& __y) -2441: { return __x._M_t == __y._M_t; } -2441: # 958 "/usr/include/c++/8/bits/stl_multiset.h" 3 -2441: template -2441: inline bool -2441: operator<(const multiset<_Key, _Compare, _Alloc>& __x, -2441: const multiset<_Key, _Compare, _Alloc>& __y) -2441: { return __x._M_t < __y._M_t; } -2441: -2441: -2441: template -2441: inline bool -2441: operator!=(const multiset<_Key, _Compare, _Alloc>& __x, -2441: const multiset<_Key, _Compare, _Alloc>& __y) -2441: { return !(__x == __y); } -2441: -2441: -2441: template -2441: inline bool -2441: operator>(const multiset<_Key,_Compare,_Alloc>& __x, -2441: const multiset<_Key,_Compare,_Alloc>& __y) -2441: { return __y < __x; } -2441: -2441: -2441: template -2441: inline bool -2441: operator<=(const multiset<_Key, _Compare, _Alloc>& __x, -2441: const multiset<_Key, _Compare, _Alloc>& __y) -2441: { return !(__y < __x); } -2441: -2441: -2441: template -2441: inline bool -2441: operator>=(const multiset<_Key, _Compare, _Alloc>& __x, -2441: const multiset<_Key, _Compare, _Alloc>& __y) -2441: { return !(__x < __y); } -2441: -2441: -2441: template -2441: inline void -2441: swap(multiset<_Key, _Compare, _Alloc>& __x, -2441: multiset<_Key, _Compare, _Alloc>& __y) -2441: noexcept(noexcept(__x.swap(__y))) -2441: { __x.swap(__y); } -2441: -2441: -2441: # 1023 "/usr/include/c++/8/bits/stl_multiset.h" 3 -2441: -2441: } -2441: # 63 "/usr/include/c++/8/set" 2 3 -2441: # 34 "../../src/Float_defs.hh" 2 -2441: # 1 "/usr/include/c++/8/cmath" 1 3 -2441: # 39 "/usr/include/c++/8/cmath" 3 -2441: -2441: # 40 "/usr/include/c++/8/cmath" 3 -2441: -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/math.h" 1 3 4 -2441: # 27 "/usr/include/math.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/libc-header-start.h" 1 3 4 -2441: # 28 "/usr/include/math.h" 2 3 4 -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern "C" { -2441: -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/math-vector.h" 1 3 4 -2441: # 25 "/usr/include/i386-linux-gnu/bits/math-vector.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/libm-simd-decl-stubs.h" 1 3 4 -2441: # 26 "/usr/include/i386-linux-gnu/bits/math-vector.h" 2 3 4 -2441: # 41 "/usr/include/math.h" 2 3 4 -2441: # 138 "/usr/include/math.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/flt-eval-method.h" 1 3 4 -2441: # 139 "/usr/include/math.h" 2 3 4 -2441: # 155 "/usr/include/math.h" 3 4 -2441: typedef long double float_t; -2441: typedef long double double_t; -2441: # 190 "/usr/include/math.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/fp-logb.h" 1 3 4 -2441: # 191 "/usr/include/math.h" 2 3 4 -2441: # 233 "/usr/include/math.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/fp-fast.h" 1 3 4 -2441: # 234 "/usr/include/math.h" 2 3 4 -2441: -2441: -2441: -2441: enum -2441: { -2441: FP_INT_UPWARD = -2441: -2441: 0, -2441: FP_INT_DOWNWARD = -2441: -2441: 1, -2441: FP_INT_TOWARDZERO = -2441: -2441: 2, -2441: FP_INT_TONEARESTFROMZERO = -2441: -2441: 3, -2441: FP_INT_TONEAREST = -2441: -2441: 4, -2441: }; -2441: # 289 "/usr/include/math.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/mathcalls-helper-functions.h" 1 3 4 -2441: # 21 "/usr/include/i386-linux-gnu/bits/mathcalls-helper-functions.h" 3 4 -2441: extern int __fpclassify (double __value) throw () -2441: __attribute__ ((__const__)); -2441: -2441: -2441: extern int __signbit (double __value) throw () -2441: __attribute__ ((__const__)); -2441: -2441: -2441: -2441: extern int __isinf (double __value) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern int __finite (double __value) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern int __isnan (double __value) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern int __iseqsig (double __x, double __y) throw (); -2441: -2441: -2441: extern int __issignaling (double __value) throw () -2441: __attribute__ ((__const__)); -2441: # 290 "/usr/include/math.h" 2 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 1 3 4 -2441: # 53 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 3 4 -2441: extern double acos (double __x) throw (); extern double __acos (double __x) throw (); -2441: -2441: extern double asin (double __x) throw (); extern double __asin (double __x) throw (); -2441: -2441: extern double atan (double __x) throw (); extern double __atan (double __x) throw (); -2441: -2441: extern double atan2 (double __y, double __x) throw (); extern double __atan2 (double __y, double __x) throw (); -2441: -2441: -2441: extern double cos (double __x) throw (); extern double __cos (double __x) throw (); -2441: -2441: extern double sin (double __x) throw (); extern double __sin (double __x) throw (); -2441: -2441: extern double tan (double __x) throw (); extern double __tan (double __x) throw (); -2441: -2441: -2441: -2441: -2441: extern double cosh (double __x) throw (); extern double __cosh (double __x) throw (); -2441: -2441: extern double sinh (double __x) throw (); extern double __sinh (double __x) throw (); -2441: -2441: extern double tanh (double __x) throw (); extern double __tanh (double __x) throw (); -2441: -2441: -2441: -2441: extern void sincos (double __x, double *__sinx, double *__cosx) throw (); extern void __sincos (double __x, double *__sinx, double *__cosx) throw () -2441: ; -2441: -2441: -2441: -2441: -2441: extern double acosh (double __x) throw (); extern double __acosh (double __x) throw (); -2441: -2441: extern double asinh (double __x) throw (); extern double __asinh (double __x) throw (); -2441: -2441: extern double atanh (double __x) throw (); extern double __atanh (double __x) throw (); -2441: -2441: -2441: -2441: -2441: -2441: extern double exp (double __x) throw (); extern double __exp (double __x) throw (); -2441: -2441: -2441: extern double frexp (double __x, int *__exponent) throw (); extern double __frexp (double __x, int *__exponent) throw (); -2441: -2441: -2441: extern double ldexp (double __x, int __exponent) throw (); extern double __ldexp (double __x, int __exponent) throw (); -2441: -2441: -2441: extern double log (double __x) throw (); extern double __log (double __x) throw (); -2441: -2441: -2441: extern double log10 (double __x) throw (); extern double __log10 (double __x) throw (); -2441: -2441: -2441: extern double modf (double __x, double *__iptr) throw (); extern double __modf (double __x, double *__iptr) throw () __attribute__ ((__nonnull__ (2))); -2441: -2441: -2441: -2441: extern double exp10 (double __x) throw (); extern double __exp10 (double __x) throw (); -2441: -2441: -2441: -2441: -2441: extern double expm1 (double __x) throw (); extern double __expm1 (double __x) throw (); -2441: -2441: -2441: extern double log1p (double __x) throw (); extern double __log1p (double __x) throw (); -2441: -2441: -2441: extern double logb (double __x) throw (); extern double __logb (double __x) throw (); -2441: -2441: -2441: -2441: -2441: extern double exp2 (double __x) throw (); extern double __exp2 (double __x) throw (); -2441: -2441: -2441: extern double log2 (double __x) throw (); extern double __log2 (double __x) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern double pow (double __x, double __y) throw (); extern double __pow (double __x, double __y) throw (); -2441: -2441: -2441: extern double sqrt (double __x) throw (); extern double __sqrt (double __x) throw (); -2441: -2441: -2441: -2441: extern double hypot (double __x, double __y) throw (); extern double __hypot (double __x, double __y) throw (); -2441: -2441: -2441: -2441: -2441: extern double cbrt (double __x) throw (); extern double __cbrt (double __x) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern double ceil (double __x) throw () __attribute__ ((__const__)); extern double __ceil (double __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern double fabs (double __x) throw () __attribute__ ((__const__)); extern double __fabs (double __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern double floor (double __x) throw () __attribute__ ((__const__)); extern double __floor (double __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern double fmod (double __x, double __y) throw (); extern double __fmod (double __x, double __y) throw (); -2441: # 182 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 3 4 -2441: extern int finite (double __value) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern double drem (double __x, double __y) throw (); extern double __drem (double __x, double __y) throw (); -2441: -2441: -2441: -2441: extern double significand (double __x) throw (); extern double __significand (double __x) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern double copysign (double __x, double __y) throw () __attribute__ ((__const__)); extern double __copysign (double __x, double __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: -2441: extern double nan (const char *__tagb) throw (); extern double __nan (const char *__tagb) throw (); -2441: # 217 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 3 4 -2441: extern double j0 (double) throw (); extern double __j0 (double) throw (); -2441: extern double j1 (double) throw (); extern double __j1 (double) throw (); -2441: extern double jn (int, double) throw (); extern double __jn (int, double) throw (); -2441: extern double y0 (double) throw (); extern double __y0 (double) throw (); -2441: extern double y1 (double) throw (); extern double __y1 (double) throw (); -2441: extern double yn (int, double) throw (); extern double __yn (int, double) throw (); -2441: -2441: -2441: -2441: -2441: -2441: extern double erf (double) throw (); extern double __erf (double) throw (); -2441: extern double erfc (double) throw (); extern double __erfc (double) throw (); -2441: extern double lgamma (double) throw (); extern double __lgamma (double) throw (); -2441: -2441: -2441: -2441: -2441: extern double tgamma (double) throw (); extern double __tgamma (double) throw (); -2441: -2441: -2441: -2441: -2441: -2441: extern double gamma (double) throw (); extern double __gamma (double) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern double lgamma_r (double, int *__signgamp) throw (); extern double __lgamma_r (double, int *__signgamp) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern double rint (double __x) throw (); extern double __rint (double __x) throw (); -2441: -2441: -2441: extern double nextafter (double __x, double __y) throw (); extern double __nextafter (double __x, double __y) throw (); -2441: -2441: extern double nexttoward (double __x, long double __y) throw (); extern double __nexttoward (double __x, long double __y) throw (); -2441: -2441: -2441: -2441: -2441: extern double nextdown (double __x) throw (); extern double __nextdown (double __x) throw (); -2441: -2441: extern double nextup (double __x) throw (); extern double __nextup (double __x) throw (); -2441: -2441: -2441: -2441: extern double remainder (double __x, double __y) throw (); extern double __remainder (double __x, double __y) throw (); -2441: -2441: -2441: -2441: extern double scalbn (double __x, int __n) throw (); extern double __scalbn (double __x, int __n) throw (); -2441: -2441: -2441: -2441: extern int ilogb (double __x) throw (); extern int __ilogb (double __x) throw (); -2441: -2441: -2441: -2441: -2441: extern long int llogb (double __x) throw (); extern long int __llogb (double __x) throw (); -2441: -2441: -2441: -2441: -2441: extern double scalbln (double __x, long int __n) throw (); extern double __scalbln (double __x, long int __n) throw (); -2441: -2441: -2441: -2441: extern double nearbyint (double __x) throw (); extern double __nearbyint (double __x) throw (); -2441: -2441: -2441: -2441: extern double round (double __x) throw () __attribute__ ((__const__)); extern double __round (double __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: extern double trunc (double __x) throw () __attribute__ ((__const__)); extern double __trunc (double __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: -2441: extern double remquo (double __x, double __y, int *__quo) throw (); extern double __remquo (double __x, double __y, int *__quo) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern long int lrint (double __x) throw (); extern long int __lrint (double __x) throw (); -2441: __extension__ -2441: extern long long int llrint (double __x) throw (); extern long long int __llrint (double __x) throw (); -2441: -2441: -2441: -2441: extern long int lround (double __x) throw (); extern long int __lround (double __x) throw (); -2441: __extension__ -2441: extern long long int llround (double __x) throw (); extern long long int __llround (double __x) throw (); -2441: -2441: -2441: -2441: extern double fdim (double __x, double __y) throw (); extern double __fdim (double __x, double __y) throw (); -2441: -2441: -2441: extern double fmax (double __x, double __y) throw () __attribute__ ((__const__)); extern double __fmax (double __x, double __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern double fmin (double __x, double __y) throw () __attribute__ ((__const__)); extern double __fmin (double __x, double __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern double fma (double __x, double __y, double __z) throw (); extern double __fma (double __x, double __y, double __z) throw (); -2441: -2441: -2441: -2441: -2441: extern double roundeven (double __x) throw () __attribute__ ((__const__)); extern double __roundeven (double __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: extern __intmax_t fromfp (double __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfp (double __x, int __round, unsigned int __width) throw () -2441: ; -2441: -2441: -2441: -2441: extern __uintmax_t ufromfp (double __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfp (double __x, int __round, unsigned int __width) throw () -2441: ; -2441: -2441: -2441: -2441: -2441: extern __intmax_t fromfpx (double __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpx (double __x, int __round, unsigned int __width) throw () -2441: ; -2441: -2441: -2441: -2441: -2441: extern __uintmax_t ufromfpx (double __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpx (double __x, int __round, unsigned int __width) throw () -2441: ; -2441: -2441: -2441: extern double fmaxmag (double __x, double __y) throw () __attribute__ ((__const__)); extern double __fmaxmag (double __x, double __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern double fminmag (double __x, double __y) throw () __attribute__ ((__const__)); extern double __fminmag (double __x, double __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern int totalorder (double __x, double __y) throw () -2441: __attribute__ ((__const__)); -2441: -2441: -2441: extern int totalordermag (double __x, double __y) throw () -2441: __attribute__ ((__const__)); -2441: -2441: -2441: extern int canonicalize (double *__cx, const double *__x) throw (); -2441: -2441: -2441: extern double getpayload (const double *__x) throw (); extern double __getpayload (const double *__x) throw (); -2441: -2441: -2441: extern int setpayload (double *__x, double __payload) throw (); -2441: -2441: -2441: extern int setpayloadsig (double *__x, double __payload) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern double scalb (double __x, double __n) throw (); extern double __scalb (double __x, double __n) throw (); -2441: # 291 "/usr/include/math.h" 2 3 4 -2441: # 306 "/usr/include/math.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/mathcalls-helper-functions.h" 1 3 4 -2441: # 21 "/usr/include/i386-linux-gnu/bits/mathcalls-helper-functions.h" 3 4 -2441: extern int __fpclassifyf (float __value) throw () -2441: __attribute__ ((__const__)); -2441: -2441: -2441: extern int __signbitf (float __value) throw () -2441: __attribute__ ((__const__)); -2441: -2441: -2441: -2441: extern int __isinff (float __value) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern int __finitef (float __value) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern int __isnanf (float __value) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern int __iseqsigf (float __x, float __y) throw (); -2441: -2441: -2441: extern int __issignalingf (float __value) throw () -2441: __attribute__ ((__const__)); -2441: # 307 "/usr/include/math.h" 2 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 1 3 4 -2441: # 53 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 3 4 -2441: extern float acosf (float __x) throw (); extern float __acosf (float __x) throw (); -2441: -2441: extern float asinf (float __x) throw (); extern float __asinf (float __x) throw (); -2441: -2441: extern float atanf (float __x) throw (); extern float __atanf (float __x) throw (); -2441: -2441: extern float atan2f (float __y, float __x) throw (); extern float __atan2f (float __y, float __x) throw (); -2441: -2441: -2441: extern float cosf (float __x) throw (); extern float __cosf (float __x) throw (); -2441: -2441: extern float sinf (float __x) throw (); extern float __sinf (float __x) throw (); -2441: -2441: extern float tanf (float __x) throw (); extern float __tanf (float __x) throw (); -2441: -2441: -2441: -2441: -2441: extern float coshf (float __x) throw (); extern float __coshf (float __x) throw (); -2441: -2441: extern float sinhf (float __x) throw (); extern float __sinhf (float __x) throw (); -2441: -2441: extern float tanhf (float __x) throw (); extern float __tanhf (float __x) throw (); -2441: -2441: -2441: -2441: extern void sincosf (float __x, float *__sinx, float *__cosx) throw (); extern void __sincosf (float __x, float *__sinx, float *__cosx) throw () -2441: ; -2441: -2441: -2441: -2441: -2441: extern float acoshf (float __x) throw (); extern float __acoshf (float __x) throw (); -2441: -2441: extern float asinhf (float __x) throw (); extern float __asinhf (float __x) throw (); -2441: -2441: extern float atanhf (float __x) throw (); extern float __atanhf (float __x) throw (); -2441: -2441: -2441: -2441: -2441: -2441: extern float expf (float __x) throw (); extern float __expf (float __x) throw (); -2441: -2441: -2441: extern float frexpf (float __x, int *__exponent) throw (); extern float __frexpf (float __x, int *__exponent) throw (); -2441: -2441: -2441: extern float ldexpf (float __x, int __exponent) throw (); extern float __ldexpf (float __x, int __exponent) throw (); -2441: -2441: -2441: extern float logf (float __x) throw (); extern float __logf (float __x) throw (); -2441: -2441: -2441: extern float log10f (float __x) throw (); extern float __log10f (float __x) throw (); -2441: -2441: -2441: extern float modff (float __x, float *__iptr) throw (); extern float __modff (float __x, float *__iptr) throw () __attribute__ ((__nonnull__ (2))); -2441: -2441: -2441: -2441: extern float exp10f (float __x) throw (); extern float __exp10f (float __x) throw (); -2441: -2441: -2441: -2441: -2441: extern float expm1f (float __x) throw (); extern float __expm1f (float __x) throw (); -2441: -2441: -2441: extern float log1pf (float __x) throw (); extern float __log1pf (float __x) throw (); -2441: -2441: -2441: extern float logbf (float __x) throw (); extern float __logbf (float __x) throw (); -2441: -2441: -2441: -2441: -2441: extern float exp2f (float __x) throw (); extern float __exp2f (float __x) throw (); -2441: -2441: -2441: extern float log2f (float __x) throw (); extern float __log2f (float __x) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern float powf (float __x, float __y) throw (); extern float __powf (float __x, float __y) throw (); -2441: -2441: -2441: extern float sqrtf (float __x) throw (); extern float __sqrtf (float __x) throw (); -2441: -2441: -2441: -2441: extern float hypotf (float __x, float __y) throw (); extern float __hypotf (float __x, float __y) throw (); -2441: -2441: -2441: -2441: -2441: extern float cbrtf (float __x) throw (); extern float __cbrtf (float __x) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern float ceilf (float __x) throw () __attribute__ ((__const__)); extern float __ceilf (float __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern float fabsf (float __x) throw () __attribute__ ((__const__)); extern float __fabsf (float __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern float floorf (float __x) throw () __attribute__ ((__const__)); extern float __floorf (float __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern float fmodf (float __x, float __y) throw (); extern float __fmodf (float __x, float __y) throw (); -2441: # 177 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 3 4 -2441: extern int isinff (float __value) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: -2441: extern int finitef (float __value) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern float dremf (float __x, float __y) throw (); extern float __dremf (float __x, float __y) throw (); -2441: -2441: -2441: -2441: extern float significandf (float __x) throw (); extern float __significandf (float __x) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern float copysignf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: -2441: extern float nanf (const char *__tagb) throw (); extern float __nanf (const char *__tagb) throw (); -2441: # 211 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 3 4 -2441: extern int isnanf (float __value) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: -2441: -2441: extern float j0f (float) throw (); extern float __j0f (float) throw (); -2441: extern float j1f (float) throw (); extern float __j1f (float) throw (); -2441: extern float jnf (int, float) throw (); extern float __jnf (int, float) throw (); -2441: extern float y0f (float) throw (); extern float __y0f (float) throw (); -2441: extern float y1f (float) throw (); extern float __y1f (float) throw (); -2441: extern float ynf (int, float) throw (); extern float __ynf (int, float) throw (); -2441: -2441: -2441: -2441: -2441: -2441: extern float erff (float) throw (); extern float __erff (float) throw (); -2441: extern float erfcf (float) throw (); extern float __erfcf (float) throw (); -2441: extern float lgammaf (float) throw (); extern float __lgammaf (float) throw (); -2441: -2441: -2441: -2441: -2441: extern float tgammaf (float) throw (); extern float __tgammaf (float) throw (); -2441: -2441: -2441: -2441: -2441: -2441: extern float gammaf (float) throw (); extern float __gammaf (float) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern float lgammaf_r (float, int *__signgamp) throw (); extern float __lgammaf_r (float, int *__signgamp) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern float rintf (float __x) throw (); extern float __rintf (float __x) throw (); -2441: -2441: -2441: extern float nextafterf (float __x, float __y) throw (); extern float __nextafterf (float __x, float __y) throw (); -2441: -2441: extern float nexttowardf (float __x, long double __y) throw (); extern float __nexttowardf (float __x, long double __y) throw (); -2441: -2441: -2441: -2441: -2441: extern float nextdownf (float __x) throw (); extern float __nextdownf (float __x) throw (); -2441: -2441: extern float nextupf (float __x) throw (); extern float __nextupf (float __x) throw (); -2441: -2441: -2441: -2441: extern float remainderf (float __x, float __y) throw (); extern float __remainderf (float __x, float __y) throw (); -2441: -2441: -2441: -2441: extern float scalbnf (float __x, int __n) throw (); extern float __scalbnf (float __x, int __n) throw (); -2441: -2441: -2441: -2441: extern int ilogbf (float __x) throw (); extern int __ilogbf (float __x) throw (); -2441: -2441: -2441: -2441: -2441: extern long int llogbf (float __x) throw (); extern long int __llogbf (float __x) throw (); -2441: -2441: -2441: -2441: -2441: extern float scalblnf (float __x, long int __n) throw (); extern float __scalblnf (float __x, long int __n) throw (); -2441: -2441: -2441: -2441: extern float nearbyintf (float __x) throw (); extern float __nearbyintf (float __x) throw (); -2441: -2441: -2441: -2441: extern float roundf (float __x) throw () __attribute__ ((__const__)); extern float __roundf (float __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: extern float truncf (float __x) throw () __attribute__ ((__const__)); extern float __truncf (float __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: -2441: extern float remquof (float __x, float __y, int *__quo) throw (); extern float __remquof (float __x, float __y, int *__quo) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern long int lrintf (float __x) throw (); extern long int __lrintf (float __x) throw (); -2441: __extension__ -2441: extern long long int llrintf (float __x) throw (); extern long long int __llrintf (float __x) throw (); -2441: -2441: -2441: -2441: extern long int lroundf (float __x) throw (); extern long int __lroundf (float __x) throw (); -2441: __extension__ -2441: extern long long int llroundf (float __x) throw (); extern long long int __llroundf (float __x) throw (); -2441: -2441: -2441: -2441: extern float fdimf (float __x, float __y) throw (); extern float __fdimf (float __x, float __y) throw (); -2441: -2441: -2441: extern float fmaxf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __fmaxf (float __x, float __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern float fminf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __fminf (float __x, float __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern float fmaf (float __x, float __y, float __z) throw (); extern float __fmaf (float __x, float __y, float __z) throw (); -2441: -2441: -2441: -2441: -2441: extern float roundevenf (float __x) throw () __attribute__ ((__const__)); extern float __roundevenf (float __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: extern __intmax_t fromfpf (float __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpf (float __x, int __round, unsigned int __width) throw () -2441: ; -2441: -2441: -2441: -2441: extern __uintmax_t ufromfpf (float __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpf (float __x, int __round, unsigned int __width) throw () -2441: ; -2441: -2441: -2441: -2441: -2441: extern __intmax_t fromfpxf (float __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxf (float __x, int __round, unsigned int __width) throw () -2441: ; -2441: -2441: -2441: -2441: -2441: extern __uintmax_t ufromfpxf (float __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxf (float __x, int __round, unsigned int __width) throw () -2441: ; -2441: -2441: -2441: extern float fmaxmagf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __fmaxmagf (float __x, float __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern float fminmagf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __fminmagf (float __x, float __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern int totalorderf (float __x, float __y) throw () -2441: __attribute__ ((__const__)); -2441: -2441: -2441: extern int totalordermagf (float __x, float __y) throw () -2441: __attribute__ ((__const__)); -2441: -2441: -2441: extern int canonicalizef (float *__cx, const float *__x) throw (); -2441: -2441: -2441: extern float getpayloadf (const float *__x) throw (); extern float __getpayloadf (const float *__x) throw (); -2441: -2441: -2441: extern int setpayloadf (float *__x, float __payload) throw (); -2441: -2441: -2441: extern int setpayloadsigf (float *__x, float __payload) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern float scalbf (float __x, float __n) throw (); extern float __scalbf (float __x, float __n) throw (); -2441: # 308 "/usr/include/math.h" 2 3 4 -2441: # 349 "/usr/include/math.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/mathcalls-helper-functions.h" 1 3 4 -2441: # 21 "/usr/include/i386-linux-gnu/bits/mathcalls-helper-functions.h" 3 4 -2441: extern int __fpclassifyl (long double __value) throw () -2441: __attribute__ ((__const__)); -2441: -2441: -2441: extern int __signbitl (long double __value) throw () -2441: __attribute__ ((__const__)); -2441: -2441: -2441: -2441: extern int __isinfl (long double __value) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern int __finitel (long double __value) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern int __isnanl (long double __value) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern int __iseqsigl (long double __x, long double __y) throw (); -2441: -2441: -2441: extern int __issignalingl (long double __value) throw () -2441: __attribute__ ((__const__)); -2441: # 350 "/usr/include/math.h" 2 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 1 3 4 -2441: # 53 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 3 4 -2441: extern long double acosl (long double __x) throw (); extern long double __acosl (long double __x) throw (); -2441: -2441: extern long double asinl (long double __x) throw (); extern long double __asinl (long double __x) throw (); -2441: -2441: extern long double atanl (long double __x) throw (); extern long double __atanl (long double __x) throw (); -2441: -2441: extern long double atan2l (long double __y, long double __x) throw (); extern long double __atan2l (long double __y, long double __x) throw (); -2441: -2441: -2441: extern long double cosl (long double __x) throw (); extern long double __cosl (long double __x) throw (); -2441: -2441: extern long double sinl (long double __x) throw (); extern long double __sinl (long double __x) throw (); -2441: -2441: extern long double tanl (long double __x) throw (); extern long double __tanl (long double __x) throw (); -2441: -2441: -2441: -2441: -2441: extern long double coshl (long double __x) throw (); extern long double __coshl (long double __x) throw (); -2441: -2441: extern long double sinhl (long double __x) throw (); extern long double __sinhl (long double __x) throw (); -2441: -2441: extern long double tanhl (long double __x) throw (); extern long double __tanhl (long double __x) throw (); -2441: -2441: -2441: -2441: extern void sincosl (long double __x, long double *__sinx, long double *__cosx) throw (); extern void __sincosl (long double __x, long double *__sinx, long double *__cosx) throw () -2441: ; -2441: -2441: -2441: -2441: -2441: extern long double acoshl (long double __x) throw (); extern long double __acoshl (long double __x) throw (); -2441: -2441: extern long double asinhl (long double __x) throw (); extern long double __asinhl (long double __x) throw (); -2441: -2441: extern long double atanhl (long double __x) throw (); extern long double __atanhl (long double __x) throw (); -2441: -2441: -2441: -2441: -2441: -2441: extern long double expl (long double __x) throw (); extern long double __expl (long double __x) throw (); -2441: -2441: -2441: extern long double frexpl (long double __x, int *__exponent) throw (); extern long double __frexpl (long double __x, int *__exponent) throw (); -2441: -2441: -2441: extern long double ldexpl (long double __x, int __exponent) throw (); extern long double __ldexpl (long double __x, int __exponent) throw (); -2441: -2441: -2441: extern long double logl (long double __x) throw (); extern long double __logl (long double __x) throw (); -2441: -2441: -2441: extern long double log10l (long double __x) throw (); extern long double __log10l (long double __x) throw (); -2441: -2441: -2441: extern long double modfl (long double __x, long double *__iptr) throw (); extern long double __modfl (long double __x, long double *__iptr) throw () __attribute__ ((__nonnull__ (2))); -2441: -2441: -2441: -2441: extern long double exp10l (long double __x) throw (); extern long double __exp10l (long double __x) throw (); -2441: -2441: -2441: -2441: -2441: extern long double expm1l (long double __x) throw (); extern long double __expm1l (long double __x) throw (); -2441: -2441: -2441: extern long double log1pl (long double __x) throw (); extern long double __log1pl (long double __x) throw (); -2441: -2441: -2441: extern long double logbl (long double __x) throw (); extern long double __logbl (long double __x) throw (); -2441: -2441: -2441: -2441: -2441: extern long double exp2l (long double __x) throw (); extern long double __exp2l (long double __x) throw (); -2441: -2441: -2441: extern long double log2l (long double __x) throw (); extern long double __log2l (long double __x) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern long double powl (long double __x, long double __y) throw (); extern long double __powl (long double __x, long double __y) throw (); -2441: -2441: -2441: extern long double sqrtl (long double __x) throw (); extern long double __sqrtl (long double __x) throw (); -2441: -2441: -2441: -2441: extern long double hypotl (long double __x, long double __y) throw (); extern long double __hypotl (long double __x, long double __y) throw (); -2441: -2441: -2441: -2441: -2441: extern long double cbrtl (long double __x) throw (); extern long double __cbrtl (long double __x) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern long double ceill (long double __x) throw () __attribute__ ((__const__)); extern long double __ceill (long double __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern long double fabsl (long double __x) throw () __attribute__ ((__const__)); extern long double __fabsl (long double __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern long double floorl (long double __x) throw () __attribute__ ((__const__)); extern long double __floorl (long double __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern long double fmodl (long double __x, long double __y) throw (); extern long double __fmodl (long double __x, long double __y) throw (); -2441: # 177 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 3 4 -2441: extern int isinfl (long double __value) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: -2441: extern int finitel (long double __value) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern long double dreml (long double __x, long double __y) throw (); extern long double __dreml (long double __x, long double __y) throw (); -2441: -2441: -2441: -2441: extern long double significandl (long double __x) throw (); extern long double __significandl (long double __x) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern long double copysignl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __copysignl (long double __x, long double __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: -2441: extern long double nanl (const char *__tagb) throw (); extern long double __nanl (const char *__tagb) throw (); -2441: # 211 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 3 4 -2441: extern int isnanl (long double __value) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: -2441: -2441: extern long double j0l (long double) throw (); extern long double __j0l (long double) throw (); -2441: extern long double j1l (long double) throw (); extern long double __j1l (long double) throw (); -2441: extern long double jnl (int, long double) throw (); extern long double __jnl (int, long double) throw (); -2441: extern long double y0l (long double) throw (); extern long double __y0l (long double) throw (); -2441: extern long double y1l (long double) throw (); extern long double __y1l (long double) throw (); -2441: extern long double ynl (int, long double) throw (); extern long double __ynl (int, long double) throw (); -2441: -2441: -2441: -2441: -2441: -2441: extern long double erfl (long double) throw (); extern long double __erfl (long double) throw (); -2441: extern long double erfcl (long double) throw (); extern long double __erfcl (long double) throw (); -2441: extern long double lgammal (long double) throw (); extern long double __lgammal (long double) throw (); -2441: -2441: -2441: -2441: -2441: extern long double tgammal (long double) throw (); extern long double __tgammal (long double) throw (); -2441: -2441: -2441: -2441: -2441: -2441: extern long double gammal (long double) throw (); extern long double __gammal (long double) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern long double lgammal_r (long double, int *__signgamp) throw (); extern long double __lgammal_r (long double, int *__signgamp) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern long double rintl (long double __x) throw (); extern long double __rintl (long double __x) throw (); -2441: -2441: -2441: extern long double nextafterl (long double __x, long double __y) throw (); extern long double __nextafterl (long double __x, long double __y) throw (); -2441: -2441: extern long double nexttowardl (long double __x, long double __y) throw (); extern long double __nexttowardl (long double __x, long double __y) throw (); -2441: -2441: -2441: -2441: -2441: extern long double nextdownl (long double __x) throw (); extern long double __nextdownl (long double __x) throw (); -2441: -2441: extern long double nextupl (long double __x) throw (); extern long double __nextupl (long double __x) throw (); -2441: -2441: -2441: -2441: extern long double remainderl (long double __x, long double __y) throw (); extern long double __remainderl (long double __x, long double __y) throw (); -2441: -2441: -2441: -2441: extern long double scalbnl (long double __x, int __n) throw (); extern long double __scalbnl (long double __x, int __n) throw (); -2441: -2441: -2441: -2441: extern int ilogbl (long double __x) throw (); extern int __ilogbl (long double __x) throw (); -2441: -2441: -2441: -2441: -2441: extern long int llogbl (long double __x) throw (); extern long int __llogbl (long double __x) throw (); -2441: -2441: -2441: -2441: -2441: extern long double scalblnl (long double __x, long int __n) throw (); extern long double __scalblnl (long double __x, long int __n) throw (); -2441: -2441: -2441: -2441: extern long double nearbyintl (long double __x) throw (); extern long double __nearbyintl (long double __x) throw (); -2441: -2441: -2441: -2441: extern long double roundl (long double __x) throw () __attribute__ ((__const__)); extern long double __roundl (long double __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: extern long double truncl (long double __x) throw () __attribute__ ((__const__)); extern long double __truncl (long double __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: -2441: extern long double remquol (long double __x, long double __y, int *__quo) throw (); extern long double __remquol (long double __x, long double __y, int *__quo) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern long int lrintl (long double __x) throw (); extern long int __lrintl (long double __x) throw (); -2441: __extension__ -2441: extern long long int llrintl (long double __x) throw (); extern long long int __llrintl (long double __x) throw (); -2441: -2441: -2441: -2441: extern long int lroundl (long double __x) throw (); extern long int __lroundl (long double __x) throw (); -2441: __extension__ -2441: extern long long int llroundl (long double __x) throw (); extern long long int __llroundl (long double __x) throw (); -2441: -2441: -2441: -2441: extern long double fdiml (long double __x, long double __y) throw (); extern long double __fdiml (long double __x, long double __y) throw (); -2441: -2441: -2441: extern long double fmaxl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __fmaxl (long double __x, long double __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern long double fminl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __fminl (long double __x, long double __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern long double fmal (long double __x, long double __y, long double __z) throw (); extern long double __fmal (long double __x, long double __y, long double __z) throw (); -2441: -2441: -2441: -2441: -2441: extern long double roundevenl (long double __x) throw () __attribute__ ((__const__)); extern long double __roundevenl (long double __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: extern __intmax_t fromfpl (long double __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpl (long double __x, int __round, unsigned int __width) throw () -2441: ; -2441: -2441: -2441: -2441: extern __uintmax_t ufromfpl (long double __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpl (long double __x, int __round, unsigned int __width) throw () -2441: ; -2441: -2441: -2441: -2441: -2441: extern __intmax_t fromfpxl (long double __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxl (long double __x, int __round, unsigned int __width) throw () -2441: ; -2441: -2441: -2441: -2441: -2441: extern __uintmax_t ufromfpxl (long double __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxl (long double __x, int __round, unsigned int __width) throw () -2441: ; -2441: -2441: -2441: extern long double fmaxmagl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __fmaxmagl (long double __x, long double __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern long double fminmagl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __fminmagl (long double __x, long double __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern int totalorderl (long double __x, long double __y) throw () -2441: __attribute__ ((__const__)); -2441: -2441: -2441: extern int totalordermagl (long double __x, long double __y) throw () -2441: __attribute__ ((__const__)); -2441: -2441: -2441: extern int canonicalizel (long double *__cx, const long double *__x) throw (); -2441: -2441: -2441: extern long double getpayloadl (const long double *__x) throw (); extern long double __getpayloadl (const long double *__x) throw (); -2441: -2441: -2441: extern int setpayloadl (long double *__x, long double __payload) throw (); -2441: -2441: -2441: extern int setpayloadsigl (long double *__x, long double __payload) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern long double scalbl (long double __x, long double __n) throw (); extern long double __scalbl (long double __x, long double __n) throw (); -2441: # 351 "/usr/include/math.h" 2 3 4 -2441: # 389 "/usr/include/math.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 1 3 4 -2441: # 53 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 3 4 -2441: extern _Float32 acosf32 (_Float32 __x) throw (); extern _Float32 __acosf32 (_Float32 __x) throw (); -2441: -2441: extern _Float32 asinf32 (_Float32 __x) throw (); extern _Float32 __asinf32 (_Float32 __x) throw (); -2441: -2441: extern _Float32 atanf32 (_Float32 __x) throw (); extern _Float32 __atanf32 (_Float32 __x) throw (); -2441: -2441: extern _Float32 atan2f32 (_Float32 __y, _Float32 __x) throw (); extern _Float32 __atan2f32 (_Float32 __y, _Float32 __x) throw (); -2441: -2441: -2441: extern _Float32 cosf32 (_Float32 __x) throw (); extern _Float32 __cosf32 (_Float32 __x) throw (); -2441: -2441: extern _Float32 sinf32 (_Float32 __x) throw (); extern _Float32 __sinf32 (_Float32 __x) throw (); -2441: -2441: extern _Float32 tanf32 (_Float32 __x) throw (); extern _Float32 __tanf32 (_Float32 __x) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float32 coshf32 (_Float32 __x) throw (); extern _Float32 __coshf32 (_Float32 __x) throw (); -2441: -2441: extern _Float32 sinhf32 (_Float32 __x) throw (); extern _Float32 __sinhf32 (_Float32 __x) throw (); -2441: -2441: extern _Float32 tanhf32 (_Float32 __x) throw (); extern _Float32 __tanhf32 (_Float32 __x) throw (); -2441: -2441: -2441: -2441: extern void sincosf32 (_Float32 __x, _Float32 *__sinx, _Float32 *__cosx) throw (); extern void __sincosf32 (_Float32 __x, _Float32 *__sinx, _Float32 *__cosx) throw () -2441: ; -2441: -2441: -2441: -2441: -2441: extern _Float32 acoshf32 (_Float32 __x) throw (); extern _Float32 __acoshf32 (_Float32 __x) throw (); -2441: -2441: extern _Float32 asinhf32 (_Float32 __x) throw (); extern _Float32 __asinhf32 (_Float32 __x) throw (); -2441: -2441: extern _Float32 atanhf32 (_Float32 __x) throw (); extern _Float32 __atanhf32 (_Float32 __x) throw (); -2441: -2441: -2441: -2441: -2441: -2441: extern _Float32 expf32 (_Float32 __x) throw (); extern _Float32 __expf32 (_Float32 __x) throw (); -2441: -2441: -2441: extern _Float32 frexpf32 (_Float32 __x, int *__exponent) throw (); extern _Float32 __frexpf32 (_Float32 __x, int *__exponent) throw (); -2441: -2441: -2441: extern _Float32 ldexpf32 (_Float32 __x, int __exponent) throw (); extern _Float32 __ldexpf32 (_Float32 __x, int __exponent) throw (); -2441: -2441: -2441: extern _Float32 logf32 (_Float32 __x) throw (); extern _Float32 __logf32 (_Float32 __x) throw (); -2441: -2441: -2441: extern _Float32 log10f32 (_Float32 __x) throw (); extern _Float32 __log10f32 (_Float32 __x) throw (); -2441: -2441: -2441: extern _Float32 modff32 (_Float32 __x, _Float32 *__iptr) throw (); extern _Float32 __modff32 (_Float32 __x, _Float32 *__iptr) throw () __attribute__ ((__nonnull__ (2))); -2441: -2441: -2441: -2441: extern _Float32 exp10f32 (_Float32 __x) throw (); extern _Float32 __exp10f32 (_Float32 __x) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float32 expm1f32 (_Float32 __x) throw (); extern _Float32 __expm1f32 (_Float32 __x) throw (); -2441: -2441: -2441: extern _Float32 log1pf32 (_Float32 __x) throw (); extern _Float32 __log1pf32 (_Float32 __x) throw (); -2441: -2441: -2441: extern _Float32 logbf32 (_Float32 __x) throw (); extern _Float32 __logbf32 (_Float32 __x) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float32 exp2f32 (_Float32 __x) throw (); extern _Float32 __exp2f32 (_Float32 __x) throw (); -2441: -2441: -2441: extern _Float32 log2f32 (_Float32 __x) throw (); extern _Float32 __log2f32 (_Float32 __x) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern _Float32 powf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __powf32 (_Float32 __x, _Float32 __y) throw (); -2441: -2441: -2441: extern _Float32 sqrtf32 (_Float32 __x) throw (); extern _Float32 __sqrtf32 (_Float32 __x) throw (); -2441: -2441: -2441: -2441: extern _Float32 hypotf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __hypotf32 (_Float32 __x, _Float32 __y) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float32 cbrtf32 (_Float32 __x) throw (); extern _Float32 __cbrtf32 (_Float32 __x) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern _Float32 ceilf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __ceilf32 (_Float32 __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern _Float32 fabsf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __fabsf32 (_Float32 __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern _Float32 floorf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __floorf32 (_Float32 __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern _Float32 fmodf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __fmodf32 (_Float32 __x, _Float32 __y) throw (); -2441: # 196 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 3 4 -2441: extern _Float32 copysignf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); extern _Float32 __copysignf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: -2441: extern _Float32 nanf32 (const char *__tagb) throw (); extern _Float32 __nanf32 (const char *__tagb) throw (); -2441: # 217 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 3 4 -2441: extern _Float32 j0f32 (_Float32) throw (); extern _Float32 __j0f32 (_Float32) throw (); -2441: extern _Float32 j1f32 (_Float32) throw (); extern _Float32 __j1f32 (_Float32) throw (); -2441: extern _Float32 jnf32 (int, _Float32) throw (); extern _Float32 __jnf32 (int, _Float32) throw (); -2441: extern _Float32 y0f32 (_Float32) throw (); extern _Float32 __y0f32 (_Float32) throw (); -2441: extern _Float32 y1f32 (_Float32) throw (); extern _Float32 __y1f32 (_Float32) throw (); -2441: extern _Float32 ynf32 (int, _Float32) throw (); extern _Float32 __ynf32 (int, _Float32) throw (); -2441: -2441: -2441: -2441: -2441: -2441: extern _Float32 erff32 (_Float32) throw (); extern _Float32 __erff32 (_Float32) throw (); -2441: extern _Float32 erfcf32 (_Float32) throw (); extern _Float32 __erfcf32 (_Float32) throw (); -2441: extern _Float32 lgammaf32 (_Float32) throw (); extern _Float32 __lgammaf32 (_Float32) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float32 tgammaf32 (_Float32) throw (); extern _Float32 __tgammaf32 (_Float32) throw (); -2441: # 249 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 3 4 -2441: extern _Float32 lgammaf32_r (_Float32, int *__signgamp) throw (); extern _Float32 __lgammaf32_r (_Float32, int *__signgamp) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern _Float32 rintf32 (_Float32 __x) throw (); extern _Float32 __rintf32 (_Float32 __x) throw (); -2441: -2441: -2441: extern _Float32 nextafterf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __nextafterf32 (_Float32 __x, _Float32 __y) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern _Float32 nextdownf32 (_Float32 __x) throw (); extern _Float32 __nextdownf32 (_Float32 __x) throw (); -2441: -2441: extern _Float32 nextupf32 (_Float32 __x) throw (); extern _Float32 __nextupf32 (_Float32 __x) throw (); -2441: -2441: -2441: -2441: extern _Float32 remainderf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __remainderf32 (_Float32 __x, _Float32 __y) throw (); -2441: -2441: -2441: -2441: extern _Float32 scalbnf32 (_Float32 __x, int __n) throw (); extern _Float32 __scalbnf32 (_Float32 __x, int __n) throw (); -2441: -2441: -2441: -2441: extern int ilogbf32 (_Float32 __x) throw (); extern int __ilogbf32 (_Float32 __x) throw (); -2441: -2441: -2441: -2441: -2441: extern long int llogbf32 (_Float32 __x) throw (); extern long int __llogbf32 (_Float32 __x) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float32 scalblnf32 (_Float32 __x, long int __n) throw (); extern _Float32 __scalblnf32 (_Float32 __x, long int __n) throw (); -2441: -2441: -2441: -2441: extern _Float32 nearbyintf32 (_Float32 __x) throw (); extern _Float32 __nearbyintf32 (_Float32 __x) throw (); -2441: -2441: -2441: -2441: extern _Float32 roundf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __roundf32 (_Float32 __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: extern _Float32 truncf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __truncf32 (_Float32 __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: -2441: extern _Float32 remquof32 (_Float32 __x, _Float32 __y, int *__quo) throw (); extern _Float32 __remquof32 (_Float32 __x, _Float32 __y, int *__quo) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern long int lrintf32 (_Float32 __x) throw (); extern long int __lrintf32 (_Float32 __x) throw (); -2441: __extension__ -2441: extern long long int llrintf32 (_Float32 __x) throw (); extern long long int __llrintf32 (_Float32 __x) throw (); -2441: -2441: -2441: -2441: extern long int lroundf32 (_Float32 __x) throw (); extern long int __lroundf32 (_Float32 __x) throw (); -2441: __extension__ -2441: extern long long int llroundf32 (_Float32 __x) throw (); extern long long int __llroundf32 (_Float32 __x) throw (); -2441: -2441: -2441: -2441: extern _Float32 fdimf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __fdimf32 (_Float32 __x, _Float32 __y) throw (); -2441: -2441: -2441: extern _Float32 fmaxf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); extern _Float32 __fmaxf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern _Float32 fminf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); extern _Float32 __fminf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern _Float32 fmaf32 (_Float32 __x, _Float32 __y, _Float32 __z) throw (); extern _Float32 __fmaf32 (_Float32 __x, _Float32 __y, _Float32 __z) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float32 roundevenf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __roundevenf32 (_Float32 __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: extern __intmax_t fromfpf32 (_Float32 __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpf32 (_Float32 __x, int __round, unsigned int __width) throw () -2441: ; -2441: -2441: -2441: -2441: extern __uintmax_t ufromfpf32 (_Float32 __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpf32 (_Float32 __x, int __round, unsigned int __width) throw () -2441: ; -2441: -2441: -2441: -2441: -2441: extern __intmax_t fromfpxf32 (_Float32 __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxf32 (_Float32 __x, int __round, unsigned int __width) throw () -2441: ; -2441: -2441: -2441: -2441: -2441: extern __uintmax_t ufromfpxf32 (_Float32 __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxf32 (_Float32 __x, int __round, unsigned int __width) throw () -2441: ; -2441: -2441: -2441: extern _Float32 fmaxmagf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); extern _Float32 __fmaxmagf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern _Float32 fminmagf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); extern _Float32 __fminmagf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern int totalorderf32 (_Float32 __x, _Float32 __y) throw () -2441: __attribute__ ((__const__)); -2441: -2441: -2441: extern int totalordermagf32 (_Float32 __x, _Float32 __y) throw () -2441: __attribute__ ((__const__)); -2441: -2441: -2441: extern int canonicalizef32 (_Float32 *__cx, const _Float32 *__x) throw (); -2441: -2441: -2441: extern _Float32 getpayloadf32 (const _Float32 *__x) throw (); extern _Float32 __getpayloadf32 (const _Float32 *__x) throw (); -2441: -2441: -2441: extern int setpayloadf32 (_Float32 *__x, _Float32 __payload) throw (); -2441: -2441: -2441: extern int setpayloadsigf32 (_Float32 *__x, _Float32 __payload) throw (); -2441: # 390 "/usr/include/math.h" 2 3 4 -2441: # 406 "/usr/include/math.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 1 3 4 -2441: # 53 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 3 4 -2441: extern _Float64 acosf64 (_Float64 __x) throw (); extern _Float64 __acosf64 (_Float64 __x) throw (); -2441: -2441: extern _Float64 asinf64 (_Float64 __x) throw (); extern _Float64 __asinf64 (_Float64 __x) throw (); -2441: -2441: extern _Float64 atanf64 (_Float64 __x) throw (); extern _Float64 __atanf64 (_Float64 __x) throw (); -2441: -2441: extern _Float64 atan2f64 (_Float64 __y, _Float64 __x) throw (); extern _Float64 __atan2f64 (_Float64 __y, _Float64 __x) throw (); -2441: -2441: -2441: extern _Float64 cosf64 (_Float64 __x) throw (); extern _Float64 __cosf64 (_Float64 __x) throw (); -2441: -2441: extern _Float64 sinf64 (_Float64 __x) throw (); extern _Float64 __sinf64 (_Float64 __x) throw (); -2441: -2441: extern _Float64 tanf64 (_Float64 __x) throw (); extern _Float64 __tanf64 (_Float64 __x) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float64 coshf64 (_Float64 __x) throw (); extern _Float64 __coshf64 (_Float64 __x) throw (); -2441: -2441: extern _Float64 sinhf64 (_Float64 __x) throw (); extern _Float64 __sinhf64 (_Float64 __x) throw (); -2441: -2441: extern _Float64 tanhf64 (_Float64 __x) throw (); extern _Float64 __tanhf64 (_Float64 __x) throw (); -2441: -2441: -2441: -2441: extern void sincosf64 (_Float64 __x, _Float64 *__sinx, _Float64 *__cosx) throw (); extern void __sincosf64 (_Float64 __x, _Float64 *__sinx, _Float64 *__cosx) throw () -2441: ; -2441: -2441: -2441: -2441: -2441: extern _Float64 acoshf64 (_Float64 __x) throw (); extern _Float64 __acoshf64 (_Float64 __x) throw (); -2441: -2441: extern _Float64 asinhf64 (_Float64 __x) throw (); extern _Float64 __asinhf64 (_Float64 __x) throw (); -2441: -2441: extern _Float64 atanhf64 (_Float64 __x) throw (); extern _Float64 __atanhf64 (_Float64 __x) throw (); -2441: -2441: -2441: -2441: -2441: -2441: extern _Float64 expf64 (_Float64 __x) throw (); extern _Float64 __expf64 (_Float64 __x) throw (); -2441: -2441: -2441: extern _Float64 frexpf64 (_Float64 __x, int *__exponent) throw (); extern _Float64 __frexpf64 (_Float64 __x, int *__exponent) throw (); -2441: -2441: -2441: extern _Float64 ldexpf64 (_Float64 __x, int __exponent) throw (); extern _Float64 __ldexpf64 (_Float64 __x, int __exponent) throw (); -2441: -2441: -2441: extern _Float64 logf64 (_Float64 __x) throw (); extern _Float64 __logf64 (_Float64 __x) throw (); -2441: -2441: -2441: extern _Float64 log10f64 (_Float64 __x) throw (); extern _Float64 __log10f64 (_Float64 __x) throw (); -2441: -2441: -2441: extern _Float64 modff64 (_Float64 __x, _Float64 *__iptr) throw (); extern _Float64 __modff64 (_Float64 __x, _Float64 *__iptr) throw () __attribute__ ((__nonnull__ (2))); -2441: -2441: -2441: -2441: extern _Float64 exp10f64 (_Float64 __x) throw (); extern _Float64 __exp10f64 (_Float64 __x) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float64 expm1f64 (_Float64 __x) throw (); extern _Float64 __expm1f64 (_Float64 __x) throw (); -2441: -2441: -2441: extern _Float64 log1pf64 (_Float64 __x) throw (); extern _Float64 __log1pf64 (_Float64 __x) throw (); -2441: -2441: -2441: extern _Float64 logbf64 (_Float64 __x) throw (); extern _Float64 __logbf64 (_Float64 __x) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float64 exp2f64 (_Float64 __x) throw (); extern _Float64 __exp2f64 (_Float64 __x) throw (); -2441: -2441: -2441: extern _Float64 log2f64 (_Float64 __x) throw (); extern _Float64 __log2f64 (_Float64 __x) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern _Float64 powf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __powf64 (_Float64 __x, _Float64 __y) throw (); -2441: -2441: -2441: extern _Float64 sqrtf64 (_Float64 __x) throw (); extern _Float64 __sqrtf64 (_Float64 __x) throw (); -2441: -2441: -2441: -2441: extern _Float64 hypotf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __hypotf64 (_Float64 __x, _Float64 __y) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float64 cbrtf64 (_Float64 __x) throw (); extern _Float64 __cbrtf64 (_Float64 __x) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern _Float64 ceilf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __ceilf64 (_Float64 __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern _Float64 fabsf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __fabsf64 (_Float64 __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern _Float64 floorf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __floorf64 (_Float64 __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern _Float64 fmodf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __fmodf64 (_Float64 __x, _Float64 __y) throw (); -2441: # 196 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 3 4 -2441: extern _Float64 copysignf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); extern _Float64 __copysignf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: -2441: extern _Float64 nanf64 (const char *__tagb) throw (); extern _Float64 __nanf64 (const char *__tagb) throw (); -2441: # 217 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 3 4 -2441: extern _Float64 j0f64 (_Float64) throw (); extern _Float64 __j0f64 (_Float64) throw (); -2441: extern _Float64 j1f64 (_Float64) throw (); extern _Float64 __j1f64 (_Float64) throw (); -2441: extern _Float64 jnf64 (int, _Float64) throw (); extern _Float64 __jnf64 (int, _Float64) throw (); -2441: extern _Float64 y0f64 (_Float64) throw (); extern _Float64 __y0f64 (_Float64) throw (); -2441: extern _Float64 y1f64 (_Float64) throw (); extern _Float64 __y1f64 (_Float64) throw (); -2441: extern _Float64 ynf64 (int, _Float64) throw (); extern _Float64 __ynf64 (int, _Float64) throw (); -2441: -2441: -2441: -2441: -2441: -2441: extern _Float64 erff64 (_Float64) throw (); extern _Float64 __erff64 (_Float64) throw (); -2441: extern _Float64 erfcf64 (_Float64) throw (); extern _Float64 __erfcf64 (_Float64) throw (); -2441: extern _Float64 lgammaf64 (_Float64) throw (); extern _Float64 __lgammaf64 (_Float64) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float64 tgammaf64 (_Float64) throw (); extern _Float64 __tgammaf64 (_Float64) throw (); -2441: # 249 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 3 4 -2441: extern _Float64 lgammaf64_r (_Float64, int *__signgamp) throw (); extern _Float64 __lgammaf64_r (_Float64, int *__signgamp) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern _Float64 rintf64 (_Float64 __x) throw (); extern _Float64 __rintf64 (_Float64 __x) throw (); -2441: -2441: -2441: extern _Float64 nextafterf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __nextafterf64 (_Float64 __x, _Float64 __y) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern _Float64 nextdownf64 (_Float64 __x) throw (); extern _Float64 __nextdownf64 (_Float64 __x) throw (); -2441: -2441: extern _Float64 nextupf64 (_Float64 __x) throw (); extern _Float64 __nextupf64 (_Float64 __x) throw (); -2441: -2441: -2441: -2441: extern _Float64 remainderf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __remainderf64 (_Float64 __x, _Float64 __y) throw (); -2441: -2441: -2441: -2441: extern _Float64 scalbnf64 (_Float64 __x, int __n) throw (); extern _Float64 __scalbnf64 (_Float64 __x, int __n) throw (); -2441: -2441: -2441: -2441: extern int ilogbf64 (_Float64 __x) throw (); extern int __ilogbf64 (_Float64 __x) throw (); -2441: -2441: -2441: -2441: -2441: extern long int llogbf64 (_Float64 __x) throw (); extern long int __llogbf64 (_Float64 __x) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float64 scalblnf64 (_Float64 __x, long int __n) throw (); extern _Float64 __scalblnf64 (_Float64 __x, long int __n) throw (); -2441: -2441: -2441: -2441: extern _Float64 nearbyintf64 (_Float64 __x) throw (); extern _Float64 __nearbyintf64 (_Float64 __x) throw (); -2441: -2441: -2441: -2441: extern _Float64 roundf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __roundf64 (_Float64 __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: extern _Float64 truncf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __truncf64 (_Float64 __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: -2441: extern _Float64 remquof64 (_Float64 __x, _Float64 __y, int *__quo) throw (); extern _Float64 __remquof64 (_Float64 __x, _Float64 __y, int *__quo) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern long int lrintf64 (_Float64 __x) throw (); extern long int __lrintf64 (_Float64 __x) throw (); -2441: __extension__ -2441: extern long long int llrintf64 (_Float64 __x) throw (); extern long long int __llrintf64 (_Float64 __x) throw (); -2441: -2441: -2441: -2441: extern long int lroundf64 (_Float64 __x) throw (); extern long int __lroundf64 (_Float64 __x) throw (); -2441: __extension__ -2441: extern long long int llroundf64 (_Float64 __x) throw (); extern long long int __llroundf64 (_Float64 __x) throw (); -2441: -2441: -2441: -2441: extern _Float64 fdimf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __fdimf64 (_Float64 __x, _Float64 __y) throw (); -2441: -2441: -2441: extern _Float64 fmaxf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); extern _Float64 __fmaxf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern _Float64 fminf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); extern _Float64 __fminf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern _Float64 fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) throw (); extern _Float64 __fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float64 roundevenf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __roundevenf64 (_Float64 __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: extern __intmax_t fromfpf64 (_Float64 __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpf64 (_Float64 __x, int __round, unsigned int __width) throw () -2441: ; -2441: -2441: -2441: -2441: extern __uintmax_t ufromfpf64 (_Float64 __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpf64 (_Float64 __x, int __round, unsigned int __width) throw () -2441: ; -2441: -2441: -2441: -2441: -2441: extern __intmax_t fromfpxf64 (_Float64 __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxf64 (_Float64 __x, int __round, unsigned int __width) throw () -2441: ; -2441: -2441: -2441: -2441: -2441: extern __uintmax_t ufromfpxf64 (_Float64 __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxf64 (_Float64 __x, int __round, unsigned int __width) throw () -2441: ; -2441: -2441: -2441: extern _Float64 fmaxmagf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); extern _Float64 __fmaxmagf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern _Float64 fminmagf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); extern _Float64 __fminmagf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern int totalorderf64 (_Float64 __x, _Float64 __y) throw () -2441: __attribute__ ((__const__)); -2441: -2441: -2441: extern int totalordermagf64 (_Float64 __x, _Float64 __y) throw () -2441: __attribute__ ((__const__)); -2441: -2441: -2441: extern int canonicalizef64 (_Float64 *__cx, const _Float64 *__x) throw (); -2441: -2441: -2441: extern _Float64 getpayloadf64 (const _Float64 *__x) throw (); extern _Float64 __getpayloadf64 (const _Float64 *__x) throw (); -2441: -2441: -2441: extern int setpayloadf64 (_Float64 *__x, _Float64 __payload) throw (); -2441: -2441: -2441: extern int setpayloadsigf64 (_Float64 *__x, _Float64 __payload) throw (); -2441: # 407 "/usr/include/math.h" 2 3 4 -2441: # 420 "/usr/include/math.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/mathcalls-helper-functions.h" 1 3 4 -2441: # 21 "/usr/include/i386-linux-gnu/bits/mathcalls-helper-functions.h" 3 4 -2441: extern int __fpclassifyf128 (_Float128 __value) throw () -2441: __attribute__ ((__const__)); -2441: -2441: -2441: extern int __signbitf128 (_Float128 __value) throw () -2441: __attribute__ ((__const__)); -2441: -2441: -2441: -2441: extern int __isinff128 (_Float128 __value) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern int __finitef128 (_Float128 __value) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern int __isnanf128 (_Float128 __value) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern int __iseqsigf128 (_Float128 __x, _Float128 __y) throw (); -2441: -2441: -2441: extern int __issignalingf128 (_Float128 __value) throw () -2441: __attribute__ ((__const__)); -2441: # 421 "/usr/include/math.h" 2 3 4 -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 1 3 4 -2441: # 53 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 3 4 -2441: extern _Float128 acosf128 (_Float128 __x) throw (); extern _Float128 __acosf128 (_Float128 __x) throw (); -2441: -2441: extern _Float128 asinf128 (_Float128 __x) throw (); extern _Float128 __asinf128 (_Float128 __x) throw (); -2441: -2441: extern _Float128 atanf128 (_Float128 __x) throw (); extern _Float128 __atanf128 (_Float128 __x) throw (); -2441: -2441: extern _Float128 atan2f128 (_Float128 __y, _Float128 __x) throw (); extern _Float128 __atan2f128 (_Float128 __y, _Float128 __x) throw (); -2441: -2441: -2441: extern _Float128 cosf128 (_Float128 __x) throw (); extern _Float128 __cosf128 (_Float128 __x) throw (); -2441: -2441: extern _Float128 sinf128 (_Float128 __x) throw (); extern _Float128 __sinf128 (_Float128 __x) throw (); -2441: -2441: extern _Float128 tanf128 (_Float128 __x) throw (); extern _Float128 __tanf128 (_Float128 __x) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float128 coshf128 (_Float128 __x) throw (); extern _Float128 __coshf128 (_Float128 __x) throw (); -2441: -2441: extern _Float128 sinhf128 (_Float128 __x) throw (); extern _Float128 __sinhf128 (_Float128 __x) throw (); -2441: -2441: extern _Float128 tanhf128 (_Float128 __x) throw (); extern _Float128 __tanhf128 (_Float128 __x) throw (); -2441: -2441: -2441: -2441: extern void sincosf128 (_Float128 __x, _Float128 *__sinx, _Float128 *__cosx) throw (); extern void __sincosf128 (_Float128 __x, _Float128 *__sinx, _Float128 *__cosx) throw () -2441: ; -2441: -2441: -2441: -2441: -2441: extern _Float128 acoshf128 (_Float128 __x) throw (); extern _Float128 __acoshf128 (_Float128 __x) throw (); -2441: -2441: extern _Float128 asinhf128 (_Float128 __x) throw (); extern _Float128 __asinhf128 (_Float128 __x) throw (); -2441: -2441: extern _Float128 atanhf128 (_Float128 __x) throw (); extern _Float128 __atanhf128 (_Float128 __x) throw (); -2441: -2441: -2441: -2441: -2441: -2441: extern _Float128 expf128 (_Float128 __x) throw (); extern _Float128 __expf128 (_Float128 __x) throw (); -2441: -2441: -2441: extern _Float128 frexpf128 (_Float128 __x, int *__exponent) throw (); extern _Float128 __frexpf128 (_Float128 __x, int *__exponent) throw (); -2441: -2441: -2441: extern _Float128 ldexpf128 (_Float128 __x, int __exponent) throw (); extern _Float128 __ldexpf128 (_Float128 __x, int __exponent) throw (); -2441: -2441: -2441: extern _Float128 logf128 (_Float128 __x) throw (); extern _Float128 __logf128 (_Float128 __x) throw (); -2441: -2441: -2441: extern _Float128 log10f128 (_Float128 __x) throw (); extern _Float128 __log10f128 (_Float128 __x) throw (); -2441: -2441: -2441: extern _Float128 modff128 (_Float128 __x, _Float128 *__iptr) throw (); extern _Float128 __modff128 (_Float128 __x, _Float128 *__iptr) throw () __attribute__ ((__nonnull__ (2))); -2441: -2441: -2441: -2441: extern _Float128 exp10f128 (_Float128 __x) throw (); extern _Float128 __exp10f128 (_Float128 __x) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float128 expm1f128 (_Float128 __x) throw (); extern _Float128 __expm1f128 (_Float128 __x) throw (); -2441: -2441: -2441: extern _Float128 log1pf128 (_Float128 __x) throw (); extern _Float128 __log1pf128 (_Float128 __x) throw (); -2441: -2441: -2441: extern _Float128 logbf128 (_Float128 __x) throw (); extern _Float128 __logbf128 (_Float128 __x) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float128 exp2f128 (_Float128 __x) throw (); extern _Float128 __exp2f128 (_Float128 __x) throw (); -2441: -2441: -2441: extern _Float128 log2f128 (_Float128 __x) throw (); extern _Float128 __log2f128 (_Float128 __x) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern _Float128 powf128 (_Float128 __x, _Float128 __y) throw (); extern _Float128 __powf128 (_Float128 __x, _Float128 __y) throw (); -2441: -2441: -2441: extern _Float128 sqrtf128 (_Float128 __x) throw (); extern _Float128 __sqrtf128 (_Float128 __x) throw (); -2441: -2441: -2441: -2441: extern _Float128 hypotf128 (_Float128 __x, _Float128 __y) throw (); extern _Float128 __hypotf128 (_Float128 __x, _Float128 __y) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float128 cbrtf128 (_Float128 __x) throw (); extern _Float128 __cbrtf128 (_Float128 __x) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern _Float128 ceilf128 (_Float128 __x) throw () __attribute__ ((__const__)); extern _Float128 __ceilf128 (_Float128 __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern _Float128 fabsf128 (_Float128 __x) throw () __attribute__ ((__const__)); extern _Float128 __fabsf128 (_Float128 __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern _Float128 floorf128 (_Float128 __x) throw () __attribute__ ((__const__)); extern _Float128 __floorf128 (_Float128 __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern _Float128 fmodf128 (_Float128 __x, _Float128 __y) throw (); extern _Float128 __fmodf128 (_Float128 __x, _Float128 __y) throw (); -2441: # 196 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 3 4 -2441: extern _Float128 copysignf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); extern _Float128 __copysignf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: -2441: extern _Float128 nanf128 (const char *__tagb) throw (); extern _Float128 __nanf128 (const char *__tagb) throw (); -2441: # 217 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 3 4 -2441: extern _Float128 j0f128 (_Float128) throw (); extern _Float128 __j0f128 (_Float128) throw (); -2441: extern _Float128 j1f128 (_Float128) throw (); extern _Float128 __j1f128 (_Float128) throw (); -2441: extern _Float128 jnf128 (int, _Float128) throw (); extern _Float128 __jnf128 (int, _Float128) throw (); -2441: extern _Float128 y0f128 (_Float128) throw (); extern _Float128 __y0f128 (_Float128) throw (); -2441: extern _Float128 y1f128 (_Float128) throw (); extern _Float128 __y1f128 (_Float128) throw (); -2441: extern _Float128 ynf128 (int, _Float128) throw (); extern _Float128 __ynf128 (int, _Float128) throw (); -2441: -2441: -2441: -2441: -2441: -2441: extern _Float128 erff128 (_Float128) throw (); extern _Float128 __erff128 (_Float128) throw (); -2441: extern _Float128 erfcf128 (_Float128) throw (); extern _Float128 __erfcf128 (_Float128) throw (); -2441: extern _Float128 lgammaf128 (_Float128) throw (); extern _Float128 __lgammaf128 (_Float128) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float128 tgammaf128 (_Float128) throw (); extern _Float128 __tgammaf128 (_Float128) throw (); -2441: # 249 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 3 4 -2441: extern _Float128 lgammaf128_r (_Float128, int *__signgamp) throw (); extern _Float128 __lgammaf128_r (_Float128, int *__signgamp) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern _Float128 rintf128 (_Float128 __x) throw (); extern _Float128 __rintf128 (_Float128 __x) throw (); -2441: -2441: -2441: extern _Float128 nextafterf128 (_Float128 __x, _Float128 __y) throw (); extern _Float128 __nextafterf128 (_Float128 __x, _Float128 __y) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern _Float128 nextdownf128 (_Float128 __x) throw (); extern _Float128 __nextdownf128 (_Float128 __x) throw (); -2441: -2441: extern _Float128 nextupf128 (_Float128 __x) throw (); extern _Float128 __nextupf128 (_Float128 __x) throw (); -2441: -2441: -2441: -2441: extern _Float128 remainderf128 (_Float128 __x, _Float128 __y) throw (); extern _Float128 __remainderf128 (_Float128 __x, _Float128 __y) throw (); -2441: -2441: -2441: -2441: extern _Float128 scalbnf128 (_Float128 __x, int __n) throw (); extern _Float128 __scalbnf128 (_Float128 __x, int __n) throw (); -2441: -2441: -2441: -2441: extern int ilogbf128 (_Float128 __x) throw (); extern int __ilogbf128 (_Float128 __x) throw (); -2441: -2441: -2441: -2441: -2441: extern long int llogbf128 (_Float128 __x) throw (); extern long int __llogbf128 (_Float128 __x) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float128 scalblnf128 (_Float128 __x, long int __n) throw (); extern _Float128 __scalblnf128 (_Float128 __x, long int __n) throw (); -2441: -2441: -2441: -2441: extern _Float128 nearbyintf128 (_Float128 __x) throw (); extern _Float128 __nearbyintf128 (_Float128 __x) throw (); -2441: -2441: -2441: -2441: extern _Float128 roundf128 (_Float128 __x) throw () __attribute__ ((__const__)); extern _Float128 __roundf128 (_Float128 __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: extern _Float128 truncf128 (_Float128 __x) throw () __attribute__ ((__const__)); extern _Float128 __truncf128 (_Float128 __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: -2441: extern _Float128 remquof128 (_Float128 __x, _Float128 __y, int *__quo) throw (); extern _Float128 __remquof128 (_Float128 __x, _Float128 __y, int *__quo) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern long int lrintf128 (_Float128 __x) throw (); extern long int __lrintf128 (_Float128 __x) throw (); -2441: __extension__ -2441: extern long long int llrintf128 (_Float128 __x) throw (); extern long long int __llrintf128 (_Float128 __x) throw (); -2441: -2441: -2441: -2441: extern long int lroundf128 (_Float128 __x) throw (); extern long int __lroundf128 (_Float128 __x) throw (); -2441: __extension__ -2441: extern long long int llroundf128 (_Float128 __x) throw (); extern long long int __llroundf128 (_Float128 __x) throw (); -2441: -2441: -2441: -2441: extern _Float128 fdimf128 (_Float128 __x, _Float128 __y) throw (); extern _Float128 __fdimf128 (_Float128 __x, _Float128 __y) throw (); -2441: -2441: -2441: extern _Float128 fmaxf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); extern _Float128 __fmaxf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern _Float128 fminf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); extern _Float128 __fminf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern _Float128 fmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) throw (); extern _Float128 __fmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float128 roundevenf128 (_Float128 __x) throw () __attribute__ ((__const__)); extern _Float128 __roundevenf128 (_Float128 __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: extern __intmax_t fromfpf128 (_Float128 __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpf128 (_Float128 __x, int __round, unsigned int __width) throw () -2441: ; -2441: -2441: -2441: -2441: extern __uintmax_t ufromfpf128 (_Float128 __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpf128 (_Float128 __x, int __round, unsigned int __width) throw () -2441: ; -2441: -2441: -2441: -2441: -2441: extern __intmax_t fromfpxf128 (_Float128 __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxf128 (_Float128 __x, int __round, unsigned int __width) throw () -2441: ; -2441: -2441: -2441: -2441: -2441: extern __uintmax_t ufromfpxf128 (_Float128 __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxf128 (_Float128 __x, int __round, unsigned int __width) throw () -2441: ; -2441: -2441: -2441: extern _Float128 fmaxmagf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); extern _Float128 __fmaxmagf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern _Float128 fminmagf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); extern _Float128 __fminmagf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern int totalorderf128 (_Float128 __x, _Float128 __y) throw () -2441: __attribute__ ((__const__)); -2441: -2441: -2441: extern int totalordermagf128 (_Float128 __x, _Float128 __y) throw () -2441: __attribute__ ((__const__)); -2441: -2441: -2441: extern int canonicalizef128 (_Float128 *__cx, const _Float128 *__x) throw (); -2441: -2441: -2441: extern _Float128 getpayloadf128 (const _Float128 *__x) throw (); extern _Float128 __getpayloadf128 (const _Float128 *__x) throw (); -2441: -2441: -2441: extern int setpayloadf128 (_Float128 *__x, _Float128 __payload) throw (); -2441: -2441: -2441: extern int setpayloadsigf128 (_Float128 *__x, _Float128 __payload) throw (); -2441: # 424 "/usr/include/math.h" 2 3 4 -2441: # 440 "/usr/include/math.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 1 3 4 -2441: # 53 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 3 4 -2441: extern _Float32x acosf32x (_Float32x __x) throw (); extern _Float32x __acosf32x (_Float32x __x) throw (); -2441: -2441: extern _Float32x asinf32x (_Float32x __x) throw (); extern _Float32x __asinf32x (_Float32x __x) throw (); -2441: -2441: extern _Float32x atanf32x (_Float32x __x) throw (); extern _Float32x __atanf32x (_Float32x __x) throw (); -2441: -2441: extern _Float32x atan2f32x (_Float32x __y, _Float32x __x) throw (); extern _Float32x __atan2f32x (_Float32x __y, _Float32x __x) throw (); -2441: -2441: -2441: extern _Float32x cosf32x (_Float32x __x) throw (); extern _Float32x __cosf32x (_Float32x __x) throw (); -2441: -2441: extern _Float32x sinf32x (_Float32x __x) throw (); extern _Float32x __sinf32x (_Float32x __x) throw (); -2441: -2441: extern _Float32x tanf32x (_Float32x __x) throw (); extern _Float32x __tanf32x (_Float32x __x) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float32x coshf32x (_Float32x __x) throw (); extern _Float32x __coshf32x (_Float32x __x) throw (); -2441: -2441: extern _Float32x sinhf32x (_Float32x __x) throw (); extern _Float32x __sinhf32x (_Float32x __x) throw (); -2441: -2441: extern _Float32x tanhf32x (_Float32x __x) throw (); extern _Float32x __tanhf32x (_Float32x __x) throw (); -2441: -2441: -2441: -2441: extern void sincosf32x (_Float32x __x, _Float32x *__sinx, _Float32x *__cosx) throw (); extern void __sincosf32x (_Float32x __x, _Float32x *__sinx, _Float32x *__cosx) throw () -2441: ; -2441: -2441: -2441: -2441: -2441: extern _Float32x acoshf32x (_Float32x __x) throw (); extern _Float32x __acoshf32x (_Float32x __x) throw (); -2441: -2441: extern _Float32x asinhf32x (_Float32x __x) throw (); extern _Float32x __asinhf32x (_Float32x __x) throw (); -2441: -2441: extern _Float32x atanhf32x (_Float32x __x) throw (); extern _Float32x __atanhf32x (_Float32x __x) throw (); -2441: -2441: -2441: -2441: -2441: -2441: extern _Float32x expf32x (_Float32x __x) throw (); extern _Float32x __expf32x (_Float32x __x) throw (); -2441: -2441: -2441: extern _Float32x frexpf32x (_Float32x __x, int *__exponent) throw (); extern _Float32x __frexpf32x (_Float32x __x, int *__exponent) throw (); -2441: -2441: -2441: extern _Float32x ldexpf32x (_Float32x __x, int __exponent) throw (); extern _Float32x __ldexpf32x (_Float32x __x, int __exponent) throw (); -2441: -2441: -2441: extern _Float32x logf32x (_Float32x __x) throw (); extern _Float32x __logf32x (_Float32x __x) throw (); -2441: -2441: -2441: extern _Float32x log10f32x (_Float32x __x) throw (); extern _Float32x __log10f32x (_Float32x __x) throw (); -2441: -2441: -2441: extern _Float32x modff32x (_Float32x __x, _Float32x *__iptr) throw (); extern _Float32x __modff32x (_Float32x __x, _Float32x *__iptr) throw () __attribute__ ((__nonnull__ (2))); -2441: -2441: -2441: -2441: extern _Float32x exp10f32x (_Float32x __x) throw (); extern _Float32x __exp10f32x (_Float32x __x) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float32x expm1f32x (_Float32x __x) throw (); extern _Float32x __expm1f32x (_Float32x __x) throw (); -2441: -2441: -2441: extern _Float32x log1pf32x (_Float32x __x) throw (); extern _Float32x __log1pf32x (_Float32x __x) throw (); -2441: -2441: -2441: extern _Float32x logbf32x (_Float32x __x) throw (); extern _Float32x __logbf32x (_Float32x __x) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float32x exp2f32x (_Float32x __x) throw (); extern _Float32x __exp2f32x (_Float32x __x) throw (); -2441: -2441: -2441: extern _Float32x log2f32x (_Float32x __x) throw (); extern _Float32x __log2f32x (_Float32x __x) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern _Float32x powf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __powf32x (_Float32x __x, _Float32x __y) throw (); -2441: -2441: -2441: extern _Float32x sqrtf32x (_Float32x __x) throw (); extern _Float32x __sqrtf32x (_Float32x __x) throw (); -2441: -2441: -2441: -2441: extern _Float32x hypotf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __hypotf32x (_Float32x __x, _Float32x __y) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float32x cbrtf32x (_Float32x __x) throw (); extern _Float32x __cbrtf32x (_Float32x __x) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern _Float32x ceilf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __ceilf32x (_Float32x __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern _Float32x fabsf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __fabsf32x (_Float32x __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern _Float32x floorf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __floorf32x (_Float32x __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern _Float32x fmodf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __fmodf32x (_Float32x __x, _Float32x __y) throw (); -2441: # 196 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 3 4 -2441: extern _Float32x copysignf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); extern _Float32x __copysignf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: -2441: extern _Float32x nanf32x (const char *__tagb) throw (); extern _Float32x __nanf32x (const char *__tagb) throw (); -2441: # 217 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 3 4 -2441: extern _Float32x j0f32x (_Float32x) throw (); extern _Float32x __j0f32x (_Float32x) throw (); -2441: extern _Float32x j1f32x (_Float32x) throw (); extern _Float32x __j1f32x (_Float32x) throw (); -2441: extern _Float32x jnf32x (int, _Float32x) throw (); extern _Float32x __jnf32x (int, _Float32x) throw (); -2441: extern _Float32x y0f32x (_Float32x) throw (); extern _Float32x __y0f32x (_Float32x) throw (); -2441: extern _Float32x y1f32x (_Float32x) throw (); extern _Float32x __y1f32x (_Float32x) throw (); -2441: extern _Float32x ynf32x (int, _Float32x) throw (); extern _Float32x __ynf32x (int, _Float32x) throw (); -2441: -2441: -2441: -2441: -2441: -2441: extern _Float32x erff32x (_Float32x) throw (); extern _Float32x __erff32x (_Float32x) throw (); -2441: extern _Float32x erfcf32x (_Float32x) throw (); extern _Float32x __erfcf32x (_Float32x) throw (); -2441: extern _Float32x lgammaf32x (_Float32x) throw (); extern _Float32x __lgammaf32x (_Float32x) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float32x tgammaf32x (_Float32x) throw (); extern _Float32x __tgammaf32x (_Float32x) throw (); -2441: # 249 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 3 4 -2441: extern _Float32x lgammaf32x_r (_Float32x, int *__signgamp) throw (); extern _Float32x __lgammaf32x_r (_Float32x, int *__signgamp) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern _Float32x rintf32x (_Float32x __x) throw (); extern _Float32x __rintf32x (_Float32x __x) throw (); -2441: -2441: -2441: extern _Float32x nextafterf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __nextafterf32x (_Float32x __x, _Float32x __y) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern _Float32x nextdownf32x (_Float32x __x) throw (); extern _Float32x __nextdownf32x (_Float32x __x) throw (); -2441: -2441: extern _Float32x nextupf32x (_Float32x __x) throw (); extern _Float32x __nextupf32x (_Float32x __x) throw (); -2441: -2441: -2441: -2441: extern _Float32x remainderf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __remainderf32x (_Float32x __x, _Float32x __y) throw (); -2441: -2441: -2441: -2441: extern _Float32x scalbnf32x (_Float32x __x, int __n) throw (); extern _Float32x __scalbnf32x (_Float32x __x, int __n) throw (); -2441: -2441: -2441: -2441: extern int ilogbf32x (_Float32x __x) throw (); extern int __ilogbf32x (_Float32x __x) throw (); -2441: -2441: -2441: -2441: -2441: extern long int llogbf32x (_Float32x __x) throw (); extern long int __llogbf32x (_Float32x __x) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float32x scalblnf32x (_Float32x __x, long int __n) throw (); extern _Float32x __scalblnf32x (_Float32x __x, long int __n) throw (); -2441: -2441: -2441: -2441: extern _Float32x nearbyintf32x (_Float32x __x) throw (); extern _Float32x __nearbyintf32x (_Float32x __x) throw (); -2441: -2441: -2441: -2441: extern _Float32x roundf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __roundf32x (_Float32x __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: extern _Float32x truncf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __truncf32x (_Float32x __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: -2441: extern _Float32x remquof32x (_Float32x __x, _Float32x __y, int *__quo) throw (); extern _Float32x __remquof32x (_Float32x __x, _Float32x __y, int *__quo) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern long int lrintf32x (_Float32x __x) throw (); extern long int __lrintf32x (_Float32x __x) throw (); -2441: __extension__ -2441: extern long long int llrintf32x (_Float32x __x) throw (); extern long long int __llrintf32x (_Float32x __x) throw (); -2441: -2441: -2441: -2441: extern long int lroundf32x (_Float32x __x) throw (); extern long int __lroundf32x (_Float32x __x) throw (); -2441: __extension__ -2441: extern long long int llroundf32x (_Float32x __x) throw (); extern long long int __llroundf32x (_Float32x __x) throw (); -2441: -2441: -2441: -2441: extern _Float32x fdimf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __fdimf32x (_Float32x __x, _Float32x __y) throw (); -2441: -2441: -2441: extern _Float32x fmaxf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); extern _Float32x __fmaxf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern _Float32x fminf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); extern _Float32x __fminf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern _Float32x fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) throw (); extern _Float32x __fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float32x roundevenf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __roundevenf32x (_Float32x __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: extern __intmax_t fromfpf32x (_Float32x __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpf32x (_Float32x __x, int __round, unsigned int __width) throw () -2441: ; -2441: -2441: -2441: -2441: extern __uintmax_t ufromfpf32x (_Float32x __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpf32x (_Float32x __x, int __round, unsigned int __width) throw () -2441: ; -2441: -2441: -2441: -2441: -2441: extern __intmax_t fromfpxf32x (_Float32x __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxf32x (_Float32x __x, int __round, unsigned int __width) throw () -2441: ; -2441: -2441: -2441: -2441: -2441: extern __uintmax_t ufromfpxf32x (_Float32x __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxf32x (_Float32x __x, int __round, unsigned int __width) throw () -2441: ; -2441: -2441: -2441: extern _Float32x fmaxmagf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); extern _Float32x __fmaxmagf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern _Float32x fminmagf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); extern _Float32x __fminmagf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern int totalorderf32x (_Float32x __x, _Float32x __y) throw () -2441: __attribute__ ((__const__)); -2441: -2441: -2441: extern int totalordermagf32x (_Float32x __x, _Float32x __y) throw () -2441: __attribute__ ((__const__)); -2441: -2441: -2441: extern int canonicalizef32x (_Float32x *__cx, const _Float32x *__x) throw (); -2441: -2441: -2441: extern _Float32x getpayloadf32x (const _Float32x *__x) throw (); extern _Float32x __getpayloadf32x (const _Float32x *__x) throw (); -2441: -2441: -2441: extern int setpayloadf32x (_Float32x *__x, _Float32x __payload) throw (); -2441: -2441: -2441: extern int setpayloadsigf32x (_Float32x *__x, _Float32x __payload) throw (); -2441: # 441 "/usr/include/math.h" 2 3 4 -2441: # 457 "/usr/include/math.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 1 3 4 -2441: # 53 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 3 4 -2441: extern _Float64x acosf64x (_Float64x __x) throw (); extern _Float64x __acosf64x (_Float64x __x) throw (); -2441: -2441: extern _Float64x asinf64x (_Float64x __x) throw (); extern _Float64x __asinf64x (_Float64x __x) throw (); -2441: -2441: extern _Float64x atanf64x (_Float64x __x) throw (); extern _Float64x __atanf64x (_Float64x __x) throw (); -2441: -2441: extern _Float64x atan2f64x (_Float64x __y, _Float64x __x) throw (); extern _Float64x __atan2f64x (_Float64x __y, _Float64x __x) throw (); -2441: -2441: -2441: extern _Float64x cosf64x (_Float64x __x) throw (); extern _Float64x __cosf64x (_Float64x __x) throw (); -2441: -2441: extern _Float64x sinf64x (_Float64x __x) throw (); extern _Float64x __sinf64x (_Float64x __x) throw (); -2441: -2441: extern _Float64x tanf64x (_Float64x __x) throw (); extern _Float64x __tanf64x (_Float64x __x) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float64x coshf64x (_Float64x __x) throw (); extern _Float64x __coshf64x (_Float64x __x) throw (); -2441: -2441: extern _Float64x sinhf64x (_Float64x __x) throw (); extern _Float64x __sinhf64x (_Float64x __x) throw (); -2441: -2441: extern _Float64x tanhf64x (_Float64x __x) throw (); extern _Float64x __tanhf64x (_Float64x __x) throw (); -2441: -2441: -2441: -2441: extern void sincosf64x (_Float64x __x, _Float64x *__sinx, _Float64x *__cosx) throw (); extern void __sincosf64x (_Float64x __x, _Float64x *__sinx, _Float64x *__cosx) throw () -2441: ; -2441: -2441: -2441: -2441: -2441: extern _Float64x acoshf64x (_Float64x __x) throw (); extern _Float64x __acoshf64x (_Float64x __x) throw (); -2441: -2441: extern _Float64x asinhf64x (_Float64x __x) throw (); extern _Float64x __asinhf64x (_Float64x __x) throw (); -2441: -2441: extern _Float64x atanhf64x (_Float64x __x) throw (); extern _Float64x __atanhf64x (_Float64x __x) throw (); -2441: -2441: -2441: -2441: -2441: -2441: extern _Float64x expf64x (_Float64x __x) throw (); extern _Float64x __expf64x (_Float64x __x) throw (); -2441: -2441: -2441: extern _Float64x frexpf64x (_Float64x __x, int *__exponent) throw (); extern _Float64x __frexpf64x (_Float64x __x, int *__exponent) throw (); -2441: -2441: -2441: extern _Float64x ldexpf64x (_Float64x __x, int __exponent) throw (); extern _Float64x __ldexpf64x (_Float64x __x, int __exponent) throw (); -2441: -2441: -2441: extern _Float64x logf64x (_Float64x __x) throw (); extern _Float64x __logf64x (_Float64x __x) throw (); -2441: -2441: -2441: extern _Float64x log10f64x (_Float64x __x) throw (); extern _Float64x __log10f64x (_Float64x __x) throw (); -2441: -2441: -2441: extern _Float64x modff64x (_Float64x __x, _Float64x *__iptr) throw (); extern _Float64x __modff64x (_Float64x __x, _Float64x *__iptr) throw () __attribute__ ((__nonnull__ (2))); -2441: -2441: -2441: -2441: extern _Float64x exp10f64x (_Float64x __x) throw (); extern _Float64x __exp10f64x (_Float64x __x) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float64x expm1f64x (_Float64x __x) throw (); extern _Float64x __expm1f64x (_Float64x __x) throw (); -2441: -2441: -2441: extern _Float64x log1pf64x (_Float64x __x) throw (); extern _Float64x __log1pf64x (_Float64x __x) throw (); -2441: -2441: -2441: extern _Float64x logbf64x (_Float64x __x) throw (); extern _Float64x __logbf64x (_Float64x __x) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float64x exp2f64x (_Float64x __x) throw (); extern _Float64x __exp2f64x (_Float64x __x) throw (); -2441: -2441: -2441: extern _Float64x log2f64x (_Float64x __x) throw (); extern _Float64x __log2f64x (_Float64x __x) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern _Float64x powf64x (_Float64x __x, _Float64x __y) throw (); extern _Float64x __powf64x (_Float64x __x, _Float64x __y) throw (); -2441: -2441: -2441: extern _Float64x sqrtf64x (_Float64x __x) throw (); extern _Float64x __sqrtf64x (_Float64x __x) throw (); -2441: -2441: -2441: -2441: extern _Float64x hypotf64x (_Float64x __x, _Float64x __y) throw (); extern _Float64x __hypotf64x (_Float64x __x, _Float64x __y) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float64x cbrtf64x (_Float64x __x) throw (); extern _Float64x __cbrtf64x (_Float64x __x) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern _Float64x ceilf64x (_Float64x __x) throw () __attribute__ ((__const__)); extern _Float64x __ceilf64x (_Float64x __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern _Float64x fabsf64x (_Float64x __x) throw () __attribute__ ((__const__)); extern _Float64x __fabsf64x (_Float64x __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern _Float64x floorf64x (_Float64x __x) throw () __attribute__ ((__const__)); extern _Float64x __floorf64x (_Float64x __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern _Float64x fmodf64x (_Float64x __x, _Float64x __y) throw (); extern _Float64x __fmodf64x (_Float64x __x, _Float64x __y) throw (); -2441: # 196 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 3 4 -2441: extern _Float64x copysignf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); extern _Float64x __copysignf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: -2441: extern _Float64x nanf64x (const char *__tagb) throw (); extern _Float64x __nanf64x (const char *__tagb) throw (); -2441: # 217 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 3 4 -2441: extern _Float64x j0f64x (_Float64x) throw (); extern _Float64x __j0f64x (_Float64x) throw (); -2441: extern _Float64x j1f64x (_Float64x) throw (); extern _Float64x __j1f64x (_Float64x) throw (); -2441: extern _Float64x jnf64x (int, _Float64x) throw (); extern _Float64x __jnf64x (int, _Float64x) throw (); -2441: extern _Float64x y0f64x (_Float64x) throw (); extern _Float64x __y0f64x (_Float64x) throw (); -2441: extern _Float64x y1f64x (_Float64x) throw (); extern _Float64x __y1f64x (_Float64x) throw (); -2441: extern _Float64x ynf64x (int, _Float64x) throw (); extern _Float64x __ynf64x (int, _Float64x) throw (); -2441: -2441: -2441: -2441: -2441: -2441: extern _Float64x erff64x (_Float64x) throw (); extern _Float64x __erff64x (_Float64x) throw (); -2441: extern _Float64x erfcf64x (_Float64x) throw (); extern _Float64x __erfcf64x (_Float64x) throw (); -2441: extern _Float64x lgammaf64x (_Float64x) throw (); extern _Float64x __lgammaf64x (_Float64x) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float64x tgammaf64x (_Float64x) throw (); extern _Float64x __tgammaf64x (_Float64x) throw (); -2441: # 249 "/usr/include/i386-linux-gnu/bits/mathcalls.h" 3 4 -2441: extern _Float64x lgammaf64x_r (_Float64x, int *__signgamp) throw (); extern _Float64x __lgammaf64x_r (_Float64x, int *__signgamp) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern _Float64x rintf64x (_Float64x __x) throw (); extern _Float64x __rintf64x (_Float64x __x) throw (); -2441: -2441: -2441: extern _Float64x nextafterf64x (_Float64x __x, _Float64x __y) throw (); extern _Float64x __nextafterf64x (_Float64x __x, _Float64x __y) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern _Float64x nextdownf64x (_Float64x __x) throw (); extern _Float64x __nextdownf64x (_Float64x __x) throw (); -2441: -2441: extern _Float64x nextupf64x (_Float64x __x) throw (); extern _Float64x __nextupf64x (_Float64x __x) throw (); -2441: -2441: -2441: -2441: extern _Float64x remainderf64x (_Float64x __x, _Float64x __y) throw (); extern _Float64x __remainderf64x (_Float64x __x, _Float64x __y) throw (); -2441: -2441: -2441: -2441: extern _Float64x scalbnf64x (_Float64x __x, int __n) throw (); extern _Float64x __scalbnf64x (_Float64x __x, int __n) throw (); -2441: -2441: -2441: -2441: extern int ilogbf64x (_Float64x __x) throw (); extern int __ilogbf64x (_Float64x __x) throw (); -2441: -2441: -2441: -2441: -2441: extern long int llogbf64x (_Float64x __x) throw (); extern long int __llogbf64x (_Float64x __x) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float64x scalblnf64x (_Float64x __x, long int __n) throw (); extern _Float64x __scalblnf64x (_Float64x __x, long int __n) throw (); -2441: -2441: -2441: -2441: extern _Float64x nearbyintf64x (_Float64x __x) throw (); extern _Float64x __nearbyintf64x (_Float64x __x) throw (); -2441: -2441: -2441: -2441: extern _Float64x roundf64x (_Float64x __x) throw () __attribute__ ((__const__)); extern _Float64x __roundf64x (_Float64x __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: extern _Float64x truncf64x (_Float64x __x) throw () __attribute__ ((__const__)); extern _Float64x __truncf64x (_Float64x __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: -2441: extern _Float64x remquof64x (_Float64x __x, _Float64x __y, int *__quo) throw (); extern _Float64x __remquof64x (_Float64x __x, _Float64x __y, int *__quo) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern long int lrintf64x (_Float64x __x) throw (); extern long int __lrintf64x (_Float64x __x) throw (); -2441: __extension__ -2441: extern long long int llrintf64x (_Float64x __x) throw (); extern long long int __llrintf64x (_Float64x __x) throw (); -2441: -2441: -2441: -2441: extern long int lroundf64x (_Float64x __x) throw (); extern long int __lroundf64x (_Float64x __x) throw (); -2441: __extension__ -2441: extern long long int llroundf64x (_Float64x __x) throw (); extern long long int __llroundf64x (_Float64x __x) throw (); -2441: -2441: -2441: -2441: extern _Float64x fdimf64x (_Float64x __x, _Float64x __y) throw (); extern _Float64x __fdimf64x (_Float64x __x, _Float64x __y) throw (); -2441: -2441: -2441: extern _Float64x fmaxf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); extern _Float64x __fmaxf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern _Float64x fminf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); extern _Float64x __fminf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern _Float64x fmaf64x (_Float64x __x, _Float64x __y, _Float64x __z) throw (); extern _Float64x __fmaf64x (_Float64x __x, _Float64x __y, _Float64x __z) throw (); -2441: -2441: -2441: -2441: -2441: extern _Float64x roundevenf64x (_Float64x __x) throw () __attribute__ ((__const__)); extern _Float64x __roundevenf64x (_Float64x __x) throw () __attribute__ ((__const__)); -2441: -2441: -2441: -2441: extern __intmax_t fromfpf64x (_Float64x __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpf64x (_Float64x __x, int __round, unsigned int __width) throw () -2441: ; -2441: -2441: -2441: -2441: extern __uintmax_t ufromfpf64x (_Float64x __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpf64x (_Float64x __x, int __round, unsigned int __width) throw () -2441: ; -2441: -2441: -2441: -2441: -2441: extern __intmax_t fromfpxf64x (_Float64x __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxf64x (_Float64x __x, int __round, unsigned int __width) throw () -2441: ; -2441: -2441: -2441: -2441: -2441: extern __uintmax_t ufromfpxf64x (_Float64x __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxf64x (_Float64x __x, int __round, unsigned int __width) throw () -2441: ; -2441: -2441: -2441: extern _Float64x fmaxmagf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); extern _Float64x __fmaxmagf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern _Float64x fminmagf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); extern _Float64x __fminmagf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); -2441: -2441: -2441: extern int totalorderf64x (_Float64x __x, _Float64x __y) throw () -2441: __attribute__ ((__const__)); -2441: -2441: -2441: extern int totalordermagf64x (_Float64x __x, _Float64x __y) throw () -2441: __attribute__ ((__const__)); -2441: -2441: -2441: extern int canonicalizef64x (_Float64x *__cx, const _Float64x *__x) throw (); -2441: -2441: -2441: extern _Float64x getpayloadf64x (const _Float64x *__x) throw (); extern _Float64x __getpayloadf64x (const _Float64x *__x) throw (); -2441: -2441: -2441: extern int setpayloadf64x (_Float64x *__x, _Float64x __payload) throw (); -2441: -2441: -2441: extern int setpayloadsigf64x (_Float64x *__x, _Float64x __payload) throw (); -2441: # 458 "/usr/include/math.h" 2 3 4 -2441: # 503 "/usr/include/math.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 -2441: # 24 "/usr/include/i386-linux-gnu/bits/mathcalls-narrow.h" 3 4 -2441: extern float fadd (double __x, double __y) throw (); -2441: -2441: -2441: extern float fdiv (double __x, double __y) throw (); -2441: -2441: -2441: extern float fmul (double __x, double __y) throw (); -2441: -2441: -2441: extern float fsub (double __x, double __y) throw (); -2441: # 504 "/usr/include/math.h" 2 3 4 -2441: # 517 "/usr/include/math.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 -2441: # 24 "/usr/include/i386-linux-gnu/bits/mathcalls-narrow.h" 3 4 -2441: extern float faddl (long double __x, long double __y) throw (); -2441: -2441: -2441: extern float fdivl (long double __x, long double __y) throw (); -2441: -2441: -2441: extern float fmull (long double __x, long double __y) throw (); -2441: -2441: -2441: extern float fsubl (long double __x, long double __y) throw (); -2441: # 518 "/usr/include/math.h" 2 3 4 -2441: # 537 "/usr/include/math.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 -2441: # 24 "/usr/include/i386-linux-gnu/bits/mathcalls-narrow.h" 3 4 -2441: extern double daddl (long double __x, long double __y) throw (); -2441: -2441: -2441: extern double ddivl (long double __x, long double __y) throw (); -2441: -2441: -2441: extern double dmull (long double __x, long double __y) throw (); -2441: -2441: -2441: extern double dsubl (long double __x, long double __y) throw (); -2441: # 538 "/usr/include/math.h" 2 3 4 -2441: # 616 "/usr/include/math.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 -2441: # 24 "/usr/include/i386-linux-gnu/bits/mathcalls-narrow.h" 3 4 -2441: extern _Float32 f32addf32x (_Float32x __x, _Float32x __y) throw (); -2441: -2441: -2441: extern _Float32 f32divf32x (_Float32x __x, _Float32x __y) throw (); -2441: -2441: -2441: extern _Float32 f32mulf32x (_Float32x __x, _Float32x __y) throw (); -2441: -2441: -2441: extern _Float32 f32subf32x (_Float32x __x, _Float32x __y) throw (); -2441: # 617 "/usr/include/math.h" 2 3 4 -2441: # 626 "/usr/include/math.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 -2441: # 24 "/usr/include/i386-linux-gnu/bits/mathcalls-narrow.h" 3 4 -2441: extern _Float32 f32addf64 (_Float64 __x, _Float64 __y) throw (); -2441: -2441: -2441: extern _Float32 f32divf64 (_Float64 __x, _Float64 __y) throw (); -2441: -2441: -2441: extern _Float32 f32mulf64 (_Float64 __x, _Float64 __y) throw (); -2441: -2441: -2441: extern _Float32 f32subf64 (_Float64 __x, _Float64 __y) throw (); -2441: # 627 "/usr/include/math.h" 2 3 4 -2441: # 636 "/usr/include/math.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 -2441: # 24 "/usr/include/i386-linux-gnu/bits/mathcalls-narrow.h" 3 4 -2441: extern _Float32 f32addf64x (_Float64x __x, _Float64x __y) throw (); -2441: -2441: -2441: extern _Float32 f32divf64x (_Float64x __x, _Float64x __y) throw (); -2441: -2441: -2441: extern _Float32 f32mulf64x (_Float64x __x, _Float64x __y) throw (); -2441: -2441: -2441: extern _Float32 f32subf64x (_Float64x __x, _Float64x __y) throw (); -2441: # 637 "/usr/include/math.h" 2 3 4 -2441: # 646 "/usr/include/math.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 -2441: # 24 "/usr/include/i386-linux-gnu/bits/mathcalls-narrow.h" 3 4 -2441: extern _Float32 f32addf128 (_Float128 __x, _Float128 __y) throw (); -2441: -2441: -2441: extern _Float32 f32divf128 (_Float128 __x, _Float128 __y) throw (); -2441: -2441: -2441: extern _Float32 f32mulf128 (_Float128 __x, _Float128 __y) throw (); -2441: -2441: -2441: extern _Float32 f32subf128 (_Float128 __x, _Float128 __y) throw (); -2441: # 647 "/usr/include/math.h" 2 3 4 -2441: # 666 "/usr/include/math.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 -2441: # 24 "/usr/include/i386-linux-gnu/bits/mathcalls-narrow.h" 3 4 -2441: extern _Float32x f32xaddf64 (_Float64 __x, _Float64 __y) throw (); -2441: -2441: -2441: extern _Float32x f32xdivf64 (_Float64 __x, _Float64 __y) throw (); -2441: -2441: -2441: extern _Float32x f32xmulf64 (_Float64 __x, _Float64 __y) throw (); -2441: -2441: -2441: extern _Float32x f32xsubf64 (_Float64 __x, _Float64 __y) throw (); -2441: # 667 "/usr/include/math.h" 2 3 4 -2441: # 676 "/usr/include/math.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 -2441: # 24 "/usr/include/i386-linux-gnu/bits/mathcalls-narrow.h" 3 4 -2441: extern _Float32x f32xaddf64x (_Float64x __x, _Float64x __y) throw (); -2441: -2441: -2441: extern _Float32x f32xdivf64x (_Float64x __x, _Float64x __y) throw (); -2441: -2441: -2441: extern _Float32x f32xmulf64x (_Float64x __x, _Float64x __y) throw (); -2441: -2441: -2441: extern _Float32x f32xsubf64x (_Float64x __x, _Float64x __y) throw (); -2441: # 677 "/usr/include/math.h" 2 3 4 -2441: # 686 "/usr/include/math.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 -2441: # 24 "/usr/include/i386-linux-gnu/bits/mathcalls-narrow.h" 3 4 -2441: extern _Float32x f32xaddf128 (_Float128 __x, _Float128 __y) throw (); -2441: -2441: -2441: extern _Float32x f32xdivf128 (_Float128 __x, _Float128 __y) throw (); -2441: -2441: -2441: extern _Float32x f32xmulf128 (_Float128 __x, _Float128 __y) throw (); -2441: -2441: -2441: extern _Float32x f32xsubf128 (_Float128 __x, _Float128 __y) throw (); -2441: # 687 "/usr/include/math.h" 2 3 4 -2441: # 706 "/usr/include/math.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 -2441: # 24 "/usr/include/i386-linux-gnu/bits/mathcalls-narrow.h" 3 4 -2441: extern _Float64 f64addf64x (_Float64x __x, _Float64x __y) throw (); -2441: -2441: -2441: extern _Float64 f64divf64x (_Float64x __x, _Float64x __y) throw (); -2441: -2441: -2441: extern _Float64 f64mulf64x (_Float64x __x, _Float64x __y) throw (); -2441: -2441: -2441: extern _Float64 f64subf64x (_Float64x __x, _Float64x __y) throw (); -2441: # 707 "/usr/include/math.h" 2 3 4 -2441: # 716 "/usr/include/math.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 -2441: # 24 "/usr/include/i386-linux-gnu/bits/mathcalls-narrow.h" 3 4 -2441: extern _Float64 f64addf128 (_Float128 __x, _Float128 __y) throw (); -2441: -2441: -2441: extern _Float64 f64divf128 (_Float128 __x, _Float128 __y) throw (); -2441: -2441: -2441: extern _Float64 f64mulf128 (_Float128 __x, _Float128 __y) throw (); -2441: -2441: -2441: extern _Float64 f64subf128 (_Float128 __x, _Float128 __y) throw (); -2441: # 717 "/usr/include/math.h" 2 3 4 -2441: # 736 "/usr/include/math.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 -2441: # 24 "/usr/include/i386-linux-gnu/bits/mathcalls-narrow.h" 3 4 -2441: extern _Float64x f64xaddf128 (_Float128 __x, _Float128 __y) throw (); -2441: -2441: -2441: extern _Float64x f64xdivf128 (_Float128 __x, _Float128 __y) throw (); -2441: -2441: -2441: extern _Float64x f64xmulf128 (_Float128 __x, _Float128 __y) throw (); -2441: -2441: -2441: extern _Float64x f64xsubf128 (_Float128 __x, _Float128 __y) throw (); -2441: # 737 "/usr/include/math.h" 2 3 4 -2441: # 773 "/usr/include/math.h" 3 4 -2441: extern int signgam; -2441: # 853 "/usr/include/math.h" 3 4 -2441: enum -2441: { -2441: FP_NAN = -2441: -2441: 0, -2441: FP_INFINITE = -2441: -2441: 1, -2441: FP_ZERO = -2441: -2441: 2, -2441: FP_SUBNORMAL = -2441: -2441: 3, -2441: FP_NORMAL = -2441: -2441: 4 -2441: }; -2441: # 968 "/usr/include/math.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/iscanonical.h" 1 3 4 -2441: # 23 "/usr/include/i386-linux-gnu/bits/iscanonical.h" 3 4 -2441: extern int __iscanonicall (long double __x) -2441: throw () __attribute__ ((__const__)); -2441: # 46 "/usr/include/i386-linux-gnu/bits/iscanonical.h" 3 4 -2441: extern "C++" { -2441: inline int iscanonical (float __val) { return ((void) (__typeof (__val)) (__val), 1); } -2441: inline int iscanonical (double __val) { return ((void) (__typeof (__val)) (__val), 1); } -2441: inline int iscanonical (long double __val) { return __iscanonicall (__val); } -2441: -2441: inline int iscanonical (_Float128 __val) { return ((void) (__typeof (__val)) (__val), 1); } -2441: -2441: } -2441: # 969 "/usr/include/math.h" 2 3 4 -2441: # 980 "/usr/include/math.h" 3 4 -2441: extern "C++" { -2441: inline int issignaling (float __val) { return __issignalingf (__val); } -2441: inline int issignaling (double __val) { return __issignaling (__val); } -2441: inline int -2441: issignaling (long double __val) -2441: { -2441: -2441: -2441: -2441: return __issignalingl (__val); -2441: -2441: } -2441: -2441: -2441: -2441: inline int issignaling (_Float128 __val) { return __issignalingf128 (__val); } -2441: -2441: } -2441: # 1011 "/usr/include/math.h" 3 4 -2441: extern "C++" { -2441: # 1042 "/usr/include/math.h" 3 4 -2441: template inline bool -2441: iszero (__T __val) -2441: { -2441: return __val == 0; -2441: } -2441: -2441: } -2441: # 1240 "/usr/include/math.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/mathinline.h" 1 3 4 -2441: # 246 "/usr/include/i386-linux-gnu/bits/mathinline.h" 3 4 -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) double __attribute__ ((__leaf__)) fabs (double __x) throw () { return __builtin_fabs (__x); } -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) float __attribute__ ((__leaf__)) fabsf (float __x) throw () { return __builtin_fabsf (__x); } -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) long double __attribute__ ((__leaf__)) fabsl (long double __x) throw () { return __builtin_fabsl (__x); } -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) long double __attribute__ ((__leaf__)) __fabsl (long double __x) throw () { return __builtin_fabsl (__x); } -2441: -2441: -2441: -2441: -2441: -2441: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) long double __sgn1l (long double) throw (); extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) long double __attribute__ ((__leaf__)) __sgn1l (long double __x) throw () { __extension__ union { long double __xld; unsigned int __xi[3]; } __n = { __xld: __x }; __n.__xi[2] = (__n.__xi[2] & 0x8000) | 0x3fff; __n.__xi[1] = 0x80000000; __n.__xi[0] = 0; return __n.__xld; } -2441: # 1241 "/usr/include/math.h" 2 3 4 -2441: # 1493 "/usr/include/math.h" 3 4 -2441: extern "C++" { -2441: template struct __iseqsig_type; -2441: -2441: template<> struct __iseqsig_type -2441: { -2441: static int __call (float __x, float __y) throw () -2441: { -2441: return __iseqsigf (__x, __y); -2441: } -2441: }; -2441: -2441: template<> struct __iseqsig_type -2441: { -2441: static int __call (double __x, double __y) throw () -2441: { -2441: return __iseqsig (__x, __y); -2441: } -2441: }; -2441: -2441: template<> struct __iseqsig_type -2441: { -2441: static int __call (long double __x, long double __y) throw () -2441: { -2441: -2441: return __iseqsigl (__x, __y); -2441: -2441: -2441: -2441: } -2441: }; -2441: -2441: -2441: -2441: -2441: template<> struct __iseqsig_type<_Float128> -2441: { -2441: static int __call (_Float128 __x, _Float128 __y) throw () -2441: { -2441: return __iseqsigf128 (__x, __y); -2441: } -2441: }; -2441: -2441: -2441: template -2441: inline int -2441: iseqsig (_T1 __x, _T2 __y) throw () -2441: { -2441: -2441: typedef decltype (((__x) + (__y) + 0.0L)) _T3; -2441: -2441: -2441: -2441: return __iseqsig_type<_T3>::__call (__x, __y); -2441: } -2441: -2441: } -2441: -2441: -2441: -2441: -2441: } -2441: # 46 "/usr/include/c++/8/cmath" 2 3 -2441: # 77 "/usr/include/c++/8/cmath" 3 -2441: extern "C++" -2441: { -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: using ::acos; -2441: -2441: -2441: inline constexpr float -2441: acos(float __x) -2441: { return __builtin_acosf(__x); } -2441: -2441: inline constexpr long double -2441: acos(long double __x) -2441: { return __builtin_acosl(__x); } -2441: -2441: -2441: template -2441: inline constexpr -2441: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: acos(_Tp __x) -2441: { return __builtin_acos(__x); } -2441: -2441: using ::asin; -2441: -2441: -2441: inline constexpr float -2441: asin(float __x) -2441: { return __builtin_asinf(__x); } -2441: -2441: inline constexpr long double -2441: asin(long double __x) -2441: { return __builtin_asinl(__x); } -2441: -2441: -2441: template -2441: inline constexpr -2441: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: asin(_Tp __x) -2441: { return __builtin_asin(__x); } -2441: -2441: using ::atan; -2441: -2441: -2441: inline constexpr float -2441: atan(float __x) -2441: { return __builtin_atanf(__x); } -2441: -2441: inline constexpr long double -2441: atan(long double __x) -2441: { return __builtin_atanl(__x); } -2441: -2441: -2441: template -2441: inline constexpr -2441: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: atan(_Tp __x) -2441: { return __builtin_atan(__x); } -2441: -2441: using ::atan2; -2441: -2441: -2441: inline constexpr float -2441: atan2(float __y, float __x) -2441: { return __builtin_atan2f(__y, __x); } -2441: -2441: inline constexpr long double -2441: atan2(long double __y, long double __x) -2441: { return __builtin_atan2l(__y, __x); } -2441: -2441: -2441: template -2441: inline constexpr -2441: typename __gnu_cxx::__promote_2<_Tp, _Up>::__type -2441: atan2(_Tp __y, _Up __x) -2441: { -2441: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; -2441: return atan2(__type(__y), __type(__x)); -2441: } -2441: -2441: using ::ceil; -2441: -2441: -2441: inline constexpr float -2441: ceil(float __x) -2441: { return __builtin_ceilf(__x); } -2441: -2441: inline constexpr long double -2441: ceil(long double __x) -2441: { return __builtin_ceill(__x); } -2441: -2441: -2441: template -2441: inline constexpr -2441: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: ceil(_Tp __x) -2441: { return __builtin_ceil(__x); } -2441: -2441: using ::cos; -2441: -2441: -2441: inline constexpr float -2441: cos(float __x) -2441: { return __builtin_cosf(__x); } -2441: -2441: inline constexpr long double -2441: cos(long double __x) -2441: { return __builtin_cosl(__x); } -2441: -2441: -2441: template -2441: inline constexpr -2441: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: cos(_Tp __x) -2441: { return __builtin_cos(__x); } -2441: -2441: using ::cosh; -2441: -2441: -2441: inline constexpr float -2441: cosh(float __x) -2441: { return __builtin_coshf(__x); } -2441: -2441: inline constexpr long double -2441: cosh(long double __x) -2441: { return __builtin_coshl(__x); } -2441: -2441: -2441: template -2441: inline constexpr -2441: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: cosh(_Tp __x) -2441: { return __builtin_cosh(__x); } -2441: -2441: using ::exp; -2441: -2441: -2441: inline constexpr float -2441: exp(float __x) -2441: { return __builtin_expf(__x); } -2441: -2441: inline constexpr long double -2441: exp(long double __x) -2441: { return __builtin_expl(__x); } -2441: -2441: -2441: template -2441: inline constexpr -2441: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: exp(_Tp __x) -2441: { return __builtin_exp(__x); } -2441: -2441: using ::fabs; -2441: -2441: -2441: inline constexpr float -2441: fabs(float __x) -2441: { return __builtin_fabsf(__x); } -2441: -2441: inline constexpr long double -2441: fabs(long double __x) -2441: { return __builtin_fabsl(__x); } -2441: -2441: -2441: template -2441: inline constexpr -2441: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: fabs(_Tp __x) -2441: { return __builtin_fabs(__x); } -2441: -2441: using ::floor; -2441: -2441: -2441: inline constexpr float -2441: floor(float __x) -2441: { return __builtin_floorf(__x); } -2441: -2441: inline constexpr long double -2441: floor(long double __x) -2441: { return __builtin_floorl(__x); } -2441: -2441: -2441: template -2441: inline constexpr -2441: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: floor(_Tp __x) -2441: { return __builtin_floor(__x); } -2441: -2441: using ::fmod; -2441: -2441: -2441: inline constexpr float -2441: fmod(float __x, float __y) -2441: { return __builtin_fmodf(__x, __y); } -2441: -2441: inline constexpr long double -2441: fmod(long double __x, long double __y) -2441: { return __builtin_fmodl(__x, __y); } -2441: -2441: -2441: template -2441: inline constexpr -2441: typename __gnu_cxx::__promote_2<_Tp, _Up>::__type -2441: fmod(_Tp __x, _Up __y) -2441: { -2441: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; -2441: return fmod(__type(__x), __type(__y)); -2441: } -2441: -2441: using ::frexp; -2441: -2441: -2441: inline float -2441: frexp(float __x, int* __exp) -2441: { return __builtin_frexpf(__x, __exp); } -2441: -2441: inline long double -2441: frexp(long double __x, int* __exp) -2441: { return __builtin_frexpl(__x, __exp); } -2441: -2441: -2441: template -2441: inline constexpr -2441: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: frexp(_Tp __x, int* __exp) -2441: { return __builtin_frexp(__x, __exp); } -2441: -2441: using ::ldexp; -2441: -2441: -2441: inline constexpr float -2441: ldexp(float __x, int __exp) -2441: { return __builtin_ldexpf(__x, __exp); } -2441: -2441: inline constexpr long double -2441: ldexp(long double __x, int __exp) -2441: { return __builtin_ldexpl(__x, __exp); } -2441: -2441: -2441: template -2441: inline constexpr -2441: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: ldexp(_Tp __x, int __exp) -2441: { return __builtin_ldexp(__x, __exp); } -2441: -2441: using ::log; -2441: -2441: -2441: inline constexpr float -2441: log(float __x) -2441: { return __builtin_logf(__x); } -2441: -2441: inline constexpr long double -2441: log(long double __x) -2441: { return __builtin_logl(__x); } -2441: -2441: -2441: template -2441: inline constexpr -2441: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: log(_Tp __x) -2441: { return __builtin_log(__x); } -2441: -2441: using ::log10; -2441: -2441: -2441: inline constexpr float -2441: log10(float __x) -2441: { return __builtin_log10f(__x); } -2441: -2441: inline constexpr long double -2441: log10(long double __x) -2441: { return __builtin_log10l(__x); } -2441: -2441: -2441: template -2441: inline constexpr -2441: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: log10(_Tp __x) -2441: { return __builtin_log10(__x); } -2441: -2441: using ::modf; -2441: -2441: -2441: inline float -2441: modf(float __x, float* __iptr) -2441: { return __builtin_modff(__x, __iptr); } -2441: -2441: inline long double -2441: modf(long double __x, long double* __iptr) -2441: { return __builtin_modfl(__x, __iptr); } -2441: -2441: -2441: using ::pow; -2441: -2441: -2441: inline constexpr float -2441: pow(float __x, float __y) -2441: { return __builtin_powf(__x, __y); } -2441: -2441: inline constexpr long double -2441: pow(long double __x, long double __y) -2441: { return __builtin_powl(__x, __y); } -2441: # 412 "/usr/include/c++/8/cmath" 3 -2441: template -2441: inline constexpr -2441: typename __gnu_cxx::__promote_2<_Tp, _Up>::__type -2441: pow(_Tp __x, _Up __y) -2441: { -2441: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; -2441: return pow(__type(__x), __type(__y)); -2441: } -2441: -2441: using ::sin; -2441: -2441: -2441: inline constexpr float -2441: sin(float __x) -2441: { return __builtin_sinf(__x); } -2441: -2441: inline constexpr long double -2441: sin(long double __x) -2441: { return __builtin_sinl(__x); } -2441: -2441: -2441: template -2441: inline constexpr -2441: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: sin(_Tp __x) -2441: { return __builtin_sin(__x); } -2441: -2441: using ::sinh; -2441: -2441: -2441: inline constexpr float -2441: sinh(float __x) -2441: { return __builtin_sinhf(__x); } -2441: -2441: inline constexpr long double -2441: sinh(long double __x) -2441: { return __builtin_sinhl(__x); } -2441: -2441: -2441: template -2441: inline constexpr -2441: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: sinh(_Tp __x) -2441: { return __builtin_sinh(__x); } -2441: -2441: using ::sqrt; -2441: -2441: -2441: inline constexpr float -2441: sqrt(float __x) -2441: { return __builtin_sqrtf(__x); } -2441: -2441: inline constexpr long double -2441: sqrt(long double __x) -2441: { return __builtin_sqrtl(__x); } -2441: -2441: -2441: template -2441: inline constexpr -2441: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: sqrt(_Tp __x) -2441: { return __builtin_sqrt(__x); } -2441: -2441: using ::tan; -2441: -2441: -2441: inline constexpr float -2441: tan(float __x) -2441: { return __builtin_tanf(__x); } -2441: -2441: inline constexpr long double -2441: tan(long double __x) -2441: { return __builtin_tanl(__x); } -2441: -2441: -2441: template -2441: inline constexpr -2441: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: tan(_Tp __x) -2441: { return __builtin_tan(__x); } -2441: -2441: using ::tanh; -2441: -2441: -2441: inline constexpr float -2441: tanh(float __x) -2441: { return __builtin_tanhf(__x); } -2441: -2441: inline constexpr long double -2441: tanh(long double __x) -2441: { return __builtin_tanhl(__x); } -2441: -2441: -2441: template -2441: inline constexpr -2441: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: tanh(_Tp __x) -2441: { return __builtin_tanh(__x); } -2441: # 536 "/usr/include/c++/8/cmath" 3 -2441: constexpr int -2441: fpclassify(float __x) -2441: { return __builtin_fpclassify(0, 1, 4, -2441: 3, 2, __x); } -2441: -2441: constexpr int -2441: fpclassify(double __x) -2441: { return __builtin_fpclassify(0, 1, 4, -2441: 3, 2, __x); } -2441: -2441: constexpr int -2441: fpclassify(long double __x) -2441: { return __builtin_fpclassify(0, 1, 4, -2441: 3, 2, __x); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: int>::__type -2441: fpclassify(_Tp __x) -2441: { return __x != 0 ? 4 : 2; } -2441: -2441: -2441: -2441: constexpr bool -2441: isfinite(float __x) -2441: { return __builtin_isfinite(__x); } -2441: -2441: constexpr bool -2441: isfinite(double __x) -2441: { return __builtin_isfinite(__x); } -2441: -2441: constexpr bool -2441: isfinite(long double __x) -2441: { return __builtin_isfinite(__x); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: bool>::__type -2441: isfinite(_Tp __x) -2441: { return true; } -2441: -2441: -2441: -2441: constexpr bool -2441: isinf(float __x) -2441: { return __builtin_isinf(__x); } -2441: -2441: -2441: -2441: -2441: -2441: constexpr bool -2441: isinf(double __x) -2441: { return __builtin_isinf(__x); } -2441: -2441: -2441: constexpr bool -2441: isinf(long double __x) -2441: { return __builtin_isinf(__x); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: bool>::__type -2441: isinf(_Tp __x) -2441: { return false; } -2441: -2441: -2441: -2441: constexpr bool -2441: isnan(float __x) -2441: { return __builtin_isnan(__x); } -2441: -2441: -2441: -2441: -2441: -2441: constexpr bool -2441: isnan(double __x) -2441: { return __builtin_isnan(__x); } -2441: -2441: -2441: constexpr bool -2441: isnan(long double __x) -2441: { return __builtin_isnan(__x); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: bool>::__type -2441: isnan(_Tp __x) -2441: { return false; } -2441: -2441: -2441: -2441: constexpr bool -2441: isnormal(float __x) -2441: { return __builtin_isnormal(__x); } -2441: -2441: constexpr bool -2441: isnormal(double __x) -2441: { return __builtin_isnormal(__x); } -2441: -2441: constexpr bool -2441: isnormal(long double __x) -2441: { return __builtin_isnormal(__x); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: bool>::__type -2441: isnormal(_Tp __x) -2441: { return __x != 0 ? true : false; } -2441: -2441: -2441: -2441: -2441: constexpr bool -2441: signbit(float __x) -2441: { return __builtin_signbit(__x); } -2441: -2441: constexpr bool -2441: signbit(double __x) -2441: { return __builtin_signbit(__x); } -2441: -2441: constexpr bool -2441: signbit(long double __x) -2441: { return __builtin_signbit(__x); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: bool>::__type -2441: signbit(_Tp __x) -2441: { return __x < 0 ? true : false; } -2441: -2441: -2441: -2441: constexpr bool -2441: isgreater(float __x, float __y) -2441: { return __builtin_isgreater(__x, __y); } -2441: -2441: constexpr bool -2441: isgreater(double __x, double __y) -2441: { return __builtin_isgreater(__x, __y); } -2441: -2441: constexpr bool -2441: isgreater(long double __x, long double __y) -2441: { return __builtin_isgreater(__x, __y); } -2441: -2441: -2441: -2441: template -2441: constexpr typename -2441: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value -2441: && __is_arithmetic<_Up>::__value), bool>::__type -2441: isgreater(_Tp __x, _Up __y) -2441: { -2441: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; -2441: return __builtin_isgreater(__type(__x), __type(__y)); -2441: } -2441: -2441: -2441: -2441: constexpr bool -2441: isgreaterequal(float __x, float __y) -2441: { return __builtin_isgreaterequal(__x, __y); } -2441: -2441: constexpr bool -2441: isgreaterequal(double __x, double __y) -2441: { return __builtin_isgreaterequal(__x, __y); } -2441: -2441: constexpr bool -2441: isgreaterequal(long double __x, long double __y) -2441: { return __builtin_isgreaterequal(__x, __y); } -2441: -2441: -2441: -2441: template -2441: constexpr typename -2441: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value -2441: && __is_arithmetic<_Up>::__value), bool>::__type -2441: isgreaterequal(_Tp __x, _Up __y) -2441: { -2441: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; -2441: return __builtin_isgreaterequal(__type(__x), __type(__y)); -2441: } -2441: -2441: -2441: -2441: constexpr bool -2441: isless(float __x, float __y) -2441: { return __builtin_isless(__x, __y); } -2441: -2441: constexpr bool -2441: isless(double __x, double __y) -2441: { return __builtin_isless(__x, __y); } -2441: -2441: constexpr bool -2441: isless(long double __x, long double __y) -2441: { return __builtin_isless(__x, __y); } -2441: -2441: -2441: -2441: template -2441: constexpr typename -2441: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value -2441: && __is_arithmetic<_Up>::__value), bool>::__type -2441: isless(_Tp __x, _Up __y) -2441: { -2441: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; -2441: return __builtin_isless(__type(__x), __type(__y)); -2441: } -2441: -2441: -2441: -2441: constexpr bool -2441: islessequal(float __x, float __y) -2441: { return __builtin_islessequal(__x, __y); } -2441: -2441: constexpr bool -2441: islessequal(double __x, double __y) -2441: { return __builtin_islessequal(__x, __y); } -2441: -2441: constexpr bool -2441: islessequal(long double __x, long double __y) -2441: { return __builtin_islessequal(__x, __y); } -2441: -2441: -2441: -2441: template -2441: constexpr typename -2441: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value -2441: && __is_arithmetic<_Up>::__value), bool>::__type -2441: islessequal(_Tp __x, _Up __y) -2441: { -2441: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; -2441: return __builtin_islessequal(__type(__x), __type(__y)); -2441: } -2441: -2441: -2441: -2441: constexpr bool -2441: islessgreater(float __x, float __y) -2441: { return __builtin_islessgreater(__x, __y); } -2441: -2441: constexpr bool -2441: islessgreater(double __x, double __y) -2441: { return __builtin_islessgreater(__x, __y); } -2441: -2441: constexpr bool -2441: islessgreater(long double __x, long double __y) -2441: { return __builtin_islessgreater(__x, __y); } -2441: -2441: -2441: -2441: template -2441: constexpr typename -2441: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value -2441: && __is_arithmetic<_Up>::__value), bool>::__type -2441: islessgreater(_Tp __x, _Up __y) -2441: { -2441: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; -2441: return __builtin_islessgreater(__type(__x), __type(__y)); -2441: } -2441: -2441: -2441: -2441: constexpr bool -2441: isunordered(float __x, float __y) -2441: { return __builtin_isunordered(__x, __y); } -2441: -2441: constexpr bool -2441: isunordered(double __x, double __y) -2441: { return __builtin_isunordered(__x, __y); } -2441: -2441: constexpr bool -2441: isunordered(long double __x, long double __y) -2441: { return __builtin_isunordered(__x, __y); } -2441: -2441: -2441: -2441: template -2441: constexpr typename -2441: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value -2441: && __is_arithmetic<_Up>::__value), bool>::__type -2441: isunordered(_Tp __x, _Up __y) -2441: { -2441: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; -2441: return __builtin_isunordered(__type(__x), __type(__y)); -2441: } -2441: # 1065 "/usr/include/c++/8/cmath" 3 -2441: using ::double_t; -2441: using ::float_t; -2441: -2441: -2441: using ::acosh; -2441: using ::acoshf; -2441: using ::acoshl; -2441: -2441: using ::asinh; -2441: using ::asinhf; -2441: using ::asinhl; -2441: -2441: using ::atanh; -2441: using ::atanhf; -2441: using ::atanhl; -2441: -2441: using ::cbrt; -2441: using ::cbrtf; -2441: using ::cbrtl; -2441: -2441: using ::copysign; -2441: using ::copysignf; -2441: using ::copysignl; -2441: -2441: using ::erf; -2441: using ::erff; -2441: using ::erfl; -2441: -2441: using ::erfc; -2441: using ::erfcf; -2441: using ::erfcl; -2441: -2441: using ::exp2; -2441: using ::exp2f; -2441: using ::exp2l; -2441: -2441: using ::expm1; -2441: using ::expm1f; -2441: using ::expm1l; -2441: -2441: using ::fdim; -2441: using ::fdimf; -2441: using ::fdiml; -2441: -2441: using ::fma; -2441: using ::fmaf; -2441: using ::fmal; -2441: -2441: using ::fmax; -2441: using ::fmaxf; -2441: using ::fmaxl; -2441: -2441: using ::fmin; -2441: using ::fminf; -2441: using ::fminl; -2441: -2441: using ::hypot; -2441: using ::hypotf; -2441: using ::hypotl; -2441: -2441: using ::ilogb; -2441: using ::ilogbf; -2441: using ::ilogbl; -2441: -2441: using ::lgamma; -2441: using ::lgammaf; -2441: using ::lgammal; -2441: -2441: -2441: using ::llrint; -2441: using ::llrintf; -2441: using ::llrintl; -2441: -2441: using ::llround; -2441: using ::llroundf; -2441: using ::llroundl; -2441: -2441: -2441: using ::log1p; -2441: using ::log1pf; -2441: using ::log1pl; -2441: -2441: using ::log2; -2441: using ::log2f; -2441: using ::log2l; -2441: -2441: using ::logb; -2441: using ::logbf; -2441: using ::logbl; -2441: -2441: using ::lrint; -2441: using ::lrintf; -2441: using ::lrintl; -2441: -2441: using ::lround; -2441: using ::lroundf; -2441: using ::lroundl; -2441: -2441: using ::nan; -2441: using ::nanf; -2441: using ::nanl; -2441: -2441: using ::nearbyint; -2441: using ::nearbyintf; -2441: using ::nearbyintl; -2441: -2441: using ::nextafter; -2441: using ::nextafterf; -2441: using ::nextafterl; -2441: -2441: using ::nexttoward; -2441: using ::nexttowardf; -2441: using ::nexttowardl; -2441: -2441: using ::remainder; -2441: using ::remainderf; -2441: using ::remainderl; -2441: -2441: using ::remquo; -2441: using ::remquof; -2441: using ::remquol; -2441: -2441: using ::rint; -2441: using ::rintf; -2441: using ::rintl; -2441: -2441: using ::round; -2441: using ::roundf; -2441: using ::roundl; -2441: -2441: using ::scalbln; -2441: using ::scalblnf; -2441: using ::scalblnl; -2441: -2441: using ::scalbn; -2441: using ::scalbnf; -2441: using ::scalbnl; -2441: -2441: using ::tgamma; -2441: using ::tgammaf; -2441: using ::tgammal; -2441: -2441: using ::trunc; -2441: using ::truncf; -2441: using ::truncl; -2441: -2441: -2441: -2441: constexpr float -2441: acosh(float __x) -2441: { return __builtin_acoshf(__x); } -2441: -2441: constexpr long double -2441: acosh(long double __x) -2441: { return __builtin_acoshl(__x); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: acosh(_Tp __x) -2441: { return __builtin_acosh(__x); } -2441: -2441: -2441: -2441: constexpr float -2441: asinh(float __x) -2441: { return __builtin_asinhf(__x); } -2441: -2441: constexpr long double -2441: asinh(long double __x) -2441: { return __builtin_asinhl(__x); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: asinh(_Tp __x) -2441: { return __builtin_asinh(__x); } -2441: -2441: -2441: -2441: constexpr float -2441: atanh(float __x) -2441: { return __builtin_atanhf(__x); } -2441: -2441: constexpr long double -2441: atanh(long double __x) -2441: { return __builtin_atanhl(__x); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: atanh(_Tp __x) -2441: { return __builtin_atanh(__x); } -2441: -2441: -2441: -2441: constexpr float -2441: cbrt(float __x) -2441: { return __builtin_cbrtf(__x); } -2441: -2441: constexpr long double -2441: cbrt(long double __x) -2441: { return __builtin_cbrtl(__x); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: cbrt(_Tp __x) -2441: { return __builtin_cbrt(__x); } -2441: -2441: -2441: -2441: constexpr float -2441: copysign(float __x, float __y) -2441: { return __builtin_copysignf(__x, __y); } -2441: -2441: constexpr long double -2441: copysign(long double __x, long double __y) -2441: { return __builtin_copysignl(__x, __y); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type -2441: copysign(_Tp __x, _Up __y) -2441: { -2441: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; -2441: return copysign(__type(__x), __type(__y)); -2441: } -2441: -2441: -2441: -2441: constexpr float -2441: erf(float __x) -2441: { return __builtin_erff(__x); } -2441: -2441: constexpr long double -2441: erf(long double __x) -2441: { return __builtin_erfl(__x); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: erf(_Tp __x) -2441: { return __builtin_erf(__x); } -2441: -2441: -2441: -2441: constexpr float -2441: erfc(float __x) -2441: { return __builtin_erfcf(__x); } -2441: -2441: constexpr long double -2441: erfc(long double __x) -2441: { return __builtin_erfcl(__x); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: erfc(_Tp __x) -2441: { return __builtin_erfc(__x); } -2441: -2441: -2441: -2441: constexpr float -2441: exp2(float __x) -2441: { return __builtin_exp2f(__x); } -2441: -2441: constexpr long double -2441: exp2(long double __x) -2441: { return __builtin_exp2l(__x); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: exp2(_Tp __x) -2441: { return __builtin_exp2(__x); } -2441: -2441: -2441: -2441: constexpr float -2441: expm1(float __x) -2441: { return __builtin_expm1f(__x); } -2441: -2441: constexpr long double -2441: expm1(long double __x) -2441: { return __builtin_expm1l(__x); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: expm1(_Tp __x) -2441: { return __builtin_expm1(__x); } -2441: -2441: -2441: -2441: constexpr float -2441: fdim(float __x, float __y) -2441: { return __builtin_fdimf(__x, __y); } -2441: -2441: constexpr long double -2441: fdim(long double __x, long double __y) -2441: { return __builtin_fdiml(__x, __y); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type -2441: fdim(_Tp __x, _Up __y) -2441: { -2441: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; -2441: return fdim(__type(__x), __type(__y)); -2441: } -2441: -2441: -2441: -2441: constexpr float -2441: fma(float __x, float __y, float __z) -2441: { return __builtin_fmaf(__x, __y, __z); } -2441: -2441: constexpr long double -2441: fma(long double __x, long double __y, long double __z) -2441: { return __builtin_fmal(__x, __y, __z); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type -2441: fma(_Tp __x, _Up __y, _Vp __z) -2441: { -2441: typedef typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type __type; -2441: return fma(__type(__x), __type(__y), __type(__z)); -2441: } -2441: -2441: -2441: -2441: constexpr float -2441: fmax(float __x, float __y) -2441: { return __builtin_fmaxf(__x, __y); } -2441: -2441: constexpr long double -2441: fmax(long double __x, long double __y) -2441: { return __builtin_fmaxl(__x, __y); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type -2441: fmax(_Tp __x, _Up __y) -2441: { -2441: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; -2441: return fmax(__type(__x), __type(__y)); -2441: } -2441: -2441: -2441: -2441: constexpr float -2441: fmin(float __x, float __y) -2441: { return __builtin_fminf(__x, __y); } -2441: -2441: constexpr long double -2441: fmin(long double __x, long double __y) -2441: { return __builtin_fminl(__x, __y); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type -2441: fmin(_Tp __x, _Up __y) -2441: { -2441: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; -2441: return fmin(__type(__x), __type(__y)); -2441: } -2441: -2441: -2441: -2441: constexpr float -2441: hypot(float __x, float __y) -2441: { return __builtin_hypotf(__x, __y); } -2441: -2441: constexpr long double -2441: hypot(long double __x, long double __y) -2441: { return __builtin_hypotl(__x, __y); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type -2441: hypot(_Tp __x, _Up __y) -2441: { -2441: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; -2441: return hypot(__type(__x), __type(__y)); -2441: } -2441: -2441: -2441: -2441: constexpr int -2441: ilogb(float __x) -2441: { return __builtin_ilogbf(__x); } -2441: -2441: constexpr int -2441: ilogb(long double __x) -2441: { return __builtin_ilogbl(__x); } -2441: -2441: -2441: -2441: template -2441: constexpr -2441: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: int>::__type -2441: ilogb(_Tp __x) -2441: { return __builtin_ilogb(__x); } -2441: -2441: -2441: -2441: constexpr float -2441: lgamma(float __x) -2441: { return __builtin_lgammaf(__x); } -2441: -2441: constexpr long double -2441: lgamma(long double __x) -2441: { return __builtin_lgammal(__x); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: lgamma(_Tp __x) -2441: { return __builtin_lgamma(__x); } -2441: -2441: -2441: -2441: constexpr long long -2441: llrint(float __x) -2441: { return __builtin_llrintf(__x); } -2441: -2441: constexpr long long -2441: llrint(long double __x) -2441: { return __builtin_llrintl(__x); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: long long>::__type -2441: llrint(_Tp __x) -2441: { return __builtin_llrint(__x); } -2441: -2441: -2441: -2441: constexpr long long -2441: llround(float __x) -2441: { return __builtin_llroundf(__x); } -2441: -2441: constexpr long long -2441: llround(long double __x) -2441: { return __builtin_llroundl(__x); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: long long>::__type -2441: llround(_Tp __x) -2441: { return __builtin_llround(__x); } -2441: -2441: -2441: -2441: constexpr float -2441: log1p(float __x) -2441: { return __builtin_log1pf(__x); } -2441: -2441: constexpr long double -2441: log1p(long double __x) -2441: { return __builtin_log1pl(__x); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: log1p(_Tp __x) -2441: { return __builtin_log1p(__x); } -2441: -2441: -2441: -2441: -2441: constexpr float -2441: log2(float __x) -2441: { return __builtin_log2f(__x); } -2441: -2441: constexpr long double -2441: log2(long double __x) -2441: { return __builtin_log2l(__x); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: log2(_Tp __x) -2441: { return __builtin_log2(__x); } -2441: -2441: -2441: -2441: constexpr float -2441: logb(float __x) -2441: { return __builtin_logbf(__x); } -2441: -2441: constexpr long double -2441: logb(long double __x) -2441: { return __builtin_logbl(__x); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: logb(_Tp __x) -2441: { return __builtin_logb(__x); } -2441: -2441: -2441: -2441: constexpr long -2441: lrint(float __x) -2441: { return __builtin_lrintf(__x); } -2441: -2441: constexpr long -2441: lrint(long double __x) -2441: { return __builtin_lrintl(__x); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: long>::__type -2441: lrint(_Tp __x) -2441: { return __builtin_lrint(__x); } -2441: -2441: -2441: -2441: constexpr long -2441: lround(float __x) -2441: { return __builtin_lroundf(__x); } -2441: -2441: constexpr long -2441: lround(long double __x) -2441: { return __builtin_lroundl(__x); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: long>::__type -2441: lround(_Tp __x) -2441: { return __builtin_lround(__x); } -2441: -2441: -2441: -2441: constexpr float -2441: nearbyint(float __x) -2441: { return __builtin_nearbyintf(__x); } -2441: -2441: constexpr long double -2441: nearbyint(long double __x) -2441: { return __builtin_nearbyintl(__x); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: nearbyint(_Tp __x) -2441: { return __builtin_nearbyint(__x); } -2441: -2441: -2441: -2441: constexpr float -2441: nextafter(float __x, float __y) -2441: { return __builtin_nextafterf(__x, __y); } -2441: -2441: constexpr long double -2441: nextafter(long double __x, long double __y) -2441: { return __builtin_nextafterl(__x, __y); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type -2441: nextafter(_Tp __x, _Up __y) -2441: { -2441: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; -2441: return nextafter(__type(__x), __type(__y)); -2441: } -2441: -2441: -2441: -2441: constexpr float -2441: nexttoward(float __x, long double __y) -2441: { return __builtin_nexttowardf(__x, __y); } -2441: -2441: constexpr long double -2441: nexttoward(long double __x, long double __y) -2441: { return __builtin_nexttowardl(__x, __y); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: nexttoward(_Tp __x, long double __y) -2441: { return __builtin_nexttoward(__x, __y); } -2441: -2441: -2441: -2441: constexpr float -2441: remainder(float __x, float __y) -2441: { return __builtin_remainderf(__x, __y); } -2441: -2441: constexpr long double -2441: remainder(long double __x, long double __y) -2441: { return __builtin_remainderl(__x, __y); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type -2441: remainder(_Tp __x, _Up __y) -2441: { -2441: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; -2441: return remainder(__type(__x), __type(__y)); -2441: } -2441: -2441: -2441: -2441: inline float -2441: remquo(float __x, float __y, int* __pquo) -2441: { return __builtin_remquof(__x, __y, __pquo); } -2441: -2441: inline long double -2441: remquo(long double __x, long double __y, int* __pquo) -2441: { return __builtin_remquol(__x, __y, __pquo); } -2441: -2441: -2441: -2441: template -2441: inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type -2441: remquo(_Tp __x, _Up __y, int* __pquo) -2441: { -2441: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; -2441: return remquo(__type(__x), __type(__y), __pquo); -2441: } -2441: -2441: -2441: -2441: constexpr float -2441: rint(float __x) -2441: { return __builtin_rintf(__x); } -2441: -2441: constexpr long double -2441: rint(long double __x) -2441: { return __builtin_rintl(__x); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: rint(_Tp __x) -2441: { return __builtin_rint(__x); } -2441: -2441: -2441: -2441: constexpr float -2441: round(float __x) -2441: { return __builtin_roundf(__x); } -2441: -2441: constexpr long double -2441: round(long double __x) -2441: { return __builtin_roundl(__x); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: round(_Tp __x) -2441: { return __builtin_round(__x); } -2441: -2441: -2441: -2441: constexpr float -2441: scalbln(float __x, long __ex) -2441: { return __builtin_scalblnf(__x, __ex); } -2441: -2441: constexpr long double -2441: scalbln(long double __x, long __ex) -2441: { return __builtin_scalblnl(__x, __ex); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: scalbln(_Tp __x, long __ex) -2441: { return __builtin_scalbln(__x, __ex); } -2441: -2441: -2441: -2441: constexpr float -2441: scalbn(float __x, int __ex) -2441: { return __builtin_scalbnf(__x, __ex); } -2441: -2441: constexpr long double -2441: scalbn(long double __x, int __ex) -2441: { return __builtin_scalbnl(__x, __ex); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: scalbn(_Tp __x, int __ex) -2441: { return __builtin_scalbn(__x, __ex); } -2441: -2441: -2441: -2441: constexpr float -2441: tgamma(float __x) -2441: { return __builtin_tgammaf(__x); } -2441: -2441: constexpr long double -2441: tgamma(long double __x) -2441: { return __builtin_tgammal(__x); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: tgamma(_Tp __x) -2441: { return __builtin_tgamma(__x); } -2441: -2441: -2441: -2441: constexpr float -2441: trunc(float __x) -2441: { return __builtin_truncf(__x); } -2441: -2441: constexpr long double -2441: trunc(long double __x) -2441: { return __builtin_truncl(__x); } -2441: -2441: -2441: -2441: template -2441: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, -2441: double>::__type -2441: trunc(_Tp __x) -2441: { return __builtin_trunc(__x); } -2441: # 1888 "/usr/include/c++/8/cmath" 3 -2441: -2441: } -2441: -2441: -2441: -2441: -2441: -2441: } -2441: # 35 "../../src/Float_defs.hh" 2 -2441: # 1 "/usr/include/c++/8/map" 1 3 -2441: # 58 "/usr/include/c++/8/map" 3 -2441: -2441: # 59 "/usr/include/c++/8/map" 3 -2441: -2441: -2441: # 1 "/usr/include/c++/8/bits/stl_map.h" 1 3 -2441: # 63 "/usr/include/c++/8/bits/stl_map.h" 3 -2441: # 1 "/usr/include/c++/8/tuple" 1 3 -2441: # 32 "/usr/include/c++/8/tuple" 3 -2441: -2441: # 33 "/usr/include/c++/8/tuple" 3 -2441: -2441: -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/c++/8/array" 1 3 -2441: # 32 "/usr/include/c++/8/array" 3 -2441: -2441: # 33 "/usr/include/c++/8/array" 3 -2441: # 43 "/usr/include/c++/8/array" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: template -2441: struct __array_traits -2441: { -2441: typedef _Tp _Type[_Nm]; -2441: typedef __is_swappable<_Tp> _Is_swappable; -2441: typedef __is_nothrow_swappable<_Tp> _Is_nothrow_swappable; -2441: -2441: static constexpr _Tp& -2441: _S_ref(const _Type& __t, std::size_t __n) noexcept -2441: { return const_cast<_Tp&>(__t[__n]); } -2441: -2441: static constexpr _Tp* -2441: _S_ptr(const _Type& __t) noexcept -2441: { return const_cast<_Tp*>(__t); } -2441: }; -2441: -2441: template -2441: struct __array_traits<_Tp, 0> -2441: { -2441: struct _Type { }; -2441: typedef true_type _Is_swappable; -2441: typedef true_type _Is_nothrow_swappable; -2441: -2441: static constexpr _Tp& -2441: _S_ref(const _Type&, std::size_t) noexcept -2441: { return *static_cast<_Tp*>(nullptr); } -2441: -2441: static constexpr _Tp* -2441: _S_ptr(const _Type&) noexcept -2441: { return nullptr; } -2441: }; -2441: # 93 "/usr/include/c++/8/array" 3 -2441: template -2441: struct array -2441: { -2441: typedef _Tp value_type; -2441: typedef value_type* pointer; -2441: typedef const value_type* const_pointer; -2441: typedef value_type& reference; -2441: typedef const value_type& const_reference; -2441: typedef value_type* iterator; -2441: typedef const value_type* const_iterator; -2441: typedef std::size_t size_type; -2441: typedef std::ptrdiff_t difference_type; -2441: typedef std::reverse_iterator reverse_iterator; -2441: typedef std::reverse_iterator const_reverse_iterator; -2441: -2441: -2441: typedef std::__array_traits<_Tp, _Nm> _AT_Type; -2441: typename _AT_Type::_Type _M_elems; -2441: -2441: -2441: -2441: -2441: void -2441: fill(const value_type& __u) -2441: { std::fill_n(begin(), size(), __u); } -2441: -2441: void -2441: swap(array& __other) -2441: noexcept(_AT_Type::_Is_nothrow_swappable::value) -2441: { std::swap_ranges(begin(), end(), __other.begin()); } -2441: -2441: -2441: iterator -2441: begin() noexcept -2441: { return iterator(data()); } -2441: -2441: const_iterator -2441: begin() const noexcept -2441: { return const_iterator(data()); } -2441: -2441: iterator -2441: end() noexcept -2441: { return iterator(data() + _Nm); } -2441: -2441: const_iterator -2441: end() const noexcept -2441: { return const_iterator(data() + _Nm); } -2441: -2441: reverse_iterator -2441: rbegin() noexcept -2441: { return reverse_iterator(end()); } -2441: -2441: const_reverse_iterator -2441: rbegin() const noexcept -2441: { return const_reverse_iterator(end()); } -2441: -2441: reverse_iterator -2441: rend() noexcept -2441: { return reverse_iterator(begin()); } -2441: -2441: const_reverse_iterator -2441: rend() const noexcept -2441: { return const_reverse_iterator(begin()); } -2441: -2441: const_iterator -2441: cbegin() const noexcept -2441: { return const_iterator(data()); } -2441: -2441: const_iterator -2441: cend() const noexcept -2441: { return const_iterator(data() + _Nm); } -2441: -2441: const_reverse_iterator -2441: crbegin() const noexcept -2441: { return const_reverse_iterator(end()); } -2441: -2441: const_reverse_iterator -2441: crend() const noexcept -2441: { return const_reverse_iterator(begin()); } -2441: -2441: -2441: constexpr size_type -2441: size() const noexcept { return _Nm; } -2441: -2441: constexpr size_type -2441: max_size() const noexcept { return _Nm; } -2441: -2441: constexpr bool -2441: empty() const noexcept { return size() == 0; } -2441: -2441: -2441: reference -2441: operator[](size_type __n) noexcept -2441: { return _AT_Type::_S_ref(_M_elems, __n); } -2441: -2441: constexpr const_reference -2441: operator[](size_type __n) const noexcept -2441: { return _AT_Type::_S_ref(_M_elems, __n); } -2441: -2441: reference -2441: at(size_type __n) -2441: { -2441: if (__n >= _Nm) -2441: std::__throw_out_of_range_fmt(("array::at: __n (which is %zu) " ">= _Nm (which is %zu)") -2441: , -2441: __n, _Nm); -2441: return _AT_Type::_S_ref(_M_elems, __n); -2441: } -2441: -2441: constexpr const_reference -2441: at(size_type __n) const -2441: { -2441: -2441: -2441: return __n < _Nm ? _AT_Type::_S_ref(_M_elems, __n) -2441: : (std::__throw_out_of_range_fmt(("array::at: __n (which is %zu) " ">= _Nm (which is %zu)") -2441: , -2441: __n, _Nm), -2441: _AT_Type::_S_ref(_M_elems, 0)); -2441: } -2441: -2441: reference -2441: front() noexcept -2441: { return *begin(); } -2441: -2441: constexpr const_reference -2441: front() const noexcept -2441: { return _AT_Type::_S_ref(_M_elems, 0); } -2441: -2441: reference -2441: back() noexcept -2441: { return _Nm ? *(end() - 1) : *end(); } -2441: -2441: constexpr const_reference -2441: back() const noexcept -2441: { -2441: return _Nm ? _AT_Type::_S_ref(_M_elems, _Nm - 1) -2441: : _AT_Type::_S_ref(_M_elems, 0); -2441: } -2441: -2441: pointer -2441: data() noexcept -2441: { return _AT_Type::_S_ptr(_M_elems); } -2441: -2441: const_pointer -2441: data() const noexcept -2441: { return _AT_Type::_S_ptr(_M_elems); } -2441: }; -2441: # 250 "/usr/include/c++/8/array" 3 -2441: template -2441: inline bool -2441: operator==(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) -2441: { return std::equal(__one.begin(), __one.end(), __two.begin()); } -2441: -2441: template -2441: inline bool -2441: operator!=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) -2441: { return !(__one == __two); } -2441: -2441: template -2441: inline bool -2441: operator<(const array<_Tp, _Nm>& __a, const array<_Tp, _Nm>& __b) -2441: { -2441: return std::lexicographical_compare(__a.begin(), __a.end(), -2441: __b.begin(), __b.end()); -2441: } -2441: -2441: template -2441: inline bool -2441: operator>(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) -2441: { return __two < __one; } -2441: -2441: template -2441: inline bool -2441: operator<=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) -2441: { return !(__one > __two); } -2441: -2441: template -2441: inline bool -2441: operator>=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) -2441: { return !(__one < __two); } -2441: -2441: -2441: template -2441: inline -2441: -2441: -2441: typename enable_if< -2441: std::__array_traits<_Tp, _Nm>::_Is_swappable::value -2441: >::type -2441: -2441: -2441: -2441: swap(array<_Tp, _Nm>& __one, array<_Tp, _Nm>& __two) -2441: noexcept(noexcept(__one.swap(__two))) -2441: { __one.swap(__two); } -2441: -2441: -2441: template -2441: typename enable_if< -2441: !std::__array_traits<_Tp, _Nm>::_Is_swappable::value>::type -2441: swap(array<_Tp, _Nm>&, array<_Tp, _Nm>&) = delete; -2441: -2441: -2441: template -2441: constexpr _Tp& -2441: get(array<_Tp, _Nm>& __arr) noexcept -2441: { -2441: static_assert(_Int < _Nm, "array index is within bounds"); -2441: return std::__array_traits<_Tp, _Nm>:: -2441: _S_ref(__arr._M_elems, _Int); -2441: } -2441: -2441: template -2441: constexpr _Tp&& -2441: get(array<_Tp, _Nm>&& __arr) noexcept -2441: { -2441: static_assert(_Int < _Nm, "array index is within bounds"); -2441: return std::move(std::get<_Int>(__arr)); -2441: } -2441: -2441: template -2441: constexpr const _Tp& -2441: get(const array<_Tp, _Nm>& __arr) noexcept -2441: { -2441: static_assert(_Int < _Nm, "array index is within bounds"); -2441: return std::__array_traits<_Tp, _Nm>:: -2441: _S_ref(__arr._M_elems, _Int); -2441: } -2441: -2441: template -2441: constexpr const _Tp&& -2441: get(const array<_Tp, _Nm>&& __arr) noexcept -2441: { -2441: static_assert(_Int < _Nm, "array index is within bounds"); -2441: return std::move(std::get<_Int>(__arr)); -2441: } -2441: -2441: -2441: } -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct tuple_size; -2441: -2441: -2441: template -2441: struct tuple_size> -2441: : public integral_constant { }; -2441: -2441: -2441: template -2441: struct tuple_element; -2441: -2441: -2441: template -2441: struct tuple_element<_Int, std::array<_Tp, _Nm>> -2441: { -2441: static_assert(_Int < _Nm, "index is out of bounds"); -2441: typedef _Tp type; -2441: }; -2441: -2441: template -2441: struct __is_tuple_like_impl> : true_type -2441: { }; -2441: -2441: -2441: } -2441: # 40 "/usr/include/c++/8/tuple" 2 3 -2441: # 1 "/usr/include/c++/8/bits/uses_allocator.h" 1 3 -2441: # 35 "/usr/include/c++/8/bits/uses_allocator.h" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: struct __erased_type { }; -2441: -2441: template -2441: using __is_erased_or_convertible -2441: = __or_, is_convertible<_Alloc, _Tp>>; -2441: -2441: -2441: struct allocator_arg_t { explicit allocator_arg_t() = default; }; -2441: -2441: constexpr allocator_arg_t allocator_arg = -2441: allocator_arg_t(); -2441: -2441: template> -2441: struct __uses_allocator_helper -2441: : false_type { }; -2441: -2441: template -2441: struct __uses_allocator_helper<_Tp, _Alloc, -2441: __void_t> -2441: : __is_erased_or_convertible<_Alloc, typename _Tp::allocator_type>::type -2441: { }; -2441: -2441: -2441: template -2441: struct uses_allocator -2441: : __uses_allocator_helper<_Tp, _Alloc>::type -2441: { }; -2441: -2441: struct __uses_alloc_base { }; -2441: -2441: struct __uses_alloc0 : __uses_alloc_base -2441: { -2441: struct _Sink { void operator=(const void*) { } } _M_a; -2441: }; -2441: -2441: template -2441: struct __uses_alloc1 : __uses_alloc_base { const _Alloc* _M_a; }; -2441: -2441: template -2441: struct __uses_alloc2 : __uses_alloc_base { const _Alloc* _M_a; }; -2441: -2441: template -2441: struct __uses_alloc; -2441: -2441: template -2441: struct __uses_alloc -2441: : conditional< -2441: is_constructible<_Tp, allocator_arg_t, _Alloc, _Args...>::value, -2441: __uses_alloc1<_Alloc>, -2441: __uses_alloc2<_Alloc>>::type -2441: { -2441: static_assert(__or_< -2441: is_constructible<_Tp, allocator_arg_t, _Alloc, _Args...>, -2441: is_constructible<_Tp, _Args..., _Alloc>>::value, "construction with" -2441: " an allocator must be possible if uses_allocator is true"); -2441: }; -2441: -2441: template -2441: struct __uses_alloc -2441: : __uses_alloc0 { }; -2441: -2441: template -2441: using __uses_alloc_t = -2441: __uses_alloc::value, _Tp, _Alloc, _Args...>; -2441: -2441: template -2441: inline __uses_alloc_t<_Tp, _Alloc, _Args...> -2441: __use_alloc(const _Alloc& __a) -2441: { -2441: __uses_alloc_t<_Tp, _Alloc, _Args...> __ret; -2441: __ret._M_a = std::__addressof(__a); -2441: return __ret; -2441: } -2441: -2441: template -2441: void -2441: __use_alloc(const _Alloc&&) = delete; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template class _Predicate, -2441: typename _Tp, typename _Alloc, typename... _Args> -2441: struct __is_uses_allocator_predicate -2441: : conditional::value, -2441: __or_<_Predicate<_Tp, allocator_arg_t, _Alloc, _Args...>, -2441: _Predicate<_Tp, _Args..., _Alloc>>, -2441: _Predicate<_Tp, _Args...>>::type { }; -2441: -2441: template -2441: struct __is_uses_allocator_constructible -2441: : __is_uses_allocator_predicate -2441: { }; -2441: -2441: -2441: template -2441: constexpr bool __is_uses_allocator_constructible_v = -2441: __is_uses_allocator_constructible<_Tp, _Alloc, _Args...>::value; -2441: -2441: -2441: template -2441: struct __is_nothrow_uses_allocator_constructible -2441: : __is_uses_allocator_predicate -2441: { }; -2441: -2441: -2441: -2441: template -2441: constexpr bool -2441: __is_nothrow_uses_allocator_constructible_v = -2441: __is_nothrow_uses_allocator_constructible<_Tp, _Alloc, _Args...>::value; -2441: -2441: -2441: template -2441: void __uses_allocator_construct_impl(__uses_alloc0 __a, _Tp* __ptr, -2441: _Args&&... __args) -2441: { ::new ((void*)__ptr) _Tp(std::forward<_Args>(__args)...); } -2441: -2441: template -2441: void __uses_allocator_construct_impl(__uses_alloc1<_Alloc> __a, _Tp* __ptr, -2441: _Args&&... __args) -2441: { -2441: ::new ((void*)__ptr) _Tp(allocator_arg, *__a._M_a, -2441: std::forward<_Args>(__args)...); -2441: } -2441: -2441: template -2441: void __uses_allocator_construct_impl(__uses_alloc2<_Alloc> __a, _Tp* __ptr, -2441: _Args&&... __args) -2441: { ::new ((void*)__ptr) _Tp(std::forward<_Args>(__args)..., *__a._M_a); } -2441: -2441: template -2441: void __uses_allocator_construct(const _Alloc& __a, _Tp* __ptr, -2441: _Args&&... __args) -2441: { -2441: __uses_allocator_construct_impl(__use_alloc<_Tp, _Alloc, _Args...>(__a), -2441: __ptr, std::forward<_Args>(__args)...); -2441: } -2441: -2441: -2441: } -2441: # 41 "/usr/include/c++/8/tuple" 2 3 -2441: # 1 "/usr/include/c++/8/bits/invoke.h" 1 3 -2441: # 33 "/usr/include/c++/8/bits/invoke.h" 3 -2441: -2441: # 34 "/usr/include/c++/8/bits/invoke.h" 3 -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: # 52 "/usr/include/c++/8/bits/invoke.h" 3 -2441: template::type> -2441: constexpr _Up&& -2441: __invfwd(typename remove_reference<_Tp>::type& __t) noexcept -2441: { return static_cast<_Up&&>(__t); } -2441: -2441: template -2441: constexpr _Res -2441: __invoke_impl(__invoke_other, _Fn&& __f, _Args&&... __args) -2441: { return std::forward<_Fn>(__f)(std::forward<_Args>(__args)...); } -2441: -2441: template -2441: constexpr _Res -2441: __invoke_impl(__invoke_memfun_ref, _MemFun&& __f, _Tp&& __t, -2441: _Args&&... __args) -2441: { return (__invfwd<_Tp>(__t).*__f)(std::forward<_Args>(__args)...); } -2441: -2441: template -2441: constexpr _Res -2441: __invoke_impl(__invoke_memfun_deref, _MemFun&& __f, _Tp&& __t, -2441: _Args&&... __args) -2441: { -2441: return ((*std::forward<_Tp>(__t)).*__f)(std::forward<_Args>(__args)...); -2441: } -2441: -2441: template -2441: constexpr _Res -2441: __invoke_impl(__invoke_memobj_ref, _MemPtr&& __f, _Tp&& __t) -2441: { return __invfwd<_Tp>(__t).*__f; } -2441: -2441: template -2441: constexpr _Res -2441: __invoke_impl(__invoke_memobj_deref, _MemPtr&& __f, _Tp&& __t) -2441: { return (*std::forward<_Tp>(__t)).*__f; } -2441: -2441: -2441: template -2441: constexpr typename __invoke_result<_Callable, _Args...>::type -2441: __invoke(_Callable&& __fn, _Args&&... __args) -2441: noexcept(__is_nothrow_invocable<_Callable, _Args...>::value) -2441: { -2441: using __result = __invoke_result<_Callable, _Args...>; -2441: using __type = typename __result::type; -2441: using __tag = typename __result::__invoke_type; -2441: return std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn), -2441: std::forward<_Args>(__args)...); -2441: } -2441: -2441: -2441: } -2441: # 42 "/usr/include/c++/8/tuple" 2 3 -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: class tuple; -2441: -2441: template -2441: struct __is_empty_non_tuple : is_empty<_Tp> { }; -2441: -2441: -2441: template -2441: struct __is_empty_non_tuple> : false_type { }; -2441: -2441: -2441: template -2441: using __empty_not_final -2441: = typename conditional<__is_final(_Tp), false_type, -2441: __is_empty_non_tuple<_Tp>>::type; -2441: -2441: template::value> -2441: struct _Head_base; -2441: -2441: template -2441: struct _Head_base<_Idx, _Head, true> -2441: : public _Head -2441: { -2441: constexpr _Head_base() -2441: : _Head() { } -2441: -2441: constexpr _Head_base(const _Head& __h) -2441: : _Head(__h) { } -2441: -2441: constexpr _Head_base(const _Head_base&) = default; -2441: constexpr _Head_base(_Head_base&&) = default; -2441: -2441: template -2441: constexpr _Head_base(_UHead&& __h) -2441: : _Head(std::forward<_UHead>(__h)) { } -2441: -2441: _Head_base(allocator_arg_t, __uses_alloc0) -2441: : _Head() { } -2441: -2441: template -2441: _Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a) -2441: : _Head(allocator_arg, *__a._M_a) { } -2441: -2441: template -2441: _Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a) -2441: : _Head(*__a._M_a) { } -2441: -2441: template -2441: _Head_base(__uses_alloc0, _UHead&& __uhead) -2441: : _Head(std::forward<_UHead>(__uhead)) { } -2441: -2441: template -2441: _Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead) -2441: : _Head(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead)) { } -2441: -2441: template -2441: _Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead) -2441: : _Head(std::forward<_UHead>(__uhead), *__a._M_a) { } -2441: -2441: static constexpr _Head& -2441: _M_head(_Head_base& __b) noexcept { return __b; } -2441: -2441: static constexpr const _Head& -2441: _M_head(const _Head_base& __b) noexcept { return __b; } -2441: }; -2441: -2441: template -2441: struct _Head_base<_Idx, _Head, false> -2441: { -2441: constexpr _Head_base() -2441: : _M_head_impl() { } -2441: -2441: constexpr _Head_base(const _Head& __h) -2441: : _M_head_impl(__h) { } -2441: -2441: constexpr _Head_base(const _Head_base&) = default; -2441: constexpr _Head_base(_Head_base&&) = default; -2441: -2441: template -2441: constexpr _Head_base(_UHead&& __h) -2441: : _M_head_impl(std::forward<_UHead>(__h)) { } -2441: -2441: _Head_base(allocator_arg_t, __uses_alloc0) -2441: : _M_head_impl() { } -2441: -2441: template -2441: _Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a) -2441: : _M_head_impl(allocator_arg, *__a._M_a) { } -2441: -2441: template -2441: _Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a) -2441: : _M_head_impl(*__a._M_a) { } -2441: -2441: template -2441: _Head_base(__uses_alloc0, _UHead&& __uhead) -2441: : _M_head_impl(std::forward<_UHead>(__uhead)) { } -2441: -2441: template -2441: _Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead) -2441: : _M_head_impl(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead)) -2441: { } -2441: -2441: template -2441: _Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead) -2441: : _M_head_impl(std::forward<_UHead>(__uhead), *__a._M_a) { } -2441: -2441: static constexpr _Head& -2441: _M_head(_Head_base& __b) noexcept { return __b._M_head_impl; } -2441: -2441: static constexpr const _Head& -2441: _M_head(const _Head_base& __b) noexcept { return __b._M_head_impl; } -2441: -2441: _Head _M_head_impl; -2441: }; -2441: # 176 "/usr/include/c++/8/tuple" 3 -2441: template -2441: struct _Tuple_impl; -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct _Tuple_impl<_Idx, _Head, _Tail...> -2441: : public _Tuple_impl<_Idx + 1, _Tail...>, -2441: private _Head_base<_Idx, _Head> -2441: { -2441: template friend class _Tuple_impl; -2441: -2441: typedef _Tuple_impl<_Idx + 1, _Tail...> _Inherited; -2441: typedef _Head_base<_Idx, _Head> _Base; -2441: -2441: static constexpr _Head& -2441: _M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } -2441: -2441: static constexpr const _Head& -2441: _M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } -2441: -2441: static constexpr _Inherited& -2441: _M_tail(_Tuple_impl& __t) noexcept { return __t; } -2441: -2441: static constexpr const _Inherited& -2441: _M_tail(const _Tuple_impl& __t) noexcept { return __t; } -2441: -2441: constexpr _Tuple_impl() -2441: : _Inherited(), _Base() { } -2441: -2441: explicit -2441: constexpr _Tuple_impl(const _Head& __head, const _Tail&... __tail) -2441: : _Inherited(__tail...), _Base(__head) { } -2441: -2441: template::type> -2441: explicit -2441: constexpr _Tuple_impl(_UHead&& __head, _UTail&&... __tail) -2441: : _Inherited(std::forward<_UTail>(__tail)...), -2441: _Base(std::forward<_UHead>(__head)) { } -2441: -2441: constexpr _Tuple_impl(const _Tuple_impl&) = default; -2441: -2441: constexpr -2441: _Tuple_impl(_Tuple_impl&& __in) -2441: noexcept(__and_, -2441: is_nothrow_move_constructible<_Inherited>>::value) -2441: : _Inherited(std::move(_M_tail(__in))), -2441: _Base(std::forward<_Head>(_M_head(__in))) { } -2441: -2441: template -2441: constexpr _Tuple_impl(const _Tuple_impl<_Idx, _UElements...>& __in) -2441: : _Inherited(_Tuple_impl<_Idx, _UElements...>::_M_tail(__in)), -2441: _Base(_Tuple_impl<_Idx, _UElements...>::_M_head(__in)) { } -2441: -2441: template -2441: constexpr _Tuple_impl(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in) -2441: : _Inherited(std::move -2441: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))), -2441: _Base(std::forward<_UHead> -2441: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in))) { } -2441: -2441: template -2441: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a) -2441: : _Inherited(__tag, __a), -2441: _Base(__tag, __use_alloc<_Head>(__a)) { } -2441: -2441: template -2441: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, -2441: const _Head& __head, const _Tail&... __tail) -2441: : _Inherited(__tag, __a, __tail...), -2441: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), __head) { } -2441: -2441: template::type> -2441: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, -2441: _UHead&& __head, _UTail&&... __tail) -2441: : _Inherited(__tag, __a, std::forward<_UTail>(__tail)...), -2441: _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), -2441: std::forward<_UHead>(__head)) { } -2441: -2441: template -2441: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, -2441: const _Tuple_impl& __in) -2441: : _Inherited(__tag, __a, _M_tail(__in)), -2441: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), _M_head(__in)) { } -2441: -2441: template -2441: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, -2441: _Tuple_impl&& __in) -2441: : _Inherited(__tag, __a, std::move(_M_tail(__in))), -2441: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), -2441: std::forward<_Head>(_M_head(__in))) { } -2441: -2441: template -2441: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, -2441: const _Tuple_impl<_Idx, _UElements...>& __in) -2441: : _Inherited(__tag, __a, -2441: _Tuple_impl<_Idx, _UElements...>::_M_tail(__in)), -2441: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), -2441: _Tuple_impl<_Idx, _UElements...>::_M_head(__in)) { } -2441: -2441: template -2441: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, -2441: _Tuple_impl<_Idx, _UHead, _UTails...>&& __in) -2441: : _Inherited(__tag, __a, std::move -2441: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))), -2441: _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), -2441: std::forward<_UHead> -2441: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in))) { } -2441: -2441: _Tuple_impl& -2441: operator=(const _Tuple_impl& __in) -2441: { -2441: _M_head(*this) = _M_head(__in); -2441: _M_tail(*this) = _M_tail(__in); -2441: return *this; -2441: } -2441: -2441: _Tuple_impl& -2441: operator=(_Tuple_impl&& __in) -2441: noexcept(__and_, -2441: is_nothrow_move_assignable<_Inherited>>::value) -2441: { -2441: _M_head(*this) = std::forward<_Head>(_M_head(__in)); -2441: _M_tail(*this) = std::move(_M_tail(__in)); -2441: return *this; -2441: } -2441: -2441: template -2441: _Tuple_impl& -2441: operator=(const _Tuple_impl<_Idx, _UElements...>& __in) -2441: { -2441: _M_head(*this) = _Tuple_impl<_Idx, _UElements...>::_M_head(__in); -2441: _M_tail(*this) = _Tuple_impl<_Idx, _UElements...>::_M_tail(__in); -2441: return *this; -2441: } -2441: -2441: template -2441: _Tuple_impl& -2441: operator=(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in) -2441: { -2441: _M_head(*this) = std::forward<_UHead> -2441: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in)); -2441: _M_tail(*this) = std::move -2441: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in)); -2441: return *this; -2441: } -2441: -2441: protected: -2441: void -2441: _M_swap(_Tuple_impl& __in) -2441: noexcept(__is_nothrow_swappable<_Head>::value -2441: && noexcept(_M_tail(__in)._M_swap(_M_tail(__in)))) -2441: { -2441: using std::swap; -2441: swap(_M_head(*this), _M_head(__in)); -2441: _Inherited::_M_swap(_M_tail(__in)); -2441: } -2441: }; -2441: -2441: -2441: template -2441: struct _Tuple_impl<_Idx, _Head> -2441: : private _Head_base<_Idx, _Head> -2441: { -2441: template friend class _Tuple_impl; -2441: -2441: typedef _Head_base<_Idx, _Head> _Base; -2441: -2441: static constexpr _Head& -2441: _M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } -2441: -2441: static constexpr const _Head& -2441: _M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } -2441: -2441: constexpr _Tuple_impl() -2441: : _Base() { } -2441: -2441: explicit -2441: constexpr _Tuple_impl(const _Head& __head) -2441: : _Base(__head) { } -2441: -2441: template -2441: explicit -2441: constexpr _Tuple_impl(_UHead&& __head) -2441: : _Base(std::forward<_UHead>(__head)) { } -2441: -2441: constexpr _Tuple_impl(const _Tuple_impl&) = default; -2441: -2441: constexpr -2441: _Tuple_impl(_Tuple_impl&& __in) -2441: noexcept(is_nothrow_move_constructible<_Head>::value) -2441: : _Base(std::forward<_Head>(_M_head(__in))) { } -2441: -2441: template -2441: constexpr _Tuple_impl(const _Tuple_impl<_Idx, _UHead>& __in) -2441: : _Base(_Tuple_impl<_Idx, _UHead>::_M_head(__in)) { } -2441: -2441: template -2441: constexpr _Tuple_impl(_Tuple_impl<_Idx, _UHead>&& __in) -2441: : _Base(std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in))) -2441: { } -2441: -2441: template -2441: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a) -2441: : _Base(__tag, __use_alloc<_Head>(__a)) { } -2441: -2441: template -2441: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, -2441: const _Head& __head) -2441: : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), __head) { } -2441: -2441: template -2441: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, -2441: _UHead&& __head) -2441: : _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), -2441: std::forward<_UHead>(__head)) { } -2441: -2441: template -2441: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, -2441: const _Tuple_impl& __in) -2441: : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), _M_head(__in)) { } -2441: -2441: template -2441: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, -2441: _Tuple_impl&& __in) -2441: : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), -2441: std::forward<_Head>(_M_head(__in))) { } -2441: -2441: template -2441: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, -2441: const _Tuple_impl<_Idx, _UHead>& __in) -2441: : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), -2441: _Tuple_impl<_Idx, _UHead>::_M_head(__in)) { } -2441: -2441: template -2441: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, -2441: _Tuple_impl<_Idx, _UHead>&& __in) -2441: : _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), -2441: std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in))) -2441: { } -2441: -2441: _Tuple_impl& -2441: operator=(const _Tuple_impl& __in) -2441: { -2441: _M_head(*this) = _M_head(__in); -2441: return *this; -2441: } -2441: -2441: _Tuple_impl& -2441: operator=(_Tuple_impl&& __in) -2441: noexcept(is_nothrow_move_assignable<_Head>::value) -2441: { -2441: _M_head(*this) = std::forward<_Head>(_M_head(__in)); -2441: return *this; -2441: } -2441: -2441: template -2441: _Tuple_impl& -2441: operator=(const _Tuple_impl<_Idx, _UHead>& __in) -2441: { -2441: _M_head(*this) = _Tuple_impl<_Idx, _UHead>::_M_head(__in); -2441: return *this; -2441: } -2441: -2441: template -2441: _Tuple_impl& -2441: operator=(_Tuple_impl<_Idx, _UHead>&& __in) -2441: { -2441: _M_head(*this) -2441: = std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in)); -2441: return *this; -2441: } -2441: -2441: protected: -2441: void -2441: _M_swap(_Tuple_impl& __in) -2441: noexcept(__is_nothrow_swappable<_Head>::value) -2441: { -2441: using std::swap; -2441: swap(_M_head(*this), _M_head(__in)); -2441: } -2441: }; -2441: -2441: -2441: -2441: template -2441: struct _TC -2441: { -2441: template -2441: static constexpr bool _ConstructibleTuple() -2441: { -2441: return __and_...>::value; -2441: } -2441: -2441: template -2441: static constexpr bool _ImplicitlyConvertibleTuple() -2441: { -2441: return __and_...>::value; -2441: } -2441: -2441: template -2441: static constexpr bool _MoveConstructibleTuple() -2441: { -2441: return __and_...>::value; -2441: } -2441: -2441: template -2441: static constexpr bool _ImplicitlyMoveConvertibleTuple() -2441: { -2441: return __and_...>::value; -2441: } -2441: -2441: template -2441: static constexpr bool _NonNestedTuple() -2441: { -2441: return __and_<__not_, -2441: typename remove_cv< -2441: typename remove_reference<_SrcTuple>::type -2441: >::type>>, -2441: __not_>, -2441: __not_> -2441: >::value; -2441: } -2441: template -2441: static constexpr bool _NotSameTuple() -2441: { -2441: return __not_, -2441: typename remove_const< -2441: typename remove_reference<_UElements...>::type -2441: >::type>>::value; -2441: } -2441: }; -2441: -2441: template -2441: struct _TC -2441: { -2441: template -2441: static constexpr bool _ConstructibleTuple() -2441: { -2441: return false; -2441: } -2441: -2441: template -2441: static constexpr bool _ImplicitlyConvertibleTuple() -2441: { -2441: return false; -2441: } -2441: -2441: template -2441: static constexpr bool _MoveConstructibleTuple() -2441: { -2441: return false; -2441: } -2441: -2441: template -2441: static constexpr bool _ImplicitlyMoveConvertibleTuple() -2441: { -2441: return false; -2441: } -2441: -2441: template -2441: static constexpr bool _NonNestedTuple() -2441: { -2441: return true; -2441: } -2441: template -2441: static constexpr bool _NotSameTuple() -2441: { -2441: return true; -2441: } -2441: }; -2441: -2441: -2441: template -2441: class tuple : public _Tuple_impl<0, _Elements...> -2441: { -2441: typedef _Tuple_impl<0, _Elements...> _Inherited; -2441: -2441: -2441: -2441: template -2441: struct _TC2 -2441: { -2441: static constexpr bool _DefaultConstructibleTuple() -2441: { -2441: return __and_...>::value; -2441: } -2441: static constexpr bool _ImplicitlyDefaultConstructibleTuple() -2441: { -2441: return __and_<__is_implicitly_default_constructible<_Elements>...> -2441: ::value; -2441: } -2441: }; -2441: -2441: public: -2441: template:: -2441: _ImplicitlyDefaultConstructibleTuple(), -2441: bool>::type = true> -2441: constexpr tuple() -2441: : _Inherited() { } -2441: -2441: template:: -2441: _DefaultConstructibleTuple() -2441: && -2441: !_TC2<_Dummy>:: -2441: _ImplicitlyDefaultConstructibleTuple(), -2441: bool>::type = false> -2441: explicit constexpr tuple() -2441: : _Inherited() { } -2441: -2441: -2441: -2441: template using _TCC = -2441: _TC::value, -2441: _Elements...>; -2441: -2441: template::template -2441: _ConstructibleTuple<_Elements...>() -2441: && _TCC<_Dummy>::template -2441: _ImplicitlyConvertibleTuple<_Elements...>() -2441: && (sizeof...(_Elements) >= 1), -2441: bool>::type=true> -2441: constexpr tuple(const _Elements&... __elements) -2441: : _Inherited(__elements...) { } -2441: -2441: template::template -2441: _ConstructibleTuple<_Elements...>() -2441: && !_TCC<_Dummy>::template -2441: _ImplicitlyConvertibleTuple<_Elements...>() -2441: && (sizeof...(_Elements) >= 1), -2441: bool>::type=false> -2441: explicit constexpr tuple(const _Elements&... __elements) -2441: : _Inherited(__elements...) { } -2441: -2441: -2441: -2441: template using _TMC = -2441: _TC<(sizeof...(_Elements) == sizeof...(_UElements)) -2441: && (_TC<(sizeof...(_UElements)==1), _Elements...>:: -2441: template _NotSameTuple<_UElements...>()), -2441: _Elements...>; -2441: -2441: -2441: -2441: template using _TMCT = -2441: _TC<(sizeof...(_Elements) == sizeof...(_UElements)) -2441: && !is_same, -2441: tuple<_UElements...>>::value, -2441: _Elements...>; -2441: -2441: template::template -2441: _MoveConstructibleTuple<_UElements...>() -2441: && _TMC<_UElements...>::template -2441: _ImplicitlyMoveConvertibleTuple<_UElements...>() -2441: && (sizeof...(_Elements) >= 1), -2441: bool>::type=true> -2441: constexpr tuple(_UElements&&... __elements) -2441: : _Inherited(std::forward<_UElements>(__elements)...) { } -2441: -2441: template::template -2441: _MoveConstructibleTuple<_UElements...>() -2441: && !_TMC<_UElements...>::template -2441: _ImplicitlyMoveConvertibleTuple<_UElements...>() -2441: && (sizeof...(_Elements) >= 1), -2441: bool>::type=false> -2441: explicit constexpr tuple(_UElements&&... __elements) -2441: : _Inherited(std::forward<_UElements>(__elements)...) { } -2441: -2441: constexpr tuple(const tuple&) = default; -2441: -2441: constexpr tuple(tuple&&) = default; -2441: -2441: -2441: -2441: template using _TNTC = -2441: _TC::value && sizeof...(_Elements) == 1, -2441: _Elements...>; -2441: -2441: template::template -2441: _ConstructibleTuple<_UElements...>() -2441: && _TMCT<_UElements...>::template -2441: _ImplicitlyConvertibleTuple<_UElements...>() -2441: && _TNTC<_Dummy>::template -2441: _NonNestedTuple&>(), -2441: bool>::type=true> -2441: constexpr tuple(const tuple<_UElements...>& __in) -2441: : _Inherited(static_cast&>(__in)) -2441: { } -2441: -2441: template::template -2441: _ConstructibleTuple<_UElements...>() -2441: && !_TMCT<_UElements...>::template -2441: _ImplicitlyConvertibleTuple<_UElements...>() -2441: && _TNTC<_Dummy>::template -2441: _NonNestedTuple&>(), -2441: bool>::type=false> -2441: explicit constexpr tuple(const tuple<_UElements...>& __in) -2441: : _Inherited(static_cast&>(__in)) -2441: { } -2441: -2441: template::template -2441: _MoveConstructibleTuple<_UElements...>() -2441: && _TMCT<_UElements...>::template -2441: _ImplicitlyMoveConvertibleTuple<_UElements...>() -2441: && _TNTC<_Dummy>::template -2441: _NonNestedTuple&&>(), -2441: bool>::type=true> -2441: constexpr tuple(tuple<_UElements...>&& __in) -2441: : _Inherited(static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) { } -2441: -2441: template::template -2441: _MoveConstructibleTuple<_UElements...>() -2441: && !_TMCT<_UElements...>::template -2441: _ImplicitlyMoveConvertibleTuple<_UElements...>() -2441: && _TNTC<_Dummy>::template -2441: _NonNestedTuple&&>(), -2441: bool>::type=false> -2441: explicit constexpr tuple(tuple<_UElements...>&& __in) -2441: : _Inherited(static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) { } -2441: -2441: -2441: -2441: template -2441: tuple(allocator_arg_t __tag, const _Alloc& __a) -2441: : _Inherited(__tag, __a) { } -2441: -2441: template::template -2441: _ConstructibleTuple<_Elements...>() -2441: && _TCC<_Dummy>::template -2441: _ImplicitlyConvertibleTuple<_Elements...>(), -2441: bool>::type=true> -2441: tuple(allocator_arg_t __tag, const _Alloc& __a, -2441: const _Elements&... __elements) -2441: : _Inherited(__tag, __a, __elements...) { } -2441: -2441: template::template -2441: _ConstructibleTuple<_Elements...>() -2441: && !_TCC<_Dummy>::template -2441: _ImplicitlyConvertibleTuple<_Elements...>(), -2441: bool>::type=false> -2441: explicit tuple(allocator_arg_t __tag, const _Alloc& __a, -2441: const _Elements&... __elements) -2441: : _Inherited(__tag, __a, __elements...) { } -2441: -2441: template::template -2441: _MoveConstructibleTuple<_UElements...>() -2441: && _TMC<_UElements...>::template -2441: _ImplicitlyMoveConvertibleTuple<_UElements...>(), -2441: bool>::type=true> -2441: tuple(allocator_arg_t __tag, const _Alloc& __a, -2441: _UElements&&... __elements) -2441: : _Inherited(__tag, __a, std::forward<_UElements>(__elements)...) -2441: { } -2441: -2441: template::template -2441: _MoveConstructibleTuple<_UElements...>() -2441: && !_TMC<_UElements...>::template -2441: _ImplicitlyMoveConvertibleTuple<_UElements...>(), -2441: bool>::type=false> -2441: explicit tuple(allocator_arg_t __tag, const _Alloc& __a, -2441: _UElements&&... __elements) -2441: : _Inherited(__tag, __a, std::forward<_UElements>(__elements)...) -2441: { } -2441: -2441: template -2441: tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in) -2441: : _Inherited(__tag, __a, static_cast(__in)) { } -2441: -2441: template -2441: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in) -2441: : _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { } -2441: -2441: template::template -2441: _ConstructibleTuple<_UElements...>() -2441: && _TMCT<_UElements...>::template -2441: _ImplicitlyConvertibleTuple<_UElements...>() -2441: && _TNTC<_Dummy>::template -2441: _NonNestedTuple&&>(), -2441: bool>::type=true> -2441: tuple(allocator_arg_t __tag, const _Alloc& __a, -2441: const tuple<_UElements...>& __in) -2441: : _Inherited(__tag, __a, -2441: static_cast&>(__in)) -2441: { } -2441: -2441: template::template -2441: _ConstructibleTuple<_UElements...>() -2441: && !_TMCT<_UElements...>::template -2441: _ImplicitlyConvertibleTuple<_UElements...>() -2441: && _TNTC<_Dummy>::template -2441: _NonNestedTuple&&>(), -2441: bool>::type=false> -2441: explicit tuple(allocator_arg_t __tag, const _Alloc& __a, -2441: const tuple<_UElements...>& __in) -2441: : _Inherited(__tag, __a, -2441: static_cast&>(__in)) -2441: { } -2441: -2441: template::template -2441: _MoveConstructibleTuple<_UElements...>() -2441: && _TMCT<_UElements...>::template -2441: _ImplicitlyMoveConvertibleTuple<_UElements...>() -2441: && _TNTC<_Dummy>::template -2441: _NonNestedTuple&&>(), -2441: bool>::type=true> -2441: tuple(allocator_arg_t __tag, const _Alloc& __a, -2441: tuple<_UElements...>&& __in) -2441: : _Inherited(__tag, __a, -2441: static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) -2441: { } -2441: -2441: template::template -2441: _MoveConstructibleTuple<_UElements...>() -2441: && !_TMCT<_UElements...>::template -2441: _ImplicitlyMoveConvertibleTuple<_UElements...>() -2441: && _TNTC<_Dummy>::template -2441: _NonNestedTuple&&>(), -2441: bool>::type=false> -2441: explicit tuple(allocator_arg_t __tag, const _Alloc& __a, -2441: tuple<_UElements...>&& __in) -2441: : _Inherited(__tag, __a, -2441: static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) -2441: { } -2441: -2441: tuple& -2441: operator=(const tuple& __in) -2441: { -2441: static_cast<_Inherited&>(*this) = __in; -2441: return *this; -2441: } -2441: -2441: tuple& -2441: operator=(tuple&& __in) -2441: noexcept(is_nothrow_move_assignable<_Inherited>::value) -2441: { -2441: static_cast<_Inherited&>(*this) = std::move(__in); -2441: return *this; -2441: } -2441: -2441: template -2441: typename -2441: enable_if::type -2441: operator=(const tuple<_UElements...>& __in) -2441: { -2441: static_cast<_Inherited&>(*this) = __in; -2441: return *this; -2441: } -2441: -2441: template -2441: typename -2441: enable_if::type -2441: operator=(tuple<_UElements...>&& __in) -2441: { -2441: static_cast<_Inherited&>(*this) = std::move(__in); -2441: return *this; -2441: } -2441: -2441: void -2441: swap(tuple& __in) -2441: noexcept(noexcept(__in._M_swap(__in))) -2441: { _Inherited::_M_swap(__in); } -2441: }; -2441: # 889 "/usr/include/c++/8/tuple" 3 -2441: template<> -2441: class tuple<> -2441: { -2441: public: -2441: void swap(tuple&) noexcept { } -2441: -2441: -2441: tuple() = default; -2441: -2441: template -2441: tuple(allocator_arg_t, const _Alloc&) { } -2441: template -2441: tuple(allocator_arg_t, const _Alloc&, const tuple&) { } -2441: }; -2441: -2441: -2441: -2441: template -2441: class tuple<_T1, _T2> : public _Tuple_impl<0, _T1, _T2> -2441: { -2441: typedef _Tuple_impl<0, _T1, _T2> _Inherited; -2441: -2441: public: -2441: template , -2441: __is_implicitly_default_constructible<_U2>> -2441: ::value, bool>::type = true> -2441: -2441: constexpr tuple() -2441: : _Inherited() { } -2441: -2441: template , -2441: is_default_constructible<_U2>, -2441: __not_< -2441: __and_<__is_implicitly_default_constructible<_U1>, -2441: __is_implicitly_default_constructible<_U2>>>> -2441: ::value, bool>::type = false> -2441: -2441: explicit constexpr tuple() -2441: : _Inherited() { } -2441: -2441: -2441: -2441: template using _TCC = -2441: _TC::value, _T1, _T2>; -2441: -2441: template::template -2441: _ConstructibleTuple<_T1, _T2>() -2441: && _TCC<_Dummy>::template -2441: _ImplicitlyConvertibleTuple<_T1, _T2>(), -2441: bool>::type = true> -2441: constexpr tuple(const _T1& __a1, const _T2& __a2) -2441: : _Inherited(__a1, __a2) { } -2441: -2441: template::template -2441: _ConstructibleTuple<_T1, _T2>() -2441: && !_TCC<_Dummy>::template -2441: _ImplicitlyConvertibleTuple<_T1, _T2>(), -2441: bool>::type = false> -2441: explicit constexpr tuple(const _T1& __a1, const _T2& __a2) -2441: : _Inherited(__a1, __a2) { } -2441: -2441: -2441: -2441: using _TMC = _TC; -2441: -2441: template() -2441: && _TMC::template -2441: _ImplicitlyMoveConvertibleTuple<_U1, _U2>() -2441: && !is_same::type, -2441: allocator_arg_t>::value, -2441: bool>::type = true> -2441: constexpr tuple(_U1&& __a1, _U2&& __a2) -2441: : _Inherited(std::forward<_U1>(__a1), std::forward<_U2>(__a2)) { } -2441: -2441: template() -2441: && !_TMC::template -2441: _ImplicitlyMoveConvertibleTuple<_U1, _U2>() -2441: && !is_same::type, -2441: allocator_arg_t>::value, -2441: bool>::type = false> -2441: explicit constexpr tuple(_U1&& __a1, _U2&& __a2) -2441: : _Inherited(std::forward<_U1>(__a1), std::forward<_U2>(__a2)) { } -2441: -2441: constexpr tuple(const tuple&) = default; -2441: -2441: constexpr tuple(tuple&&) = default; -2441: -2441: template() -2441: && _TMC::template -2441: _ImplicitlyConvertibleTuple<_U1, _U2>(), -2441: bool>::type = true> -2441: constexpr tuple(const tuple<_U1, _U2>& __in) -2441: : _Inherited(static_cast&>(__in)) { } -2441: -2441: template() -2441: && !_TMC::template -2441: _ImplicitlyConvertibleTuple<_U1, _U2>(), -2441: bool>::type = false> -2441: explicit constexpr tuple(const tuple<_U1, _U2>& __in) -2441: : _Inherited(static_cast&>(__in)) { } -2441: -2441: template() -2441: && _TMC::template -2441: _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), -2441: bool>::type = true> -2441: constexpr tuple(tuple<_U1, _U2>&& __in) -2441: : _Inherited(static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) { } -2441: -2441: template() -2441: && !_TMC::template -2441: _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), -2441: bool>::type = false> -2441: explicit constexpr tuple(tuple<_U1, _U2>&& __in) -2441: : _Inherited(static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) { } -2441: -2441: template() -2441: && _TMC::template -2441: _ImplicitlyConvertibleTuple<_U1, _U2>(), -2441: bool>::type = true> -2441: constexpr tuple(const pair<_U1, _U2>& __in) -2441: : _Inherited(__in.first, __in.second) { } -2441: -2441: template() -2441: && !_TMC::template -2441: _ImplicitlyConvertibleTuple<_U1, _U2>(), -2441: bool>::type = false> -2441: explicit constexpr tuple(const pair<_U1, _U2>& __in) -2441: : _Inherited(__in.first, __in.second) { } -2441: -2441: template() -2441: && _TMC::template -2441: _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), -2441: bool>::type = true> -2441: constexpr tuple(pair<_U1, _U2>&& __in) -2441: : _Inherited(std::forward<_U1>(__in.first), -2441: std::forward<_U2>(__in.second)) { } -2441: -2441: template() -2441: && !_TMC::template -2441: _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), -2441: bool>::type = false> -2441: explicit constexpr tuple(pair<_U1, _U2>&& __in) -2441: : _Inherited(std::forward<_U1>(__in.first), -2441: std::forward<_U2>(__in.second)) { } -2441: -2441: -2441: -2441: template -2441: tuple(allocator_arg_t __tag, const _Alloc& __a) -2441: : _Inherited(__tag, __a) { } -2441: -2441: template::template -2441: _ConstructibleTuple<_T1, _T2>() -2441: && _TCC<_Dummy>::template -2441: _ImplicitlyConvertibleTuple<_T1, _T2>(), -2441: bool>::type=true> -2441: -2441: tuple(allocator_arg_t __tag, const _Alloc& __a, -2441: const _T1& __a1, const _T2& __a2) -2441: : _Inherited(__tag, __a, __a1, __a2) { } -2441: -2441: template::template -2441: _ConstructibleTuple<_T1, _T2>() -2441: && !_TCC<_Dummy>::template -2441: _ImplicitlyConvertibleTuple<_T1, _T2>(), -2441: bool>::type=false> -2441: -2441: explicit tuple(allocator_arg_t __tag, const _Alloc& __a, -2441: const _T1& __a1, const _T2& __a2) -2441: : _Inherited(__tag, __a, __a1, __a2) { } -2441: -2441: template() -2441: && _TMC::template -2441: _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), -2441: bool>::type = true> -2441: tuple(allocator_arg_t __tag, const _Alloc& __a, _U1&& __a1, _U2&& __a2) -2441: : _Inherited(__tag, __a, std::forward<_U1>(__a1), -2441: std::forward<_U2>(__a2)) { } -2441: -2441: template() -2441: && !_TMC::template -2441: _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), -2441: bool>::type = false> -2441: explicit tuple(allocator_arg_t __tag, const _Alloc& __a, -2441: _U1&& __a1, _U2&& __a2) -2441: : _Inherited(__tag, __a, std::forward<_U1>(__a1), -2441: std::forward<_U2>(__a2)) { } -2441: -2441: template -2441: tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in) -2441: : _Inherited(__tag, __a, static_cast(__in)) { } -2441: -2441: template -2441: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in) -2441: : _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { } -2441: -2441: template() -2441: && _TMC::template -2441: _ImplicitlyConvertibleTuple<_U1, _U2>(), -2441: bool>::type = true> -2441: tuple(allocator_arg_t __tag, const _Alloc& __a, -2441: const tuple<_U1, _U2>& __in) -2441: : _Inherited(__tag, __a, -2441: static_cast&>(__in)) -2441: { } -2441: -2441: template() -2441: && !_TMC::template -2441: _ImplicitlyConvertibleTuple<_U1, _U2>(), -2441: bool>::type = false> -2441: explicit tuple(allocator_arg_t __tag, const _Alloc& __a, -2441: const tuple<_U1, _U2>& __in) -2441: : _Inherited(__tag, __a, -2441: static_cast&>(__in)) -2441: { } -2441: -2441: template() -2441: && _TMC::template -2441: _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), -2441: bool>::type = true> -2441: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple<_U1, _U2>&& __in) -2441: : _Inherited(__tag, __a, static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) -2441: { } -2441: -2441: template() -2441: && !_TMC::template -2441: _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), -2441: bool>::type = false> -2441: explicit tuple(allocator_arg_t __tag, const _Alloc& __a, -2441: tuple<_U1, _U2>&& __in) -2441: : _Inherited(__tag, __a, static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) -2441: { } -2441: -2441: template() -2441: && _TMC::template -2441: _ImplicitlyConvertibleTuple<_U1, _U2>(), -2441: bool>::type = true> -2441: tuple(allocator_arg_t __tag, const _Alloc& __a, -2441: const pair<_U1, _U2>& __in) -2441: : _Inherited(__tag, __a, __in.first, __in.second) { } -2441: -2441: template() -2441: && !_TMC::template -2441: _ImplicitlyConvertibleTuple<_U1, _U2>(), -2441: bool>::type = false> -2441: explicit tuple(allocator_arg_t __tag, const _Alloc& __a, -2441: const pair<_U1, _U2>& __in) -2441: : _Inherited(__tag, __a, __in.first, __in.second) { } -2441: -2441: template() -2441: && _TMC::template -2441: _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), -2441: bool>::type = true> -2441: tuple(allocator_arg_t __tag, const _Alloc& __a, pair<_U1, _U2>&& __in) -2441: : _Inherited(__tag, __a, std::forward<_U1>(__in.first), -2441: std::forward<_U2>(__in.second)) { } -2441: -2441: template() -2441: && !_TMC::template -2441: _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), -2441: bool>::type = false> -2441: explicit tuple(allocator_arg_t __tag, const _Alloc& __a, -2441: pair<_U1, _U2>&& __in) -2441: : _Inherited(__tag, __a, std::forward<_U1>(__in.first), -2441: std::forward<_U2>(__in.second)) { } -2441: -2441: tuple& -2441: operator=(const tuple& __in) -2441: { -2441: static_cast<_Inherited&>(*this) = __in; -2441: return *this; -2441: } -2441: -2441: tuple& -2441: operator=(tuple&& __in) -2441: noexcept(is_nothrow_move_assignable<_Inherited>::value) -2441: { -2441: static_cast<_Inherited&>(*this) = std::move(__in); -2441: return *this; -2441: } -2441: -2441: template -2441: tuple& -2441: operator=(const tuple<_U1, _U2>& __in) -2441: { -2441: static_cast<_Inherited&>(*this) = __in; -2441: return *this; -2441: } -2441: -2441: template -2441: tuple& -2441: operator=(tuple<_U1, _U2>&& __in) -2441: { -2441: static_cast<_Inherited&>(*this) = std::move(__in); -2441: return *this; -2441: } -2441: -2441: template -2441: tuple& -2441: operator=(const pair<_U1, _U2>& __in) -2441: { -2441: this->_M_head(*this) = __in.first; -2441: this->_M_tail(*this)._M_head(*this) = __in.second; -2441: return *this; -2441: } -2441: -2441: template -2441: tuple& -2441: operator=(pair<_U1, _U2>&& __in) -2441: { -2441: this->_M_head(*this) = std::forward<_U1>(__in.first); -2441: this->_M_tail(*this)._M_head(*this) = std::forward<_U2>(__in.second); -2441: return *this; -2441: } -2441: -2441: void -2441: swap(tuple& __in) -2441: noexcept(noexcept(__in._M_swap(__in))) -2441: { _Inherited::_M_swap(__in); } -2441: }; -2441: -2441: -2441: -2441: template -2441: struct tuple_size> -2441: : public integral_constant { }; -2441: # 1278 "/usr/include/c++/8/tuple" 3 -2441: template -2441: struct tuple_element<__i, tuple<_Head, _Tail...> > -2441: : tuple_element<__i - 1, tuple<_Tail...> > { }; -2441: -2441: -2441: -2441: -2441: template -2441: struct tuple_element<0, tuple<_Head, _Tail...> > -2441: { -2441: typedef _Head type; -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: struct tuple_element<__i, tuple<>> -2441: { -2441: static_assert(__i < tuple_size>::value, -2441: "tuple index is in range"); -2441: }; -2441: -2441: template -2441: constexpr _Head& -2441: __get_helper(_Tuple_impl<__i, _Head, _Tail...>& __t) noexcept -2441: { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } -2441: -2441: template -2441: constexpr const _Head& -2441: __get_helper(const _Tuple_impl<__i, _Head, _Tail...>& __t) noexcept -2441: { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } -2441: -2441: -2441: template -2441: constexpr __tuple_element_t<__i, tuple<_Elements...>>& -2441: get(tuple<_Elements...>& __t) noexcept -2441: { return std::__get_helper<__i>(__t); } -2441: -2441: -2441: template -2441: constexpr const __tuple_element_t<__i, tuple<_Elements...>>& -2441: get(const tuple<_Elements...>& __t) noexcept -2441: { return std::__get_helper<__i>(__t); } -2441: -2441: -2441: template -2441: constexpr __tuple_element_t<__i, tuple<_Elements...>>&& -2441: get(tuple<_Elements...>&& __t) noexcept -2441: { -2441: typedef __tuple_element_t<__i, tuple<_Elements...>> __element_type; -2441: return std::forward<__element_type&&>(std::get<__i>(__t)); -2441: } -2441: -2441: -2441: template -2441: constexpr const __tuple_element_t<__i, tuple<_Elements...>>&& -2441: get(const tuple<_Elements...>&& __t) noexcept -2441: { -2441: typedef __tuple_element_t<__i, tuple<_Elements...>> __element_type; -2441: return std::forward(std::get<__i>(__t)); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: template -2441: constexpr _Head& -2441: __get_helper2(_Tuple_impl<__i, _Head, _Tail...>& __t) noexcept -2441: { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } -2441: -2441: template -2441: constexpr const _Head& -2441: __get_helper2(const _Tuple_impl<__i, _Head, _Tail...>& __t) noexcept -2441: { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } -2441: -2441: -2441: template -2441: constexpr _Tp& -2441: get(tuple<_Types...>& __t) noexcept -2441: { return std::__get_helper2<_Tp>(__t); } -2441: -2441: -2441: template -2441: constexpr _Tp&& -2441: get(tuple<_Types...>&& __t) noexcept -2441: { return std::forward<_Tp&&>(std::__get_helper2<_Tp>(__t)); } -2441: -2441: -2441: template -2441: constexpr const _Tp& -2441: get(const tuple<_Types...>& __t) noexcept -2441: { return std::__get_helper2<_Tp>(__t); } -2441: -2441: -2441: -2441: template -2441: constexpr const _Tp&& -2441: get(const tuple<_Types...>&& __t) noexcept -2441: { return std::forward(std::__get_helper2<_Tp>(__t)); } -2441: -2441: -2441: -2441: template -2441: struct __tuple_compare -2441: { -2441: static constexpr bool -2441: __eq(const _Tp& __t, const _Up& __u) -2441: { -2441: return bool(std::get<__i>(__t) == std::get<__i>(__u)) -2441: && __tuple_compare<_Tp, _Up, __i + 1, __size>::__eq(__t, __u); -2441: } -2441: -2441: static constexpr bool -2441: __less(const _Tp& __t, const _Up& __u) -2441: { -2441: return bool(std::get<__i>(__t) < std::get<__i>(__u)) -2441: || (!bool(std::get<__i>(__u) < std::get<__i>(__t)) -2441: && __tuple_compare<_Tp, _Up, __i + 1, __size>::__less(__t, __u)); -2441: } -2441: }; -2441: -2441: template -2441: struct __tuple_compare<_Tp, _Up, __size, __size> -2441: { -2441: static constexpr bool -2441: __eq(const _Tp&, const _Up&) { return true; } -2441: -2441: static constexpr bool -2441: __less(const _Tp&, const _Up&) { return false; } -2441: }; -2441: -2441: template -2441: constexpr bool -2441: operator==(const tuple<_TElements...>& __t, -2441: const tuple<_UElements...>& __u) -2441: { -2441: static_assert(sizeof...(_TElements) == sizeof...(_UElements), -2441: "tuple objects can only be compared if they have equal sizes."); -2441: using __compare = __tuple_compare, -2441: tuple<_UElements...>, -2441: 0, sizeof...(_TElements)>; -2441: return __compare::__eq(__t, __u); -2441: } -2441: -2441: template -2441: constexpr bool -2441: operator<(const tuple<_TElements...>& __t, -2441: const tuple<_UElements...>& __u) -2441: { -2441: static_assert(sizeof...(_TElements) == sizeof...(_UElements), -2441: "tuple objects can only be compared if they have equal sizes."); -2441: using __compare = __tuple_compare, -2441: tuple<_UElements...>, -2441: 0, sizeof...(_TElements)>; -2441: return __compare::__less(__t, __u); -2441: } -2441: -2441: template -2441: constexpr bool -2441: operator!=(const tuple<_TElements...>& __t, -2441: const tuple<_UElements...>& __u) -2441: { return !(__t == __u); } -2441: -2441: template -2441: constexpr bool -2441: operator>(const tuple<_TElements...>& __t, -2441: const tuple<_UElements...>& __u) -2441: { return __u < __t; } -2441: -2441: template -2441: constexpr bool -2441: operator<=(const tuple<_TElements...>& __t, -2441: const tuple<_UElements...>& __u) -2441: { return !(__u < __t); } -2441: -2441: template -2441: constexpr bool -2441: operator>=(const tuple<_TElements...>& __t, -2441: const tuple<_UElements...>& __u) -2441: { return !(__t < __u); } -2441: -2441: -2441: template -2441: constexpr tuple::__type...> -2441: make_tuple(_Elements&&... __args) -2441: { -2441: typedef tuple::__type...> -2441: __result_type; -2441: return __result_type(std::forward<_Elements>(__args)...); -2441: } -2441: -2441: -2441: -2441: template -2441: constexpr tuple<_Elements&&...> -2441: forward_as_tuple(_Elements&&... __args) noexcept -2441: { return tuple<_Elements&&...>(std::forward<_Elements>(__args)...); } -2441: -2441: template -2441: struct __make_tuple_impl; -2441: -2441: template -2441: struct __make_tuple_impl<_Idx, tuple<_Tp...>, _Tuple, _Nm> -2441: : __make_tuple_impl<_Idx + 1, -2441: tuple<_Tp..., __tuple_element_t<_Idx, _Tuple>>, -2441: _Tuple, _Nm> -2441: { }; -2441: -2441: template -2441: struct __make_tuple_impl<_Nm, tuple<_Tp...>, _Tuple, _Nm> -2441: { -2441: typedef tuple<_Tp...> __type; -2441: }; -2441: -2441: template -2441: struct __do_make_tuple -2441: : __make_tuple_impl<0, tuple<>, _Tuple, std::tuple_size<_Tuple>::value> -2441: { }; -2441: -2441: -2441: template -2441: struct __make_tuple -2441: : public __do_make_tuple::type>::type> -2441: { }; -2441: -2441: -2441: template -2441: struct __combine_tuples; -2441: -2441: template<> -2441: struct __combine_tuples<> -2441: { -2441: typedef tuple<> __type; -2441: }; -2441: -2441: template -2441: struct __combine_tuples> -2441: { -2441: typedef tuple<_Ts...> __type; -2441: }; -2441: -2441: template -2441: struct __combine_tuples, tuple<_T2s...>, _Rem...> -2441: { -2441: typedef typename __combine_tuples, -2441: _Rem...>::__type __type; -2441: }; -2441: -2441: -2441: template -2441: struct __tuple_cat_result -2441: { -2441: typedef typename __combine_tuples -2441: ::__type...>::__type __type; -2441: }; -2441: -2441: -2441: -2441: template -2441: struct __make_1st_indices; -2441: -2441: template<> -2441: struct __make_1st_indices<> -2441: { -2441: typedef std::_Index_tuple<> __type; -2441: }; -2441: -2441: template -2441: struct __make_1st_indices<_Tp, _Tpls...> -2441: { -2441: typedef typename std::_Build_index_tuple::type>::value>::__type __type; -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: struct __tuple_concater; -2441: -2441: template -2441: struct __tuple_concater<_Ret, std::_Index_tuple<_Is...>, _Tp, _Tpls...> -2441: { -2441: template -2441: static constexpr _Ret -2441: _S_do(_Tp&& __tp, _Tpls&&... __tps, _Us&&... __us) -2441: { -2441: typedef typename __make_1st_indices<_Tpls...>::__type __idx; -2441: typedef __tuple_concater<_Ret, __idx, _Tpls...> __next; -2441: return __next::_S_do(std::forward<_Tpls>(__tps)..., -2441: std::forward<_Us>(__us)..., -2441: std::get<_Is>(std::forward<_Tp>(__tp))...); -2441: } -2441: }; -2441: -2441: template -2441: struct __tuple_concater<_Ret, std::_Index_tuple<>> -2441: { -2441: template -2441: static constexpr _Ret -2441: _S_do(_Us&&... __us) -2441: { -2441: return _Ret(std::forward<_Us>(__us)...); -2441: } -2441: }; -2441: -2441: -2441: template...>::value>::type> -2441: constexpr auto -2441: tuple_cat(_Tpls&&... __tpls) -2441: -> typename __tuple_cat_result<_Tpls...>::__type -2441: { -2441: typedef typename __tuple_cat_result<_Tpls...>::__type __ret; -2441: typedef typename __make_1st_indices<_Tpls...>::__type __idx; -2441: typedef __tuple_concater<__ret, __idx, _Tpls...> __concater; -2441: return __concater::_S_do(std::forward<_Tpls>(__tpls)...); -2441: } -2441: -2441: -2441: -2441: -2441: template -2441: constexpr tuple<_Elements&...> -2441: tie(_Elements&... __args) noexcept -2441: { return tuple<_Elements&...>(__args...); } -2441: -2441: -2441: template -2441: inline -2441: -2441: -2441: typename enable_if<__and_<__is_swappable<_Elements>...>::value -2441: >::type -2441: -2441: -2441: -2441: swap(tuple<_Elements...>& __x, tuple<_Elements...>& __y) -2441: noexcept(noexcept(__x.swap(__y))) -2441: { __x.swap(__y); } -2441: -2441: -2441: template -2441: typename enable_if...>::value>::type -2441: swap(tuple<_Elements...>&, tuple<_Elements...>&) = delete; -2441: -2441: -2441: -2441: -2441: -2441: -2441: struct _Swallow_assign -2441: { -2441: template -2441: constexpr const _Swallow_assign& -2441: operator=(const _Tp&) const -2441: { return *this; } -2441: }; -2441: -2441: -2441: -2441: constexpr _Swallow_assign ignore{}; -2441: -2441: -2441: template -2441: struct uses_allocator, _Alloc> : true_type { }; -2441: -2441: -2441: template -2441: template -2441: inline -2441: pair<_T1, _T2>:: -2441: pair(piecewise_construct_t, -2441: tuple<_Args1...> __first, tuple<_Args2...> __second) -2441: : pair(__first, __second, -2441: typename _Build_index_tuple::__type(), -2441: typename _Build_index_tuple::__type()) -2441: { } -2441: -2441: template -2441: template -2441: inline -2441: pair<_T1, _T2>:: -2441: pair(tuple<_Args1...>& __tuple1, tuple<_Args2...>& __tuple2, -2441: _Index_tuple<_Indexes1...>, _Index_tuple<_Indexes2...>) -2441: : first(std::forward<_Args1>(std::get<_Indexes1>(__tuple1))...), -2441: second(std::forward<_Args2>(std::get<_Indexes2>(__tuple2))...) -2441: { } -2441: # 1711 "/usr/include/c++/8/tuple" 3 -2441: -2441: } -2441: # 64 "/usr/include/c++/8/bits/stl_map.h" 2 3 -2441: -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: template -2441: class multimap; -2441: # 98 "/usr/include/c++/8/bits/stl_map.h" 3 -2441: template , -2441: typename _Alloc = std::allocator > > -2441: class map -2441: { -2441: public: -2441: typedef _Key key_type; -2441: typedef _Tp mapped_type; -2441: typedef std::pair value_type; -2441: typedef _Compare key_compare; -2441: typedef _Alloc allocator_type; -2441: -2441: private: -2441: # 126 "/usr/include/c++/8/bits/stl_map.h" 3 -2441: public: -2441: class value_compare -2441: : public std::binary_function -2441: { -2441: friend class map<_Key, _Tp, _Compare, _Alloc>; -2441: protected: -2441: _Compare comp; -2441: -2441: value_compare(_Compare __c) -2441: : comp(__c) { } -2441: -2441: public: -2441: bool operator()(const value_type& __x, const value_type& __y) const -2441: { return comp(__x.first, __y.first); } -2441: }; -2441: -2441: private: -2441: -2441: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template -2441: rebind::other _Pair_alloc_type; -2441: -2441: typedef _Rb_tree, -2441: key_compare, _Pair_alloc_type> _Rep_type; -2441: -2441: -2441: _Rep_type _M_t; -2441: -2441: typedef __gnu_cxx::__alloc_traits<_Pair_alloc_type> _Alloc_traits; -2441: -2441: public: -2441: -2441: -2441: typedef typename _Alloc_traits::pointer pointer; -2441: typedef typename _Alloc_traits::const_pointer const_pointer; -2441: typedef typename _Alloc_traits::reference reference; -2441: typedef typename _Alloc_traits::const_reference const_reference; -2441: typedef typename _Rep_type::iterator iterator; -2441: typedef typename _Rep_type::const_iterator const_iterator; -2441: typedef typename _Rep_type::size_type size_type; -2441: typedef typename _Rep_type::difference_type difference_type; -2441: typedef typename _Rep_type::reverse_iterator reverse_iterator; -2441: typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; -2441: # 183 "/usr/include/c++/8/bits/stl_map.h" 3 -2441: map() = default; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: explicit -2441: map(const _Compare& __comp, -2441: const allocator_type& __a = allocator_type()) -2441: : _M_t(__comp, _Pair_alloc_type(__a)) { } -2441: # 205 "/usr/include/c++/8/bits/stl_map.h" 3 -2441: map(const map&) = default; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: map(map&&) = default; -2441: # 226 "/usr/include/c++/8/bits/stl_map.h" 3 -2441: map(initializer_list __l, -2441: const _Compare& __comp = _Compare(), -2441: const allocator_type& __a = allocator_type()) -2441: : _M_t(__comp, _Pair_alloc_type(__a)) -2441: { _M_t._M_insert_unique(__l.begin(), __l.end()); } -2441: -2441: -2441: explicit -2441: map(const allocator_type& __a) -2441: : _M_t(_Compare(), _Pair_alloc_type(__a)) { } -2441: -2441: -2441: map(const map& __m, const allocator_type& __a) -2441: : _M_t(__m._M_t, _Pair_alloc_type(__a)) { } -2441: -2441: -2441: map(map&& __m, const allocator_type& __a) -2441: noexcept(is_nothrow_copy_constructible<_Compare>::value -2441: && _Alloc_traits::_S_always_equal()) -2441: : _M_t(std::move(__m._M_t), _Pair_alloc_type(__a)) { } -2441: -2441: -2441: map(initializer_list __l, const allocator_type& __a) -2441: : _M_t(_Compare(), _Pair_alloc_type(__a)) -2441: { _M_t._M_insert_unique(__l.begin(), __l.end()); } -2441: -2441: -2441: template -2441: map(_InputIterator __first, _InputIterator __last, -2441: const allocator_type& __a) -2441: : _M_t(_Compare(), _Pair_alloc_type(__a)) -2441: { _M_t._M_insert_unique(__first, __last); } -2441: # 270 "/usr/include/c++/8/bits/stl_map.h" 3 -2441: template -2441: map(_InputIterator __first, _InputIterator __last) -2441: : _M_t() -2441: { _M_t._M_insert_unique(__first, __last); } -2441: # 287 "/usr/include/c++/8/bits/stl_map.h" 3 -2441: template -2441: map(_InputIterator __first, _InputIterator __last, -2441: const _Compare& __comp, -2441: const allocator_type& __a = allocator_type()) -2441: : _M_t(__comp, _Pair_alloc_type(__a)) -2441: { _M_t._M_insert_unique(__first, __last); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: ~map() = default; -2441: # 316 "/usr/include/c++/8/bits/stl_map.h" 3 -2441: map& -2441: operator=(const map&) = default; -2441: -2441: -2441: map& -2441: operator=(map&&) = default; -2441: # 334 "/usr/include/c++/8/bits/stl_map.h" 3 -2441: map& -2441: operator=(initializer_list __l) -2441: { -2441: _M_t._M_assign_unique(__l.begin(), __l.end()); -2441: return *this; -2441: } -2441: -2441: -2441: -2441: allocator_type -2441: get_allocator() const noexcept -2441: { return allocator_type(_M_t.get_allocator()); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: iterator -2441: begin() noexcept -2441: { return _M_t.begin(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_iterator -2441: begin() const noexcept -2441: { return _M_t.begin(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: iterator -2441: end() noexcept -2441: { return _M_t.end(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_iterator -2441: end() const noexcept -2441: { return _M_t.end(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: reverse_iterator -2441: rbegin() noexcept -2441: { return _M_t.rbegin(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_reverse_iterator -2441: rbegin() const noexcept -2441: { return _M_t.rbegin(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: reverse_iterator -2441: rend() noexcept -2441: { return _M_t.rend(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_reverse_iterator -2441: rend() const noexcept -2441: { return _M_t.rend(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_iterator -2441: cbegin() const noexcept -2441: { return _M_t.begin(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_iterator -2441: cend() const noexcept -2441: { return _M_t.end(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_reverse_iterator -2441: crbegin() const noexcept -2441: { return _M_t.rbegin(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_reverse_iterator -2441: crend() const noexcept -2441: { return _M_t.rend(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool -2441: empty() const noexcept -2441: { return _M_t.empty(); } -2441: -2441: -2441: size_type -2441: size() const noexcept -2441: { return _M_t.size(); } -2441: -2441: -2441: size_type -2441: max_size() const noexcept -2441: { return _M_t.max_size(); } -2441: # 489 "/usr/include/c++/8/bits/stl_map.h" 3 -2441: mapped_type& -2441: operator[](const key_type& __k) -2441: { -2441: -2441: -2441: -2441: iterator __i = lower_bound(__k); -2441: -2441: if (__i == end() || key_comp()(__k, (*__i).first)) -2441: -2441: __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, -2441: std::tuple(__k), -2441: std::tuple<>()); -2441: -2441: -2441: -2441: return (*__i).second; -2441: } -2441: -2441: -2441: mapped_type& -2441: operator[](key_type&& __k) -2441: { -2441: -2441: -2441: -2441: iterator __i = lower_bound(__k); -2441: -2441: if (__i == end() || key_comp()(__k, (*__i).first)) -2441: __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, -2441: std::forward_as_tuple(std::move(__k)), -2441: std::tuple<>()); -2441: return (*__i).second; -2441: } -2441: # 534 "/usr/include/c++/8/bits/stl_map.h" 3 -2441: mapped_type& -2441: at(const key_type& __k) -2441: { -2441: iterator __i = lower_bound(__k); -2441: if (__i == end() || key_comp()(__k, (*__i).first)) -2441: __throw_out_of_range(("map::at")); -2441: return (*__i).second; -2441: } -2441: -2441: const mapped_type& -2441: at(const key_type& __k) const -2441: { -2441: const_iterator __i = lower_bound(__k); -2441: if (__i == end() || key_comp()(__k, (*__i).first)) -2441: __throw_out_of_range(("map::at")); -2441: return (*__i).second; -2441: } -2441: # 572 "/usr/include/c++/8/bits/stl_map.h" 3 -2441: template -2441: std::pair -2441: emplace(_Args&&... __args) -2441: { return _M_t._M_emplace_unique(std::forward<_Args>(__args)...); } -2441: # 602 "/usr/include/c++/8/bits/stl_map.h" 3 -2441: template -2441: iterator -2441: emplace_hint(const_iterator __pos, _Args&&... __args) -2441: { -2441: return _M_t._M_emplace_hint_unique(__pos, -2441: std::forward<_Args>(__args)...); -2441: } -2441: # 800 "/usr/include/c++/8/bits/stl_map.h" 3 -2441: std::pair -2441: insert(const value_type& __x) -2441: { return _M_t._M_insert_unique(__x); } -2441: -2441: -2441: -2441: -2441: std::pair -2441: insert(value_type&& __x) -2441: { return _M_t._M_insert_unique(std::move(__x)); } -2441: -2441: template -2441: __enable_if_t::value, -2441: pair> -2441: insert(_Pair&& __x) -2441: { return _M_t._M_emplace_unique(std::forward<_Pair>(__x)); } -2441: # 827 "/usr/include/c++/8/bits/stl_map.h" 3 -2441: void -2441: insert(std::initializer_list __list) -2441: { insert(__list.begin(), __list.end()); } -2441: # 856 "/usr/include/c++/8/bits/stl_map.h" 3 -2441: iterator -2441: -2441: insert(const_iterator __position, const value_type& __x) -2441: -2441: -2441: -2441: { return _M_t._M_insert_unique_(__position, __x); } -2441: -2441: -2441: -2441: -2441: iterator -2441: insert(const_iterator __position, value_type&& __x) -2441: { return _M_t._M_insert_unique_(__position, std::move(__x)); } -2441: -2441: template -2441: __enable_if_t::value, iterator> -2441: insert(const_iterator __position, _Pair&& __x) -2441: { -2441: return _M_t._M_emplace_hint_unique(__position, -2441: std::forward<_Pair>(__x)); -2441: } -2441: # 889 "/usr/include/c++/8/bits/stl_map.h" 3 -2441: template -2441: void -2441: insert(_InputIterator __first, _InputIterator __last) -2441: { _M_t._M_insert_unique(__first, __last); } -2441: # 1029 "/usr/include/c++/8/bits/stl_map.h" 3 -2441: iterator -2441: erase(const_iterator __position) -2441: { return _M_t.erase(__position); } -2441: -2441: -2441: __attribute ((__abi_tag__ ("cxx11"))) -2441: iterator -2441: erase(iterator __position) -2441: { return _M_t.erase(__position); } -2441: # 1066 "/usr/include/c++/8/bits/stl_map.h" 3 -2441: size_type -2441: erase(const key_type& __x) -2441: { return _M_t.erase(__x); } -2441: # 1086 "/usr/include/c++/8/bits/stl_map.h" 3 -2441: iterator -2441: erase(const_iterator __first, const_iterator __last) -2441: { return _M_t.erase(__first, __last); } -2441: # 1120 "/usr/include/c++/8/bits/stl_map.h" 3 -2441: void -2441: swap(map& __x) -2441: noexcept(__is_nothrow_swappable<_Compare>::value) -2441: { _M_t.swap(__x._M_t); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void -2441: clear() noexcept -2441: { _M_t.clear(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: key_compare -2441: key_comp() const -2441: { return _M_t.key_comp(); } -2441: -2441: -2441: -2441: -2441: -2441: value_compare -2441: value_comp() const -2441: { return value_compare(_M_t.key_comp()); } -2441: # 1167 "/usr/include/c++/8/bits/stl_map.h" 3 -2441: iterator -2441: find(const key_type& __x) -2441: { return _M_t.find(__x); } -2441: -2441: -2441: template -2441: auto -2441: find(const _Kt& __x) -> decltype(_M_t._M_find_tr(__x)) -2441: { return _M_t._M_find_tr(__x); } -2441: # 1192 "/usr/include/c++/8/bits/stl_map.h" 3 -2441: const_iterator -2441: find(const key_type& __x) const -2441: { return _M_t.find(__x); } -2441: -2441: -2441: template -2441: auto -2441: find(const _Kt& __x) const -> decltype(_M_t._M_find_tr(__x)) -2441: { return _M_t._M_find_tr(__x); } -2441: # 1213 "/usr/include/c++/8/bits/stl_map.h" 3 -2441: size_type -2441: count(const key_type& __x) const -2441: { return _M_t.find(__x) == _M_t.end() ? 0 : 1; } -2441: -2441: -2441: template -2441: auto -2441: count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x)) -2441: { return _M_t._M_count_tr(__x); } -2441: # 1237 "/usr/include/c++/8/bits/stl_map.h" 3 -2441: iterator -2441: lower_bound(const key_type& __x) -2441: { return _M_t.lower_bound(__x); } -2441: -2441: -2441: template -2441: auto -2441: lower_bound(const _Kt& __x) -2441: -> decltype(iterator(_M_t._M_lower_bound_tr(__x))) -2441: { return iterator(_M_t._M_lower_bound_tr(__x)); } -2441: # 1262 "/usr/include/c++/8/bits/stl_map.h" 3 -2441: const_iterator -2441: lower_bound(const key_type& __x) const -2441: { return _M_t.lower_bound(__x); } -2441: -2441: -2441: template -2441: auto -2441: lower_bound(const _Kt& __x) const -2441: -> decltype(const_iterator(_M_t._M_lower_bound_tr(__x))) -2441: { return const_iterator(_M_t._M_lower_bound_tr(__x)); } -2441: # 1282 "/usr/include/c++/8/bits/stl_map.h" 3 -2441: iterator -2441: upper_bound(const key_type& __x) -2441: { return _M_t.upper_bound(__x); } -2441: -2441: -2441: template -2441: auto -2441: upper_bound(const _Kt& __x) -2441: -> decltype(iterator(_M_t._M_upper_bound_tr(__x))) -2441: { return iterator(_M_t._M_upper_bound_tr(__x)); } -2441: # 1302 "/usr/include/c++/8/bits/stl_map.h" 3 -2441: const_iterator -2441: upper_bound(const key_type& __x) const -2441: { return _M_t.upper_bound(__x); } -2441: -2441: -2441: template -2441: auto -2441: upper_bound(const _Kt& __x) const -2441: -> decltype(const_iterator(_M_t._M_upper_bound_tr(__x))) -2441: { return const_iterator(_M_t._M_upper_bound_tr(__x)); } -2441: # 1331 "/usr/include/c++/8/bits/stl_map.h" 3 -2441: std::pair -2441: equal_range(const key_type& __x) -2441: { return _M_t.equal_range(__x); } -2441: -2441: -2441: template -2441: auto -2441: equal_range(const _Kt& __x) -2441: -> decltype(pair(_M_t._M_equal_range_tr(__x))) -2441: { return pair(_M_t._M_equal_range_tr(__x)); } -2441: # 1360 "/usr/include/c++/8/bits/stl_map.h" 3 -2441: std::pair -2441: equal_range(const key_type& __x) const -2441: { return _M_t.equal_range(__x); } -2441: -2441: -2441: template -2441: auto -2441: equal_range(const _Kt& __x) const -2441: -> decltype(pair( -2441: _M_t._M_equal_range_tr(__x))) -2441: { -2441: return pair( -2441: _M_t._M_equal_range_tr(__x)); -2441: } -2441: -2441: -2441: -2441: template -2441: friend bool -2441: operator==(const map<_K1, _T1, _C1, _A1>&, -2441: const map<_K1, _T1, _C1, _A1>&); -2441: -2441: template -2441: friend bool -2441: operator<(const map<_K1, _T1, _C1, _A1>&, -2441: const map<_K1, _T1, _C1, _A1>&); -2441: }; -2441: # 1432 "/usr/include/c++/8/bits/stl_map.h" 3 -2441: template -2441: inline bool -2441: operator==(const map<_Key, _Tp, _Compare, _Alloc>& __x, -2441: const map<_Key, _Tp, _Compare, _Alloc>& __y) -2441: { return __x._M_t == __y._M_t; } -2441: # 1449 "/usr/include/c++/8/bits/stl_map.h" 3 -2441: template -2441: inline bool -2441: operator<(const map<_Key, _Tp, _Compare, _Alloc>& __x, -2441: const map<_Key, _Tp, _Compare, _Alloc>& __y) -2441: { return __x._M_t < __y._M_t; } -2441: -2441: -2441: template -2441: inline bool -2441: operator!=(const map<_Key, _Tp, _Compare, _Alloc>& __x, -2441: const map<_Key, _Tp, _Compare, _Alloc>& __y) -2441: { return !(__x == __y); } -2441: -2441: -2441: template -2441: inline bool -2441: operator>(const map<_Key, _Tp, _Compare, _Alloc>& __x, -2441: const map<_Key, _Tp, _Compare, _Alloc>& __y) -2441: { return __y < __x; } -2441: -2441: -2441: template -2441: inline bool -2441: operator<=(const map<_Key, _Tp, _Compare, _Alloc>& __x, -2441: const map<_Key, _Tp, _Compare, _Alloc>& __y) -2441: { return !(__y < __x); } -2441: -2441: -2441: template -2441: inline bool -2441: operator>=(const map<_Key, _Tp, _Compare, _Alloc>& __x, -2441: const map<_Key, _Tp, _Compare, _Alloc>& __y) -2441: { return !(__x < __y); } -2441: -2441: -2441: template -2441: inline void -2441: swap(map<_Key, _Tp, _Compare, _Alloc>& __x, -2441: map<_Key, _Tp, _Compare, _Alloc>& __y) -2441: noexcept(noexcept(__x.swap(__y))) -2441: { __x.swap(__y); } -2441: -2441: -2441: # 1514 "/usr/include/c++/8/bits/stl_map.h" 3 -2441: -2441: } -2441: # 62 "/usr/include/c++/8/map" 2 3 -2441: # 1 "/usr/include/c++/8/bits/stl_multimap.h" 1 3 -2441: # 64 "/usr/include/c++/8/bits/stl_multimap.h" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: template -2441: class map; -2441: # 96 "/usr/include/c++/8/bits/stl_multimap.h" 3 -2441: template , -2441: typename _Alloc = std::allocator > > -2441: class multimap -2441: { -2441: public: -2441: typedef _Key key_type; -2441: typedef _Tp mapped_type; -2441: typedef std::pair value_type; -2441: typedef _Compare key_compare; -2441: typedef _Alloc allocator_type; -2441: -2441: private: -2441: # 125 "/usr/include/c++/8/bits/stl_multimap.h" 3 -2441: public: -2441: class value_compare -2441: : public std::binary_function -2441: { -2441: friend class multimap<_Key, _Tp, _Compare, _Alloc>; -2441: protected: -2441: _Compare comp; -2441: -2441: value_compare(_Compare __c) -2441: : comp(__c) { } -2441: -2441: public: -2441: bool operator()(const value_type& __x, const value_type& __y) const -2441: { return comp(__x.first, __y.first); } -2441: }; -2441: -2441: private: -2441: -2441: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template -2441: rebind::other _Pair_alloc_type; -2441: -2441: typedef _Rb_tree, -2441: key_compare, _Pair_alloc_type> _Rep_type; -2441: -2441: _Rep_type _M_t; -2441: -2441: typedef __gnu_cxx::__alloc_traits<_Pair_alloc_type> _Alloc_traits; -2441: -2441: public: -2441: -2441: -2441: typedef typename _Alloc_traits::pointer pointer; -2441: typedef typename _Alloc_traits::const_pointer const_pointer; -2441: typedef typename _Alloc_traits::reference reference; -2441: typedef typename _Alloc_traits::const_reference const_reference; -2441: typedef typename _Rep_type::iterator iterator; -2441: typedef typename _Rep_type::const_iterator const_iterator; -2441: typedef typename _Rep_type::size_type size_type; -2441: typedef typename _Rep_type::difference_type difference_type; -2441: typedef typename _Rep_type::reverse_iterator reverse_iterator; -2441: typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; -2441: # 180 "/usr/include/c++/8/bits/stl_multimap.h" 3 -2441: multimap() = default; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: explicit -2441: multimap(const _Compare& __comp, -2441: const allocator_type& __a = allocator_type()) -2441: : _M_t(__comp, _Pair_alloc_type(__a)) { } -2441: # 202 "/usr/include/c++/8/bits/stl_multimap.h" 3 -2441: multimap(const multimap&) = default; -2441: # 211 "/usr/include/c++/8/bits/stl_multimap.h" 3 -2441: multimap(multimap&&) = default; -2441: # 223 "/usr/include/c++/8/bits/stl_multimap.h" 3 -2441: multimap(initializer_list __l, -2441: const _Compare& __comp = _Compare(), -2441: const allocator_type& __a = allocator_type()) -2441: : _M_t(__comp, _Pair_alloc_type(__a)) -2441: { _M_t._M_insert_equal(__l.begin(), __l.end()); } -2441: -2441: -2441: explicit -2441: multimap(const allocator_type& __a) -2441: : _M_t(_Compare(), _Pair_alloc_type(__a)) { } -2441: -2441: -2441: multimap(const multimap& __m, const allocator_type& __a) -2441: : _M_t(__m._M_t, _Pair_alloc_type(__a)) { } -2441: -2441: -2441: multimap(multimap&& __m, const allocator_type& __a) -2441: noexcept(is_nothrow_copy_constructible<_Compare>::value -2441: && _Alloc_traits::_S_always_equal()) -2441: : _M_t(std::move(__m._M_t), _Pair_alloc_type(__a)) { } -2441: -2441: -2441: multimap(initializer_list __l, const allocator_type& __a) -2441: : _M_t(_Compare(), _Pair_alloc_type(__a)) -2441: { _M_t._M_insert_equal(__l.begin(), __l.end()); } -2441: -2441: -2441: template -2441: multimap(_InputIterator __first, _InputIterator __last, -2441: const allocator_type& __a) -2441: : _M_t(_Compare(), _Pair_alloc_type(__a)) -2441: { _M_t._M_insert_equal(__first, __last); } -2441: # 266 "/usr/include/c++/8/bits/stl_multimap.h" 3 -2441: template -2441: multimap(_InputIterator __first, _InputIterator __last) -2441: : _M_t() -2441: { _M_t._M_insert_equal(__first, __last); } -2441: # 282 "/usr/include/c++/8/bits/stl_multimap.h" 3 -2441: template -2441: multimap(_InputIterator __first, _InputIterator __last, -2441: const _Compare& __comp, -2441: const allocator_type& __a = allocator_type()) -2441: : _M_t(__comp, _Pair_alloc_type(__a)) -2441: { _M_t._M_insert_equal(__first, __last); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: ~multimap() = default; -2441: # 311 "/usr/include/c++/8/bits/stl_multimap.h" 3 -2441: multimap& -2441: operator=(const multimap&) = default; -2441: -2441: -2441: multimap& -2441: operator=(multimap&&) = default; -2441: # 329 "/usr/include/c++/8/bits/stl_multimap.h" 3 -2441: multimap& -2441: operator=(initializer_list __l) -2441: { -2441: _M_t._M_assign_equal(__l.begin(), __l.end()); -2441: return *this; -2441: } -2441: -2441: -2441: -2441: allocator_type -2441: get_allocator() const noexcept -2441: { return allocator_type(_M_t.get_allocator()); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: iterator -2441: begin() noexcept -2441: { return _M_t.begin(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_iterator -2441: begin() const noexcept -2441: { return _M_t.begin(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: iterator -2441: end() noexcept -2441: { return _M_t.end(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_iterator -2441: end() const noexcept -2441: { return _M_t.end(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: reverse_iterator -2441: rbegin() noexcept -2441: { return _M_t.rbegin(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_reverse_iterator -2441: rbegin() const noexcept -2441: { return _M_t.rbegin(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: reverse_iterator -2441: rend() noexcept -2441: { return _M_t.rend(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_reverse_iterator -2441: rend() const noexcept -2441: { return _M_t.rend(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_iterator -2441: cbegin() const noexcept -2441: { return _M_t.begin(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_iterator -2441: cend() const noexcept -2441: { return _M_t.end(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_reverse_iterator -2441: crbegin() const noexcept -2441: { return _M_t.rbegin(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_reverse_iterator -2441: crend() const noexcept -2441: { return _M_t.rend(); } -2441: -2441: -2441: -2441: -2441: bool -2441: empty() const noexcept -2441: { return _M_t.empty(); } -2441: -2441: -2441: size_type -2441: size() const noexcept -2441: { return _M_t.size(); } -2441: -2441: -2441: size_type -2441: max_size() const noexcept -2441: { return _M_t.max_size(); } -2441: # 487 "/usr/include/c++/8/bits/stl_multimap.h" 3 -2441: template -2441: iterator -2441: emplace(_Args&&... __args) -2441: { return _M_t._M_emplace_equal(std::forward<_Args>(__args)...); } -2441: # 514 "/usr/include/c++/8/bits/stl_multimap.h" 3 -2441: template -2441: iterator -2441: emplace_hint(const_iterator __pos, _Args&&... __args) -2441: { -2441: return _M_t._M_emplace_hint_equal(__pos, -2441: std::forward<_Args>(__args)...); -2441: } -2441: # 536 "/usr/include/c++/8/bits/stl_multimap.h" 3 -2441: iterator -2441: insert(const value_type& __x) -2441: { return _M_t._M_insert_equal(__x); } -2441: -2441: -2441: -2441: -2441: iterator -2441: insert(value_type&& __x) -2441: { return _M_t._M_insert_equal(std::move(__x)); } -2441: -2441: template -2441: __enable_if_t::value, iterator> -2441: insert(_Pair&& __x) -2441: { return _M_t._M_emplace_equal(std::forward<_Pair>(__x)); } -2441: # 575 "/usr/include/c++/8/bits/stl_multimap.h" 3 -2441: iterator -2441: -2441: insert(const_iterator __position, const value_type& __x) -2441: -2441: -2441: -2441: { return _M_t._M_insert_equal_(__position, __x); } -2441: -2441: -2441: -2441: -2441: iterator -2441: insert(const_iterator __position, value_type&& __x) -2441: { return _M_t._M_insert_equal_(__position, std::move(__x)); } -2441: -2441: template -2441: __enable_if_t::value, iterator> -2441: insert(const_iterator __position, _Pair&& __x) -2441: { -2441: return _M_t._M_emplace_hint_equal(__position, -2441: std::forward<_Pair>(__x)); -2441: } -2441: # 609 "/usr/include/c++/8/bits/stl_multimap.h" 3 -2441: template -2441: void -2441: insert(_InputIterator __first, _InputIterator __last) -2441: { _M_t._M_insert_equal(__first, __last); } -2441: # 622 "/usr/include/c++/8/bits/stl_multimap.h" 3 -2441: void -2441: insert(initializer_list __l) -2441: { this->insert(__l.begin(), __l.end()); } -2441: # 699 "/usr/include/c++/8/bits/stl_multimap.h" 3 -2441: iterator -2441: erase(const_iterator __position) -2441: { return _M_t.erase(__position); } -2441: -2441: -2441: __attribute ((__abi_tag__ ("cxx11"))) -2441: iterator -2441: erase(iterator __position) -2441: { return _M_t.erase(__position); } -2441: # 736 "/usr/include/c++/8/bits/stl_multimap.h" 3 -2441: size_type -2441: erase(const key_type& __x) -2441: { return _M_t.erase(__x); } -2441: # 757 "/usr/include/c++/8/bits/stl_multimap.h" 3 -2441: iterator -2441: erase(const_iterator __first, const_iterator __last) -2441: { return _M_t.erase(__first, __last); } -2441: # 794 "/usr/include/c++/8/bits/stl_multimap.h" 3 -2441: void -2441: swap(multimap& __x) -2441: noexcept(__is_nothrow_swappable<_Compare>::value) -2441: { _M_t.swap(__x._M_t); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void -2441: clear() noexcept -2441: { _M_t.clear(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: key_compare -2441: key_comp() const -2441: { return _M_t.key_comp(); } -2441: -2441: -2441: -2441: -2441: -2441: value_compare -2441: value_comp() const -2441: { return value_compare(_M_t.key_comp()); } -2441: # 840 "/usr/include/c++/8/bits/stl_multimap.h" 3 -2441: iterator -2441: find(const key_type& __x) -2441: { return _M_t.find(__x); } -2441: -2441: -2441: template -2441: auto -2441: find(const _Kt& __x) -> decltype(_M_t._M_find_tr(__x)) -2441: { return _M_t._M_find_tr(__x); } -2441: # 864 "/usr/include/c++/8/bits/stl_multimap.h" 3 -2441: const_iterator -2441: find(const key_type& __x) const -2441: { return _M_t.find(__x); } -2441: -2441: -2441: template -2441: auto -2441: find(const _Kt& __x) const -> decltype(_M_t._M_find_tr(__x)) -2441: { return _M_t._M_find_tr(__x); } -2441: # 882 "/usr/include/c++/8/bits/stl_multimap.h" 3 -2441: size_type -2441: count(const key_type& __x) const -2441: { return _M_t.count(__x); } -2441: -2441: -2441: template -2441: auto -2441: count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x)) -2441: { return _M_t._M_count_tr(__x); } -2441: # 906 "/usr/include/c++/8/bits/stl_multimap.h" 3 -2441: iterator -2441: lower_bound(const key_type& __x) -2441: { return _M_t.lower_bound(__x); } -2441: -2441: -2441: template -2441: auto -2441: lower_bound(const _Kt& __x) -2441: -> decltype(iterator(_M_t._M_lower_bound_tr(__x))) -2441: { return iterator(_M_t._M_lower_bound_tr(__x)); } -2441: # 931 "/usr/include/c++/8/bits/stl_multimap.h" 3 -2441: const_iterator -2441: lower_bound(const key_type& __x) const -2441: { return _M_t.lower_bound(__x); } -2441: -2441: -2441: template -2441: auto -2441: lower_bound(const _Kt& __x) const -2441: -> decltype(const_iterator(_M_t._M_lower_bound_tr(__x))) -2441: { return const_iterator(_M_t._M_lower_bound_tr(__x)); } -2441: # 951 "/usr/include/c++/8/bits/stl_multimap.h" 3 -2441: iterator -2441: upper_bound(const key_type& __x) -2441: { return _M_t.upper_bound(__x); } -2441: -2441: -2441: template -2441: auto -2441: upper_bound(const _Kt& __x) -2441: -> decltype(iterator(_M_t._M_upper_bound_tr(__x))) -2441: { return iterator(_M_t._M_upper_bound_tr(__x)); } -2441: # 971 "/usr/include/c++/8/bits/stl_multimap.h" 3 -2441: const_iterator -2441: upper_bound(const key_type& __x) const -2441: { return _M_t.upper_bound(__x); } -2441: -2441: -2441: template -2441: auto -2441: upper_bound(const _Kt& __x) const -2441: -> decltype(const_iterator(_M_t._M_upper_bound_tr(__x))) -2441: { return const_iterator(_M_t._M_upper_bound_tr(__x)); } -2441: # 998 "/usr/include/c++/8/bits/stl_multimap.h" 3 -2441: std::pair -2441: equal_range(const key_type& __x) -2441: { return _M_t.equal_range(__x); } -2441: -2441: -2441: template -2441: auto -2441: equal_range(const _Kt& __x) -2441: -> decltype(pair(_M_t._M_equal_range_tr(__x))) -2441: { return pair(_M_t._M_equal_range_tr(__x)); } -2441: # 1025 "/usr/include/c++/8/bits/stl_multimap.h" 3 -2441: std::pair -2441: equal_range(const key_type& __x) const -2441: { return _M_t.equal_range(__x); } -2441: -2441: -2441: template -2441: auto -2441: equal_range(const _Kt& __x) const -2441: -> decltype(pair( -2441: _M_t._M_equal_range_tr(__x))) -2441: { -2441: return pair( -2441: _M_t._M_equal_range_tr(__x)); -2441: } -2441: -2441: -2441: -2441: template -2441: friend bool -2441: operator==(const multimap<_K1, _T1, _C1, _A1>&, -2441: const multimap<_K1, _T1, _C1, _A1>&); -2441: -2441: template -2441: friend bool -2441: operator<(const multimap<_K1, _T1, _C1, _A1>&, -2441: const multimap<_K1, _T1, _C1, _A1>&); -2441: }; -2441: # 1096 "/usr/include/c++/8/bits/stl_multimap.h" 3 -2441: template -2441: inline bool -2441: operator==(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, -2441: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) -2441: { return __x._M_t == __y._M_t; } -2441: # 1113 "/usr/include/c++/8/bits/stl_multimap.h" 3 -2441: template -2441: inline bool -2441: operator<(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, -2441: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) -2441: { return __x._M_t < __y._M_t; } -2441: -2441: -2441: template -2441: inline bool -2441: operator!=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, -2441: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) -2441: { return !(__x == __y); } -2441: -2441: -2441: template -2441: inline bool -2441: operator>(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, -2441: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) -2441: { return __y < __x; } -2441: -2441: -2441: template -2441: inline bool -2441: operator<=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, -2441: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) -2441: { return !(__y < __x); } -2441: -2441: -2441: template -2441: inline bool -2441: operator>=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, -2441: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) -2441: { return !(__x < __y); } -2441: -2441: -2441: template -2441: inline void -2441: swap(multimap<_Key, _Tp, _Compare, _Alloc>& __x, -2441: multimap<_Key, _Tp, _Compare, _Alloc>& __y) -2441: noexcept(noexcept(__x.swap(__y))) -2441: { __x.swap(__y); } -2441: -2441: -2441: # 1178 "/usr/include/c++/8/bits/stl_multimap.h" 3 -2441: -2441: } -2441: # 63 "/usr/include/c++/8/map" 2 3 -2441: # 36 "../../src/Float_defs.hh" 2 -2441: # 44 "../../src/Float_defs.hh" -2441: -2441: # 44 "../../src/Float_defs.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: -2441: struct float_ieee754_half { -2441: uint16_t word; -2441: static const uint16_t SGN_MASK = 0x8000U; -2441: static const uint16_t EXP_MASK = 0xfc00U; -2441: static const uint16_t WRD_MAX = 0x7bffU; -2441: static const uint16_t POS_INF = 0x7c00U; -2441: static const uint16_t NEG_INF = 0xfc00U; -2441: static const uint16_t POS_ZERO = 0x0000U; -2441: static const uint16_t NEG_ZERO = 0x8000U; -2441: static const unsigned int BASE = 2; -2441: static const unsigned int EXPONENT_BITS = 5; -2441: static const unsigned int MANTISSA_BITS = 10; -2441: static const int EXPONENT_MAX = (1 << (EXPONENT_BITS - 1)) - 1; -2441: static const int EXPONENT_BIAS = EXPONENT_MAX; -2441: static const int EXPONENT_MIN = -EXPONENT_MAX + 1; -2441: static const int EXPONENT_MIN_DENORM = EXPONENT_MIN -2441: - static_cast(MANTISSA_BITS); -2441: static const Floating_Point_Format floating_point_format = IEEE754_HALF; -2441: int inf_sign() const; -2441: bool is_nan() const; -2441: int zero_sign() const; -2441: bool sign_bit() const; -2441: void negate(); -2441: void dec(); -2441: void inc(); -2441: void set_max(bool negative); -2441: void build(bool negative, mpz_t mantissa, int exponent); -2441: -2441: }; -2441: -2441: -2441: -2441: -2441: struct float_ieee754_single { -2441: uint32_t word; -2441: static const uint32_t SGN_MASK = 0x80000000U; -2441: static const uint32_t EXP_MASK = 0x7f800000U; -2441: static const uint32_t WRD_MAX = 0x7f7fffffU; -2441: static const uint32_t POS_INF = 0x7f800000U; -2441: static const uint32_t NEG_INF = 0xff800000U; -2441: static const uint32_t POS_ZERO = 0x00000000U; -2441: static const uint32_t NEG_ZERO = 0x80000000U; -2441: static const unsigned int BASE = 2; -2441: static const unsigned int EXPONENT_BITS = 8; -2441: static const unsigned int MANTISSA_BITS = 23; -2441: static const int EXPONENT_MAX = (1 << (EXPONENT_BITS - 1)) - 1; -2441: static const int EXPONENT_BIAS = EXPONENT_MAX; -2441: static const int EXPONENT_MIN = -EXPONENT_MAX + 1; -2441: static const int EXPONENT_MIN_DENORM = EXPONENT_MIN -2441: - static_cast(MANTISSA_BITS); -2441: static const Floating_Point_Format floating_point_format = IEEE754_SINGLE; -2441: int inf_sign() const; -2441: bool is_nan() const; -2441: int zero_sign() const; -2441: bool sign_bit() const; -2441: void negate(); -2441: void dec(); -2441: void inc(); -2441: void set_max(bool negative); -2441: void build(bool negative, mpz_t mantissa, int exponent); -2441: }; -2441: # 120 "../../src/Float_defs.hh" -2441: struct float_ieee754_double { -2441: -2441: -2441: -2441: -2441: uint32_t lsp; -2441: uint32_t msp; -2441: -2441: static const uint32_t MSP_SGN_MASK = 0x80000000U; -2441: static const uint32_t MSP_POS_INF = 0x7ff00000U; -2441: static const uint32_t MSP_NEG_INF = 0xfff00000U; -2441: static const uint32_t MSP_POS_ZERO = 0x00000000U; -2441: static const uint32_t MSP_NEG_ZERO = 0x80000000U; -2441: static const uint32_t LSP_INF = 0; -2441: static const uint32_t LSP_ZERO = 0; -2441: static const uint32_t MSP_MAX = 0x7fefffffU; -2441: static const uint32_t LSP_MAX = 0xffffffffU; -2441: static const unsigned int BASE = 2; -2441: static const unsigned int EXPONENT_BITS = 11; -2441: static const unsigned int MANTISSA_BITS = 52; -2441: static const int EXPONENT_MAX = (1 << (EXPONENT_BITS - 1)) - 1; -2441: static const int EXPONENT_BIAS = EXPONENT_MAX; -2441: static const int EXPONENT_MIN = -EXPONENT_MAX + 1; -2441: static const int EXPONENT_MIN_DENORM = EXPONENT_MIN -2441: - static_cast(MANTISSA_BITS); -2441: static const Floating_Point_Format floating_point_format = IEEE754_DOUBLE; -2441: int inf_sign() const; -2441: bool is_nan() const; -2441: int zero_sign() const; -2441: bool sign_bit() const; -2441: void negate(); -2441: void dec(); -2441: void inc(); -2441: void set_max(bool negative); -2441: void build(bool negative, mpz_t mantissa, int exponent); -2441: }; -2441: -2441: -2441: -2441: -2441: struct float_ibm_single { -2441: uint32_t word; -2441: static const uint32_t SGN_MASK = 0x80000000U; -2441: static const uint32_t EXP_MASK = 0x7f000000U; -2441: static const uint32_t WRD_MAX = 0x7fffffffU; -2441: static const uint32_t POS_INF = 0x7f000000U; -2441: static const uint32_t NEG_INF = 0xff000000U; -2441: static const uint32_t POS_ZERO = 0x00000000U; -2441: static const uint32_t NEG_ZERO = 0x80000000U; -2441: static const unsigned int BASE = 16; -2441: static const unsigned int EXPONENT_BITS = 7; -2441: static const unsigned int MANTISSA_BITS = 24; -2441: static const int EXPONENT_BIAS = 64; -2441: static const int EXPONENT_MAX = (1 << (EXPONENT_BITS - 1)) - 1; -2441: static const int EXPONENT_MIN = -EXPONENT_MAX + 1; -2441: static const int EXPONENT_MIN_DENORM = EXPONENT_MIN -2441: - static_cast(MANTISSA_BITS); -2441: static const Floating_Point_Format floating_point_format = IBM_SINGLE; -2441: int inf_sign() const; -2441: bool is_nan() const; -2441: int zero_sign() const; -2441: bool sign_bit() const; -2441: void negate(); -2441: void dec(); -2441: void inc(); -2441: void set_max(bool negative); -2441: void build(bool negative, mpz_t mantissa, int exponent); -2441: }; -2441: -2441: -2441: -2441: -2441: struct float_ibm_double { -2441: static const unsigned int BASE = 16; -2441: static const unsigned int EXPONENT_BITS = 7; -2441: static const unsigned int MANTISSA_BITS = 56; -2441: static const int EXPONENT_BIAS = 64; -2441: }; -2441: -2441: -2441: -2441: -2441: struct float_intel_double_extended { -2441: -2441: -2441: -2441: -2441: uint64_t lsp; -2441: uint32_t msp; -2441: -2441: static const uint32_t MSP_SGN_MASK = 0x00008000U; -2441: static const uint32_t MSP_POS_INF = 0x00007fffU; -2441: static const uint32_t MSP_NEG_INF = 0x0000ffffU; -2441: static const uint32_t MSP_POS_ZERO = 0x00000000U; -2441: static const uint32_t MSP_NEG_ZERO = 0x00008000U; -2441: static const uint64_t LSP_INF = static_cast(0x8000000000000000ULL); -2441: static const uint64_t LSP_ZERO = 0; -2441: static const uint32_t MSP_MAX = 0x00007ffeU; -2441: static const uint64_t LSP_DMAX = static_cast(0x7fffffffffffffffULL); -2441: static const uint64_t LSP_NMAX = static_cast(0xffffffffffffffffULL); -2441: static const unsigned int BASE = 2; -2441: static const unsigned int EXPONENT_BITS = 15; -2441: static const unsigned int MANTISSA_BITS = 63; -2441: static const int EXPONENT_MAX = (1 << (EXPONENT_BITS - 1)) - 1; -2441: static const int EXPONENT_BIAS = EXPONENT_MAX; -2441: static const int EXPONENT_MIN = -EXPONENT_MAX + 1; -2441: static const int EXPONENT_MIN_DENORM = EXPONENT_MIN -2441: - static_cast(MANTISSA_BITS); -2441: static const Floating_Point_Format floating_point_format = -2441: INTEL_DOUBLE_EXTENDED; -2441: int inf_sign() const; -2441: bool is_nan() const; -2441: int zero_sign() const; -2441: bool sign_bit() const; -2441: void negate(); -2441: void dec(); -2441: void inc(); -2441: void set_max(bool negative); -2441: void build(bool negative, mpz_t mantissa, int exponent); -2441: }; -2441: -2441: -2441: -2441: -2441: struct float_ieee754_quad { -2441: -2441: -2441: -2441: -2441: uint64_t lsp; -2441: uint64_t msp; -2441: -2441: static const uint64_t MSP_SGN_MASK = static_cast(0x8000000000000000ULL); -2441: static const uint64_t MSP_POS_INF = static_cast(0x7fff000000000000ULL); -2441: static const uint64_t MSP_NEG_INF = static_cast(0xffff000000000000ULL); -2441: static const uint64_t MSP_POS_ZERO = static_cast(0x0000000000000000ULL); -2441: static const uint64_t MSP_NEG_ZERO = static_cast(0x8000000000000000ULL); -2441: static const uint64_t LSP_INF = 0; -2441: static const uint64_t LSP_ZERO = 0; -2441: static const uint64_t MSP_MAX = static_cast(0x7ffeffffffffffffULL); -2441: static const uint64_t LSP_MAX = static_cast(0xffffffffffffffffULL); -2441: static const unsigned int BASE = 2; -2441: static const unsigned int EXPONENT_BITS = 15; -2441: static const unsigned int MANTISSA_BITS = 112; -2441: static const int EXPONENT_MAX = (1 << (EXPONENT_BITS - 1)) - 1; -2441: static const int EXPONENT_BIAS = EXPONENT_MAX; -2441: static const int EXPONENT_MIN = -EXPONENT_MAX + 1; -2441: static const int EXPONENT_MIN_DENORM = EXPONENT_MIN -2441: - static_cast(MANTISSA_BITS); -2441: static const Floating_Point_Format floating_point_format = IEEE754_QUAD; -2441: int inf_sign() const; -2441: bool is_nan() const; -2441: int zero_sign() const; -2441: bool sign_bit() const; -2441: void negate(); -2441: void dec(); -2441: void inc(); -2441: void set_max(bool negative); -2441: void build(bool negative, mpz_t mantissa, int exponent); -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: class Float : public False { }; -2441: -2441: -2441: template <> -2441: class Float : public True { -2441: public: -2441: -2441: -2441: -2441: typedef float_ieee754_single Binary; -2441: # 306 "../../src/Float_defs.hh" -2441: union { -2441: float number; -2441: Binary binary; -2441: } u; -2441: Float(); -2441: Float(float v); -2441: float value(); -2441: }; -2441: -2441: -2441: -2441: template <> -2441: class Float : public True { -2441: public: -2441: -2441: -2441: -2441: -2441: -2441: typedef float_ieee754_double Binary; -2441: # 335 "../../src/Float_defs.hh" -2441: union { -2441: double number; -2441: Binary binary; -2441: } u; -2441: Float(); -2441: Float(double v); -2441: double value(); -2441: }; -2441: -2441: -2441: -2441: template <> -2441: class Float : public True { -2441: public: -2441: # 360 "../../src/Float_defs.hh" -2441: typedef float_intel_double_extended Binary; -2441: -2441: -2441: -2441: union { -2441: long double number; -2441: Binary binary; -2441: } u; -2441: Float(); -2441: Float(long double v); -2441: long double value(); -2441: }; -2441: # 383 "../../src/Float_defs.hh" -2441: unsigned int msb_position(unsigned long long v); -2441: # 398 "../../src/Float_defs.hh" -2441: template -2441: class FP_Oracle { -2441: public: -2441: # 414 "../../src/Float_defs.hh" -2441: virtual bool get_interval(dimension_type dim, FP_Interval_Type& result) const -2441: = 0; -2441: # 425 "../../src/Float_defs.hh" -2441: virtual bool get_fp_constant_value( -2441: const Floating_Point_Constant& expr, -2441: FP_Interval_Type& result) const = 0; -2441: # 437 "../../src/Float_defs.hh" -2441: virtual bool get_integer_expr_value(const Concrete_Expression& expr, -2441: FP_Interval_Type& result) const = 0; -2441: # 450 "../../src/Float_defs.hh" -2441: virtual bool get_associated_dimensions( -2441: const Approximable_Reference& expr, -2441: std::set& result) const = 0; -2441: -2441: }; -2441: # 463 "../../src/Float_defs.hh" -2441: bool is_less_precise_than(Floating_Point_Format f1, Floating_Point_Format f2); -2441: # 481 "../../src/Float_defs.hh" -2441: template -2441: const FP_Interval_Type& -2441: compute_absolute_error(Floating_Point_Format analyzed_format); -2441: -2441: -2441: -2441: -2441: -2441: template -2441: void -2441: discard_occurrences(std::map >& lf_store, -2441: Variable var); -2441: -2441: -2441: -2441: -2441: -2441: template -2441: void -2441: affine_form_image(std::map >& lf_store, -2441: Variable var, -2441: const Linear_Form& lf); -2441: -2441: -2441: -2441: -2441: -2441: template -2441: void -2441: upper_bound_assign(std::map >& ls1, -2441: const std::map >& ls2); -2441: -2441: } -2441: -2441: # 1 "../../src/Float_inlines.hh" 1 -2441: # 27 "../../src/Float_inlines.hh" -2441: # 1 "../../src/Variable_defs.hh" 1 -2441: # 28 "../../src/Variable_defs.hh" -2441: # 1 "../../src/Init_types.hh" 1 -2441: # 16 "../../src/Init_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: class Init; -2441: -2441: } -2441: # 29 "../../src/Variable_defs.hh" 2 -2441: -2441: -2441: -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: namespace IO_Operators { -2441: -2441: -2441: -2441: std::ostream& -2441: operator<<(std::ostream& s, const Variable v); -2441: -2441: } -2441: -2441: -2441: -2441: bool less(Variable v, Variable w); -2441: -2441: -2441: void -2441: swap(Variable& x, Variable& y); -2441: -2441: } -2441: # 85 "../../src/Variable_defs.hh" -2441: class Parma_Polyhedra_Library::Variable { -2441: -2441: public: -2441: -2441: -2441: -2441: -2441: -2441: -2441: explicit Variable(dimension_type i); -2441: -2441: -2441: dimension_type id() const; -2441: -2441: -2441: static dimension_type max_space_dimension(); -2441: -2441: -2441: -2441: -2441: -2441: dimension_type space_dimension() const; -2441: -2441: -2441: memory_size_type total_memory_in_bytes() const; -2441: -2441: -2441: memory_size_type external_memory_in_bytes() const; -2441: -2441: -2441: bool OK() const; -2441: -2441: -2441: typedef void output_function_type(std::ostream& s, const Variable v); -2441: -2441: -2441: static void default_output_function(std::ostream& s, const Variable v); -2441: -2441: -2441: static void set_output_function(output_function_type* p); -2441: -2441: -2441: static output_function_type* get_output_function(); -2441: -2441: -2441: -2441: struct Compare { -2441: -2441: bool operator()(Variable x, Variable y) const; -2441: }; -2441: -2441: -2441: void m_swap(Variable& v); -2441: -2441: private: -2441: -2441: dimension_type varid; -2441: -2441: -2441: friend class Init; -2441: -2441: friend std::ostream& -2441: Parma_Polyhedra_Library::IO_Operators::operator<<(std::ostream& s, -2441: const Variable v); -2441: -2441: -2441: static output_function_type* current_output_function; -2441: -2441: }; -2441: -2441: # 1 "../../src/Variable_inlines.hh" 1 -2441: # 27 "../../src/Variable_inlines.hh" -2441: # 1 "../../src/globals_defs.hh" 1 -2441: # 28 "../../src/globals_defs.hh" -2441: # 1 "../../src/C_Integer.hh" 1 -2441: # 28 "../../src/C_Integer.hh" -2441: # 1 "/usr/include/c++/8/climits" 1 3 -2441: # 39 "/usr/include/c++/8/climits" 3 -2441: -2441: # 40 "/usr/include/c++/8/climits" 3 -2441: -2441: -2441: # 1 "/usr/lib/gcc/i686-linux-gnu/8/include-fixed/limits.h" 1 3 4 -2441: # 43 "/usr/include/c++/8/climits" 2 3 -2441: # 29 "../../src/C_Integer.hh" 2 -2441: # 59 "../../src/C_Integer.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: struct C_Integer : public False { }; -2441: -2441: template <> -2441: struct C_Integer : public True { -2441: enum const_bool_value { -2441: -2441: is_signed = true -2441: -2441: -2441: -2441: }; -2441: typedef void smaller_type; -2441: typedef void smaller_signed_type; -2441: typedef void smaller_unsigned_type; -2441: -2441: typedef unsigned char other_type; -2441: -2441: -2441: -2441: static const char min = static_cast( -2441: # 81 "../../src/C_Integer.hh" 3 4 -2441: (-0x7f - 1) -2441: # 81 "../../src/C_Integer.hh" -2441: ); -2441: static const char max = static_cast(0x7f); -2441: }; -2441: -2441: template <> -2441: struct C_Integer : public True { -2441: enum const_bool_value { -2441: is_signed = true -2441: }; -2441: typedef void smaller_type; -2441: typedef void smaller_signed_type; -2441: typedef void smaller_unsigned_type; -2441: typedef unsigned char other_type; -2441: static const signed char min = static_cast( -2441: # 94 "../../src/C_Integer.hh" 3 4 -2441: (-0x7f - 1) -2441: # 94 "../../src/C_Integer.hh" -2441: ); -2441: static const signed char max = static_cast(0x7f); -2441: }; -2441: -2441: template <> -2441: struct C_Integer : public True { -2441: enum const_bool_value { -2441: is_signed = true -2441: }; -2441: typedef signed char smaller_type; -2441: typedef signed char smaller_signed_type; -2441: typedef unsigned char smaller_unsigned_type; -2441: typedef unsigned short other_type; -2441: static const signed short min = static_cast( -2441: # 107 "../../src/C_Integer.hh" 3 4 -2441: (-0x7fff - 1) -2441: # 107 "../../src/C_Integer.hh" -2441: ); -2441: static const signed short max = static_cast(0x7fff); -2441: }; -2441: -2441: template <> -2441: struct C_Integer : public True { -2441: enum const_bool_value { -2441: is_signed = true -2441: }; -2441: typedef signed short smaller_type; -2441: typedef signed short smaller_signed_type; -2441: typedef unsigned short smaller_unsigned_type; -2441: typedef unsigned int other_type; -2441: static const signed int min = -2441: # 120 "../../src/C_Integer.hh" 3 4 -2441: (-0x7fffffff - 1) -2441: # 120 "../../src/C_Integer.hh" -2441: ; -2441: static const signed int max = 0x7fffffff; -2441: }; -2441: -2441: template <> -2441: struct C_Integer : public True { -2441: enum const_bool_value { -2441: is_signed = true -2441: }; -2441: typedef signed int smaller_type; -2441: typedef signed int smaller_signed_type; -2441: typedef unsigned int smaller_unsigned_type; -2441: typedef unsigned long other_type; -2441: static const signed long min = -2441: # 133 "../../src/C_Integer.hh" 3 4 -2441: (-0x7fffffffL - 1L) -2441: # 133 "../../src/C_Integer.hh" -2441: ; -2441: static const signed long max = 0x7fffffffL; -2441: }; -2441: -2441: template <> -2441: struct C_Integer : public True { -2441: enum const_bool_value { -2441: is_signed = true -2441: }; -2441: typedef signed long smaller_type; -2441: typedef signed long smaller_signed_type; -2441: typedef unsigned long smaller_unsigned_type; -2441: typedef unsigned long long other_type; -2441: static const signed long long min = -2441: # 146 "../../src/C_Integer.hh" 3 4 -2441: (-0x7fffffffffffffffLL -1) -2441: # 146 "../../src/C_Integer.hh" -2441: ; -2441: static const signed long long max = 0x7fffffffffffffffLL; -2441: }; -2441: -2441: template <> -2441: struct C_Integer : public True { -2441: enum const_bool_value { -2441: is_signed = false -2441: }; -2441: typedef void smaller_type; -2441: typedef void smaller_signed_type; -2441: typedef void smaller_unsigned_type; -2441: typedef signed char other_type; -2441: static const unsigned char min = static_cast(0U); -2441: static const unsigned char max = static_cast( -2441: # 160 "../../src/C_Integer.hh" 3 4 -2441: (0x7f * 2 + 1) -2441: # 160 "../../src/C_Integer.hh" -2441: ); -2441: }; -2441: -2441: template <> -2441: struct C_Integer : public True { -2441: enum const_bool_value { -2441: is_signed = false -2441: }; -2441: typedef unsigned char smaller_type; -2441: typedef signed char smaller_signed_type; -2441: typedef unsigned char smaller_unsigned_type; -2441: typedef signed short other_type; -2441: static const unsigned short min = static_cast(0U); -2441: static const unsigned short max = static_cast( -2441: # 173 "../../src/C_Integer.hh" 3 4 -2441: (0x7fff * 2 + 1) -2441: # 173 "../../src/C_Integer.hh" -2441: ); -2441: }; -2441: -2441: template <> -2441: struct C_Integer : public True { -2441: enum const_bool_value { -2441: is_signed = false -2441: }; -2441: typedef unsigned short smaller_type; -2441: typedef signed short smaller_signed_type; -2441: typedef unsigned short smaller_unsigned_type; -2441: typedef signed int other_type; -2441: static const unsigned int min = 0U; -2441: static const unsigned int max = -2441: # 186 "../../src/C_Integer.hh" 3 4 -2441: (0x7fffffff * 2U + 1U) -2441: # 186 "../../src/C_Integer.hh" -2441: ; -2441: }; -2441: -2441: template <> -2441: struct C_Integer : public True { -2441: enum const_bool_value { -2441: is_signed = false -2441: }; -2441: typedef unsigned int smaller_type; -2441: typedef signed int smaller_signed_type; -2441: typedef unsigned int smaller_unsigned_type; -2441: typedef signed long other_type; -2441: static const unsigned long min = 0UL; -2441: static const unsigned long max = -2441: # 199 "../../src/C_Integer.hh" 3 4 -2441: (0x7fffffffL * 2UL + 1UL) -2441: # 199 "../../src/C_Integer.hh" -2441: ; -2441: }; -2441: -2441: template <> -2441: struct C_Integer : public True { -2441: enum const_bool_value { -2441: is_signed = false -2441: }; -2441: typedef unsigned long smaller_type; -2441: typedef signed long smaller_signed_type; -2441: typedef unsigned long smaller_unsigned_type; -2441: typedef signed long long other_type; -2441: static const unsigned long long min = 0ULL; -2441: static const unsigned long long max = -2441: # 212 "../../src/C_Integer.hh" 3 4 -2441: (0x7fffffffffffffffLL * 2ULL + 1) -2441: # 212 "../../src/C_Integer.hh" -2441: ; -2441: }; -2441: -2441: } -2441: # 29 "../../src/globals_defs.hh" 2 -2441: # 100 "../../src/globals_defs.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: dimension_type -2441: not_a_dimension(); -2441: -2441: -2441: -2441: -2441: int32_t -2441: hash_code_from_dimension(dimension_type dim); -2441: # 120 "../../src/globals_defs.hh" -2441: template -2441: inline typename Enable_If::value, void>::type -2441: swap(T&, T&) { -2441: enum anonymous_enum_compile_time_check___LINE__ { compile_time_check_123 = sizeof(Parma_Polyhedra_Library::Compile_Time_Check<(!Slow_Copy::value)>) }; -2441: } -2441: # 156 "../../src/globals_defs.hh" -2441: dimension_type -2441: compute_capacity(dimension_type requested_size, -2441: dimension_type maximum_size); -2441: # 169 "../../src/globals_defs.hh" -2441: struct Weightwatch_Traits { -2441: -2441: typedef unsigned long long Threshold; -2441: -2441: -2441: typedef unsigned long long Delta; -2441: -2441: -2441: static const Threshold& get(); -2441: -2441: -2441: static bool less_than(const Threshold& a, const Threshold& b); -2441: # 194 "../../src/globals_defs.hh" -2441: static Delta compute_delta(unsigned long unscaled, unsigned scale); -2441: -2441: -2441: static void from_delta(Threshold& threshold, const Delta& delta); -2441: -2441: -2441: static Threshold weight; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: static void (*check_function)(void); -2441: }; -2441: # 239 "../../src/globals_defs.hh" -2441: class Throwable { -2441: public: -2441: -2441: virtual void throw_me() const = 0; -2441: -2441: -2441: virtual ~Throwable(); -2441: }; -2441: # 271 "../../src/globals_defs.hh" -2441: extern const Throwable* volatile abandon_expensive_computations; -2441: # 281 "../../src/globals_defs.hh" -2441: void -2441: maybe_abandon(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: struct Recycle_Input { -2441: }; -2441: # 401 "../../src/globals_defs.hh" -2441: bool is_space(char c); -2441: -2441: template -2441: struct Fit : public False { -2441: }; -2441: -2441: template -2441: struct Fit::value>::type> { -2441: enum { -2441: value = (v >= static_cast(C_Integer::min) -2441: && v <= static_cast(C_Integer::max)) -2441: }; -2441: }; -2441: -2441: template -2441: struct TConstant { -2441: static const T value = v; -2441: }; -2441: -2441: -2441: template -2441: const T TConstant::value; -2441: -2441: template -2441: struct Constant_ : public TConstant { -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: struct Constant_::smaller_signed_type, v>::value -2441: && (prefer_signed -2441: || !Fit::smaller_unsigned_type, v>::value))>::type> -2441: : public Constant_::smaller_signed_type, v, prefer_signed> { -2441: }; -2441: -2441: template -2441: struct Constant_::smaller_unsigned_type, v>::value -2441: && (!prefer_signed -2441: || !Fit::smaller_signed_type, v>::value))>::type> -2441: : public Constant_::smaller_unsigned_type, v, prefer_signed> { -2441: }; -2441: -2441: -2441: -2441: template -2441: struct Constant : public Constant_ { -2441: }; -2441: # 465 "../../src/globals_defs.hh" -2441: template -2441: typename Enable_If::value, memory_size_type>::type -2441: total_memory_in_bytes(const T&); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: typename Enable_If::value, memory_size_type>::type -2441: external_memory_in_bytes(const T&); -2441: -2441: -2441: -2441: -2441: memory_size_type -2441: total_memory_in_bytes(const mpz_class& x); -2441: -2441: -2441: -2441: -2441: memory_size_type -2441: external_memory_in_bytes(const mpz_class& x); -2441: -2441: -2441: -2441: -2441: memory_size_type -2441: total_memory_in_bytes(const mpq_class& x); -2441: -2441: -2441: -2441: -2441: memory_size_type -2441: external_memory_in_bytes(const mpq_class& x); -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct Has_OK : public False { }; -2441: -2441: template -2441: struct Has_OK::type> -2441: : public True { -2441: }; -2441: -2441: template -2441: inline typename Enable_If::value, bool>::type -2441: f_OK(const T& to) { -2441: return to.OK(); -2441: } -2441: -2441: -2441: -2441: inline bool f_OK(const char&) { return true; } -2441: inline bool f_OK(const signed char&) { return true; } -2441: inline bool f_OK(const unsigned char&) { return true; } -2441: inline bool f_OK(const signed short&) { return true; } -2441: inline bool f_OK(const unsigned short&) { return true; } -2441: inline bool f_OK(const signed int&) { return true; } -2441: inline bool f_OK(const unsigned int&) { return true; } -2441: inline bool f_OK(const signed long&) { return true; } -2441: inline bool f_OK(const unsigned long&) { return true; } -2441: inline bool f_OK(const signed long long&) { return true; } -2441: inline bool f_OK(const unsigned long long&) { return true; } -2441: inline bool f_OK(const float&) { return true; } -2441: inline bool f_OK(const double&) { return true; } -2441: inline bool f_OK(const long double&) { return true; } -2441: inline bool f_OK(const mpz_class&) { return true; } -2441: inline bool f_OK(const mpq_class&) { return true; } -2441: -2441: void ascii_dump(std::ostream& s, Representation r); -2441: bool ascii_load(std::istream& s, Representation& r); -2441: -2441: dimension_type -2441: check_space_dimension_overflow(dimension_type dim, -2441: dimension_type max, -2441: const char* domain, -2441: const char* method, -2441: const char* reason); -2441: -2441: template -2441: typename RA_Container::iterator -2441: nth_iter(RA_Container& cont, dimension_type n); -2441: -2441: template -2441: typename RA_Container::const_iterator -2441: nth_iter(const RA_Container& cont, dimension_type n); -2441: -2441: dimension_type -2441: least_significant_one_mask(dimension_type i); -2441: -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: # 1 "../../src/globals_inlines.hh" 1 -2441: # 29 "../../src/globals_inlines.hh" -2441: # 1 "/usr/include/c++/8/cassert" 1 3 -2441: # 41 "/usr/include/c++/8/cassert" 3 -2441: -2441: # 42 "/usr/include/c++/8/cassert" 3 -2441: -2441: -2441: # 1 "/usr/include/assert.h" 1 3 4 -2441: # 44 "/usr/include/c++/8/cassert" 2 3 -2441: # 30 "../../src/globals_inlines.hh" 2 -2441: # 1 "/usr/include/c++/8/istream" 1 3 -2441: # 36 "/usr/include/c++/8/istream" 3 -2441: -2441: # 37 "/usr/include/c++/8/istream" 3 -2441: -2441: # 1 "/usr/include/c++/8/ios" 1 3 -2441: # 36 "/usr/include/c++/8/ios" 3 -2441: -2441: # 37 "/usr/include/c++/8/ios" 3 -2441: -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/c++/8/bits/ios_base.h" 1 3 -2441: # 37 "/usr/include/c++/8/bits/ios_base.h" 3 -2441: -2441: # 38 "/usr/include/c++/8/bits/ios_base.h" 3 -2441: -2441: -2441: -2441: # 1 "/usr/include/c++/8/bits/locale_classes.h" 1 3 -2441: # 37 "/usr/include/c++/8/bits/locale_classes.h" 3 -2441: -2441: # 38 "/usr/include/c++/8/bits/locale_classes.h" 3 -2441: -2441: -2441: -2441: -2441: -2441: -2441: # 43 "/usr/include/c++/8/bits/locale_classes.h" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: # 62 "/usr/include/c++/8/bits/locale_classes.h" 3 -2441: class locale -2441: { -2441: public: -2441: -2441: -2441: typedef int category; -2441: -2441: -2441: class facet; -2441: class id; -2441: class _Impl; -2441: -2441: friend class facet; -2441: friend class _Impl; -2441: -2441: template -2441: friend bool -2441: has_facet(const locale&) throw(); -2441: -2441: template -2441: friend const _Facet& -2441: use_facet(const locale&); -2441: -2441: template -2441: friend struct __use_cache; -2441: # 98 "/usr/include/c++/8/bits/locale_classes.h" 3 -2441: static const category none = 0; -2441: static const category ctype = 1L << 0; -2441: static const category numeric = 1L << 1; -2441: static const category collate = 1L << 2; -2441: static const category time = 1L << 3; -2441: static const category monetary = 1L << 4; -2441: static const category messages = 1L << 5; -2441: static const category all = (ctype | numeric | collate | -2441: time | monetary | messages); -2441: # 117 "/usr/include/c++/8/bits/locale_classes.h" 3 -2441: locale() throw(); -2441: # 126 "/usr/include/c++/8/bits/locale_classes.h" 3 -2441: locale(const locale& __other) throw(); -2441: # 136 "/usr/include/c++/8/bits/locale_classes.h" 3 -2441: explicit -2441: locale(const char* __s); -2441: # 151 "/usr/include/c++/8/bits/locale_classes.h" 3 -2441: locale(const locale& __base, const char* __s, category __cat); -2441: # 162 "/usr/include/c++/8/bits/locale_classes.h" 3 -2441: explicit -2441: locale(const std::string& __s) : locale(__s.c_str()) { } -2441: # 177 "/usr/include/c++/8/bits/locale_classes.h" 3 -2441: locale(const locale& __base, const std::string& __s, category __cat) -2441: : locale(__base, __s.c_str(), __cat) { } -2441: # 192 "/usr/include/c++/8/bits/locale_classes.h" 3 -2441: locale(const locale& __base, const locale& __add, category __cat); -2441: # 205 "/usr/include/c++/8/bits/locale_classes.h" 3 -2441: template -2441: locale(const locale& __other, _Facet* __f); -2441: -2441: -2441: ~locale() throw(); -2441: # 219 "/usr/include/c++/8/bits/locale_classes.h" 3 -2441: const locale& -2441: operator=(const locale& __other) throw(); -2441: # 234 "/usr/include/c++/8/bits/locale_classes.h" 3 -2441: template -2441: locale -2441: combine(const locale& __other) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: __attribute ((__abi_tag__ ("cxx11"))) -2441: string -2441: name() const; -2441: # 254 "/usr/include/c++/8/bits/locale_classes.h" 3 -2441: bool -2441: operator==(const locale& __other) const throw(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool -2441: operator!=(const locale& __other) const throw() -2441: { return !(this->operator==(__other)); } -2441: # 282 "/usr/include/c++/8/bits/locale_classes.h" 3 -2441: template -2441: bool -2441: operator()(const basic_string<_Char, _Traits, _Alloc>& __s1, -2441: const basic_string<_Char, _Traits, _Alloc>& __s2) const; -2441: # 298 "/usr/include/c++/8/bits/locale_classes.h" 3 -2441: static locale -2441: global(const locale& __loc); -2441: -2441: -2441: -2441: -2441: static const locale& -2441: classic(); -2441: -2441: private: -2441: -2441: _Impl* _M_impl; -2441: -2441: -2441: static _Impl* _S_classic; -2441: -2441: -2441: static _Impl* _S_global; -2441: -2441: -2441: -2441: -2441: -2441: static const char* const* const _S_categories; -2441: # 333 "/usr/include/c++/8/bits/locale_classes.h" 3 -2441: enum { _S_categories_size = 6 + 6 }; -2441: -2441: -2441: static __gthread_once_t _S_once; -2441: -2441: -2441: explicit -2441: locale(_Impl*) throw(); -2441: -2441: static void -2441: _S_initialize(); -2441: -2441: static void -2441: _S_initialize_once() throw(); -2441: -2441: static category -2441: _S_normalize_category(category); -2441: -2441: void -2441: _M_coalesce(const locale& __base, const locale& __add, category __cat); -2441: -2441: -2441: static const id* const _S_twinned_facets[]; -2441: -2441: }; -2441: # 371 "/usr/include/c++/8/bits/locale_classes.h" 3 -2441: class locale::facet -2441: { -2441: private: -2441: friend class locale; -2441: friend class locale::_Impl; -2441: -2441: mutable _Atomic_word _M_refcount; -2441: -2441: -2441: static __c_locale _S_c_locale; -2441: -2441: -2441: static const char _S_c_name[2]; -2441: -2441: -2441: static __gthread_once_t _S_once; -2441: -2441: -2441: static void -2441: _S_initialize_once(); -2441: -2441: protected: -2441: # 402 "/usr/include/c++/8/bits/locale_classes.h" 3 -2441: explicit -2441: facet(size_t __refs = 0) throw() : _M_refcount(__refs ? 1 : 0) -2441: { } -2441: -2441: -2441: virtual -2441: ~facet(); -2441: -2441: static void -2441: _S_create_c_locale(__c_locale& __cloc, const char* __s, -2441: __c_locale __old = 0); -2441: -2441: static __c_locale -2441: _S_clone_c_locale(__c_locale& __cloc) throw(); -2441: -2441: static void -2441: _S_destroy_c_locale(__c_locale& __cloc); -2441: -2441: static __c_locale -2441: _S_lc_ctype_c_locale(__c_locale __cloc, const char* __s); -2441: -2441: -2441: -2441: static __c_locale -2441: _S_get_c_locale(); -2441: -2441: __attribute__ ((__const__)) static const char* -2441: _S_get_c_name() throw(); -2441: # 438 "/usr/include/c++/8/bits/locale_classes.h" 3 -2441: facet(const facet&) = delete; -2441: -2441: facet& -2441: operator=(const facet&) = delete; -2441: -2441: -2441: private: -2441: void -2441: _M_add_reference() const throw() -2441: { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); } -2441: -2441: void -2441: _M_remove_reference() const throw() -2441: { -2441: -2441: ; -2441: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1) -2441: { -2441: ; -2441: try -2441: { delete this; } -2441: catch(...) -2441: { } -2441: } -2441: } -2441: -2441: const facet* _M_sso_shim(const id*) const; -2441: const facet* _M_cow_shim(const id*) const; -2441: -2441: protected: -2441: class __shim; -2441: }; -2441: # 483 "/usr/include/c++/8/bits/locale_classes.h" 3 -2441: class locale::id -2441: { -2441: private: -2441: friend class locale; -2441: friend class locale::_Impl; -2441: -2441: template -2441: friend const _Facet& -2441: use_facet(const locale&); -2441: -2441: template -2441: friend bool -2441: has_facet(const locale&) throw(); -2441: -2441: -2441: -2441: -2441: mutable size_t _M_index; -2441: -2441: -2441: static _Atomic_word _S_refcount; -2441: -2441: void -2441: operator=(const id&); -2441: -2441: id(const id&); -2441: -2441: public: -2441: -2441: -2441: -2441: id() { } -2441: -2441: size_t -2441: _M_id() const throw(); -2441: }; -2441: -2441: -2441: -2441: class locale::_Impl -2441: { -2441: public: -2441: -2441: friend class locale; -2441: friend class locale::facet; -2441: -2441: template -2441: friend bool -2441: has_facet(const locale&) throw(); -2441: -2441: template -2441: friend const _Facet& -2441: use_facet(const locale&); -2441: -2441: template -2441: friend struct __use_cache; -2441: -2441: private: -2441: -2441: _Atomic_word _M_refcount; -2441: const facet** _M_facets; -2441: size_t _M_facets_size; -2441: const facet** _M_caches; -2441: char** _M_names; -2441: static const locale::id* const _S_id_ctype[]; -2441: static const locale::id* const _S_id_numeric[]; -2441: static const locale::id* const _S_id_collate[]; -2441: static const locale::id* const _S_id_time[]; -2441: static const locale::id* const _S_id_monetary[]; -2441: static const locale::id* const _S_id_messages[]; -2441: static const locale::id* const* const _S_facet_categories[]; -2441: -2441: void -2441: _M_add_reference() throw() -2441: { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); } -2441: -2441: void -2441: _M_remove_reference() throw() -2441: { -2441: -2441: ; -2441: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1) -2441: { -2441: ; -2441: try -2441: { delete this; } -2441: catch(...) -2441: { } -2441: } -2441: } -2441: -2441: _Impl(const _Impl&, size_t); -2441: _Impl(const char*, size_t); -2441: _Impl(size_t) throw(); -2441: -2441: ~_Impl() throw(); -2441: -2441: _Impl(const _Impl&); -2441: -2441: void -2441: operator=(const _Impl&); -2441: -2441: bool -2441: _M_check_same_name() -2441: { -2441: bool __ret = true; -2441: if (_M_names[1]) -2441: -2441: for (size_t __i = 0; __ret && __i < _S_categories_size - 1; ++__i) -2441: __ret = __builtin_strcmp(_M_names[__i], _M_names[__i + 1]) == 0; -2441: return __ret; -2441: } -2441: -2441: void -2441: _M_replace_categories(const _Impl*, category); -2441: -2441: void -2441: _M_replace_category(const _Impl*, const locale::id* const*); -2441: -2441: void -2441: _M_replace_facet(const _Impl*, const locale::id*); -2441: -2441: void -2441: _M_install_facet(const locale::id*, const facet*); -2441: -2441: template -2441: void -2441: _M_init_facet(_Facet* __facet) -2441: { _M_install_facet(&_Facet::id, __facet); } -2441: -2441: template -2441: void -2441: _M_init_facet_unchecked(_Facet* __facet) -2441: { -2441: __facet->_M_add_reference(); -2441: _M_facets[_Facet::id._M_id()] = __facet; -2441: } -2441: -2441: void -2441: _M_install_cache(const facet*, size_t); -2441: -2441: void _M_init_extra(facet**); -2441: void _M_init_extra(void*, void*, const char*, const char*); -2441: }; -2441: # 641 "/usr/include/c++/8/bits/locale_classes.h" 3 -2441: template -2441: class __cxx11:: collate : public locale::facet -2441: { -2441: public: -2441: -2441: -2441: -2441: typedef _CharT char_type; -2441: typedef basic_string<_CharT> string_type; -2441: -2441: -2441: protected: -2441: -2441: -2441: __c_locale _M_c_locale_collate; -2441: -2441: public: -2441: -2441: static locale::id id; -2441: # 668 "/usr/include/c++/8/bits/locale_classes.h" 3 -2441: explicit -2441: collate(size_t __refs = 0) -2441: : facet(__refs), _M_c_locale_collate(_S_get_c_locale()) -2441: { } -2441: # 682 "/usr/include/c++/8/bits/locale_classes.h" 3 -2441: explicit -2441: collate(__c_locale __cloc, size_t __refs = 0) -2441: : facet(__refs), _M_c_locale_collate(_S_clone_c_locale(__cloc)) -2441: { } -2441: # 699 "/usr/include/c++/8/bits/locale_classes.h" 3 -2441: int -2441: compare(const _CharT* __lo1, const _CharT* __hi1, -2441: const _CharT* __lo2, const _CharT* __hi2) const -2441: { return this->do_compare(__lo1, __hi1, __lo2, __hi2); } -2441: # 718 "/usr/include/c++/8/bits/locale_classes.h" 3 -2441: string_type -2441: transform(const _CharT* __lo, const _CharT* __hi) const -2441: { return this->do_transform(__lo, __hi); } -2441: # 732 "/usr/include/c++/8/bits/locale_classes.h" 3 -2441: long -2441: hash(const _CharT* __lo, const _CharT* __hi) const -2441: { return this->do_hash(__lo, __hi); } -2441: -2441: -2441: int -2441: _M_compare(const _CharT*, const _CharT*) const throw(); -2441: -2441: size_t -2441: _M_transform(_CharT*, const _CharT*, size_t) const throw(); -2441: -2441: protected: -2441: -2441: virtual -2441: ~collate() -2441: { _S_destroy_c_locale(_M_c_locale_collate); } -2441: # 761 "/usr/include/c++/8/bits/locale_classes.h" 3 -2441: virtual int -2441: do_compare(const _CharT* __lo1, const _CharT* __hi1, -2441: const _CharT* __lo2, const _CharT* __hi2) const; -2441: # 775 "/usr/include/c++/8/bits/locale_classes.h" 3 -2441: virtual string_type -2441: do_transform(const _CharT* __lo, const _CharT* __hi) const; -2441: # 788 "/usr/include/c++/8/bits/locale_classes.h" 3 -2441: virtual long -2441: do_hash(const _CharT* __lo, const _CharT* __hi) const; -2441: }; -2441: -2441: template -2441: locale::id collate<_CharT>::id; -2441: -2441: -2441: template<> -2441: int -2441: collate::_M_compare(const char*, const char*) const throw(); -2441: -2441: template<> -2441: size_t -2441: collate::_M_transform(char*, const char*, size_t) const throw(); -2441: -2441: -2441: template<> -2441: int -2441: collate::_M_compare(const wchar_t*, const wchar_t*) const throw(); -2441: -2441: template<> -2441: size_t -2441: collate::_M_transform(wchar_t*, const wchar_t*, size_t) const throw(); -2441: -2441: -2441: -2441: template -2441: class __cxx11:: collate_byname : public collate<_CharT> -2441: { -2441: public: -2441: -2441: -2441: typedef _CharT char_type; -2441: typedef basic_string<_CharT> string_type; -2441: -2441: -2441: explicit -2441: collate_byname(const char* __s, size_t __refs = 0) -2441: : collate<_CharT>(__refs) -2441: { -2441: if (__builtin_strcmp(__s, "C") != 0 -2441: && __builtin_strcmp(__s, "POSIX") != 0) -2441: { -2441: this->_S_destroy_c_locale(this->_M_c_locale_collate); -2441: this->_S_create_c_locale(this->_M_c_locale_collate, __s); -2441: } -2441: } -2441: -2441: -2441: explicit -2441: collate_byname(const string& __s, size_t __refs = 0) -2441: : collate_byname(__s.c_str(), __refs) { } -2441: -2441: -2441: protected: -2441: virtual -2441: ~collate_byname() { } -2441: }; -2441: -2441: -2441: } -2441: -2441: # 1 "/usr/include/c++/8/bits/locale_classes.tcc" 1 3 -2441: # 37 "/usr/include/c++/8/bits/locale_classes.tcc" 3 -2441: -2441: # 38 "/usr/include/c++/8/bits/locale_classes.tcc" 3 -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: template -2441: locale:: -2441: locale(const locale& __other, _Facet* __f) -2441: { -2441: _M_impl = new _Impl(*__other._M_impl, 1); -2441: -2441: try -2441: { _M_impl->_M_install_facet(&_Facet::id, __f); } -2441: catch(...) -2441: { -2441: _M_impl->_M_remove_reference(); -2441: throw; -2441: } -2441: delete [] _M_impl->_M_names[0]; -2441: _M_impl->_M_names[0] = 0; -2441: } -2441: -2441: template -2441: locale -2441: locale:: -2441: combine(const locale& __other) const -2441: { -2441: _Impl* __tmp = new _Impl(*_M_impl, 1); -2441: try -2441: { -2441: __tmp->_M_replace_facet(__other._M_impl, &_Facet::id); -2441: } -2441: catch(...) -2441: { -2441: __tmp->_M_remove_reference(); -2441: throw; -2441: } -2441: return locale(__tmp); -2441: } -2441: -2441: template -2441: bool -2441: locale:: -2441: operator()(const basic_string<_CharT, _Traits, _Alloc>& __s1, -2441: const basic_string<_CharT, _Traits, _Alloc>& __s2) const -2441: { -2441: typedef std::collate<_CharT> __collate_type; -2441: const __collate_type& __collate = use_facet<__collate_type>(*this); -2441: return (__collate.compare(__s1.data(), __s1.data() + __s1.length(), -2441: __s2.data(), __s2.data() + __s2.length()) < 0); -2441: } -2441: # 102 "/usr/include/c++/8/bits/locale_classes.tcc" 3 -2441: template -2441: bool -2441: has_facet(const locale& __loc) throw() -2441: { -2441: const size_t __i = _Facet::id._M_id(); -2441: const locale::facet** __facets = __loc._M_impl->_M_facets; -2441: return (__i < __loc._M_impl->_M_facets_size -2441: -2441: && dynamic_cast(__facets[__i])); -2441: -2441: -2441: -2441: } -2441: # 130 "/usr/include/c++/8/bits/locale_classes.tcc" 3 -2441: template -2441: const _Facet& -2441: use_facet(const locale& __loc) -2441: { -2441: const size_t __i = _Facet::id._M_id(); -2441: const locale::facet** __facets = __loc._M_impl->_M_facets; -2441: if (__i >= __loc._M_impl->_M_facets_size || !__facets[__i]) -2441: __throw_bad_cast(); -2441: -2441: return dynamic_cast(*__facets[__i]); -2441: -2441: -2441: -2441: } -2441: -2441: -2441: -2441: template -2441: int -2441: collate<_CharT>::_M_compare(const _CharT*, const _CharT*) const throw () -2441: { return 0; } -2441: -2441: -2441: template -2441: size_t -2441: collate<_CharT>::_M_transform(_CharT*, const _CharT*, size_t) const throw () -2441: { return 0; } -2441: -2441: template -2441: int -2441: collate<_CharT>:: -2441: do_compare(const _CharT* __lo1, const _CharT* __hi1, -2441: const _CharT* __lo2, const _CharT* __hi2) const -2441: { -2441: -2441: -2441: const string_type __one(__lo1, __hi1); -2441: const string_type __two(__lo2, __hi2); -2441: -2441: const _CharT* __p = __one.c_str(); -2441: const _CharT* __pend = __one.data() + __one.length(); -2441: const _CharT* __q = __two.c_str(); -2441: const _CharT* __qend = __two.data() + __two.length(); -2441: -2441: -2441: -2441: -2441: for (;;) -2441: { -2441: const int __res = _M_compare(__p, __q); -2441: if (__res) -2441: return __res; -2441: -2441: __p += char_traits<_CharT>::length(__p); -2441: __q += char_traits<_CharT>::length(__q); -2441: if (__p == __pend && __q == __qend) -2441: return 0; -2441: else if (__p == __pend) -2441: return -1; -2441: else if (__q == __qend) -2441: return 1; -2441: -2441: __p++; -2441: __q++; -2441: } -2441: } -2441: -2441: template -2441: typename collate<_CharT>::string_type -2441: collate<_CharT>:: -2441: do_transform(const _CharT* __lo, const _CharT* __hi) const -2441: { -2441: string_type __ret; -2441: -2441: -2441: const string_type __str(__lo, __hi); -2441: -2441: const _CharT* __p = __str.c_str(); -2441: const _CharT* __pend = __str.data() + __str.length(); -2441: -2441: size_t __len = (__hi - __lo) * 2; -2441: -2441: _CharT* __c = new _CharT[__len]; -2441: -2441: try -2441: { -2441: -2441: -2441: -2441: for (;;) -2441: { -2441: -2441: size_t __res = _M_transform(__c, __p, __len); -2441: -2441: -2441: if (__res >= __len) -2441: { -2441: __len = __res + 1; -2441: delete [] __c, __c = 0; -2441: __c = new _CharT[__len]; -2441: __res = _M_transform(__c, __p, __len); -2441: } -2441: -2441: __ret.append(__c, __res); -2441: __p += char_traits<_CharT>::length(__p); -2441: if (__p == __pend) -2441: break; -2441: -2441: __p++; -2441: __ret.push_back(_CharT()); -2441: } -2441: } -2441: catch(...) -2441: { -2441: delete [] __c; -2441: throw; -2441: } -2441: -2441: delete [] __c; -2441: -2441: return __ret; -2441: } -2441: -2441: template -2441: long -2441: collate<_CharT>:: -2441: do_hash(const _CharT* __lo, const _CharT* __hi) const -2441: { -2441: unsigned long __val = 0; -2441: for (; __lo < __hi; ++__lo) -2441: __val = -2441: *__lo + ((__val << 7) -2441: | (__val >> (__gnu_cxx::__numeric_traits:: -2441: __digits - 7))); -2441: return static_cast(__val); -2441: } -2441: -2441: -2441: -2441: -2441: extern template class collate; -2441: extern template class collate_byname; -2441: -2441: extern template -2441: const collate& -2441: use_facet >(const locale&); -2441: -2441: extern template -2441: bool -2441: has_facet >(const locale&); -2441: -2441: -2441: extern template class collate; -2441: extern template class collate_byname; -2441: -2441: extern template -2441: const collate& -2441: use_facet >(const locale&); -2441: -2441: extern template -2441: bool -2441: has_facet >(const locale&); -2441: -2441: -2441: -2441: -2441: } -2441: # 852 "/usr/include/c++/8/bits/locale_classes.h" 2 3 -2441: # 42 "/usr/include/c++/8/bits/ios_base.h" 2 3 -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/c++/8/system_error" 1 3 -2441: # 32 "/usr/include/c++/8/system_error" 3 -2441: -2441: # 33 "/usr/include/c++/8/system_error" 3 -2441: -2441: -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/c++/8/bits/error_constants.h" 1 3 -2441: # 34 "/usr/include/i386-linux-gnu/c++/8/bits/error_constants.h" 3 -2441: # 1 "/usr/include/c++/8/cerrno" 1 3 -2441: # 39 "/usr/include/c++/8/cerrno" 3 -2441: -2441: # 40 "/usr/include/c++/8/cerrno" 3 -2441: # 35 "/usr/include/i386-linux-gnu/c++/8/bits/error_constants.h" 2 3 -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: enum class errc -2441: { -2441: address_family_not_supported = 97, -2441: address_in_use = 98, -2441: address_not_available = 99, -2441: already_connected = 106, -2441: argument_list_too_long = 7, -2441: argument_out_of_domain = 33, -2441: bad_address = 14, -2441: bad_file_descriptor = 9, -2441: -2441: -2441: bad_message = 74, -2441: -2441: -2441: broken_pipe = 32, -2441: connection_aborted = 103, -2441: connection_already_in_progress = 114, -2441: connection_refused = 111, -2441: connection_reset = 104, -2441: cross_device_link = 18, -2441: destination_address_required = 89, -2441: device_or_resource_busy = 16, -2441: directory_not_empty = 39, -2441: executable_format_error = 8, -2441: file_exists = 17, -2441: file_too_large = 27, -2441: filename_too_long = 36, -2441: function_not_supported = 38, -2441: host_unreachable = 113, -2441: -2441: -2441: identifier_removed = 43, -2441: -2441: -2441: illegal_byte_sequence = 84, -2441: inappropriate_io_control_operation = 25, -2441: interrupted = 4, -2441: invalid_argument = 22, -2441: invalid_seek = 29, -2441: io_error = 5, -2441: is_a_directory = 21, -2441: message_size = 90, -2441: network_down = 100, -2441: network_reset = 102, -2441: network_unreachable = 101, -2441: no_buffer_space = 105, -2441: no_child_process = 10, -2441: -2441: -2441: no_link = 67, -2441: -2441: -2441: no_lock_available = 37, -2441: -2441: -2441: no_message_available = 61, -2441: -2441: -2441: no_message = 42, -2441: no_protocol_option = 92, -2441: no_space_on_device = 28, -2441: -2441: -2441: no_stream_resources = 63, -2441: -2441: -2441: no_such_device_or_address = 6, -2441: no_such_device = 19, -2441: no_such_file_or_directory = 2, -2441: no_such_process = 3, -2441: not_a_directory = 20, -2441: not_a_socket = 88, -2441: -2441: -2441: not_a_stream = 60, -2441: -2441: -2441: not_connected = 107, -2441: not_enough_memory = 12, -2441: -2441: -2441: not_supported = 95, -2441: -2441: -2441: -2441: operation_canceled = 125, -2441: -2441: -2441: operation_in_progress = 115, -2441: operation_not_permitted = 1, -2441: operation_not_supported = 95, -2441: operation_would_block = 11, -2441: -2441: -2441: owner_dead = 130, -2441: -2441: -2441: permission_denied = 13, -2441: -2441: -2441: protocol_error = 71, -2441: -2441: -2441: protocol_not_supported = 93, -2441: read_only_file_system = 30, -2441: resource_deadlock_would_occur = 35, -2441: resource_unavailable_try_again = 11, -2441: result_out_of_range = 34, -2441: -2441: -2441: state_not_recoverable = 131, -2441: -2441: -2441: -2441: stream_timeout = 62, -2441: -2441: -2441: -2441: text_file_busy = 26, -2441: -2441: -2441: timed_out = 110, -2441: too_many_files_open_in_system = 23, -2441: too_many_files_open = 24, -2441: too_many_links = 31, -2441: too_many_symbolic_link_levels = 40, -2441: -2441: -2441: value_too_large = 75, -2441: -2441: -2441: wrong_protocol_type = 91 -2441: }; -2441: -2441: -2441: } -2441: # 40 "/usr/include/c++/8/system_error" 2 3 -2441: -2441: -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: class error_code; -2441: class error_condition; -2441: class system_error; -2441: -2441: -2441: template -2441: struct is_error_code_enum : public false_type { }; -2441: -2441: -2441: template -2441: struct is_error_condition_enum : public false_type { }; -2441: -2441: template<> -2441: struct is_error_condition_enum -2441: : public true_type { }; -2441: # 71 "/usr/include/c++/8/system_error" 3 -2441: inline namespace _V2 { -2441: -2441: -2441: class error_category -2441: { -2441: public: -2441: constexpr error_category() noexcept = default; -2441: -2441: virtual ~error_category(); -2441: -2441: error_category(const error_category&) = delete; -2441: error_category& operator=(const error_category&) = delete; -2441: -2441: virtual const char* -2441: name() const noexcept = 0; -2441: -2441: -2441: -2441: -2441: -2441: -2441: private: -2441: __attribute ((__abi_tag__ ("cxx11"))) -2441: virtual __cow_string -2441: _M_message(int) const; -2441: -2441: public: -2441: __attribute ((__abi_tag__ ("cxx11"))) -2441: virtual string -2441: message(int) const = 0; -2441: # 110 "/usr/include/c++/8/system_error" 3 -2441: public: -2441: virtual error_condition -2441: default_error_condition(int __i) const noexcept; -2441: -2441: virtual bool -2441: equivalent(int __i, const error_condition& __cond) const noexcept; -2441: -2441: virtual bool -2441: equivalent(const error_code& __code, int __i) const noexcept; -2441: -2441: bool -2441: operator<(const error_category& __other) const noexcept -2441: { return less()(this, &__other); } -2441: -2441: bool -2441: operator==(const error_category& __other) const noexcept -2441: { return this == &__other; } -2441: -2441: bool -2441: operator!=(const error_category& __other) const noexcept -2441: { return this != &__other; } -2441: }; -2441: -2441: -2441: __attribute__ ((__const__)) const error_category& system_category() noexcept; -2441: __attribute__ ((__const__)) const error_category& generic_category() noexcept; -2441: -2441: } -2441: -2441: error_code make_error_code(errc) noexcept; -2441: -2441: template -2441: struct hash; -2441: -2441: -2441: -2441: struct error_code -2441: { -2441: error_code() noexcept -2441: : _M_value(0), _M_cat(&system_category()) { } -2441: -2441: error_code(int __v, const error_category& __cat) noexcept -2441: : _M_value(__v), _M_cat(&__cat) { } -2441: -2441: template::value>::type> -2441: error_code(_ErrorCodeEnum __e) noexcept -2441: { *this = make_error_code(__e); } -2441: -2441: void -2441: assign(int __v, const error_category& __cat) noexcept -2441: { -2441: _M_value = __v; -2441: _M_cat = &__cat; -2441: } -2441: -2441: void -2441: clear() noexcept -2441: { assign(0, system_category()); } -2441: -2441: -2441: template -2441: typename enable_if::value, -2441: error_code&>::type -2441: operator=(_ErrorCodeEnum __e) noexcept -2441: { return *this = make_error_code(__e); } -2441: -2441: int -2441: value() const noexcept { return _M_value; } -2441: -2441: const error_category& -2441: category() const noexcept { return *_M_cat; } -2441: -2441: error_condition -2441: default_error_condition() const noexcept; -2441: -2441: __attribute ((__abi_tag__ ("cxx11"))) -2441: string -2441: message() const -2441: { return category().message(value()); } -2441: -2441: explicit operator bool() const noexcept -2441: { return _M_value != 0; } -2441: -2441: -2441: private: -2441: friend class hash; -2441: -2441: int _M_value; -2441: const error_category* _M_cat; -2441: }; -2441: -2441: -2441: inline error_code -2441: make_error_code(errc __e) noexcept -2441: { return error_code(static_cast(__e), generic_category()); } -2441: -2441: inline bool -2441: operator<(const error_code& __lhs, const error_code& __rhs) noexcept -2441: { -2441: return (__lhs.category() < __rhs.category() -2441: || (__lhs.category() == __rhs.category() -2441: && __lhs.value() < __rhs.value())); -2441: } -2441: -2441: template -2441: basic_ostream<_CharT, _Traits>& -2441: operator<<(basic_ostream<_CharT, _Traits>& __os, const error_code& __e) -2441: { return (__os << __e.category().name() << ':' << __e.value()); } -2441: -2441: error_condition make_error_condition(errc) noexcept; -2441: -2441: -2441: -2441: struct error_condition -2441: { -2441: error_condition() noexcept -2441: : _M_value(0), _M_cat(&generic_category()) { } -2441: -2441: error_condition(int __v, const error_category& __cat) noexcept -2441: : _M_value(__v), _M_cat(&__cat) { } -2441: -2441: template::value>::type> -2441: error_condition(_ErrorConditionEnum __e) noexcept -2441: { *this = make_error_condition(__e); } -2441: -2441: void -2441: assign(int __v, const error_category& __cat) noexcept -2441: { -2441: _M_value = __v; -2441: _M_cat = &__cat; -2441: } -2441: -2441: -2441: template -2441: typename enable_if::value, error_condition&>::type -2441: operator=(_ErrorConditionEnum __e) noexcept -2441: { return *this = make_error_condition(__e); } -2441: -2441: void -2441: clear() noexcept -2441: { assign(0, generic_category()); } -2441: -2441: -2441: int -2441: value() const noexcept { return _M_value; } -2441: -2441: const error_category& -2441: category() const noexcept { return *_M_cat; } -2441: -2441: __attribute ((__abi_tag__ ("cxx11"))) -2441: string -2441: message() const -2441: { return category().message(value()); } -2441: -2441: explicit operator bool() const noexcept -2441: { return _M_value != 0; } -2441: -2441: -2441: private: -2441: int _M_value; -2441: const error_category* _M_cat; -2441: }; -2441: -2441: -2441: inline error_condition -2441: make_error_condition(errc __e) noexcept -2441: { return error_condition(static_cast(__e), generic_category()); } -2441: -2441: inline bool -2441: operator<(const error_condition& __lhs, -2441: const error_condition& __rhs) noexcept -2441: { -2441: return (__lhs.category() < __rhs.category() -2441: || (__lhs.category() == __rhs.category() -2441: && __lhs.value() < __rhs.value())); -2441: } -2441: -2441: -2441: inline bool -2441: operator==(const error_code& __lhs, const error_code& __rhs) noexcept -2441: { return (__lhs.category() == __rhs.category() -2441: && __lhs.value() == __rhs.value()); } -2441: -2441: inline bool -2441: operator==(const error_code& __lhs, const error_condition& __rhs) noexcept -2441: { -2441: return (__lhs.category().equivalent(__lhs.value(), __rhs) -2441: || __rhs.category().equivalent(__lhs, __rhs.value())); -2441: } -2441: -2441: inline bool -2441: operator==(const error_condition& __lhs, const error_code& __rhs) noexcept -2441: { -2441: return (__rhs.category().equivalent(__rhs.value(), __lhs) -2441: || __lhs.category().equivalent(__rhs, __lhs.value())); -2441: } -2441: -2441: inline bool -2441: operator==(const error_condition& __lhs, -2441: const error_condition& __rhs) noexcept -2441: { -2441: return (__lhs.category() == __rhs.category() -2441: && __lhs.value() == __rhs.value()); -2441: } -2441: -2441: inline bool -2441: operator!=(const error_code& __lhs, const error_code& __rhs) noexcept -2441: { return !(__lhs == __rhs); } -2441: -2441: inline bool -2441: operator!=(const error_code& __lhs, const error_condition& __rhs) noexcept -2441: { return !(__lhs == __rhs); } -2441: -2441: inline bool -2441: operator!=(const error_condition& __lhs, const error_code& __rhs) noexcept -2441: { return !(__lhs == __rhs); } -2441: -2441: inline bool -2441: operator!=(const error_condition& __lhs, -2441: const error_condition& __rhs) noexcept -2441: { return !(__lhs == __rhs); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: class system_error : public std::runtime_error -2441: { -2441: private: -2441: error_code _M_code; -2441: -2441: public: -2441: system_error(error_code __ec = error_code()) -2441: : runtime_error(__ec.message()), _M_code(__ec) { } -2441: -2441: system_error(error_code __ec, const string& __what) -2441: : runtime_error(__what + ": " + __ec.message()), _M_code(__ec) { } -2441: -2441: system_error(error_code __ec, const char* __what) -2441: : runtime_error(__what + (": " + __ec.message())), _M_code(__ec) { } -2441: -2441: system_error(int __v, const error_category& __ecat, const char* __what) -2441: : system_error(error_code(__v, __ecat), __what) { } -2441: -2441: system_error(int __v, const error_category& __ecat) -2441: : runtime_error(error_code(__v, __ecat).message()), -2441: _M_code(__v, __ecat) { } -2441: -2441: system_error(int __v, const error_category& __ecat, const string& __what) -2441: : runtime_error(__what + ": " + error_code(__v, __ecat).message()), -2441: _M_code(__v, __ecat) { } -2441: -2441: virtual ~system_error() noexcept; -2441: -2441: const error_code& -2441: code() const noexcept { return _M_code; } -2441: }; -2441: -2441: -2441: } -2441: -2441: -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: template<> -2441: struct hash -2441: : public __hash_base -2441: { -2441: size_t -2441: operator()(const error_code& __e) const noexcept -2441: { -2441: const size_t __tmp = std::_Hash_impl::hash(__e._M_value); -2441: return std::_Hash_impl::__hash_combine(__e._M_cat, __tmp); -2441: } -2441: }; -2441: # 414 "/usr/include/c++/8/system_error" 3 -2441: -2441: } -2441: # 47 "/usr/include/c++/8/bits/ios_base.h" 2 3 -2441: -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: enum _Ios_Fmtflags -2441: { -2441: _S_boolalpha = 1L << 0, -2441: _S_dec = 1L << 1, -2441: _S_fixed = 1L << 2, -2441: _S_hex = 1L << 3, -2441: _S_internal = 1L << 4, -2441: _S_left = 1L << 5, -2441: _S_oct = 1L << 6, -2441: _S_right = 1L << 7, -2441: _S_scientific = 1L << 8, -2441: _S_showbase = 1L << 9, -2441: _S_showpoint = 1L << 10, -2441: _S_showpos = 1L << 11, -2441: _S_skipws = 1L << 12, -2441: _S_unitbuf = 1L << 13, -2441: _S_uppercase = 1L << 14, -2441: _S_adjustfield = _S_left | _S_right | _S_internal, -2441: _S_basefield = _S_dec | _S_oct | _S_hex, -2441: _S_floatfield = _S_scientific | _S_fixed, -2441: _S_ios_fmtflags_end = 1L << 16, -2441: _S_ios_fmtflags_max = 0x7fffffff, -2441: _S_ios_fmtflags_min = ~0x7fffffff -2441: }; -2441: -2441: inline constexpr _Ios_Fmtflags -2441: operator&(_Ios_Fmtflags __a, _Ios_Fmtflags __b) -2441: { return _Ios_Fmtflags(static_cast(__a) & static_cast(__b)); } -2441: -2441: inline constexpr _Ios_Fmtflags -2441: operator|(_Ios_Fmtflags __a, _Ios_Fmtflags __b) -2441: { return _Ios_Fmtflags(static_cast(__a) | static_cast(__b)); } -2441: -2441: inline constexpr _Ios_Fmtflags -2441: operator^(_Ios_Fmtflags __a, _Ios_Fmtflags __b) -2441: { return _Ios_Fmtflags(static_cast(__a) ^ static_cast(__b)); } -2441: -2441: inline constexpr _Ios_Fmtflags -2441: operator~(_Ios_Fmtflags __a) -2441: { return _Ios_Fmtflags(~static_cast(__a)); } -2441: -2441: inline const _Ios_Fmtflags& -2441: operator|=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) -2441: { return __a = __a | __b; } -2441: -2441: inline const _Ios_Fmtflags& -2441: operator&=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) -2441: { return __a = __a & __b; } -2441: -2441: inline const _Ios_Fmtflags& -2441: operator^=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) -2441: { return __a = __a ^ __b; } -2441: -2441: -2441: enum _Ios_Openmode -2441: { -2441: _S_app = 1L << 0, -2441: _S_ate = 1L << 1, -2441: _S_bin = 1L << 2, -2441: _S_in = 1L << 3, -2441: _S_out = 1L << 4, -2441: _S_trunc = 1L << 5, -2441: _S_ios_openmode_end = 1L << 16, -2441: _S_ios_openmode_max = 0x7fffffff, -2441: _S_ios_openmode_min = ~0x7fffffff -2441: }; -2441: -2441: inline constexpr _Ios_Openmode -2441: operator&(_Ios_Openmode __a, _Ios_Openmode __b) -2441: { return _Ios_Openmode(static_cast(__a) & static_cast(__b)); } -2441: -2441: inline constexpr _Ios_Openmode -2441: operator|(_Ios_Openmode __a, _Ios_Openmode __b) -2441: { return _Ios_Openmode(static_cast(__a) | static_cast(__b)); } -2441: -2441: inline constexpr _Ios_Openmode -2441: operator^(_Ios_Openmode __a, _Ios_Openmode __b) -2441: { return _Ios_Openmode(static_cast(__a) ^ static_cast(__b)); } -2441: -2441: inline constexpr _Ios_Openmode -2441: operator~(_Ios_Openmode __a) -2441: { return _Ios_Openmode(~static_cast(__a)); } -2441: -2441: inline const _Ios_Openmode& -2441: operator|=(_Ios_Openmode& __a, _Ios_Openmode __b) -2441: { return __a = __a | __b; } -2441: -2441: inline const _Ios_Openmode& -2441: operator&=(_Ios_Openmode& __a, _Ios_Openmode __b) -2441: { return __a = __a & __b; } -2441: -2441: inline const _Ios_Openmode& -2441: operator^=(_Ios_Openmode& __a, _Ios_Openmode __b) -2441: { return __a = __a ^ __b; } -2441: -2441: -2441: enum _Ios_Iostate -2441: { -2441: _S_goodbit = 0, -2441: _S_badbit = 1L << 0, -2441: _S_eofbit = 1L << 1, -2441: _S_failbit = 1L << 2, -2441: _S_ios_iostate_end = 1L << 16, -2441: _S_ios_iostate_max = 0x7fffffff, -2441: _S_ios_iostate_min = ~0x7fffffff -2441: }; -2441: -2441: inline constexpr _Ios_Iostate -2441: operator&(_Ios_Iostate __a, _Ios_Iostate __b) -2441: { return _Ios_Iostate(static_cast(__a) & static_cast(__b)); } -2441: -2441: inline constexpr _Ios_Iostate -2441: operator|(_Ios_Iostate __a, _Ios_Iostate __b) -2441: { return _Ios_Iostate(static_cast(__a) | static_cast(__b)); } -2441: -2441: inline constexpr _Ios_Iostate -2441: operator^(_Ios_Iostate __a, _Ios_Iostate __b) -2441: { return _Ios_Iostate(static_cast(__a) ^ static_cast(__b)); } -2441: -2441: inline constexpr _Ios_Iostate -2441: operator~(_Ios_Iostate __a) -2441: { return _Ios_Iostate(~static_cast(__a)); } -2441: -2441: inline const _Ios_Iostate& -2441: operator|=(_Ios_Iostate& __a, _Ios_Iostate __b) -2441: { return __a = __a | __b; } -2441: -2441: inline const _Ios_Iostate& -2441: operator&=(_Ios_Iostate& __a, _Ios_Iostate __b) -2441: { return __a = __a & __b; } -2441: -2441: inline const _Ios_Iostate& -2441: operator^=(_Ios_Iostate& __a, _Ios_Iostate __b) -2441: { return __a = __a ^ __b; } -2441: -2441: -2441: enum _Ios_Seekdir -2441: { -2441: _S_beg = 0, -2441: _S_cur = 1, -2441: _S_end = 2, -2441: _S_ios_seekdir_end = 1L << 16 -2441: }; -2441: -2441: -2441: -2441: enum class io_errc { stream = 1 }; -2441: -2441: template <> struct is_error_code_enum : public true_type { }; -2441: -2441: const error_category& iostream_category() noexcept; -2441: -2441: inline error_code -2441: make_error_code(io_errc __e) noexcept -2441: { return error_code(static_cast(__e), iostream_category()); } -2441: -2441: inline error_condition -2441: make_error_condition(io_errc __e) noexcept -2441: { return error_condition(static_cast(__e), iostream_category()); } -2441: # 228 "/usr/include/c++/8/bits/ios_base.h" 3 -2441: class ios_base -2441: { -2441: # 246 "/usr/include/c++/8/bits/ios_base.h" 3 -2441: public: -2441: # 255 "/usr/include/c++/8/bits/ios_base.h" 3 -2441: class __attribute ((__abi_tag__ ("cxx11"))) failure : public system_error -2441: { -2441: public: -2441: explicit -2441: failure(const string& __str); -2441: -2441: -2441: explicit -2441: failure(const string&, const error_code&); -2441: -2441: explicit -2441: failure(const char*, const error_code& = io_errc::stream); -2441: -2441: -2441: virtual -2441: ~failure() throw(); -2441: -2441: virtual const char* -2441: what() const throw(); -2441: }; -2441: # 323 "/usr/include/c++/8/bits/ios_base.h" 3 -2441: typedef _Ios_Fmtflags fmtflags; -2441: -2441: -2441: static const fmtflags boolalpha = _S_boolalpha; -2441: -2441: -2441: static const fmtflags dec = _S_dec; -2441: -2441: -2441: static const fmtflags fixed = _S_fixed; -2441: -2441: -2441: static const fmtflags hex = _S_hex; -2441: -2441: -2441: -2441: -2441: static const fmtflags internal = _S_internal; -2441: -2441: -2441: -2441: static const fmtflags left = _S_left; -2441: -2441: -2441: static const fmtflags oct = _S_oct; -2441: -2441: -2441: -2441: static const fmtflags right = _S_right; -2441: -2441: -2441: static const fmtflags scientific = _S_scientific; -2441: -2441: -2441: -2441: static const fmtflags showbase = _S_showbase; -2441: -2441: -2441: -2441: static const fmtflags showpoint = _S_showpoint; -2441: -2441: -2441: static const fmtflags showpos = _S_showpos; -2441: -2441: -2441: static const fmtflags skipws = _S_skipws; -2441: -2441: -2441: static const fmtflags unitbuf = _S_unitbuf; -2441: -2441: -2441: -2441: static const fmtflags uppercase = _S_uppercase; -2441: -2441: -2441: static const fmtflags adjustfield = _S_adjustfield; -2441: -2441: -2441: static const fmtflags basefield = _S_basefield; -2441: -2441: -2441: static const fmtflags floatfield = _S_floatfield; -2441: # 398 "/usr/include/c++/8/bits/ios_base.h" 3 -2441: typedef _Ios_Iostate iostate; -2441: -2441: -2441: -2441: static const iostate badbit = _S_badbit; -2441: -2441: -2441: static const iostate eofbit = _S_eofbit; -2441: -2441: -2441: -2441: -2441: static const iostate failbit = _S_failbit; -2441: -2441: -2441: static const iostate goodbit = _S_goodbit; -2441: # 429 "/usr/include/c++/8/bits/ios_base.h" 3 -2441: typedef _Ios_Openmode openmode; -2441: -2441: -2441: static const openmode app = _S_app; -2441: -2441: -2441: static const openmode ate = _S_ate; -2441: -2441: -2441: -2441: -2441: static const openmode binary = _S_bin; -2441: -2441: -2441: static const openmode in = _S_in; -2441: -2441: -2441: static const openmode out = _S_out; -2441: -2441: -2441: static const openmode trunc = _S_trunc; -2441: # 461 "/usr/include/c++/8/bits/ios_base.h" 3 -2441: typedef _Ios_Seekdir seekdir; -2441: -2441: -2441: static const seekdir beg = _S_beg; -2441: -2441: -2441: static const seekdir cur = _S_cur; -2441: -2441: -2441: static const seekdir end = _S_end; -2441: -2441: -2441: -2441: typedef int io_state; -2441: typedef int open_mode; -2441: typedef int seek_dir; -2441: -2441: typedef std::streampos streampos; -2441: typedef std::streamoff streamoff; -2441: # 489 "/usr/include/c++/8/bits/ios_base.h" 3 -2441: enum event -2441: { -2441: erase_event, -2441: imbue_event, -2441: copyfmt_event -2441: }; -2441: # 506 "/usr/include/c++/8/bits/ios_base.h" 3 -2441: typedef void (*event_callback) (event __e, ios_base& __b, int __i); -2441: # 518 "/usr/include/c++/8/bits/ios_base.h" 3 -2441: void -2441: register_callback(event_callback __fn, int __index); -2441: -2441: protected: -2441: streamsize _M_precision; -2441: streamsize _M_width; -2441: fmtflags _M_flags; -2441: iostate _M_exception; -2441: iostate _M_streambuf_state; -2441: -2441: -2441: -2441: struct _Callback_list -2441: { -2441: -2441: _Callback_list* _M_next; -2441: ios_base::event_callback _M_fn; -2441: int _M_index; -2441: _Atomic_word _M_refcount; -2441: -2441: _Callback_list(ios_base::event_callback __fn, int __index, -2441: _Callback_list* __cb) -2441: : _M_next(__cb), _M_fn(__fn), _M_index(__index), _M_refcount(0) { } -2441: -2441: void -2441: _M_add_reference() { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); } -2441: -2441: -2441: int -2441: _M_remove_reference() -2441: { -2441: -2441: ; -2441: int __res = __gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1); -2441: if (__res == 0) -2441: { -2441: ; -2441: } -2441: return __res; -2441: } -2441: }; -2441: -2441: _Callback_list* _M_callbacks; -2441: -2441: void -2441: _M_call_callbacks(event __ev) throw(); -2441: -2441: void -2441: _M_dispose_callbacks(void) throw(); -2441: -2441: -2441: struct _Words -2441: { -2441: void* _M_pword; -2441: long _M_iword; -2441: _Words() : _M_pword(0), _M_iword(0) { } -2441: }; -2441: -2441: -2441: _Words _M_word_zero; -2441: -2441: -2441: -2441: enum { _S_local_word_size = 8 }; -2441: _Words _M_local_word[_S_local_word_size]; -2441: -2441: -2441: int _M_word_size; -2441: _Words* _M_word; -2441: -2441: _Words& -2441: _M_grow_words(int __index, bool __iword); -2441: -2441: -2441: locale _M_ios_locale; -2441: -2441: void -2441: _M_init() throw(); -2441: -2441: public: -2441: -2441: -2441: -2441: -2441: -2441: class Init -2441: { -2441: friend class ios_base; -2441: public: -2441: Init(); -2441: ~Init(); -2441: -2441: private: -2441: static _Atomic_word _S_refcount; -2441: static bool _S_synced_with_stdio; -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: fmtflags -2441: flags() const -2441: { return _M_flags; } -2441: # 631 "/usr/include/c++/8/bits/ios_base.h" 3 -2441: fmtflags -2441: flags(fmtflags __fmtfl) -2441: { -2441: fmtflags __old = _M_flags; -2441: _M_flags = __fmtfl; -2441: return __old; -2441: } -2441: # 647 "/usr/include/c++/8/bits/ios_base.h" 3 -2441: fmtflags -2441: setf(fmtflags __fmtfl) -2441: { -2441: fmtflags __old = _M_flags; -2441: _M_flags |= __fmtfl; -2441: return __old; -2441: } -2441: # 664 "/usr/include/c++/8/bits/ios_base.h" 3 -2441: fmtflags -2441: setf(fmtflags __fmtfl, fmtflags __mask) -2441: { -2441: fmtflags __old = _M_flags; -2441: _M_flags &= ~__mask; -2441: _M_flags |= (__fmtfl & __mask); -2441: return __old; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void -2441: unsetf(fmtflags __mask) -2441: { _M_flags &= ~__mask; } -2441: # 690 "/usr/include/c++/8/bits/ios_base.h" 3 -2441: streamsize -2441: precision() const -2441: { return _M_precision; } -2441: -2441: -2441: -2441: -2441: -2441: -2441: streamsize -2441: precision(streamsize __prec) -2441: { -2441: streamsize __old = _M_precision; -2441: _M_precision = __prec; -2441: return __old; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: streamsize -2441: width() const -2441: { return _M_width; } -2441: -2441: -2441: -2441: -2441: -2441: -2441: streamsize -2441: width(streamsize __wide) -2441: { -2441: streamsize __old = _M_width; -2441: _M_width = __wide; -2441: return __old; -2441: } -2441: # 741 "/usr/include/c++/8/bits/ios_base.h" 3 -2441: static bool -2441: sync_with_stdio(bool __sync = true); -2441: # 753 "/usr/include/c++/8/bits/ios_base.h" 3 -2441: locale -2441: imbue(const locale& __loc) throw(); -2441: # 764 "/usr/include/c++/8/bits/ios_base.h" 3 -2441: locale -2441: getloc() const -2441: { return _M_ios_locale; } -2441: # 775 "/usr/include/c++/8/bits/ios_base.h" 3 -2441: const locale& -2441: _M_getloc() const -2441: { return _M_ios_locale; } -2441: # 794 "/usr/include/c++/8/bits/ios_base.h" 3 -2441: static int -2441: xalloc() throw(); -2441: # 810 "/usr/include/c++/8/bits/ios_base.h" 3 -2441: long& -2441: iword(int __ix) -2441: { -2441: _Words& __word = (__ix < _M_word_size) -2441: ? _M_word[__ix] : _M_grow_words(__ix, true); -2441: return __word._M_iword; -2441: } -2441: # 831 "/usr/include/c++/8/bits/ios_base.h" 3 -2441: void*& -2441: pword(int __ix) -2441: { -2441: _Words& __word = (__ix < _M_word_size) -2441: ? _M_word[__ix] : _M_grow_words(__ix, false); -2441: return __word._M_pword; -2441: } -2441: # 848 "/usr/include/c++/8/bits/ios_base.h" 3 -2441: virtual ~ios_base(); -2441: -2441: protected: -2441: ios_base() throw (); -2441: # 862 "/usr/include/c++/8/bits/ios_base.h" 3 -2441: public: -2441: ios_base(const ios_base&) = delete; -2441: -2441: ios_base& -2441: operator=(const ios_base&) = delete; -2441: -2441: protected: -2441: void -2441: _M_move(ios_base&) noexcept; -2441: -2441: void -2441: _M_swap(ios_base& __rhs) noexcept; -2441: -2441: }; -2441: -2441: -2441: -2441: inline ios_base& -2441: boolalpha(ios_base& __base) -2441: { -2441: __base.setf(ios_base::boolalpha); -2441: return __base; -2441: } -2441: -2441: -2441: inline ios_base& -2441: noboolalpha(ios_base& __base) -2441: { -2441: __base.unsetf(ios_base::boolalpha); -2441: return __base; -2441: } -2441: -2441: -2441: inline ios_base& -2441: showbase(ios_base& __base) -2441: { -2441: __base.setf(ios_base::showbase); -2441: return __base; -2441: } -2441: -2441: -2441: inline ios_base& -2441: noshowbase(ios_base& __base) -2441: { -2441: __base.unsetf(ios_base::showbase); -2441: return __base; -2441: } -2441: -2441: -2441: inline ios_base& -2441: showpoint(ios_base& __base) -2441: { -2441: __base.setf(ios_base::showpoint); -2441: return __base; -2441: } -2441: -2441: -2441: inline ios_base& -2441: noshowpoint(ios_base& __base) -2441: { -2441: __base.unsetf(ios_base::showpoint); -2441: return __base; -2441: } -2441: -2441: -2441: inline ios_base& -2441: showpos(ios_base& __base) -2441: { -2441: __base.setf(ios_base::showpos); -2441: return __base; -2441: } -2441: -2441: -2441: inline ios_base& -2441: noshowpos(ios_base& __base) -2441: { -2441: __base.unsetf(ios_base::showpos); -2441: return __base; -2441: } -2441: -2441: -2441: inline ios_base& -2441: skipws(ios_base& __base) -2441: { -2441: __base.setf(ios_base::skipws); -2441: return __base; -2441: } -2441: -2441: -2441: inline ios_base& -2441: noskipws(ios_base& __base) -2441: { -2441: __base.unsetf(ios_base::skipws); -2441: return __base; -2441: } -2441: -2441: -2441: inline ios_base& -2441: uppercase(ios_base& __base) -2441: { -2441: __base.setf(ios_base::uppercase); -2441: return __base; -2441: } -2441: -2441: -2441: inline ios_base& -2441: nouppercase(ios_base& __base) -2441: { -2441: __base.unsetf(ios_base::uppercase); -2441: return __base; -2441: } -2441: -2441: -2441: inline ios_base& -2441: unitbuf(ios_base& __base) -2441: { -2441: __base.setf(ios_base::unitbuf); -2441: return __base; -2441: } -2441: -2441: -2441: inline ios_base& -2441: nounitbuf(ios_base& __base) -2441: { -2441: __base.unsetf(ios_base::unitbuf); -2441: return __base; -2441: } -2441: -2441: -2441: -2441: inline ios_base& -2441: internal(ios_base& __base) -2441: { -2441: __base.setf(ios_base::internal, ios_base::adjustfield); -2441: return __base; -2441: } -2441: -2441: -2441: inline ios_base& -2441: left(ios_base& __base) -2441: { -2441: __base.setf(ios_base::left, ios_base::adjustfield); -2441: return __base; -2441: } -2441: -2441: -2441: inline ios_base& -2441: right(ios_base& __base) -2441: { -2441: __base.setf(ios_base::right, ios_base::adjustfield); -2441: return __base; -2441: } -2441: -2441: -2441: -2441: inline ios_base& -2441: dec(ios_base& __base) -2441: { -2441: __base.setf(ios_base::dec, ios_base::basefield); -2441: return __base; -2441: } -2441: -2441: -2441: inline ios_base& -2441: hex(ios_base& __base) -2441: { -2441: __base.setf(ios_base::hex, ios_base::basefield); -2441: return __base; -2441: } -2441: -2441: -2441: inline ios_base& -2441: oct(ios_base& __base) -2441: { -2441: __base.setf(ios_base::oct, ios_base::basefield); -2441: return __base; -2441: } -2441: -2441: -2441: -2441: inline ios_base& -2441: fixed(ios_base& __base) -2441: { -2441: __base.setf(ios_base::fixed, ios_base::floatfield); -2441: return __base; -2441: } -2441: -2441: -2441: inline ios_base& -2441: scientific(ios_base& __base) -2441: { -2441: __base.setf(ios_base::scientific, ios_base::floatfield); -2441: return __base; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: inline ios_base& -2441: hexfloat(ios_base& __base) -2441: { -2441: __base.setf(ios_base::fixed | ios_base::scientific, ios_base::floatfield); -2441: return __base; -2441: } -2441: -2441: -2441: inline ios_base& -2441: defaultfloat(ios_base& __base) -2441: { -2441: __base.unsetf(ios_base::floatfield); -2441: return __base; -2441: } -2441: -2441: -2441: -2441: } -2441: # 43 "/usr/include/c++/8/ios" 2 3 -2441: # 1 "/usr/include/c++/8/streambuf" 1 3 -2441: # 36 "/usr/include/c++/8/streambuf" 3 -2441: -2441: # 37 "/usr/include/c++/8/streambuf" 3 -2441: # 45 "/usr/include/c++/8/streambuf" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: -2441: template -2441: streamsize -2441: __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>*, -2441: basic_streambuf<_CharT, _Traits>*, bool&); -2441: # 121 "/usr/include/c++/8/streambuf" 3 -2441: template -2441: class basic_streambuf -2441: { -2441: public: -2441: -2441: -2441: -2441: -2441: -2441: -2441: typedef _CharT char_type; -2441: typedef _Traits traits_type; -2441: typedef typename traits_type::int_type int_type; -2441: typedef typename traits_type::pos_type pos_type; -2441: typedef typename traits_type::off_type off_type; -2441: -2441: -2441: -2441: -2441: typedef basic_streambuf __streambuf_type; -2441: -2441: -2441: friend class basic_ios; -2441: friend class basic_istream; -2441: friend class basic_ostream; -2441: friend class istreambuf_iterator; -2441: friend class ostreambuf_iterator; -2441: -2441: friend streamsize -2441: __copy_streambufs_eof<>(basic_streambuf*, basic_streambuf*, bool&); -2441: -2441: template -2441: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, -2441: _CharT2*>::__type -2441: __copy_move_a2(istreambuf_iterator<_CharT2>, -2441: istreambuf_iterator<_CharT2>, _CharT2*); -2441: -2441: template -2441: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, -2441: istreambuf_iterator<_CharT2> >::__type -2441: find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, -2441: const _CharT2&); -2441: -2441: template -2441: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, -2441: void>::__type -2441: advance(istreambuf_iterator<_CharT2>&, _Distance); -2441: -2441: template -2441: friend basic_istream<_CharT2, _Traits2>& -2441: operator>>(basic_istream<_CharT2, _Traits2>&, _CharT2*); -2441: -2441: template -2441: friend basic_istream<_CharT2, _Traits2>& -2441: operator>>(basic_istream<_CharT2, _Traits2>&, -2441: basic_string<_CharT2, _Traits2, _Alloc>&); -2441: -2441: template -2441: friend basic_istream<_CharT2, _Traits2>& -2441: getline(basic_istream<_CharT2, _Traits2>&, -2441: basic_string<_CharT2, _Traits2, _Alloc>&, _CharT2); -2441: -2441: protected: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: char_type* _M_in_beg; -2441: char_type* _M_in_cur; -2441: char_type* _M_in_end; -2441: char_type* _M_out_beg; -2441: char_type* _M_out_cur; -2441: char_type* _M_out_end; -2441: -2441: -2441: locale _M_buf_locale; -2441: -2441: public: -2441: -2441: virtual -2441: ~basic_streambuf() -2441: { } -2441: # 215 "/usr/include/c++/8/streambuf" 3 -2441: locale -2441: pubimbue(const locale& __loc) -2441: { -2441: locale __tmp(this->getloc()); -2441: this->imbue(__loc); -2441: _M_buf_locale = __loc; -2441: return __tmp; -2441: } -2441: # 232 "/usr/include/c++/8/streambuf" 3 -2441: locale -2441: getloc() const -2441: { return _M_buf_locale; } -2441: # 245 "/usr/include/c++/8/streambuf" 3 -2441: basic_streambuf* -2441: pubsetbuf(char_type* __s, streamsize __n) -2441: { return this->setbuf(__s, __n); } -2441: # 257 "/usr/include/c++/8/streambuf" 3 -2441: pos_type -2441: pubseekoff(off_type __off, ios_base::seekdir __way, -2441: ios_base::openmode __mode = ios_base::in | ios_base::out) -2441: { return this->seekoff(__off, __way, __mode); } -2441: # 269 "/usr/include/c++/8/streambuf" 3 -2441: pos_type -2441: pubseekpos(pos_type __sp, -2441: ios_base::openmode __mode = ios_base::in | ios_base::out) -2441: { return this->seekpos(__sp, __mode); } -2441: -2441: -2441: -2441: -2441: int -2441: pubsync() { return this->sync(); } -2441: # 290 "/usr/include/c++/8/streambuf" 3 -2441: streamsize -2441: in_avail() -2441: { -2441: const streamsize __ret = this->egptr() - this->gptr(); -2441: return __ret ? __ret : this->showmanyc(); -2441: } -2441: # 304 "/usr/include/c++/8/streambuf" 3 -2441: int_type -2441: snextc() -2441: { -2441: int_type __ret = traits_type::eof(); -2441: if (__builtin_expect(!traits_type::eq_int_type(this->sbumpc(), -2441: __ret), true)) -2441: __ret = this->sgetc(); -2441: return __ret; -2441: } -2441: # 322 "/usr/include/c++/8/streambuf" 3 -2441: int_type -2441: sbumpc() -2441: { -2441: int_type __ret; -2441: if (__builtin_expect(this->gptr() < this->egptr(), true)) -2441: { -2441: __ret = traits_type::to_int_type(*this->gptr()); -2441: this->gbump(1); -2441: } -2441: else -2441: __ret = this->uflow(); -2441: return __ret; -2441: } -2441: # 344 "/usr/include/c++/8/streambuf" 3 -2441: int_type -2441: sgetc() -2441: { -2441: int_type __ret; -2441: if (__builtin_expect(this->gptr() < this->egptr(), true)) -2441: __ret = traits_type::to_int_type(*this->gptr()); -2441: else -2441: __ret = this->underflow(); -2441: return __ret; -2441: } -2441: # 363 "/usr/include/c++/8/streambuf" 3 -2441: streamsize -2441: sgetn(char_type* __s, streamsize __n) -2441: { return this->xsgetn(__s, __n); } -2441: # 378 "/usr/include/c++/8/streambuf" 3 -2441: int_type -2441: sputbackc(char_type __c) -2441: { -2441: int_type __ret; -2441: const bool __testpos = this->eback() < this->gptr(); -2441: if (__builtin_expect(!__testpos || -2441: !traits_type::eq(__c, this->gptr()[-1]), false)) -2441: __ret = this->pbackfail(traits_type::to_int_type(__c)); -2441: else -2441: { -2441: this->gbump(-1); -2441: __ret = traits_type::to_int_type(*this->gptr()); -2441: } -2441: return __ret; -2441: } -2441: # 403 "/usr/include/c++/8/streambuf" 3 -2441: int_type -2441: sungetc() -2441: { -2441: int_type __ret; -2441: if (__builtin_expect(this->eback() < this->gptr(), true)) -2441: { -2441: this->gbump(-1); -2441: __ret = traits_type::to_int_type(*this->gptr()); -2441: } -2441: else -2441: __ret = this->pbackfail(); -2441: return __ret; -2441: } -2441: # 430 "/usr/include/c++/8/streambuf" 3 -2441: int_type -2441: sputc(char_type __c) -2441: { -2441: int_type __ret; -2441: if (__builtin_expect(this->pptr() < this->epptr(), true)) -2441: { -2441: *this->pptr() = __c; -2441: this->pbump(1); -2441: __ret = traits_type::to_int_type(__c); -2441: } -2441: else -2441: __ret = this->overflow(traits_type::to_int_type(__c)); -2441: return __ret; -2441: } -2441: # 456 "/usr/include/c++/8/streambuf" 3 -2441: streamsize -2441: sputn(const char_type* __s, streamsize __n) -2441: { return this->xsputn(__s, __n); } -2441: -2441: protected: -2441: # 470 "/usr/include/c++/8/streambuf" 3 -2441: basic_streambuf() -2441: : _M_in_beg(0), _M_in_cur(0), _M_in_end(0), -2441: _M_out_beg(0), _M_out_cur(0), _M_out_end(0), -2441: _M_buf_locale(locale()) -2441: { } -2441: # 488 "/usr/include/c++/8/streambuf" 3 -2441: char_type* -2441: eback() const { return _M_in_beg; } -2441: -2441: char_type* -2441: gptr() const { return _M_in_cur; } -2441: -2441: char_type* -2441: egptr() const { return _M_in_end; } -2441: # 504 "/usr/include/c++/8/streambuf" 3 -2441: void -2441: gbump(int __n) { _M_in_cur += __n; } -2441: # 515 "/usr/include/c++/8/streambuf" 3 -2441: void -2441: setg(char_type* __gbeg, char_type* __gnext, char_type* __gend) -2441: { -2441: _M_in_beg = __gbeg; -2441: _M_in_cur = __gnext; -2441: _M_in_end = __gend; -2441: } -2441: # 535 "/usr/include/c++/8/streambuf" 3 -2441: char_type* -2441: pbase() const { return _M_out_beg; } -2441: -2441: char_type* -2441: pptr() const { return _M_out_cur; } -2441: -2441: char_type* -2441: epptr() const { return _M_out_end; } -2441: # 551 "/usr/include/c++/8/streambuf" 3 -2441: void -2441: pbump(int __n) { _M_out_cur += __n; } -2441: # 561 "/usr/include/c++/8/streambuf" 3 -2441: void -2441: setp(char_type* __pbeg, char_type* __pend) -2441: { -2441: _M_out_beg = _M_out_cur = __pbeg; -2441: _M_out_end = __pend; -2441: } -2441: # 582 "/usr/include/c++/8/streambuf" 3 -2441: virtual void -2441: imbue(const locale& __loc __attribute__ ((__unused__))) -2441: { } -2441: # 597 "/usr/include/c++/8/streambuf" 3 -2441: virtual basic_streambuf* -2441: setbuf(char_type*, streamsize) -2441: { return this; } -2441: # 608 "/usr/include/c++/8/streambuf" 3 -2441: virtual pos_type -2441: seekoff(off_type, ios_base::seekdir, -2441: ios_base::openmode = ios_base::in | ios_base::out) -2441: { return pos_type(off_type(-1)); } -2441: # 620 "/usr/include/c++/8/streambuf" 3 -2441: virtual pos_type -2441: seekpos(pos_type, -2441: ios_base::openmode = ios_base::in | ios_base::out) -2441: { return pos_type(off_type(-1)); } -2441: # 633 "/usr/include/c++/8/streambuf" 3 -2441: virtual int -2441: sync() { return 0; } -2441: # 655 "/usr/include/c++/8/streambuf" 3 -2441: virtual streamsize -2441: showmanyc() { return 0; } -2441: # 671 "/usr/include/c++/8/streambuf" 3 -2441: virtual streamsize -2441: xsgetn(char_type* __s, streamsize __n); -2441: # 693 "/usr/include/c++/8/streambuf" 3 -2441: virtual int_type -2441: underflow() -2441: { return traits_type::eof(); } -2441: # 706 "/usr/include/c++/8/streambuf" 3 -2441: virtual int_type -2441: uflow() -2441: { -2441: int_type __ret = traits_type::eof(); -2441: const bool __testeof = traits_type::eq_int_type(this->underflow(), -2441: __ret); -2441: if (!__testeof) -2441: { -2441: __ret = traits_type::to_int_type(*this->gptr()); -2441: this->gbump(1); -2441: } -2441: return __ret; -2441: } -2441: # 730 "/usr/include/c++/8/streambuf" 3 -2441: virtual int_type -2441: pbackfail(int_type __c __attribute__ ((__unused__)) = traits_type::eof()) -2441: { return traits_type::eof(); } -2441: # 748 "/usr/include/c++/8/streambuf" 3 -2441: virtual streamsize -2441: xsputn(const char_type* __s, streamsize __n); -2441: # 774 "/usr/include/c++/8/streambuf" 3 -2441: virtual int_type -2441: overflow(int_type __c __attribute__ ((__unused__)) = traits_type::eof()) -2441: { return traits_type::eof(); } -2441: -2441: -2441: -2441: public: -2441: # 790 "/usr/include/c++/8/streambuf" 3 -2441: [[__deprecated__("stossc is deprecated, use sbumpc instead")]] -2441: -2441: void -2441: stossc() -2441: { -2441: if (this->gptr() < this->egptr()) -2441: this->gbump(1); -2441: else -2441: this->uflow(); -2441: } -2441: -2441: -2441: -2441: void -2441: __safe_gbump(streamsize __n) { _M_in_cur += __n; } -2441: -2441: void -2441: __safe_pbump(streamsize __n) { _M_out_cur += __n; } -2441: -2441: -2441: -2441: -2441: protected: -2441: -2441: basic_streambuf(const basic_streambuf&); -2441: -2441: basic_streambuf& -2441: operator=(const basic_streambuf&); -2441: -2441: -2441: void -2441: swap(basic_streambuf& __sb) -2441: { -2441: std::swap(_M_in_beg, __sb._M_in_beg); -2441: std::swap(_M_in_cur, __sb._M_in_cur); -2441: std::swap(_M_in_end, __sb._M_in_end); -2441: std::swap(_M_out_beg, __sb._M_out_beg); -2441: std::swap(_M_out_cur, __sb._M_out_cur); -2441: std::swap(_M_out_end, __sb._M_out_end); -2441: std::swap(_M_buf_locale, __sb._M_buf_locale); -2441: } -2441: -2441: }; -2441: -2441: -2441: template -2441: std::basic_streambuf<_CharT, _Traits>:: -2441: basic_streambuf(const basic_streambuf&) = default; -2441: -2441: template -2441: std::basic_streambuf<_CharT, _Traits>& -2441: std::basic_streambuf<_CharT, _Traits>:: -2441: operator=(const basic_streambuf&) = default; -2441: -2441: -2441: -2441: template<> -2441: streamsize -2441: __copy_streambufs_eof(basic_streambuf* __sbin, -2441: basic_streambuf* __sbout, bool& __ineof); -2441: -2441: template<> -2441: streamsize -2441: __copy_streambufs_eof(basic_streambuf* __sbin, -2441: basic_streambuf* __sbout, bool& __ineof); -2441: -2441: -2441: -2441: -2441: -2441: } -2441: -2441: # 1 "/usr/include/c++/8/bits/streambuf.tcc" 1 3 -2441: # 37 "/usr/include/c++/8/bits/streambuf.tcc" 3 -2441: -2441: # 38 "/usr/include/c++/8/bits/streambuf.tcc" 3 -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: template -2441: streamsize -2441: basic_streambuf<_CharT, _Traits>:: -2441: xsgetn(char_type* __s, streamsize __n) -2441: { -2441: streamsize __ret = 0; -2441: while (__ret < __n) -2441: { -2441: const streamsize __buf_len = this->egptr() - this->gptr(); -2441: if (__buf_len) -2441: { -2441: const streamsize __remaining = __n - __ret; -2441: const streamsize __len = std::min(__buf_len, __remaining); -2441: traits_type::copy(__s, this->gptr(), __len); -2441: __ret += __len; -2441: __s += __len; -2441: this->__safe_gbump(__len); -2441: } -2441: -2441: if (__ret < __n) -2441: { -2441: const int_type __c = this->uflow(); -2441: if (!traits_type::eq_int_type(__c, traits_type::eof())) -2441: { -2441: traits_type::assign(*__s++, traits_type::to_char_type(__c)); -2441: ++__ret; -2441: } -2441: else -2441: break; -2441: } -2441: } -2441: return __ret; -2441: } -2441: -2441: template -2441: streamsize -2441: basic_streambuf<_CharT, _Traits>:: -2441: xsputn(const char_type* __s, streamsize __n) -2441: { -2441: streamsize __ret = 0; -2441: while (__ret < __n) -2441: { -2441: const streamsize __buf_len = this->epptr() - this->pptr(); -2441: if (__buf_len) -2441: { -2441: const streamsize __remaining = __n - __ret; -2441: const streamsize __len = std::min(__buf_len, __remaining); -2441: traits_type::copy(this->pptr(), __s, __len); -2441: __ret += __len; -2441: __s += __len; -2441: this->__safe_pbump(__len); -2441: } -2441: -2441: if (__ret < __n) -2441: { -2441: int_type __c = this->overflow(traits_type::to_int_type(*__s)); -2441: if (!traits_type::eq_int_type(__c, traits_type::eof())) -2441: { -2441: ++__ret; -2441: ++__s; -2441: } -2441: else -2441: break; -2441: } -2441: } -2441: return __ret; -2441: } -2441: -2441: -2441: -2441: -2441: template -2441: streamsize -2441: __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>* __sbin, -2441: basic_streambuf<_CharT, _Traits>* __sbout, -2441: bool& __ineof) -2441: { -2441: streamsize __ret = 0; -2441: __ineof = true; -2441: typename _Traits::int_type __c = __sbin->sgetc(); -2441: while (!_Traits::eq_int_type(__c, _Traits::eof())) -2441: { -2441: __c = __sbout->sputc(_Traits::to_char_type(__c)); -2441: if (_Traits::eq_int_type(__c, _Traits::eof())) -2441: { -2441: __ineof = false; -2441: break; -2441: } -2441: ++__ret; -2441: __c = __sbin->snextc(); -2441: } -2441: return __ret; -2441: } -2441: -2441: template -2441: inline streamsize -2441: __copy_streambufs(basic_streambuf<_CharT, _Traits>* __sbin, -2441: basic_streambuf<_CharT, _Traits>* __sbout) -2441: { -2441: bool __ineof; -2441: return __copy_streambufs_eof(__sbin, __sbout, __ineof); -2441: } -2441: -2441: -2441: -2441: -2441: extern template class basic_streambuf; -2441: extern template -2441: streamsize -2441: __copy_streambufs(basic_streambuf*, -2441: basic_streambuf*); -2441: extern template -2441: streamsize -2441: __copy_streambufs_eof(basic_streambuf*, -2441: basic_streambuf*, bool&); -2441: -2441: -2441: extern template class basic_streambuf; -2441: extern template -2441: streamsize -2441: __copy_streambufs(basic_streambuf*, -2441: basic_streambuf*); -2441: extern template -2441: streamsize -2441: __copy_streambufs_eof(basic_streambuf*, -2441: basic_streambuf*, bool&); -2441: -2441: -2441: -2441: -2441: } -2441: # 863 "/usr/include/c++/8/streambuf" 2 3 -2441: # 44 "/usr/include/c++/8/ios" 2 3 -2441: # 1 "/usr/include/c++/8/bits/basic_ios.h" 1 3 -2441: # 33 "/usr/include/c++/8/bits/basic_ios.h" 3 -2441: -2441: # 34 "/usr/include/c++/8/bits/basic_ios.h" 3 -2441: -2441: -2441: -2441: # 1 "/usr/include/c++/8/bits/locale_facets.h" 1 3 -2441: # 37 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: -2441: # 38 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: -2441: # 1 "/usr/include/c++/8/cwctype" 1 3 -2441: # 39 "/usr/include/c++/8/cwctype" 3 -2441: -2441: # 40 "/usr/include/c++/8/cwctype" 3 -2441: # 50 "/usr/include/c++/8/cwctype" 3 -2441: # 1 "/usr/include/wctype.h" 1 3 4 -2441: # 38 "/usr/include/wctype.h" 3 4 -2441: # 1 "/usr/include/i386-linux-gnu/bits/wctype-wchar.h" 1 3 4 -2441: # 38 "/usr/include/i386-linux-gnu/bits/wctype-wchar.h" 3 4 -2441: typedef unsigned long int wctype_t; -2441: # 56 "/usr/include/i386-linux-gnu/bits/wctype-wchar.h" 3 4 -2441: enum -2441: { -2441: __ISwupper = 0, -2441: __ISwlower = 1, -2441: __ISwalpha = 2, -2441: __ISwdigit = 3, -2441: __ISwxdigit = 4, -2441: __ISwspace = 5, -2441: __ISwprint = 6, -2441: __ISwgraph = 7, -2441: __ISwblank = 8, -2441: __ISwcntrl = 9, -2441: __ISwpunct = 10, -2441: __ISwalnum = 11, -2441: -2441: _ISwupper = ((__ISwupper) < 8 ? (int) ((1UL << (__ISwupper)) << 24) : ((__ISwupper) < 16 ? (int) ((1UL << (__ISwupper)) << 8) : ((__ISwupper) < 24 ? (int) ((1UL << (__ISwupper)) >> 8) : (int) ((1UL << (__ISwupper)) >> 24)))), -2441: _ISwlower = ((__ISwlower) < 8 ? (int) ((1UL << (__ISwlower)) << 24) : ((__ISwlower) < 16 ? (int) ((1UL << (__ISwlower)) << 8) : ((__ISwlower) < 24 ? (int) ((1UL << (__ISwlower)) >> 8) : (int) ((1UL << (__ISwlower)) >> 24)))), -2441: _ISwalpha = ((__ISwalpha) < 8 ? (int) ((1UL << (__ISwalpha)) << 24) : ((__ISwalpha) < 16 ? (int) ((1UL << (__ISwalpha)) << 8) : ((__ISwalpha) < 24 ? (int) ((1UL << (__ISwalpha)) >> 8) : (int) ((1UL << (__ISwalpha)) >> 24)))), -2441: _ISwdigit = ((__ISwdigit) < 8 ? (int) ((1UL << (__ISwdigit)) << 24) : ((__ISwdigit) < 16 ? (int) ((1UL << (__ISwdigit)) << 8) : ((__ISwdigit) < 24 ? (int) ((1UL << (__ISwdigit)) >> 8) : (int) ((1UL << (__ISwdigit)) >> 24)))), -2441: _ISwxdigit = ((__ISwxdigit) < 8 ? (int) ((1UL << (__ISwxdigit)) << 24) : ((__ISwxdigit) < 16 ? (int) ((1UL << (__ISwxdigit)) << 8) : ((__ISwxdigit) < 24 ? (int) ((1UL << (__ISwxdigit)) >> 8) : (int) ((1UL << (__ISwxdigit)) >> 24)))), -2441: _ISwspace = ((__ISwspace) < 8 ? (int) ((1UL << (__ISwspace)) << 24) : ((__ISwspace) < 16 ? (int) ((1UL << (__ISwspace)) << 8) : ((__ISwspace) < 24 ? (int) ((1UL << (__ISwspace)) >> 8) : (int) ((1UL << (__ISwspace)) >> 24)))), -2441: _ISwprint = ((__ISwprint) < 8 ? (int) ((1UL << (__ISwprint)) << 24) : ((__ISwprint) < 16 ? (int) ((1UL << (__ISwprint)) << 8) : ((__ISwprint) < 24 ? (int) ((1UL << (__ISwprint)) >> 8) : (int) ((1UL << (__ISwprint)) >> 24)))), -2441: _ISwgraph = ((__ISwgraph) < 8 ? (int) ((1UL << (__ISwgraph)) << 24) : ((__ISwgraph) < 16 ? (int) ((1UL << (__ISwgraph)) << 8) : ((__ISwgraph) < 24 ? (int) ((1UL << (__ISwgraph)) >> 8) : (int) ((1UL << (__ISwgraph)) >> 24)))), -2441: _ISwblank = ((__ISwblank) < 8 ? (int) ((1UL << (__ISwblank)) << 24) : ((__ISwblank) < 16 ? (int) ((1UL << (__ISwblank)) << 8) : ((__ISwblank) < 24 ? (int) ((1UL << (__ISwblank)) >> 8) : (int) ((1UL << (__ISwblank)) >> 24)))), -2441: _ISwcntrl = ((__ISwcntrl) < 8 ? (int) ((1UL << (__ISwcntrl)) << 24) : ((__ISwcntrl) < 16 ? (int) ((1UL << (__ISwcntrl)) << 8) : ((__ISwcntrl) < 24 ? (int) ((1UL << (__ISwcntrl)) >> 8) : (int) ((1UL << (__ISwcntrl)) >> 24)))), -2441: _ISwpunct = ((__ISwpunct) < 8 ? (int) ((1UL << (__ISwpunct)) << 24) : ((__ISwpunct) < 16 ? (int) ((1UL << (__ISwpunct)) << 8) : ((__ISwpunct) < 24 ? (int) ((1UL << (__ISwpunct)) >> 8) : (int) ((1UL << (__ISwpunct)) >> 24)))), -2441: _ISwalnum = ((__ISwalnum) < 8 ? (int) ((1UL << (__ISwalnum)) << 24) : ((__ISwalnum) < 16 ? (int) ((1UL << (__ISwalnum)) << 8) : ((__ISwalnum) < 24 ? (int) ((1UL << (__ISwalnum)) >> 8) : (int) ((1UL << (__ISwalnum)) >> 24)))) -2441: }; -2441: -2441: -2441: -2441: extern "C" { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int iswalnum (wint_t __wc) throw (); -2441: -2441: -2441: -2441: -2441: -2441: extern int iswalpha (wint_t __wc) throw (); -2441: -2441: -2441: extern int iswcntrl (wint_t __wc) throw (); -2441: -2441: -2441: -2441: extern int iswdigit (wint_t __wc) throw (); -2441: -2441: -2441: -2441: extern int iswgraph (wint_t __wc) throw (); -2441: -2441: -2441: -2441: -2441: extern int iswlower (wint_t __wc) throw (); -2441: -2441: -2441: extern int iswprint (wint_t __wc) throw (); -2441: -2441: -2441: -2441: -2441: extern int iswpunct (wint_t __wc) throw (); -2441: -2441: -2441: -2441: -2441: extern int iswspace (wint_t __wc) throw (); -2441: -2441: -2441: -2441: -2441: extern int iswupper (wint_t __wc) throw (); -2441: -2441: -2441: -2441: -2441: extern int iswxdigit (wint_t __wc) throw (); -2441: -2441: -2441: -2441: -2441: -2441: extern int iswblank (wint_t __wc) throw (); -2441: # 155 "/usr/include/i386-linux-gnu/bits/wctype-wchar.h" 3 4 -2441: extern wctype_t wctype (const char *__property) throw (); -2441: -2441: -2441: -2441: extern int iswctype (wint_t __wc, wctype_t __desc) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern wint_t towlower (wint_t __wc) throw (); -2441: -2441: -2441: extern wint_t towupper (wint_t __wc) throw (); -2441: -2441: } -2441: # 39 "/usr/include/wctype.h" 2 3 4 -2441: -2441: -2441: -2441: -2441: -2441: extern "C" { -2441: -2441: -2441: -2441: typedef const __int32_t *wctrans_t; -2441: -2441: -2441: -2441: extern wctrans_t wctrans (const char *__property) throw (); -2441: -2441: -2441: extern wint_t towctrans (wint_t __wc, wctrans_t __desc) throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern int iswalnum_l (wint_t __wc, locale_t __locale) throw (); -2441: -2441: -2441: -2441: -2441: -2441: extern int iswalpha_l (wint_t __wc, locale_t __locale) throw (); -2441: -2441: -2441: extern int iswcntrl_l (wint_t __wc, locale_t __locale) throw (); -2441: -2441: -2441: -2441: extern int iswdigit_l (wint_t __wc, locale_t __locale) throw (); -2441: -2441: -2441: -2441: extern int iswgraph_l (wint_t __wc, locale_t __locale) throw (); -2441: -2441: -2441: -2441: -2441: extern int iswlower_l (wint_t __wc, locale_t __locale) throw (); -2441: -2441: -2441: extern int iswprint_l (wint_t __wc, locale_t __locale) throw (); -2441: -2441: -2441: -2441: -2441: extern int iswpunct_l (wint_t __wc, locale_t __locale) throw (); -2441: -2441: -2441: -2441: -2441: extern int iswspace_l (wint_t __wc, locale_t __locale) throw (); -2441: -2441: -2441: -2441: -2441: extern int iswupper_l (wint_t __wc, locale_t __locale) throw (); -2441: -2441: -2441: -2441: -2441: extern int iswxdigit_l (wint_t __wc, locale_t __locale) throw (); -2441: -2441: -2441: -2441: -2441: extern int iswblank_l (wint_t __wc, locale_t __locale) throw (); -2441: -2441: -2441: -2441: extern wctype_t wctype_l (const char *__property, locale_t __locale) -2441: throw (); -2441: -2441: -2441: -2441: extern int iswctype_l (wint_t __wc, wctype_t __desc, locale_t __locale) -2441: throw (); -2441: -2441: -2441: -2441: -2441: -2441: -2441: extern wint_t towlower_l (wint_t __wc, locale_t __locale) throw (); -2441: -2441: -2441: extern wint_t towupper_l (wint_t __wc, locale_t __locale) throw (); -2441: -2441: -2441: -2441: extern wctrans_t wctrans_l (const char *__property, locale_t __locale) -2441: throw (); -2441: -2441: -2441: extern wint_t towctrans_l (wint_t __wc, wctrans_t __desc, -2441: locale_t __locale) throw (); -2441: -2441: -2441: -2441: } -2441: # 51 "/usr/include/c++/8/cwctype" 2 3 -2441: # 80 "/usr/include/c++/8/cwctype" 3 -2441: namespace std -2441: { -2441: using ::wctrans_t; -2441: using ::wctype_t; -2441: using ::wint_t; -2441: -2441: using ::iswalnum; -2441: using ::iswalpha; -2441: -2441: using ::iswblank; -2441: -2441: using ::iswcntrl; -2441: using ::iswctype; -2441: using ::iswdigit; -2441: using ::iswgraph; -2441: using ::iswlower; -2441: using ::iswprint; -2441: using ::iswpunct; -2441: using ::iswspace; -2441: using ::iswupper; -2441: using ::iswxdigit; -2441: using ::towctrans; -2441: using ::towlower; -2441: using ::towupper; -2441: using ::wctrans; -2441: using ::wctype; -2441: } -2441: # 40 "/usr/include/c++/8/bits/locale_facets.h" 2 3 -2441: # 1 "/usr/include/c++/8/cctype" 1 3 -2441: # 39 "/usr/include/c++/8/cctype" 3 -2441: -2441: # 40 "/usr/include/c++/8/cctype" 3 -2441: # 41 "/usr/include/c++/8/bits/locale_facets.h" 2 3 -2441: # 1 "/usr/include/i386-linux-gnu/c++/8/bits/ctype_base.h" 1 3 -2441: # 36 "/usr/include/i386-linux-gnu/c++/8/bits/ctype_base.h" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: struct ctype_base -2441: { -2441: -2441: typedef const int* __to_type; -2441: -2441: -2441: -2441: typedef unsigned short mask; -2441: static const mask upper = _ISupper; -2441: static const mask lower = _ISlower; -2441: static const mask alpha = _ISalpha; -2441: static const mask digit = _ISdigit; -2441: static const mask xdigit = _ISxdigit; -2441: static const mask space = _ISspace; -2441: static const mask print = _ISprint; -2441: static const mask graph = _ISalpha | _ISdigit | _ISpunct; -2441: static const mask cntrl = _IScntrl; -2441: static const mask punct = _ISpunct; -2441: static const mask alnum = _ISalpha | _ISdigit; -2441: -2441: static const mask blank = _ISblank; -2441: -2441: }; -2441: -2441: -2441: } -2441: # 42 "/usr/include/c++/8/bits/locale_facets.h" 2 3 -2441: -2441: -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/c++/8/bits/streambuf_iterator.h" 1 3 -2441: # 33 "/usr/include/c++/8/bits/streambuf_iterator.h" 3 -2441: -2441: # 34 "/usr/include/c++/8/bits/streambuf_iterator.h" 3 -2441: -2441: -2441: -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: # 49 "/usr/include/c++/8/bits/streambuf_iterator.h" 3 -2441: template -2441: class istreambuf_iterator -2441: : public iterator -2441: -2441: -2441: -2441: { -2441: public: -2441: -2441: -2441: -2441: typedef _CharT char_type; -2441: typedef _Traits traits_type; -2441: typedef typename _Traits::int_type int_type; -2441: typedef basic_streambuf<_CharT, _Traits> streambuf_type; -2441: typedef basic_istream<_CharT, _Traits> istream_type; -2441: -2441: -2441: template -2441: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, -2441: ostreambuf_iterator<_CharT2> >::__type -2441: copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, -2441: ostreambuf_iterator<_CharT2>); -2441: -2441: template -2441: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, -2441: _CharT2*>::__type -2441: __copy_move_a2(istreambuf_iterator<_CharT2>, -2441: istreambuf_iterator<_CharT2>, _CharT2*); -2441: -2441: template -2441: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, -2441: istreambuf_iterator<_CharT2> >::__type -2441: find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, -2441: const _CharT2&); -2441: -2441: template -2441: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, -2441: void>::__type -2441: advance(istreambuf_iterator<_CharT2>&, _Distance); -2441: -2441: private: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: mutable streambuf_type* _M_sbuf; -2441: int_type _M_c; -2441: -2441: public: -2441: -2441: constexpr istreambuf_iterator() noexcept -2441: : _M_sbuf(0), _M_c(traits_type::eof()) { } -2441: -2441: -2441: istreambuf_iterator(const istreambuf_iterator&) noexcept = default; -2441: -2441: ~istreambuf_iterator() = default; -2441: -2441: -2441: -2441: istreambuf_iterator(istream_type& __s) noexcept -2441: : _M_sbuf(__s.rdbuf()), _M_c(traits_type::eof()) { } -2441: -2441: -2441: istreambuf_iterator(streambuf_type* __s) noexcept -2441: : _M_sbuf(__s), _M_c(traits_type::eof()) { } -2441: -2441: -2441: -2441: -2441: char_type -2441: operator*() const -2441: { -2441: int_type __c = _M_get(); -2441: # 139 "/usr/include/c++/8/bits/streambuf_iterator.h" 3 -2441: return traits_type::to_char_type(__c); -2441: } -2441: -2441: -2441: istreambuf_iterator& -2441: operator++() -2441: { -2441: -2441: -2441: -2441: ; -2441: -2441: _M_sbuf->sbumpc(); -2441: _M_c = traits_type::eof(); -2441: return *this; -2441: } -2441: -2441: -2441: istreambuf_iterator -2441: operator++(int) -2441: { -2441: -2441: -2441: -2441: ; -2441: -2441: istreambuf_iterator __old = *this; -2441: __old._M_c = _M_sbuf->sbumpc(); -2441: _M_c = traits_type::eof(); -2441: return __old; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: bool -2441: equal(const istreambuf_iterator& __b) const -2441: { return _M_at_eof() == __b._M_at_eof(); } -2441: -2441: private: -2441: int_type -2441: _M_get() const -2441: { -2441: int_type __ret = _M_c; -2441: if (_M_sbuf && _S_is_eof(__ret) && _S_is_eof(__ret = _M_sbuf->sgetc())) -2441: _M_sbuf = 0; -2441: return __ret; -2441: } -2441: -2441: bool -2441: _M_at_eof() const -2441: { return _S_is_eof(_M_get()); } -2441: -2441: static bool -2441: _S_is_eof(int_type __c) -2441: { -2441: const int_type __eof = traits_type::eof(); -2441: return traits_type::eq_int_type(__c, __eof); -2441: } -2441: }; -2441: -2441: template -2441: inline bool -2441: operator==(const istreambuf_iterator<_CharT, _Traits>& __a, -2441: const istreambuf_iterator<_CharT, _Traits>& __b) -2441: { return __a.equal(__b); } -2441: -2441: template -2441: inline bool -2441: operator!=(const istreambuf_iterator<_CharT, _Traits>& __a, -2441: const istreambuf_iterator<_CharT, _Traits>& __b) -2441: { return !__a.equal(__b); } -2441: -2441: -2441: template -2441: class ostreambuf_iterator -2441: : public iterator -2441: { -2441: public: -2441: -2441: -2441: -2441: typedef _CharT char_type; -2441: typedef _Traits traits_type; -2441: typedef basic_streambuf<_CharT, _Traits> streambuf_type; -2441: typedef basic_ostream<_CharT, _Traits> ostream_type; -2441: -2441: -2441: template -2441: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, -2441: ostreambuf_iterator<_CharT2> >::__type -2441: copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, -2441: ostreambuf_iterator<_CharT2>); -2441: -2441: private: -2441: streambuf_type* _M_sbuf; -2441: bool _M_failed; -2441: -2441: public: -2441: -2441: ostreambuf_iterator(ostream_type& __s) noexcept -2441: : _M_sbuf(__s.rdbuf()), _M_failed(!_M_sbuf) { } -2441: -2441: -2441: ostreambuf_iterator(streambuf_type* __s) noexcept -2441: : _M_sbuf(__s), _M_failed(!_M_sbuf) { } -2441: -2441: -2441: ostreambuf_iterator& -2441: operator=(_CharT __c) -2441: { -2441: if (!_M_failed && -2441: _Traits::eq_int_type(_M_sbuf->sputc(__c), _Traits::eof())) -2441: _M_failed = true; -2441: return *this; -2441: } -2441: -2441: -2441: ostreambuf_iterator& -2441: operator*() -2441: { return *this; } -2441: -2441: -2441: ostreambuf_iterator& -2441: operator++(int) -2441: { return *this; } -2441: -2441: -2441: ostreambuf_iterator& -2441: operator++() -2441: { return *this; } -2441: -2441: -2441: bool -2441: failed() const noexcept -2441: { return _M_failed; } -2441: -2441: ostreambuf_iterator& -2441: _M_put(const _CharT* __ws, streamsize __len) -2441: { -2441: if (__builtin_expect(!_M_failed, true) -2441: && __builtin_expect(this->_M_sbuf->sputn(__ws, __len) != __len, -2441: false)) -2441: _M_failed = true; -2441: return *this; -2441: } -2441: }; -2441: -2441: -2441: template -2441: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, -2441: ostreambuf_iterator<_CharT> >::__type -2441: copy(istreambuf_iterator<_CharT> __first, -2441: istreambuf_iterator<_CharT> __last, -2441: ostreambuf_iterator<_CharT> __result) -2441: { -2441: if (__first._M_sbuf && !__last._M_sbuf && !__result._M_failed) -2441: { -2441: bool __ineof; -2441: __copy_streambufs_eof(__first._M_sbuf, __result._M_sbuf, __ineof); -2441: if (!__ineof) -2441: __result._M_failed = true; -2441: } -2441: return __result; -2441: } -2441: -2441: template -2441: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, -2441: ostreambuf_iterator<_CharT> >::__type -2441: __copy_move_a2(_CharT* __first, _CharT* __last, -2441: ostreambuf_iterator<_CharT> __result) -2441: { -2441: const streamsize __num = __last - __first; -2441: if (__num > 0) -2441: __result._M_put(__first, __num); -2441: return __result; -2441: } -2441: -2441: template -2441: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, -2441: ostreambuf_iterator<_CharT> >::__type -2441: __copy_move_a2(const _CharT* __first, const _CharT* __last, -2441: ostreambuf_iterator<_CharT> __result) -2441: { -2441: const streamsize __num = __last - __first; -2441: if (__num > 0) -2441: __result._M_put(__first, __num); -2441: return __result; -2441: } -2441: -2441: template -2441: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, -2441: _CharT*>::__type -2441: __copy_move_a2(istreambuf_iterator<_CharT> __first, -2441: istreambuf_iterator<_CharT> __last, _CharT* __result) -2441: { -2441: typedef istreambuf_iterator<_CharT> __is_iterator_type; -2441: typedef typename __is_iterator_type::traits_type traits_type; -2441: typedef typename __is_iterator_type::streambuf_type streambuf_type; -2441: typedef typename traits_type::int_type int_type; -2441: -2441: if (__first._M_sbuf && !__last._M_sbuf) -2441: { -2441: streambuf_type* __sb = __first._M_sbuf; -2441: int_type __c = __sb->sgetc(); -2441: while (!traits_type::eq_int_type(__c, traits_type::eof())) -2441: { -2441: const streamsize __n = __sb->egptr() - __sb->gptr(); -2441: if (__n > 1) -2441: { -2441: traits_type::copy(__result, __sb->gptr(), __n); -2441: __sb->__safe_gbump(__n); -2441: __result += __n; -2441: __c = __sb->underflow(); -2441: } -2441: else -2441: { -2441: *__result++ = traits_type::to_char_type(__c); -2441: __c = __sb->snextc(); -2441: } -2441: } -2441: } -2441: return __result; -2441: } -2441: -2441: template -2441: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, -2441: istreambuf_iterator<_CharT> >::__type -2441: find(istreambuf_iterator<_CharT> __first, -2441: istreambuf_iterator<_CharT> __last, const _CharT& __val) -2441: { -2441: typedef istreambuf_iterator<_CharT> __is_iterator_type; -2441: typedef typename __is_iterator_type::traits_type traits_type; -2441: typedef typename __is_iterator_type::streambuf_type streambuf_type; -2441: typedef typename traits_type::int_type int_type; -2441: const int_type __eof = traits_type::eof(); -2441: -2441: if (__first._M_sbuf && !__last._M_sbuf) -2441: { -2441: const int_type __ival = traits_type::to_int_type(__val); -2441: streambuf_type* __sb = __first._M_sbuf; -2441: int_type __c = __sb->sgetc(); -2441: while (!traits_type::eq_int_type(__c, __eof) -2441: && !traits_type::eq_int_type(__c, __ival)) -2441: { -2441: streamsize __n = __sb->egptr() - __sb->gptr(); -2441: if (__n > 1) -2441: { -2441: const _CharT* __p = traits_type::find(__sb->gptr(), -2441: __n, __val); -2441: if (__p) -2441: __n = __p - __sb->gptr(); -2441: __sb->__safe_gbump(__n); -2441: __c = __sb->sgetc(); -2441: } -2441: else -2441: __c = __sb->snextc(); -2441: } -2441: -2441: __first._M_c = __eof; -2441: } -2441: -2441: return __first; -2441: } -2441: -2441: template -2441: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, -2441: void>::__type -2441: advance(istreambuf_iterator<_CharT>& __i, _Distance __n) -2441: { -2441: if (__n == 0) -2441: return; -2441: -2441: ; -2441: -2441: -2441: ; -2441: -2441: typedef istreambuf_iterator<_CharT> __is_iterator_type; -2441: typedef typename __is_iterator_type::traits_type traits_type; -2441: typedef typename __is_iterator_type::streambuf_type streambuf_type; -2441: typedef typename traits_type::int_type int_type; -2441: const int_type __eof = traits_type::eof(); -2441: -2441: streambuf_type* __sb = __i._M_sbuf; -2441: while (__n > 0) -2441: { -2441: streamsize __size = __sb->egptr() - __sb->gptr(); -2441: if (__size > __n) -2441: { -2441: __sb->__safe_gbump(__n); -2441: break; -2441: } -2441: -2441: __sb->__safe_gbump(__size); -2441: __n -= __size; -2441: if (traits_type::eq_int_type(__sb->underflow(), __eof)) -2441: { -2441: -2441: -2441: ; -2441: break; -2441: } -2441: } -2441: -2441: __i._M_c = __eof; -2441: } -2441: -2441: -2441: -2441: -2441: } -2441: # 49 "/usr/include/c++/8/bits/locale_facets.h" 2 3 -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: # 71 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: template -2441: void -2441: __convert_to_v(const char*, _Tp&, ios_base::iostate&, -2441: const __c_locale&) throw(); -2441: -2441: -2441: template<> -2441: void -2441: __convert_to_v(const char*, float&, ios_base::iostate&, -2441: const __c_locale&) throw(); -2441: -2441: template<> -2441: void -2441: __convert_to_v(const char*, double&, ios_base::iostate&, -2441: const __c_locale&) throw(); -2441: -2441: template<> -2441: void -2441: __convert_to_v(const char*, long double&, ios_base::iostate&, -2441: const __c_locale&) throw(); -2441: -2441: -2441: -2441: template -2441: struct __pad -2441: { -2441: static void -2441: _S_pad(ios_base& __io, _CharT __fill, _CharT* __news, -2441: const _CharT* __olds, streamsize __newlen, streamsize __oldlen); -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: _CharT* -2441: __add_grouping(_CharT* __s, _CharT __sep, -2441: const char* __gbeg, size_t __gsize, -2441: const _CharT* __first, const _CharT* __last); -2441: -2441: -2441: -2441: -2441: template -2441: inline -2441: ostreambuf_iterator<_CharT> -2441: __write(ostreambuf_iterator<_CharT> __s, const _CharT* __ws, int __len) -2441: { -2441: __s._M_put(__ws, __len); -2441: return __s; -2441: } -2441: -2441: -2441: template -2441: inline -2441: _OutIter -2441: __write(_OutIter __s, const _CharT* __ws, int __len) -2441: { -2441: for (int __j = 0; __j < __len; __j++, ++__s) -2441: *__s = __ws[__j]; -2441: return __s; -2441: } -2441: # 149 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: template -2441: class __ctype_abstract_base : public locale::facet, public ctype_base -2441: { -2441: public: -2441: -2441: -2441: typedef _CharT char_type; -2441: # 168 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: bool -2441: is(mask __m, char_type __c) const -2441: { return this->do_is(__m, __c); } -2441: # 185 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: const char_type* -2441: is(const char_type *__lo, const char_type *__hi, mask *__vec) const -2441: { return this->do_is(__lo, __hi, __vec); } -2441: # 201 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: const char_type* -2441: scan_is(mask __m, const char_type* __lo, const char_type* __hi) const -2441: { return this->do_scan_is(__m, __lo, __hi); } -2441: # 217 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: const char_type* -2441: scan_not(mask __m, const char_type* __lo, const char_type* __hi) const -2441: { return this->do_scan_not(__m, __lo, __hi); } -2441: # 231 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: char_type -2441: toupper(char_type __c) const -2441: { return this->do_toupper(__c); } -2441: # 246 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: const char_type* -2441: toupper(char_type *__lo, const char_type* __hi) const -2441: { return this->do_toupper(__lo, __hi); } -2441: # 260 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: char_type -2441: tolower(char_type __c) const -2441: { return this->do_tolower(__c); } -2441: # 275 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: const char_type* -2441: tolower(char_type* __lo, const char_type* __hi) const -2441: { return this->do_tolower(__lo, __hi); } -2441: # 292 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: char_type -2441: widen(char __c) const -2441: { return this->do_widen(__c); } -2441: # 311 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: const char* -2441: widen(const char* __lo, const char* __hi, char_type* __to) const -2441: { return this->do_widen(__lo, __hi, __to); } -2441: # 330 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: char -2441: narrow(char_type __c, char __dfault) const -2441: { return this->do_narrow(__c, __dfault); } -2441: # 352 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: const char_type* -2441: narrow(const char_type* __lo, const char_type* __hi, -2441: char __dfault, char* __to) const -2441: { return this->do_narrow(__lo, __hi, __dfault, __to); } -2441: -2441: protected: -2441: explicit -2441: __ctype_abstract_base(size_t __refs = 0): facet(__refs) { } -2441: -2441: virtual -2441: ~__ctype_abstract_base() { } -2441: # 377 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual bool -2441: do_is(mask __m, char_type __c) const = 0; -2441: # 396 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual const char_type* -2441: do_is(const char_type* __lo, const char_type* __hi, -2441: mask* __vec) const = 0; -2441: # 415 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual const char_type* -2441: do_scan_is(mask __m, const char_type* __lo, -2441: const char_type* __hi) const = 0; -2441: # 434 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual const char_type* -2441: do_scan_not(mask __m, const char_type* __lo, -2441: const char_type* __hi) const = 0; -2441: # 452 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual char_type -2441: do_toupper(char_type __c) const = 0; -2441: # 469 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual const char_type* -2441: do_toupper(char_type* __lo, const char_type* __hi) const = 0; -2441: # 485 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual char_type -2441: do_tolower(char_type __c) const = 0; -2441: # 502 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual const char_type* -2441: do_tolower(char_type* __lo, const char_type* __hi) const = 0; -2441: # 521 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual char_type -2441: do_widen(char __c) const = 0; -2441: # 542 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual const char* -2441: do_widen(const char* __lo, const char* __hi, char_type* __to) const = 0; -2441: # 563 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual char -2441: do_narrow(char_type __c, char __dfault) const = 0; -2441: # 588 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual const char_type* -2441: do_narrow(const char_type* __lo, const char_type* __hi, -2441: char __dfault, char* __to) const = 0; -2441: }; -2441: # 611 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: template -2441: class ctype : public __ctype_abstract_base<_CharT> -2441: { -2441: public: -2441: -2441: typedef _CharT char_type; -2441: typedef typename __ctype_abstract_base<_CharT>::mask mask; -2441: -2441: -2441: static locale::id id; -2441: -2441: explicit -2441: ctype(size_t __refs = 0) : __ctype_abstract_base<_CharT>(__refs) { } -2441: -2441: protected: -2441: virtual -2441: ~ctype(); -2441: -2441: virtual bool -2441: do_is(mask __m, char_type __c) const; -2441: -2441: virtual const char_type* -2441: do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const; -2441: -2441: virtual const char_type* -2441: do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const; -2441: -2441: virtual const char_type* -2441: do_scan_not(mask __m, const char_type* __lo, -2441: const char_type* __hi) const; -2441: -2441: virtual char_type -2441: do_toupper(char_type __c) const; -2441: -2441: virtual const char_type* -2441: do_toupper(char_type* __lo, const char_type* __hi) const; -2441: -2441: virtual char_type -2441: do_tolower(char_type __c) const; -2441: -2441: virtual const char_type* -2441: do_tolower(char_type* __lo, const char_type* __hi) const; -2441: -2441: virtual char_type -2441: do_widen(char __c) const; -2441: -2441: virtual const char* -2441: do_widen(const char* __lo, const char* __hi, char_type* __dest) const; -2441: -2441: virtual char -2441: do_narrow(char_type, char __dfault) const; -2441: -2441: virtual const char_type* -2441: do_narrow(const char_type* __lo, const char_type* __hi, -2441: char __dfault, char* __to) const; -2441: }; -2441: -2441: template -2441: locale::id ctype<_CharT>::id; -2441: # 680 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: template<> -2441: class ctype : public locale::facet, public ctype_base -2441: { -2441: public: -2441: -2441: -2441: typedef char char_type; -2441: -2441: protected: -2441: -2441: __c_locale _M_c_locale_ctype; -2441: bool _M_del; -2441: __to_type _M_toupper; -2441: __to_type _M_tolower; -2441: const mask* _M_table; -2441: mutable char _M_widen_ok; -2441: mutable char _M_widen[1 + static_cast(-1)]; -2441: mutable char _M_narrow[1 + static_cast(-1)]; -2441: mutable char _M_narrow_ok; -2441: -2441: -2441: public: -2441: -2441: static locale::id id; -2441: -2441: static const size_t table_size = 1 + static_cast(-1); -2441: # 717 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: explicit -2441: ctype(const mask* __table = 0, bool __del = false, size_t __refs = 0); -2441: # 730 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: explicit -2441: ctype(__c_locale __cloc, const mask* __table = 0, bool __del = false, -2441: size_t __refs = 0); -2441: # 743 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: inline bool -2441: is(mask __m, char __c) const; -2441: # 758 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: inline const char* -2441: is(const char* __lo, const char* __hi, mask* __vec) const; -2441: # 772 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: inline const char* -2441: scan_is(mask __m, const char* __lo, const char* __hi) const; -2441: # 786 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: inline const char* -2441: scan_not(mask __m, const char* __lo, const char* __hi) const; -2441: # 801 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: char_type -2441: toupper(char_type __c) const -2441: { return this->do_toupper(__c); } -2441: # 818 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: const char_type* -2441: toupper(char_type *__lo, const char_type* __hi) const -2441: { return this->do_toupper(__lo, __hi); } -2441: # 834 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: char_type -2441: tolower(char_type __c) const -2441: { return this->do_tolower(__c); } -2441: # 851 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: const char_type* -2441: tolower(char_type* __lo, const char_type* __hi) const -2441: { return this->do_tolower(__lo, __hi); } -2441: # 871 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: char_type -2441: widen(char __c) const -2441: { -2441: if (_M_widen_ok) -2441: return _M_widen[static_cast(__c)]; -2441: this->_M_widen_init(); -2441: return this->do_widen(__c); -2441: } -2441: # 898 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: const char* -2441: widen(const char* __lo, const char* __hi, char_type* __to) const -2441: { -2441: if (_M_widen_ok == 1) -2441: { -2441: if (__builtin_expect(__hi != __lo, true)) -2441: __builtin_memcpy(__to, __lo, __hi - __lo); -2441: return __hi; -2441: } -2441: if (!_M_widen_ok) -2441: _M_widen_init(); -2441: return this->do_widen(__lo, __hi, __to); -2441: } -2441: # 930 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: char -2441: narrow(char_type __c, char __dfault) const -2441: { -2441: if (_M_narrow[static_cast(__c)]) -2441: return _M_narrow[static_cast(__c)]; -2441: const char __t = do_narrow(__c, __dfault); -2441: if (__t != __dfault) -2441: _M_narrow[static_cast(__c)] = __t; -2441: return __t; -2441: } -2441: # 963 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: const char_type* -2441: narrow(const char_type* __lo, const char_type* __hi, -2441: char __dfault, char* __to) const -2441: { -2441: if (__builtin_expect(_M_narrow_ok == 1, true)) -2441: { -2441: if (__builtin_expect(__hi != __lo, true)) -2441: __builtin_memcpy(__to, __lo, __hi - __lo); -2441: return __hi; -2441: } -2441: if (!_M_narrow_ok) -2441: _M_narrow_init(); -2441: return this->do_narrow(__lo, __hi, __dfault, __to); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: const mask* -2441: table() const throw() -2441: { return _M_table; } -2441: -2441: -2441: static const mask* -2441: classic_table() throw(); -2441: protected: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual -2441: ~ctype(); -2441: # 1013 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual char_type -2441: do_toupper(char_type __c) const; -2441: # 1030 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual const char_type* -2441: do_toupper(char_type* __lo, const char_type* __hi) const; -2441: # 1046 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual char_type -2441: do_tolower(char_type __c) const; -2441: # 1063 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual const char_type* -2441: do_tolower(char_type* __lo, const char_type* __hi) const; -2441: # 1083 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual char_type -2441: do_widen(char __c) const -2441: { return __c; } -2441: # 1106 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual const char* -2441: do_widen(const char* __lo, const char* __hi, char_type* __to) const -2441: { -2441: if (__builtin_expect(__hi != __lo, true)) -2441: __builtin_memcpy(__to, __lo, __hi - __lo); -2441: return __hi; -2441: } -2441: # 1133 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual char -2441: do_narrow(char_type __c, char __dfault __attribute__((__unused__))) const -2441: { return __c; } -2441: # 1159 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual const char_type* -2441: do_narrow(const char_type* __lo, const char_type* __hi, -2441: char __dfault __attribute__((__unused__)), char* __to) const -2441: { -2441: if (__builtin_expect(__hi != __lo, true)) -2441: __builtin_memcpy(__to, __lo, __hi - __lo); -2441: return __hi; -2441: } -2441: -2441: private: -2441: void _M_narrow_init() const; -2441: void _M_widen_init() const; -2441: }; -2441: # 1185 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: template<> -2441: class ctype : public __ctype_abstract_base -2441: { -2441: public: -2441: -2441: -2441: typedef wchar_t char_type; -2441: typedef wctype_t __wmask_type; -2441: -2441: protected: -2441: __c_locale _M_c_locale_ctype; -2441: -2441: -2441: bool _M_narrow_ok; -2441: char _M_narrow[128]; -2441: wint_t _M_widen[1 + static_cast(-1)]; -2441: -2441: -2441: mask _M_bit[16]; -2441: __wmask_type _M_wmask[16]; -2441: -2441: public: -2441: -2441: -2441: static locale::id id; -2441: # 1218 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: explicit -2441: ctype(size_t __refs = 0); -2441: # 1229 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: explicit -2441: ctype(__c_locale __cloc, size_t __refs = 0); -2441: -2441: protected: -2441: __wmask_type -2441: _M_convert_to_wmask(const mask __m) const throw(); -2441: -2441: -2441: virtual -2441: ~ctype(); -2441: # 1253 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual bool -2441: do_is(mask __m, char_type __c) const; -2441: # 1272 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual const char_type* -2441: do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const; -2441: # 1290 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual const char_type* -2441: do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const; -2441: # 1308 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual const char_type* -2441: do_scan_not(mask __m, const char_type* __lo, -2441: const char_type* __hi) const; -2441: # 1325 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual char_type -2441: do_toupper(char_type __c) const; -2441: # 1342 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual const char_type* -2441: do_toupper(char_type* __lo, const char_type* __hi) const; -2441: # 1358 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual char_type -2441: do_tolower(char_type __c) const; -2441: # 1375 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual const char_type* -2441: do_tolower(char_type* __lo, const char_type* __hi) const; -2441: # 1395 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual char_type -2441: do_widen(char __c) const; -2441: # 1417 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual const char* -2441: do_widen(const char* __lo, const char* __hi, char_type* __to) const; -2441: # 1440 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual char -2441: do_narrow(char_type __c, char __dfault) const; -2441: # 1466 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual const char_type* -2441: do_narrow(const char_type* __lo, const char_type* __hi, -2441: char __dfault, char* __to) const; -2441: -2441: -2441: void -2441: _M_initialize_ctype() throw(); -2441: }; -2441: -2441: -2441: -2441: template -2441: class ctype_byname : public ctype<_CharT> -2441: { -2441: public: -2441: typedef typename ctype<_CharT>::mask mask; -2441: -2441: explicit -2441: ctype_byname(const char* __s, size_t __refs = 0); -2441: -2441: -2441: explicit -2441: ctype_byname(const string& __s, size_t __refs = 0) -2441: : ctype_byname(__s.c_str(), __refs) { } -2441: -2441: -2441: protected: -2441: virtual -2441: ~ctype_byname() { } -2441: }; -2441: -2441: -2441: template<> -2441: class ctype_byname : public ctype -2441: { -2441: public: -2441: explicit -2441: ctype_byname(const char* __s, size_t __refs = 0); -2441: -2441: -2441: explicit -2441: ctype_byname(const string& __s, size_t __refs = 0); -2441: -2441: -2441: protected: -2441: virtual -2441: ~ctype_byname(); -2441: }; -2441: -2441: -2441: template<> -2441: class ctype_byname : public ctype -2441: { -2441: public: -2441: explicit -2441: ctype_byname(const char* __s, size_t __refs = 0); -2441: -2441: -2441: explicit -2441: ctype_byname(const string& __s, size_t __refs = 0); -2441: -2441: -2441: protected: -2441: virtual -2441: ~ctype_byname(); -2441: }; -2441: -2441: -2441: -2441: } -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/c++/8/bits/ctype_inline.h" 1 3 -2441: # 37 "/usr/include/i386-linux-gnu/c++/8/bits/ctype_inline.h" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: bool -2441: ctype:: -2441: is(mask __m, char __c) const -2441: { return _M_table[static_cast(__c)] & __m; } -2441: -2441: const char* -2441: ctype:: -2441: is(const char* __low, const char* __high, mask* __vec) const -2441: { -2441: while (__low < __high) -2441: *__vec++ = _M_table[static_cast(*__low++)]; -2441: return __high; -2441: } -2441: -2441: const char* -2441: ctype:: -2441: scan_is(mask __m, const char* __low, const char* __high) const -2441: { -2441: while (__low < __high -2441: && !(_M_table[static_cast(*__low)] & __m)) -2441: ++__low; -2441: return __low; -2441: } -2441: -2441: const char* -2441: ctype:: -2441: scan_not(mask __m, const char* __low, const char* __high) const -2441: { -2441: while (__low < __high -2441: && (_M_table[static_cast(*__low)] & __m) != 0) -2441: ++__low; -2441: return __low; -2441: } -2441: -2441: -2441: } -2441: # 1539 "/usr/include/c++/8/bits/locale_facets.h" 2 3 -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: class __num_base -2441: { -2441: public: -2441: -2441: -2441: enum -2441: { -2441: _S_ominus, -2441: _S_oplus, -2441: _S_ox, -2441: _S_oX, -2441: _S_odigits, -2441: _S_odigits_end = _S_odigits + 16, -2441: _S_oudigits = _S_odigits_end, -2441: _S_oudigits_end = _S_oudigits + 16, -2441: _S_oe = _S_odigits + 14, -2441: _S_oE = _S_oudigits + 14, -2441: _S_oend = _S_oudigits_end -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: static const char* _S_atoms_out; -2441: -2441: -2441: -2441: static const char* _S_atoms_in; -2441: -2441: enum -2441: { -2441: _S_iminus, -2441: _S_iplus, -2441: _S_ix, -2441: _S_iX, -2441: _S_izero, -2441: _S_ie = _S_izero + 14, -2441: _S_iE = _S_izero + 20, -2441: _S_iend = 26 -2441: }; -2441: -2441: -2441: -2441: static void -2441: _S_format_float(const ios_base& __io, char* __fptr, char __mod) throw(); -2441: }; -2441: -2441: template -2441: struct __numpunct_cache : public locale::facet -2441: { -2441: const char* _M_grouping; -2441: size_t _M_grouping_size; -2441: bool _M_use_grouping; -2441: const _CharT* _M_truename; -2441: size_t _M_truename_size; -2441: const _CharT* _M_falsename; -2441: size_t _M_falsename_size; -2441: _CharT _M_decimal_point; -2441: _CharT _M_thousands_sep; -2441: -2441: -2441: -2441: -2441: -2441: _CharT _M_atoms_out[__num_base::_S_oend]; -2441: -2441: -2441: -2441: -2441: -2441: _CharT _M_atoms_in[__num_base::_S_iend]; -2441: -2441: bool _M_allocated; -2441: -2441: __numpunct_cache(size_t __refs = 0) -2441: : facet(__refs), _M_grouping(0), _M_grouping_size(0), -2441: _M_use_grouping(false), -2441: _M_truename(0), _M_truename_size(0), _M_falsename(0), -2441: _M_falsename_size(0), _M_decimal_point(_CharT()), -2441: _M_thousands_sep(_CharT()), _M_allocated(false) -2441: { } -2441: -2441: ~__numpunct_cache(); -2441: -2441: void -2441: _M_cache(const locale& __loc); -2441: -2441: private: -2441: __numpunct_cache& -2441: operator=(const __numpunct_cache&); -2441: -2441: explicit -2441: __numpunct_cache(const __numpunct_cache&); -2441: }; -2441: -2441: template -2441: __numpunct_cache<_CharT>::~__numpunct_cache() -2441: { -2441: if (_M_allocated) -2441: { -2441: delete [] _M_grouping; -2441: delete [] _M_truename; -2441: delete [] _M_falsename; -2441: } -2441: } -2441: -2441: namespace __cxx11 { -2441: # 1669 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: template -2441: class numpunct : public locale::facet -2441: { -2441: public: -2441: -2441: -2441: -2441: typedef _CharT char_type; -2441: typedef basic_string<_CharT> string_type; -2441: -2441: typedef __numpunct_cache<_CharT> __cache_type; -2441: -2441: protected: -2441: __cache_type* _M_data; -2441: -2441: public: -2441: -2441: static locale::id id; -2441: -2441: -2441: -2441: -2441: -2441: -2441: explicit -2441: numpunct(size_t __refs = 0) -2441: : facet(__refs), _M_data(0) -2441: { _M_initialize_numpunct(); } -2441: # 1707 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: explicit -2441: numpunct(__cache_type* __cache, size_t __refs = 0) -2441: : facet(__refs), _M_data(__cache) -2441: { _M_initialize_numpunct(); } -2441: # 1721 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: explicit -2441: numpunct(__c_locale __cloc, size_t __refs = 0) -2441: : facet(__refs), _M_data(0) -2441: { _M_initialize_numpunct(__cloc); } -2441: # 1735 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: char_type -2441: decimal_point() const -2441: { return this->do_decimal_point(); } -2441: # 1748 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: char_type -2441: thousands_sep() const -2441: { return this->do_thousands_sep(); } -2441: # 1779 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: string -2441: grouping() const -2441: { return this->do_grouping(); } -2441: # 1792 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: string_type -2441: truename() const -2441: { return this->do_truename(); } -2441: # 1805 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: string_type -2441: falsename() const -2441: { return this->do_falsename(); } -2441: -2441: protected: -2441: -2441: virtual -2441: ~numpunct(); -2441: # 1822 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual char_type -2441: do_decimal_point() const -2441: { return _M_data->_M_decimal_point; } -2441: # 1834 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual char_type -2441: do_thousands_sep() const -2441: { return _M_data->_M_thousands_sep; } -2441: # 1847 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual string -2441: do_grouping() const -2441: { return _M_data->_M_grouping; } -2441: # 1860 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual string_type -2441: do_truename() const -2441: { return _M_data->_M_truename; } -2441: # 1873 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual string_type -2441: do_falsename() const -2441: { return _M_data->_M_falsename; } -2441: -2441: -2441: void -2441: _M_initialize_numpunct(__c_locale __cloc = 0); -2441: }; -2441: -2441: template -2441: locale::id numpunct<_CharT>::id; -2441: -2441: template<> -2441: numpunct::~numpunct(); -2441: -2441: template<> -2441: void -2441: numpunct::_M_initialize_numpunct(__c_locale __cloc); -2441: -2441: -2441: template<> -2441: numpunct::~numpunct(); -2441: -2441: template<> -2441: void -2441: numpunct::_M_initialize_numpunct(__c_locale __cloc); -2441: -2441: -2441: -2441: template -2441: class numpunct_byname : public numpunct<_CharT> -2441: { -2441: public: -2441: typedef _CharT char_type; -2441: typedef basic_string<_CharT> string_type; -2441: -2441: explicit -2441: numpunct_byname(const char* __s, size_t __refs = 0) -2441: : numpunct<_CharT>(__refs) -2441: { -2441: if (__builtin_strcmp(__s, "C") != 0 -2441: && __builtin_strcmp(__s, "POSIX") != 0) -2441: { -2441: __c_locale __tmp; -2441: this->_S_create_c_locale(__tmp, __s); -2441: this->_M_initialize_numpunct(__tmp); -2441: this->_S_destroy_c_locale(__tmp); -2441: } -2441: } -2441: -2441: -2441: explicit -2441: numpunct_byname(const string& __s, size_t __refs = 0) -2441: : numpunct_byname(__s.c_str(), __refs) { } -2441: -2441: -2441: protected: -2441: virtual -2441: ~numpunct_byname() { } -2441: }; -2441: -2441: } -2441: -2441: -2441: # 1951 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: template -2441: class num_get : public locale::facet -2441: { -2441: public: -2441: -2441: -2441: -2441: typedef _CharT char_type; -2441: typedef _InIter iter_type; -2441: -2441: -2441: -2441: static locale::id id; -2441: # 1972 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: explicit -2441: num_get(size_t __refs = 0) : facet(__refs) { } -2441: # 1998 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: iter_type -2441: get(iter_type __in, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, bool& __v) const -2441: { return this->do_get(__in, __end, __io, __err, __v); } -2441: # 2035 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: iter_type -2441: get(iter_type __in, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, long& __v) const -2441: { return this->do_get(__in, __end, __io, __err, __v); } -2441: -2441: iter_type -2441: get(iter_type __in, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, unsigned short& __v) const -2441: { return this->do_get(__in, __end, __io, __err, __v); } -2441: -2441: iter_type -2441: get(iter_type __in, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, unsigned int& __v) const -2441: { return this->do_get(__in, __end, __io, __err, __v); } -2441: -2441: iter_type -2441: get(iter_type __in, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, unsigned long& __v) const -2441: { return this->do_get(__in, __end, __io, __err, __v); } -2441: -2441: -2441: iter_type -2441: get(iter_type __in, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, long long& __v) const -2441: { return this->do_get(__in, __end, __io, __err, __v); } -2441: -2441: iter_type -2441: get(iter_type __in, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, unsigned long long& __v) const -2441: { return this->do_get(__in, __end, __io, __err, __v); } -2441: # 2095 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: iter_type -2441: get(iter_type __in, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, float& __v) const -2441: { return this->do_get(__in, __end, __io, __err, __v); } -2441: -2441: iter_type -2441: get(iter_type __in, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, double& __v) const -2441: { return this->do_get(__in, __end, __io, __err, __v); } -2441: -2441: iter_type -2441: get(iter_type __in, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, long double& __v) const -2441: { return this->do_get(__in, __end, __io, __err, __v); } -2441: # 2138 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: iter_type -2441: get(iter_type __in, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, void*& __v) const -2441: { return this->do_get(__in, __end, __io, __err, __v); } -2441: -2441: protected: -2441: -2441: virtual ~num_get() { } -2441: -2441: __attribute ((__abi_tag__ ("cxx11"))) -2441: iter_type -2441: _M_extract_float(iter_type, iter_type, ios_base&, ios_base::iostate&, -2441: string&) const; -2441: -2441: template -2441: __attribute ((__abi_tag__ ("cxx11"))) -2441: iter_type -2441: _M_extract_int(iter_type, iter_type, ios_base&, ios_base::iostate&, -2441: _ValueT&) const; -2441: -2441: template -2441: typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, int>::__type -2441: _M_find(const _CharT2*, size_t __len, _CharT2 __c) const -2441: { -2441: int __ret = -1; -2441: if (__len <= 10) -2441: { -2441: if (__c >= _CharT2('0') && __c < _CharT2(_CharT2('0') + __len)) -2441: __ret = __c - _CharT2('0'); -2441: } -2441: else -2441: { -2441: if (__c >= _CharT2('0') && __c <= _CharT2('9')) -2441: __ret = __c - _CharT2('0'); -2441: else if (__c >= _CharT2('a') && __c <= _CharT2('f')) -2441: __ret = 10 + (__c - _CharT2('a')); -2441: else if (__c >= _CharT2('A') && __c <= _CharT2('F')) -2441: __ret = 10 + (__c - _CharT2('A')); -2441: } -2441: return __ret; -2441: } -2441: -2441: template -2441: typename __gnu_cxx::__enable_if::__value, -2441: int>::__type -2441: _M_find(const _CharT2* __zero, size_t __len, _CharT2 __c) const -2441: { -2441: int __ret = -1; -2441: const char_type* __q = char_traits<_CharT2>::find(__zero, __len, __c); -2441: if (__q) -2441: { -2441: __ret = __q - __zero; -2441: if (__ret > 15) -2441: __ret -= 6; -2441: } -2441: return __ret; -2441: } -2441: # 2211 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual iter_type -2441: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, bool&) const; -2441: -2441: virtual iter_type -2441: do_get(iter_type __beg, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, long& __v) const -2441: { return _M_extract_int(__beg, __end, __io, __err, __v); } -2441: -2441: virtual iter_type -2441: do_get(iter_type __beg, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, unsigned short& __v) const -2441: { return _M_extract_int(__beg, __end, __io, __err, __v); } -2441: -2441: virtual iter_type -2441: do_get(iter_type __beg, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, unsigned int& __v) const -2441: { return _M_extract_int(__beg, __end, __io, __err, __v); } -2441: -2441: virtual iter_type -2441: do_get(iter_type __beg, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, unsigned long& __v) const -2441: { return _M_extract_int(__beg, __end, __io, __err, __v); } -2441: -2441: -2441: virtual iter_type -2441: do_get(iter_type __beg, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, long long& __v) const -2441: { return _M_extract_int(__beg, __end, __io, __err, __v); } -2441: -2441: virtual iter_type -2441: do_get(iter_type __beg, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, unsigned long long& __v) const -2441: { return _M_extract_int(__beg, __end, __io, __err, __v); } -2441: -2441: -2441: virtual iter_type -2441: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, float&) const; -2441: -2441: virtual iter_type -2441: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, -2441: double&) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual iter_type -2441: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, -2441: long double&) const; -2441: -2441: -2441: virtual iter_type -2441: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, void*&) const; -2441: # 2274 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: }; -2441: -2441: template -2441: locale::id num_get<_CharT, _InIter>::id; -2441: # 2292 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: template -2441: class num_put : public locale::facet -2441: { -2441: public: -2441: -2441: -2441: -2441: typedef _CharT char_type; -2441: typedef _OutIter iter_type; -2441: -2441: -2441: -2441: static locale::id id; -2441: # 2313 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: explicit -2441: num_put(size_t __refs = 0) : facet(__refs) { } -2441: # 2331 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: iter_type -2441: put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const -2441: { return this->do_put(__s, __io, __fill, __v); } -2441: # 2373 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: iter_type -2441: put(iter_type __s, ios_base& __io, char_type __fill, long __v) const -2441: { return this->do_put(__s, __io, __fill, __v); } -2441: -2441: iter_type -2441: put(iter_type __s, ios_base& __io, char_type __fill, -2441: unsigned long __v) const -2441: { return this->do_put(__s, __io, __fill, __v); } -2441: -2441: -2441: iter_type -2441: put(iter_type __s, ios_base& __io, char_type __fill, long long __v) const -2441: { return this->do_put(__s, __io, __fill, __v); } -2441: -2441: iter_type -2441: put(iter_type __s, ios_base& __io, char_type __fill, -2441: unsigned long long __v) const -2441: { return this->do_put(__s, __io, __fill, __v); } -2441: # 2436 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: iter_type -2441: put(iter_type __s, ios_base& __io, char_type __fill, double __v) const -2441: { return this->do_put(__s, __io, __fill, __v); } -2441: -2441: iter_type -2441: put(iter_type __s, ios_base& __io, char_type __fill, -2441: long double __v) const -2441: { return this->do_put(__s, __io, __fill, __v); } -2441: # 2461 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: iter_type -2441: put(iter_type __s, ios_base& __io, char_type __fill, -2441: const void* __v) const -2441: { return this->do_put(__s, __io, __fill, __v); } -2441: -2441: protected: -2441: template -2441: iter_type -2441: _M_insert_float(iter_type, ios_base& __io, char_type __fill, -2441: char __mod, _ValueT __v) const; -2441: -2441: void -2441: _M_group_float(const char* __grouping, size_t __grouping_size, -2441: char_type __sep, const char_type* __p, char_type* __new, -2441: char_type* __cs, int& __len) const; -2441: -2441: template -2441: iter_type -2441: _M_insert_int(iter_type, ios_base& __io, char_type __fill, -2441: _ValueT __v) const; -2441: -2441: void -2441: _M_group_int(const char* __grouping, size_t __grouping_size, -2441: char_type __sep, ios_base& __io, char_type* __new, -2441: char_type* __cs, int& __len) const; -2441: -2441: void -2441: _M_pad(char_type __fill, streamsize __w, ios_base& __io, -2441: char_type* __new, const char_type* __cs, int& __len) const; -2441: -2441: -2441: virtual -2441: ~num_put() { } -2441: # 2509 "/usr/include/c++/8/bits/locale_facets.h" 3 -2441: virtual iter_type -2441: do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const; -2441: -2441: virtual iter_type -2441: do_put(iter_type __s, ios_base& __io, char_type __fill, long __v) const -2441: { return _M_insert_int(__s, __io, __fill, __v); } -2441: -2441: virtual iter_type -2441: do_put(iter_type __s, ios_base& __io, char_type __fill, -2441: unsigned long __v) const -2441: { return _M_insert_int(__s, __io, __fill, __v); } -2441: -2441: -2441: virtual iter_type -2441: do_put(iter_type __s, ios_base& __io, char_type __fill, -2441: long long __v) const -2441: { return _M_insert_int(__s, __io, __fill, __v); } -2441: -2441: virtual iter_type -2441: do_put(iter_type __s, ios_base& __io, char_type __fill, -2441: unsigned long long __v) const -2441: { return _M_insert_int(__s, __io, __fill, __v); } -2441: -2441: -2441: virtual iter_type -2441: do_put(iter_type, ios_base&, char_type, double) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual iter_type -2441: do_put(iter_type, ios_base&, char_type, long double) const; -2441: -2441: -2441: virtual iter_type -2441: do_put(iter_type, ios_base&, char_type, const void*) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: }; -2441: -2441: template -2441: locale::id num_put<_CharT, _OutIter>::id; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline bool -2441: isspace(_CharT __c, const locale& __loc) -2441: { return use_facet >(__loc).is(ctype_base::space, __c); } -2441: -2441: -2441: template -2441: inline bool -2441: isprint(_CharT __c, const locale& __loc) -2441: { return use_facet >(__loc).is(ctype_base::print, __c); } -2441: -2441: -2441: template -2441: inline bool -2441: iscntrl(_CharT __c, const locale& __loc) -2441: { return use_facet >(__loc).is(ctype_base::cntrl, __c); } -2441: -2441: -2441: template -2441: inline bool -2441: isupper(_CharT __c, const locale& __loc) -2441: { return use_facet >(__loc).is(ctype_base::upper, __c); } -2441: -2441: -2441: template -2441: inline bool -2441: islower(_CharT __c, const locale& __loc) -2441: { return use_facet >(__loc).is(ctype_base::lower, __c); } -2441: -2441: -2441: template -2441: inline bool -2441: isalpha(_CharT __c, const locale& __loc) -2441: { return use_facet >(__loc).is(ctype_base::alpha, __c); } -2441: -2441: -2441: template -2441: inline bool -2441: isdigit(_CharT __c, const locale& __loc) -2441: { return use_facet >(__loc).is(ctype_base::digit, __c); } -2441: -2441: -2441: template -2441: inline bool -2441: ispunct(_CharT __c, const locale& __loc) -2441: { return use_facet >(__loc).is(ctype_base::punct, __c); } -2441: -2441: -2441: template -2441: inline bool -2441: isxdigit(_CharT __c, const locale& __loc) -2441: { return use_facet >(__loc).is(ctype_base::xdigit, __c); } -2441: -2441: -2441: template -2441: inline bool -2441: isalnum(_CharT __c, const locale& __loc) -2441: { return use_facet >(__loc).is(ctype_base::alnum, __c); } -2441: -2441: -2441: template -2441: inline bool -2441: isgraph(_CharT __c, const locale& __loc) -2441: { return use_facet >(__loc).is(ctype_base::graph, __c); } -2441: -2441: -2441: -2441: template -2441: inline bool -2441: isblank(_CharT __c, const locale& __loc) -2441: { return use_facet >(__loc).is(ctype_base::blank, __c); } -2441: -2441: -2441: -2441: template -2441: inline _CharT -2441: toupper(_CharT __c, const locale& __loc) -2441: { return use_facet >(__loc).toupper(__c); } -2441: -2441: -2441: template -2441: inline _CharT -2441: tolower(_CharT __c, const locale& __loc) -2441: { return use_facet >(__loc).tolower(__c); } -2441: -2441: -2441: } -2441: -2441: # 1 "/usr/include/c++/8/bits/locale_facets.tcc" 1 3 -2441: # 33 "/usr/include/c++/8/bits/locale_facets.tcc" 3 -2441: -2441: # 34 "/usr/include/c++/8/bits/locale_facets.tcc" 3 -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: -2441: template -2441: struct __use_cache -2441: { -2441: const _Facet* -2441: operator() (const locale& __loc) const; -2441: }; -2441: -2441: -2441: template -2441: struct __use_cache<__numpunct_cache<_CharT> > -2441: { -2441: const __numpunct_cache<_CharT>* -2441: operator() (const locale& __loc) const -2441: { -2441: const size_t __i = numpunct<_CharT>::id._M_id(); -2441: const locale::facet** __caches = __loc._M_impl->_M_caches; -2441: if (!__caches[__i]) -2441: { -2441: __numpunct_cache<_CharT>* __tmp = 0; -2441: try -2441: { -2441: __tmp = new __numpunct_cache<_CharT>; -2441: __tmp->_M_cache(__loc); -2441: } -2441: catch(...) -2441: { -2441: delete __tmp; -2441: throw; -2441: } -2441: __loc._M_impl->_M_install_cache(__tmp, __i); -2441: } -2441: return static_cast*>(__caches[__i]); -2441: } -2441: }; -2441: -2441: template -2441: void -2441: __numpunct_cache<_CharT>::_M_cache(const locale& __loc) -2441: { -2441: const numpunct<_CharT>& __np = use_facet >(__loc); -2441: -2441: char* __grouping = 0; -2441: _CharT* __truename = 0; -2441: _CharT* __falsename = 0; -2441: try -2441: { -2441: const string& __g = __np.grouping(); -2441: _M_grouping_size = __g.size(); -2441: __grouping = new char[_M_grouping_size]; -2441: __g.copy(__grouping, _M_grouping_size); -2441: _M_use_grouping = (_M_grouping_size -2441: && static_cast(__grouping[0]) > 0 -2441: && (__grouping[0] -2441: != __gnu_cxx::__numeric_traits::__max)); -2441: -2441: const basic_string<_CharT>& __tn = __np.truename(); -2441: _M_truename_size = __tn.size(); -2441: __truename = new _CharT[_M_truename_size]; -2441: __tn.copy(__truename, _M_truename_size); -2441: -2441: const basic_string<_CharT>& __fn = __np.falsename(); -2441: _M_falsename_size = __fn.size(); -2441: __falsename = new _CharT[_M_falsename_size]; -2441: __fn.copy(__falsename, _M_falsename_size); -2441: -2441: _M_decimal_point = __np.decimal_point(); -2441: _M_thousands_sep = __np.thousands_sep(); -2441: -2441: const ctype<_CharT>& __ct = use_facet >(__loc); -2441: __ct.widen(__num_base::_S_atoms_out, -2441: __num_base::_S_atoms_out -2441: + __num_base::_S_oend, _M_atoms_out); -2441: __ct.widen(__num_base::_S_atoms_in, -2441: __num_base::_S_atoms_in -2441: + __num_base::_S_iend, _M_atoms_in); -2441: -2441: _M_grouping = __grouping; -2441: _M_truename = __truename; -2441: _M_falsename = __falsename; -2441: _M_allocated = true; -2441: } -2441: catch(...) -2441: { -2441: delete [] __grouping; -2441: delete [] __truename; -2441: delete [] __falsename; -2441: throw; -2441: } -2441: } -2441: # 139 "/usr/include/c++/8/bits/locale_facets.tcc" 3 -2441: __attribute__ ((__pure__)) bool -2441: __verify_grouping(const char* __grouping, size_t __grouping_size, -2441: const string& __grouping_tmp) throw (); -2441: -2441: -2441: -2441: template -2441: __attribute ((__abi_tag__ ("cxx11"))) -2441: _InIter -2441: num_get<_CharT, _InIter>:: -2441: _M_extract_float(_InIter __beg, _InIter __end, ios_base& __io, -2441: ios_base::iostate& __err, string& __xtrc) const -2441: { -2441: typedef char_traits<_CharT> __traits_type; -2441: typedef __numpunct_cache<_CharT> __cache_type; -2441: __use_cache<__cache_type> __uc; -2441: const locale& __loc = __io._M_getloc(); -2441: const __cache_type* __lc = __uc(__loc); -2441: const _CharT* __lit = __lc->_M_atoms_in; -2441: char_type __c = char_type(); -2441: -2441: -2441: bool __testeof = __beg == __end; -2441: -2441: -2441: if (!__testeof) -2441: { -2441: __c = *__beg; -2441: const bool __plus = __c == __lit[__num_base::_S_iplus]; -2441: if ((__plus || __c == __lit[__num_base::_S_iminus]) -2441: && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) -2441: && !(__c == __lc->_M_decimal_point)) -2441: { -2441: __xtrc += __plus ? '+' : '-'; -2441: if (++__beg != __end) -2441: __c = *__beg; -2441: else -2441: __testeof = true; -2441: } -2441: } -2441: -2441: -2441: bool __found_mantissa = false; -2441: int __sep_pos = 0; -2441: while (!__testeof) -2441: { -2441: if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) -2441: || __c == __lc->_M_decimal_point) -2441: break; -2441: else if (__c == __lit[__num_base::_S_izero]) -2441: { -2441: if (!__found_mantissa) -2441: { -2441: __xtrc += '0'; -2441: __found_mantissa = true; -2441: } -2441: ++__sep_pos; -2441: -2441: if (++__beg != __end) -2441: __c = *__beg; -2441: else -2441: __testeof = true; -2441: } -2441: else -2441: break; -2441: } -2441: -2441: -2441: bool __found_dec = false; -2441: bool __found_sci = false; -2441: string __found_grouping; -2441: if (__lc->_M_use_grouping) -2441: __found_grouping.reserve(32); -2441: const char_type* __lit_zero = __lit + __num_base::_S_izero; -2441: -2441: if (!__lc->_M_allocated) -2441: -2441: while (!__testeof) -2441: { -2441: const int __digit = _M_find(__lit_zero, 10, __c); -2441: if (__digit != -1) -2441: { -2441: __xtrc += '0' + __digit; -2441: __found_mantissa = true; -2441: } -2441: else if (__c == __lc->_M_decimal_point -2441: && !__found_dec && !__found_sci) -2441: { -2441: __xtrc += '.'; -2441: __found_dec = true; -2441: } -2441: else if ((__c == __lit[__num_base::_S_ie] -2441: || __c == __lit[__num_base::_S_iE]) -2441: && !__found_sci && __found_mantissa) -2441: { -2441: -2441: __xtrc += 'e'; -2441: __found_sci = true; -2441: -2441: -2441: if (++__beg != __end) -2441: { -2441: __c = *__beg; -2441: const bool __plus = __c == __lit[__num_base::_S_iplus]; -2441: if (__plus || __c == __lit[__num_base::_S_iminus]) -2441: __xtrc += __plus ? '+' : '-'; -2441: else -2441: continue; -2441: } -2441: else -2441: { -2441: __testeof = true; -2441: break; -2441: } -2441: } -2441: else -2441: break; -2441: -2441: if (++__beg != __end) -2441: __c = *__beg; -2441: else -2441: __testeof = true; -2441: } -2441: else -2441: while (!__testeof) -2441: { -2441: -2441: -2441: if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) -2441: { -2441: if (!__found_dec && !__found_sci) -2441: { -2441: -2441: -2441: if (__sep_pos) -2441: { -2441: __found_grouping += static_cast(__sep_pos); -2441: __sep_pos = 0; -2441: } -2441: else -2441: { -2441: -2441: -2441: __xtrc.clear(); -2441: break; -2441: } -2441: } -2441: else -2441: break; -2441: } -2441: else if (__c == __lc->_M_decimal_point) -2441: { -2441: if (!__found_dec && !__found_sci) -2441: { -2441: -2441: -2441: -2441: if (__found_grouping.size()) -2441: __found_grouping += static_cast(__sep_pos); -2441: __xtrc += '.'; -2441: __found_dec = true; -2441: } -2441: else -2441: break; -2441: } -2441: else -2441: { -2441: const char_type* __q = -2441: __traits_type::find(__lit_zero, 10, __c); -2441: if (__q) -2441: { -2441: __xtrc += '0' + (__q - __lit_zero); -2441: __found_mantissa = true; -2441: ++__sep_pos; -2441: } -2441: else if ((__c == __lit[__num_base::_S_ie] -2441: || __c == __lit[__num_base::_S_iE]) -2441: && !__found_sci && __found_mantissa) -2441: { -2441: -2441: if (__found_grouping.size() && !__found_dec) -2441: __found_grouping += static_cast(__sep_pos); -2441: __xtrc += 'e'; -2441: __found_sci = true; -2441: -2441: -2441: if (++__beg != __end) -2441: { -2441: __c = *__beg; -2441: const bool __plus = __c == __lit[__num_base::_S_iplus]; -2441: if ((__plus || __c == __lit[__num_base::_S_iminus]) -2441: && !(__lc->_M_use_grouping -2441: && __c == __lc->_M_thousands_sep) -2441: && !(__c == __lc->_M_decimal_point)) -2441: __xtrc += __plus ? '+' : '-'; -2441: else -2441: continue; -2441: } -2441: else -2441: { -2441: __testeof = true; -2441: break; -2441: } -2441: } -2441: else -2441: break; -2441: } -2441: -2441: if (++__beg != __end) -2441: __c = *__beg; -2441: else -2441: __testeof = true; -2441: } -2441: -2441: -2441: -2441: if (__found_grouping.size()) -2441: { -2441: -2441: if (!__found_dec && !__found_sci) -2441: __found_grouping += static_cast(__sep_pos); -2441: -2441: if (!std::__verify_grouping(__lc->_M_grouping, -2441: __lc->_M_grouping_size, -2441: __found_grouping)) -2441: __err = ios_base::failbit; -2441: } -2441: -2441: return __beg; -2441: } -2441: -2441: template -2441: template -2441: __attribute ((__abi_tag__ ("cxx11"))) -2441: _InIter -2441: num_get<_CharT, _InIter>:: -2441: _M_extract_int(_InIter __beg, _InIter __end, ios_base& __io, -2441: ios_base::iostate& __err, _ValueT& __v) const -2441: { -2441: typedef char_traits<_CharT> __traits_type; -2441: using __gnu_cxx::__add_unsigned; -2441: typedef typename __add_unsigned<_ValueT>::__type __unsigned_type; -2441: typedef __numpunct_cache<_CharT> __cache_type; -2441: __use_cache<__cache_type> __uc; -2441: const locale& __loc = __io._M_getloc(); -2441: const __cache_type* __lc = __uc(__loc); -2441: const _CharT* __lit = __lc->_M_atoms_in; -2441: char_type __c = char_type(); -2441: -2441: -2441: const ios_base::fmtflags __basefield = __io.flags() -2441: & ios_base::basefield; -2441: const bool __oct = __basefield == ios_base::oct; -2441: int __base = __oct ? 8 : (__basefield == ios_base::hex ? 16 : 10); -2441: -2441: -2441: bool __testeof = __beg == __end; -2441: -2441: -2441: bool __negative = false; -2441: if (!__testeof) -2441: { -2441: __c = *__beg; -2441: __negative = __c == __lit[__num_base::_S_iminus]; -2441: if ((__negative || __c == __lit[__num_base::_S_iplus]) -2441: && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) -2441: && !(__c == __lc->_M_decimal_point)) -2441: { -2441: if (++__beg != __end) -2441: __c = *__beg; -2441: else -2441: __testeof = true; -2441: } -2441: } -2441: -2441: -2441: -2441: bool __found_zero = false; -2441: int __sep_pos = 0; -2441: while (!__testeof) -2441: { -2441: if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) -2441: || __c == __lc->_M_decimal_point) -2441: break; -2441: else if (__c == __lit[__num_base::_S_izero] -2441: && (!__found_zero || __base == 10)) -2441: { -2441: __found_zero = true; -2441: ++__sep_pos; -2441: if (__basefield == 0) -2441: __base = 8; -2441: if (__base == 8) -2441: __sep_pos = 0; -2441: } -2441: else if (__found_zero -2441: && (__c == __lit[__num_base::_S_ix] -2441: || __c == __lit[__num_base::_S_iX])) -2441: { -2441: if (__basefield == 0) -2441: __base = 16; -2441: if (__base == 16) -2441: { -2441: __found_zero = false; -2441: __sep_pos = 0; -2441: } -2441: else -2441: break; -2441: } -2441: else -2441: break; -2441: -2441: if (++__beg != __end) -2441: { -2441: __c = *__beg; -2441: if (!__found_zero) -2441: break; -2441: } -2441: else -2441: __testeof = true; -2441: } -2441: -2441: -2441: -2441: const size_t __len = (__base == 16 ? __num_base::_S_iend -2441: - __num_base::_S_izero : __base); -2441: -2441: -2441: typedef __gnu_cxx::__numeric_traits<_ValueT> __num_traits; -2441: string __found_grouping; -2441: if (__lc->_M_use_grouping) -2441: __found_grouping.reserve(32); -2441: bool __testfail = false; -2441: bool __testoverflow = false; -2441: const __unsigned_type __max = -2441: (__negative && __num_traits::__is_signed) -2441: ? -static_cast<__unsigned_type>(__num_traits::__min) -2441: : __num_traits::__max; -2441: const __unsigned_type __smax = __max / __base; -2441: __unsigned_type __result = 0; -2441: int __digit = 0; -2441: const char_type* __lit_zero = __lit + __num_base::_S_izero; -2441: -2441: if (!__lc->_M_allocated) -2441: -2441: while (!__testeof) -2441: { -2441: __digit = _M_find(__lit_zero, __len, __c); -2441: if (__digit == -1) -2441: break; -2441: -2441: if (__result > __smax) -2441: __testoverflow = true; -2441: else -2441: { -2441: __result *= __base; -2441: __testoverflow |= __result > __max - __digit; -2441: __result += __digit; -2441: ++__sep_pos; -2441: } -2441: -2441: if (++__beg != __end) -2441: __c = *__beg; -2441: else -2441: __testeof = true; -2441: } -2441: else -2441: while (!__testeof) -2441: { -2441: -2441: -2441: if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) -2441: { -2441: -2441: -2441: if (__sep_pos) -2441: { -2441: __found_grouping += static_cast(__sep_pos); -2441: __sep_pos = 0; -2441: } -2441: else -2441: { -2441: __testfail = true; -2441: break; -2441: } -2441: } -2441: else if (__c == __lc->_M_decimal_point) -2441: break; -2441: else -2441: { -2441: const char_type* __q = -2441: __traits_type::find(__lit_zero, __len, __c); -2441: if (!__q) -2441: break; -2441: -2441: __digit = __q - __lit_zero; -2441: if (__digit > 15) -2441: __digit -= 6; -2441: if (__result > __smax) -2441: __testoverflow = true; -2441: else -2441: { -2441: __result *= __base; -2441: __testoverflow |= __result > __max - __digit; -2441: __result += __digit; -2441: ++__sep_pos; -2441: } -2441: } -2441: -2441: if (++__beg != __end) -2441: __c = *__beg; -2441: else -2441: __testeof = true; -2441: } -2441: -2441: -2441: -2441: if (__found_grouping.size()) -2441: { -2441: -2441: __found_grouping += static_cast(__sep_pos); -2441: -2441: if (!std::__verify_grouping(__lc->_M_grouping, -2441: __lc->_M_grouping_size, -2441: __found_grouping)) -2441: __err = ios_base::failbit; -2441: } -2441: -2441: -2441: -2441: if ((!__sep_pos && !__found_zero && !__found_grouping.size()) -2441: || __testfail) -2441: { -2441: __v = 0; -2441: __err = ios_base::failbit; -2441: } -2441: else if (__testoverflow) -2441: { -2441: if (__negative && __num_traits::__is_signed) -2441: __v = __num_traits::__min; -2441: else -2441: __v = __num_traits::__max; -2441: __err = ios_base::failbit; -2441: } -2441: else -2441: __v = __negative ? -__result : __result; -2441: -2441: if (__testeof) -2441: __err |= ios_base::eofbit; -2441: return __beg; -2441: } -2441: -2441: -2441: -2441: template -2441: _InIter -2441: num_get<_CharT, _InIter>:: -2441: do_get(iter_type __beg, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, bool& __v) const -2441: { -2441: if (!(__io.flags() & ios_base::boolalpha)) -2441: { -2441: -2441: -2441: -2441: long __l = -1; -2441: __beg = _M_extract_int(__beg, __end, __io, __err, __l); -2441: if (__l == 0 || __l == 1) -2441: __v = bool(__l); -2441: else -2441: { -2441: -2441: -2441: __v = true; -2441: __err = ios_base::failbit; -2441: if (__beg == __end) -2441: __err |= ios_base::eofbit; -2441: } -2441: } -2441: else -2441: { -2441: -2441: typedef __numpunct_cache<_CharT> __cache_type; -2441: __use_cache<__cache_type> __uc; -2441: const locale& __loc = __io._M_getloc(); -2441: const __cache_type* __lc = __uc(__loc); -2441: -2441: bool __testf = true; -2441: bool __testt = true; -2441: bool __donef = __lc->_M_falsename_size == 0; -2441: bool __donet = __lc->_M_truename_size == 0; -2441: bool __testeof = false; -2441: size_t __n = 0; -2441: while (!__donef || !__donet) -2441: { -2441: if (__beg == __end) -2441: { -2441: __testeof = true; -2441: break; -2441: } -2441: -2441: const char_type __c = *__beg; -2441: -2441: if (!__donef) -2441: __testf = __c == __lc->_M_falsename[__n]; -2441: -2441: if (!__testf && __donet) -2441: break; -2441: -2441: if (!__donet) -2441: __testt = __c == __lc->_M_truename[__n]; -2441: -2441: if (!__testt && __donef) -2441: break; -2441: -2441: if (!__testt && !__testf) -2441: break; -2441: -2441: ++__n; -2441: ++__beg; -2441: -2441: __donef = !__testf || __n >= __lc->_M_falsename_size; -2441: __donet = !__testt || __n >= __lc->_M_truename_size; -2441: } -2441: if (__testf && __n == __lc->_M_falsename_size && __n) -2441: { -2441: __v = false; -2441: if (__testt && __n == __lc->_M_truename_size) -2441: __err = ios_base::failbit; -2441: else -2441: __err = __testeof ? ios_base::eofbit : ios_base::goodbit; -2441: } -2441: else if (__testt && __n == __lc->_M_truename_size && __n) -2441: { -2441: __v = true; -2441: __err = __testeof ? ios_base::eofbit : ios_base::goodbit; -2441: } -2441: else -2441: { -2441: -2441: -2441: __v = false; -2441: __err = ios_base::failbit; -2441: if (__testeof) -2441: __err |= ios_base::eofbit; -2441: } -2441: } -2441: return __beg; -2441: } -2441: -2441: template -2441: _InIter -2441: num_get<_CharT, _InIter>:: -2441: do_get(iter_type __beg, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, float& __v) const -2441: { -2441: string __xtrc; -2441: __xtrc.reserve(32); -2441: __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); -2441: std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); -2441: if (__beg == __end) -2441: __err |= ios_base::eofbit; -2441: return __beg; -2441: } -2441: -2441: template -2441: _InIter -2441: num_get<_CharT, _InIter>:: -2441: do_get(iter_type __beg, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, double& __v) const -2441: { -2441: string __xtrc; -2441: __xtrc.reserve(32); -2441: __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); -2441: std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); -2441: if (__beg == __end) -2441: __err |= ios_base::eofbit; -2441: return __beg; -2441: } -2441: # 735 "/usr/include/c++/8/bits/locale_facets.tcc" 3 -2441: template -2441: _InIter -2441: num_get<_CharT, _InIter>:: -2441: do_get(iter_type __beg, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, long double& __v) const -2441: { -2441: string __xtrc; -2441: __xtrc.reserve(32); -2441: __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); -2441: std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); -2441: if (__beg == __end) -2441: __err |= ios_base::eofbit; -2441: return __beg; -2441: } -2441: -2441: template -2441: _InIter -2441: num_get<_CharT, _InIter>:: -2441: do_get(iter_type __beg, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, void*& __v) const -2441: { -2441: -2441: typedef ios_base::fmtflags fmtflags; -2441: const fmtflags __fmt = __io.flags(); -2441: __io.flags((__fmt & ~ios_base::basefield) | ios_base::hex); -2441: -2441: typedef __gnu_cxx::__conditional_type<(sizeof(void*) -2441: <= sizeof(unsigned long)), -2441: unsigned long, unsigned long long>::__type _UIntPtrType; -2441: -2441: _UIntPtrType __ul; -2441: __beg = _M_extract_int(__beg, __end, __io, __err, __ul); -2441: -2441: -2441: __io.flags(__fmt); -2441: -2441: __v = reinterpret_cast(__ul); -2441: return __beg; -2441: } -2441: -2441: -2441: -2441: template -2441: void -2441: num_put<_CharT, _OutIter>:: -2441: _M_pad(_CharT __fill, streamsize __w, ios_base& __io, -2441: _CharT* __new, const _CharT* __cs, int& __len) const -2441: { -2441: -2441: -2441: __pad<_CharT, char_traits<_CharT> >::_S_pad(__io, __fill, __new, -2441: __cs, __w, __len); -2441: __len = static_cast(__w); -2441: } -2441: -2441: -2441: -2441: template -2441: int -2441: __int_to_char(_CharT* __bufend, _ValueT __v, const _CharT* __lit, -2441: ios_base::fmtflags __flags, bool __dec) -2441: { -2441: _CharT* __buf = __bufend; -2441: if (__builtin_expect(__dec, true)) -2441: { -2441: -2441: do -2441: { -2441: *--__buf = __lit[(__v % 10) + __num_base::_S_odigits]; -2441: __v /= 10; -2441: } -2441: while (__v != 0); -2441: } -2441: else if ((__flags & ios_base::basefield) == ios_base::oct) -2441: { -2441: -2441: do -2441: { -2441: *--__buf = __lit[(__v & 0x7) + __num_base::_S_odigits]; -2441: __v >>= 3; -2441: } -2441: while (__v != 0); -2441: } -2441: else -2441: { -2441: -2441: const bool __uppercase = __flags & ios_base::uppercase; -2441: const int __case_offset = __uppercase ? __num_base::_S_oudigits -2441: : __num_base::_S_odigits; -2441: do -2441: { -2441: *--__buf = __lit[(__v & 0xf) + __case_offset]; -2441: __v >>= 4; -2441: } -2441: while (__v != 0); -2441: } -2441: return __bufend - __buf; -2441: } -2441: -2441: -2441: -2441: template -2441: void -2441: num_put<_CharT, _OutIter>:: -2441: _M_group_int(const char* __grouping, size_t __grouping_size, _CharT __sep, -2441: ios_base&, _CharT* __new, _CharT* __cs, int& __len) const -2441: { -2441: _CharT* __p = std::__add_grouping(__new, __sep, __grouping, -2441: __grouping_size, __cs, __cs + __len); -2441: __len = __p - __new; -2441: } -2441: -2441: template -2441: template -2441: _OutIter -2441: num_put<_CharT, _OutIter>:: -2441: _M_insert_int(_OutIter __s, ios_base& __io, _CharT __fill, -2441: _ValueT __v) const -2441: { -2441: using __gnu_cxx::__add_unsigned; -2441: typedef typename __add_unsigned<_ValueT>::__type __unsigned_type; -2441: typedef __numpunct_cache<_CharT> __cache_type; -2441: __use_cache<__cache_type> __uc; -2441: const locale& __loc = __io._M_getloc(); -2441: const __cache_type* __lc = __uc(__loc); -2441: const _CharT* __lit = __lc->_M_atoms_out; -2441: const ios_base::fmtflags __flags = __io.flags(); -2441: -2441: -2441: const int __ilen = 5 * sizeof(_ValueT); -2441: _CharT* __cs = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) -2441: * __ilen)); -2441: -2441: -2441: -2441: const ios_base::fmtflags __basefield = __flags & ios_base::basefield; -2441: const bool __dec = (__basefield != ios_base::oct -2441: && __basefield != ios_base::hex); -2441: const __unsigned_type __u = ((__v > 0 || !__dec) -2441: ? __unsigned_type(__v) -2441: : -__unsigned_type(__v)); -2441: int __len = __int_to_char(__cs + __ilen, __u, __lit, __flags, __dec); -2441: __cs += __ilen - __len; -2441: -2441: -2441: if (__lc->_M_use_grouping) -2441: { -2441: -2441: -2441: _CharT* __cs2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) -2441: * (__len + 1) -2441: * 2)); -2441: _M_group_int(__lc->_M_grouping, __lc->_M_grouping_size, -2441: __lc->_M_thousands_sep, __io, __cs2 + 2, __cs, __len); -2441: __cs = __cs2 + 2; -2441: } -2441: -2441: -2441: if (__builtin_expect(__dec, true)) -2441: { -2441: -2441: if (__v >= 0) -2441: { -2441: if (bool(__flags & ios_base::showpos) -2441: && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed) -2441: *--__cs = __lit[__num_base::_S_oplus], ++__len; -2441: } -2441: else -2441: *--__cs = __lit[__num_base::_S_ominus], ++__len; -2441: } -2441: else if (bool(__flags & ios_base::showbase) && __v) -2441: { -2441: if (__basefield == ios_base::oct) -2441: *--__cs = __lit[__num_base::_S_odigits], ++__len; -2441: else -2441: { -2441: -2441: const bool __uppercase = __flags & ios_base::uppercase; -2441: *--__cs = __lit[__num_base::_S_ox + __uppercase]; -2441: -2441: *--__cs = __lit[__num_base::_S_odigits]; -2441: __len += 2; -2441: } -2441: } -2441: -2441: -2441: const streamsize __w = __io.width(); -2441: if (__w > static_cast(__len)) -2441: { -2441: _CharT* __cs3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) -2441: * __w)); -2441: _M_pad(__fill, __w, __io, __cs3, __cs, __len); -2441: __cs = __cs3; -2441: } -2441: __io.width(0); -2441: -2441: -2441: -2441: return std::__write(__s, __cs, __len); -2441: } -2441: -2441: template -2441: void -2441: num_put<_CharT, _OutIter>:: -2441: _M_group_float(const char* __grouping, size_t __grouping_size, -2441: _CharT __sep, const _CharT* __p, _CharT* __new, -2441: _CharT* __cs, int& __len) const -2441: { -2441: -2441: -2441: -2441: const int __declen = __p ? __p - __cs : __len; -2441: _CharT* __p2 = std::__add_grouping(__new, __sep, __grouping, -2441: __grouping_size, -2441: __cs, __cs + __declen); -2441: -2441: -2441: int __newlen = __p2 - __new; -2441: if (__p) -2441: { -2441: char_traits<_CharT>::copy(__p2, __p, __len - __declen); -2441: __newlen += __len - __declen; -2441: } -2441: __len = __newlen; -2441: } -2441: # 971 "/usr/include/c++/8/bits/locale_facets.tcc" 3 -2441: template -2441: template -2441: _OutIter -2441: num_put<_CharT, _OutIter>:: -2441: _M_insert_float(_OutIter __s, ios_base& __io, _CharT __fill, char __mod, -2441: _ValueT __v) const -2441: { -2441: typedef __numpunct_cache<_CharT> __cache_type; -2441: __use_cache<__cache_type> __uc; -2441: const locale& __loc = __io._M_getloc(); -2441: const __cache_type* __lc = __uc(__loc); -2441: -2441: -2441: const streamsize __prec = __io.precision() < 0 ? 6 : __io.precision(); -2441: -2441: const int __max_digits = -2441: __gnu_cxx::__numeric_traits<_ValueT>::__digits10; -2441: -2441: -2441: int __len; -2441: -2441: char __fbuf[16]; -2441: __num_base::_S_format_float(__io, __fbuf, __mod); -2441: -2441: -2441: -2441: const bool __use_prec = -2441: (__io.flags() & ios_base::floatfield) != ios_base::floatfield; -2441: -2441: -2441: -2441: int __cs_size = __max_digits * 3; -2441: char* __cs = static_cast(__builtin_alloca(__cs_size)); -2441: if (__use_prec) -2441: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, -2441: __fbuf, __prec, __v); -2441: else -2441: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, -2441: __fbuf, __v); -2441: -2441: -2441: if (__len >= __cs_size) -2441: { -2441: __cs_size = __len + 1; -2441: __cs = static_cast(__builtin_alloca(__cs_size)); -2441: if (__use_prec) -2441: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, -2441: __fbuf, __prec, __v); -2441: else -2441: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, -2441: __fbuf, __v); -2441: } -2441: # 1044 "/usr/include/c++/8/bits/locale_facets.tcc" 3 -2441: const ctype<_CharT>& __ctype = use_facet >(__loc); -2441: -2441: _CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) -2441: * __len)); -2441: __ctype.widen(__cs, __cs + __len, __ws); -2441: -2441: -2441: _CharT* __wp = 0; -2441: const char* __p = char_traits::find(__cs, __len, '.'); -2441: if (__p) -2441: { -2441: __wp = __ws + (__p - __cs); -2441: *__wp = __lc->_M_decimal_point; -2441: } -2441: -2441: -2441: -2441: -2441: if (__lc->_M_use_grouping -2441: && (__wp || __len < 3 || (__cs[1] <= '9' && __cs[2] <= '9' -2441: && __cs[1] >= '0' && __cs[2] >= '0'))) -2441: { -2441: -2441: -2441: _CharT* __ws2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) -2441: * __len * 2)); -2441: -2441: streamsize __off = 0; -2441: if (__cs[0] == '-' || __cs[0] == '+') -2441: { -2441: __off = 1; -2441: __ws2[0] = __ws[0]; -2441: __len -= 1; -2441: } -2441: -2441: _M_group_float(__lc->_M_grouping, __lc->_M_grouping_size, -2441: __lc->_M_thousands_sep, __wp, __ws2 + __off, -2441: __ws + __off, __len); -2441: __len += __off; -2441: -2441: __ws = __ws2; -2441: } -2441: -2441: -2441: const streamsize __w = __io.width(); -2441: if (__w > static_cast(__len)) -2441: { -2441: _CharT* __ws3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) -2441: * __w)); -2441: _M_pad(__fill, __w, __io, __ws3, __ws, __len); -2441: __ws = __ws3; -2441: } -2441: __io.width(0); -2441: -2441: -2441: -2441: return std::__write(__s, __ws, __len); -2441: } -2441: -2441: template -2441: _OutIter -2441: num_put<_CharT, _OutIter>:: -2441: do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const -2441: { -2441: const ios_base::fmtflags __flags = __io.flags(); -2441: if ((__flags & ios_base::boolalpha) == 0) -2441: { -2441: const long __l = __v; -2441: __s = _M_insert_int(__s, __io, __fill, __l); -2441: } -2441: else -2441: { -2441: typedef __numpunct_cache<_CharT> __cache_type; -2441: __use_cache<__cache_type> __uc; -2441: const locale& __loc = __io._M_getloc(); -2441: const __cache_type* __lc = __uc(__loc); -2441: -2441: const _CharT* __name = __v ? __lc->_M_truename -2441: : __lc->_M_falsename; -2441: int __len = __v ? __lc->_M_truename_size -2441: : __lc->_M_falsename_size; -2441: -2441: const streamsize __w = __io.width(); -2441: if (__w > static_cast(__len)) -2441: { -2441: const streamsize __plen = __w - __len; -2441: _CharT* __ps -2441: = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) -2441: * __plen)); -2441: -2441: char_traits<_CharT>::assign(__ps, __plen, __fill); -2441: __io.width(0); -2441: -2441: if ((__flags & ios_base::adjustfield) == ios_base::left) -2441: { -2441: __s = std::__write(__s, __name, __len); -2441: __s = std::__write(__s, __ps, __plen); -2441: } -2441: else -2441: { -2441: __s = std::__write(__s, __ps, __plen); -2441: __s = std::__write(__s, __name, __len); -2441: } -2441: return __s; -2441: } -2441: __io.width(0); -2441: __s = std::__write(__s, __name, __len); -2441: } -2441: return __s; -2441: } -2441: -2441: template -2441: _OutIter -2441: num_put<_CharT, _OutIter>:: -2441: do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const -2441: { return _M_insert_float(__s, __io, __fill, char(), __v); } -2441: # 1169 "/usr/include/c++/8/bits/locale_facets.tcc" 3 -2441: template -2441: _OutIter -2441: num_put<_CharT, _OutIter>:: -2441: do_put(iter_type __s, ios_base& __io, char_type __fill, -2441: long double __v) const -2441: { return _M_insert_float(__s, __io, __fill, 'L', __v); } -2441: -2441: template -2441: _OutIter -2441: num_put<_CharT, _OutIter>:: -2441: do_put(iter_type __s, ios_base& __io, char_type __fill, -2441: const void* __v) const -2441: { -2441: const ios_base::fmtflags __flags = __io.flags(); -2441: const ios_base::fmtflags __fmt = ~(ios_base::basefield -2441: | ios_base::uppercase); -2441: __io.flags((__flags & __fmt) | (ios_base::hex | ios_base::showbase)); -2441: -2441: typedef __gnu_cxx::__conditional_type<(sizeof(const void*) -2441: <= sizeof(unsigned long)), -2441: unsigned long, unsigned long long>::__type _UIntPtrType; -2441: -2441: __s = _M_insert_int(__s, __io, __fill, -2441: reinterpret_cast<_UIntPtrType>(__v)); -2441: __io.flags(__flags); -2441: return __s; -2441: } -2441: -2441: -2441: # 1206 "/usr/include/c++/8/bits/locale_facets.tcc" 3 -2441: template -2441: void -2441: __pad<_CharT, _Traits>::_S_pad(ios_base& __io, _CharT __fill, -2441: _CharT* __news, const _CharT* __olds, -2441: streamsize __newlen, streamsize __oldlen) -2441: { -2441: const size_t __plen = static_cast(__newlen - __oldlen); -2441: const ios_base::fmtflags __adjust = __io.flags() & ios_base::adjustfield; -2441: -2441: -2441: if (__adjust == ios_base::left) -2441: { -2441: _Traits::copy(__news, __olds, __oldlen); -2441: _Traits::assign(__news + __oldlen, __plen, __fill); -2441: return; -2441: } -2441: -2441: size_t __mod = 0; -2441: if (__adjust == ios_base::internal) -2441: { -2441: -2441: -2441: -2441: const locale& __loc = __io._M_getloc(); -2441: const ctype<_CharT>& __ctype = use_facet >(__loc); -2441: -2441: if (__ctype.widen('-') == __olds[0] -2441: || __ctype.widen('+') == __olds[0]) -2441: { -2441: __news[0] = __olds[0]; -2441: __mod = 1; -2441: ++__news; -2441: } -2441: else if (__ctype.widen('0') == __olds[0] -2441: && __oldlen > 1 -2441: && (__ctype.widen('x') == __olds[1] -2441: || __ctype.widen('X') == __olds[1])) -2441: { -2441: __news[0] = __olds[0]; -2441: __news[1] = __olds[1]; -2441: __mod = 2; -2441: __news += 2; -2441: } -2441: -2441: } -2441: _Traits::assign(__news, __plen, __fill); -2441: _Traits::copy(__news + __plen, __olds + __mod, __oldlen - __mod); -2441: } -2441: -2441: template -2441: _CharT* -2441: __add_grouping(_CharT* __s, _CharT __sep, -2441: const char* __gbeg, size_t __gsize, -2441: const _CharT* __first, const _CharT* __last) -2441: { -2441: size_t __idx = 0; -2441: size_t __ctr = 0; -2441: -2441: while (__last - __first > __gbeg[__idx] -2441: && static_cast(__gbeg[__idx]) > 0 -2441: && __gbeg[__idx] != __gnu_cxx::__numeric_traits::__max) -2441: { -2441: __last -= __gbeg[__idx]; -2441: __idx < __gsize - 1 ? ++__idx : ++__ctr; -2441: } -2441: -2441: while (__first != __last) -2441: *__s++ = *__first++; -2441: -2441: while (__ctr--) -2441: { -2441: *__s++ = __sep; -2441: for (char __i = __gbeg[__idx]; __i > 0; --__i) -2441: *__s++ = *__first++; -2441: } -2441: -2441: while (__idx--) -2441: { -2441: *__s++ = __sep; -2441: for (char __i = __gbeg[__idx]; __i > 0; --__i) -2441: *__s++ = *__first++; -2441: } -2441: -2441: return __s; -2441: } -2441: -2441: -2441: -2441: -2441: extern template class __cxx11:: numpunct; -2441: extern template class __cxx11:: numpunct_byname; -2441: extern template class num_get; -2441: extern template class num_put; -2441: extern template class ctype_byname; -2441: -2441: extern template -2441: const ctype& -2441: use_facet >(const locale&); -2441: -2441: extern template -2441: const numpunct& -2441: use_facet >(const locale&); -2441: -2441: extern template -2441: const num_put& -2441: use_facet >(const locale&); -2441: -2441: extern template -2441: const num_get& -2441: use_facet >(const locale&); -2441: -2441: extern template -2441: bool -2441: has_facet >(const locale&); -2441: -2441: extern template -2441: bool -2441: has_facet >(const locale&); -2441: -2441: extern template -2441: bool -2441: has_facet >(const locale&); -2441: -2441: extern template -2441: bool -2441: has_facet >(const locale&); -2441: -2441: -2441: extern template class __cxx11:: numpunct; -2441: extern template class __cxx11:: numpunct_byname; -2441: extern template class num_get; -2441: extern template class num_put; -2441: extern template class ctype_byname; -2441: -2441: extern template -2441: const ctype& -2441: use_facet >(const locale&); -2441: -2441: extern template -2441: const numpunct& -2441: use_facet >(const locale&); -2441: -2441: extern template -2441: const num_put& -2441: use_facet >(const locale&); -2441: -2441: extern template -2441: const num_get& -2441: use_facet >(const locale&); -2441: -2441: extern template -2441: bool -2441: has_facet >(const locale&); -2441: -2441: extern template -2441: bool -2441: has_facet >(const locale&); -2441: -2441: extern template -2441: bool -2441: has_facet >(const locale&); -2441: -2441: extern template -2441: bool -2441: has_facet >(const locale&); -2441: -2441: -2441: -2441: -2441: } -2441: # 2656 "/usr/include/c++/8/bits/locale_facets.h" 2 3 -2441: # 38 "/usr/include/c++/8/bits/basic_ios.h" 2 3 -2441: -2441: -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: template -2441: inline const _Facet& -2441: __check_facet(const _Facet* __f) -2441: { -2441: if (!__f) -2441: __throw_bad_cast(); -2441: return *__f; -2441: } -2441: # 66 "/usr/include/c++/8/bits/basic_ios.h" 3 -2441: template -2441: class basic_ios : public ios_base -2441: { -2441: public: -2441: -2441: -2441: -2441: -2441: -2441: -2441: typedef _CharT char_type; -2441: typedef typename _Traits::int_type int_type; -2441: typedef typename _Traits::pos_type pos_type; -2441: typedef typename _Traits::off_type off_type; -2441: typedef _Traits traits_type; -2441: -2441: -2441: -2441: -2441: -2441: -2441: typedef ctype<_CharT> __ctype_type; -2441: typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> > -2441: __num_put_type; -2441: typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> > -2441: __num_get_type; -2441: -2441: -2441: -2441: protected: -2441: basic_ostream<_CharT, _Traits>* _M_tie; -2441: mutable char_type _M_fill; -2441: mutable bool _M_fill_init; -2441: basic_streambuf<_CharT, _Traits>* _M_streambuf; -2441: -2441: -2441: const __ctype_type* _M_ctype; -2441: -2441: const __num_put_type* _M_num_put; -2441: -2441: const __num_get_type* _M_num_get; -2441: -2441: public: -2441: # 117 "/usr/include/c++/8/bits/basic_ios.h" 3 -2441: explicit operator bool() const -2441: { return !this->fail(); } -2441: -2441: -2441: -2441: -2441: -2441: bool -2441: operator!() const -2441: { return this->fail(); } -2441: # 136 "/usr/include/c++/8/bits/basic_ios.h" 3 -2441: iostate -2441: rdstate() const -2441: { return _M_streambuf_state; } -2441: # 147 "/usr/include/c++/8/bits/basic_ios.h" 3 -2441: void -2441: clear(iostate __state = goodbit); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void -2441: setstate(iostate __state) -2441: { this->clear(this->rdstate() | __state); } -2441: -2441: -2441: -2441: -2441: void -2441: _M_setstate(iostate __state) -2441: { -2441: -2441: -2441: _M_streambuf_state |= __state; -2441: if (this->exceptions() & __state) -2441: throw; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool -2441: good() const -2441: { return this->rdstate() == 0; } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool -2441: eof() const -2441: { return (this->rdstate() & eofbit) != 0; } -2441: # 200 "/usr/include/c++/8/bits/basic_ios.h" 3 -2441: bool -2441: fail() const -2441: { return (this->rdstate() & (badbit | failbit)) != 0; } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool -2441: bad() const -2441: { return (this->rdstate() & badbit) != 0; } -2441: # 221 "/usr/include/c++/8/bits/basic_ios.h" 3 -2441: iostate -2441: exceptions() const -2441: { return _M_exception; } -2441: # 256 "/usr/include/c++/8/bits/basic_ios.h" 3 -2441: void -2441: exceptions(iostate __except) -2441: { -2441: _M_exception = __except; -2441: this->clear(_M_streambuf_state); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: explicit -2441: basic_ios(basic_streambuf<_CharT, _Traits>* __sb) -2441: : ios_base(), _M_tie(0), _M_fill(), _M_fill_init(false), _M_streambuf(0), -2441: _M_ctype(0), _M_num_put(0), _M_num_get(0) -2441: { this->init(__sb); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual -2441: ~basic_ios() { } -2441: # 294 "/usr/include/c++/8/bits/basic_ios.h" 3 -2441: basic_ostream<_CharT, _Traits>* -2441: tie() const -2441: { return _M_tie; } -2441: # 306 "/usr/include/c++/8/bits/basic_ios.h" 3 -2441: basic_ostream<_CharT, _Traits>* -2441: tie(basic_ostream<_CharT, _Traits>* __tiestr) -2441: { -2441: basic_ostream<_CharT, _Traits>* __old = _M_tie; -2441: _M_tie = __tiestr; -2441: return __old; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: basic_streambuf<_CharT, _Traits>* -2441: rdbuf() const -2441: { return _M_streambuf; } -2441: # 346 "/usr/include/c++/8/bits/basic_ios.h" 3 -2441: basic_streambuf<_CharT, _Traits>* -2441: rdbuf(basic_streambuf<_CharT, _Traits>* __sb); -2441: # 360 "/usr/include/c++/8/bits/basic_ios.h" 3 -2441: basic_ios& -2441: copyfmt(const basic_ios& __rhs); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: char_type -2441: fill() const -2441: { -2441: if (!_M_fill_init) -2441: { -2441: _M_fill = this->widen(' '); -2441: _M_fill_init = true; -2441: } -2441: return _M_fill; -2441: } -2441: # 389 "/usr/include/c++/8/bits/basic_ios.h" 3 -2441: char_type -2441: fill(char_type __ch) -2441: { -2441: char_type __old = this->fill(); -2441: _M_fill = __ch; -2441: return __old; -2441: } -2441: # 409 "/usr/include/c++/8/bits/basic_ios.h" 3 -2441: locale -2441: imbue(const locale& __loc); -2441: # 429 "/usr/include/c++/8/bits/basic_ios.h" 3 -2441: char -2441: narrow(char_type __c, char __dfault) const -2441: { return __check_facet(_M_ctype).narrow(__c, __dfault); } -2441: # 448 "/usr/include/c++/8/bits/basic_ios.h" 3 -2441: char_type -2441: widen(char __c) const -2441: { return __check_facet(_M_ctype).widen(__c); } -2441: -2441: protected: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: basic_ios() -2441: : ios_base(), _M_tie(0), _M_fill(char_type()), _M_fill_init(false), -2441: _M_streambuf(0), _M_ctype(0), _M_num_put(0), _M_num_get(0) -2441: { } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void -2441: init(basic_streambuf<_CharT, _Traits>* __sb); -2441: -2441: -2441: basic_ios(const basic_ios&) = delete; -2441: basic_ios& operator=(const basic_ios&) = delete; -2441: -2441: void -2441: move(basic_ios& __rhs) -2441: { -2441: ios_base::_M_move(__rhs); -2441: _M_cache_locale(_M_ios_locale); -2441: this->tie(__rhs.tie(nullptr)); -2441: _M_fill = __rhs._M_fill; -2441: _M_fill_init = __rhs._M_fill_init; -2441: _M_streambuf = nullptr; -2441: } -2441: -2441: void -2441: move(basic_ios&& __rhs) -2441: { this->move(__rhs); } -2441: -2441: void -2441: swap(basic_ios& __rhs) noexcept -2441: { -2441: ios_base::_M_swap(__rhs); -2441: _M_cache_locale(_M_ios_locale); -2441: __rhs._M_cache_locale(__rhs._M_ios_locale); -2441: std::swap(_M_tie, __rhs._M_tie); -2441: std::swap(_M_fill, __rhs._M_fill); -2441: std::swap(_M_fill_init, __rhs._M_fill_init); -2441: } -2441: -2441: void -2441: set_rdbuf(basic_streambuf<_CharT, _Traits>* __sb) -2441: { _M_streambuf = __sb; } -2441: -2441: -2441: void -2441: _M_cache_locale(const locale& __loc); -2441: }; -2441: -2441: -2441: } -2441: -2441: # 1 "/usr/include/c++/8/bits/basic_ios.tcc" 1 3 -2441: # 33 "/usr/include/c++/8/bits/basic_ios.tcc" 3 -2441: -2441: # 34 "/usr/include/c++/8/bits/basic_ios.tcc" 3 -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: template -2441: void -2441: basic_ios<_CharT, _Traits>::clear(iostate __state) -2441: { -2441: if (this->rdbuf()) -2441: _M_streambuf_state = __state; -2441: else -2441: _M_streambuf_state = __state | badbit; -2441: if (this->exceptions() & this->rdstate()) -2441: __throw_ios_failure(("basic_ios::clear")); -2441: } -2441: -2441: template -2441: basic_streambuf<_CharT, _Traits>* -2441: basic_ios<_CharT, _Traits>::rdbuf(basic_streambuf<_CharT, _Traits>* __sb) -2441: { -2441: basic_streambuf<_CharT, _Traits>* __old = _M_streambuf; -2441: _M_streambuf = __sb; -2441: this->clear(); -2441: return __old; -2441: } -2441: -2441: template -2441: basic_ios<_CharT, _Traits>& -2441: basic_ios<_CharT, _Traits>::copyfmt(const basic_ios& __rhs) -2441: { -2441: -2441: -2441: if (this != &__rhs) -2441: { -2441: -2441: -2441: -2441: -2441: _Words* __words = (__rhs._M_word_size <= _S_local_word_size) ? -2441: _M_local_word : new _Words[__rhs._M_word_size]; -2441: -2441: -2441: _Callback_list* __cb = __rhs._M_callbacks; -2441: if (__cb) -2441: __cb->_M_add_reference(); -2441: _M_call_callbacks(erase_event); -2441: if (_M_word != _M_local_word) -2441: { -2441: delete [] _M_word; -2441: _M_word = 0; -2441: } -2441: _M_dispose_callbacks(); -2441: -2441: -2441: _M_callbacks = __cb; -2441: for (int __i = 0; __i < __rhs._M_word_size; ++__i) -2441: __words[__i] = __rhs._M_word[__i]; -2441: _M_word = __words; -2441: _M_word_size = __rhs._M_word_size; -2441: -2441: this->flags(__rhs.flags()); -2441: this->width(__rhs.width()); -2441: this->precision(__rhs.precision()); -2441: this->tie(__rhs.tie()); -2441: this->fill(__rhs.fill()); -2441: _M_ios_locale = __rhs.getloc(); -2441: _M_cache_locale(_M_ios_locale); -2441: -2441: _M_call_callbacks(copyfmt_event); -2441: -2441: -2441: this->exceptions(__rhs.exceptions()); -2441: } -2441: return *this; -2441: } -2441: -2441: -2441: template -2441: locale -2441: basic_ios<_CharT, _Traits>::imbue(const locale& __loc) -2441: { -2441: locale __old(this->getloc()); -2441: ios_base::imbue(__loc); -2441: _M_cache_locale(__loc); -2441: if (this->rdbuf() != 0) -2441: this->rdbuf()->pubimbue(__loc); -2441: return __old; -2441: } -2441: -2441: template -2441: void -2441: basic_ios<_CharT, _Traits>::init(basic_streambuf<_CharT, _Traits>* __sb) -2441: { -2441: -2441: ios_base::_M_init(); -2441: -2441: -2441: _M_cache_locale(_M_ios_locale); -2441: # 146 "/usr/include/c++/8/bits/basic_ios.tcc" 3 -2441: _M_fill = _CharT(); -2441: _M_fill_init = false; -2441: -2441: _M_tie = 0; -2441: _M_exception = goodbit; -2441: _M_streambuf = __sb; -2441: _M_streambuf_state = __sb ? goodbit : badbit; -2441: } -2441: -2441: template -2441: void -2441: basic_ios<_CharT, _Traits>::_M_cache_locale(const locale& __loc) -2441: { -2441: if (__builtin_expect(has_facet<__ctype_type>(__loc), true)) -2441: _M_ctype = std::__addressof(use_facet<__ctype_type>(__loc)); -2441: else -2441: _M_ctype = 0; -2441: -2441: if (__builtin_expect(has_facet<__num_put_type>(__loc), true)) -2441: _M_num_put = std::__addressof(use_facet<__num_put_type>(__loc)); -2441: else -2441: _M_num_put = 0; -2441: -2441: if (__builtin_expect(has_facet<__num_get_type>(__loc), true)) -2441: _M_num_get = std::__addressof(use_facet<__num_get_type>(__loc)); -2441: else -2441: _M_num_get = 0; -2441: } -2441: -2441: -2441: -2441: -2441: extern template class basic_ios; -2441: -2441: -2441: extern template class basic_ios; -2441: -2441: -2441: -2441: -2441: } -2441: # 517 "/usr/include/c++/8/bits/basic_ios.h" 2 3 -2441: # 45 "/usr/include/c++/8/ios" 2 3 -2441: # 39 "/usr/include/c++/8/istream" 2 3 -2441: # 1 "/usr/include/c++/8/ostream" 1 3 -2441: # 36 "/usr/include/c++/8/ostream" 3 -2441: -2441: # 37 "/usr/include/c++/8/ostream" 3 -2441: -2441: -2441: -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: # 57 "/usr/include/c++/8/ostream" 3 -2441: template -2441: class basic_ostream : virtual public basic_ios<_CharT, _Traits> -2441: { -2441: public: -2441: -2441: typedef _CharT char_type; -2441: typedef typename _Traits::int_type int_type; -2441: typedef typename _Traits::pos_type pos_type; -2441: typedef typename _Traits::off_type off_type; -2441: typedef _Traits traits_type; -2441: -2441: -2441: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; -2441: typedef basic_ios<_CharT, _Traits> __ios_type; -2441: typedef basic_ostream<_CharT, _Traits> __ostream_type; -2441: typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> > -2441: __num_put_type; -2441: typedef ctype<_CharT> __ctype_type; -2441: # 83 "/usr/include/c++/8/ostream" 3 -2441: explicit -2441: basic_ostream(__streambuf_type* __sb) -2441: { this->init(__sb); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual -2441: ~basic_ostream() { } -2441: -2441: -2441: class sentry; -2441: friend class sentry; -2441: # 107 "/usr/include/c++/8/ostream" 3 -2441: __ostream_type& -2441: operator<<(__ostream_type& (*__pf)(__ostream_type&)) -2441: { -2441: -2441: -2441: -2441: return __pf(*this); -2441: } -2441: -2441: __ostream_type& -2441: operator<<(__ios_type& (*__pf)(__ios_type&)) -2441: { -2441: -2441: -2441: -2441: __pf(*this); -2441: return *this; -2441: } -2441: -2441: __ostream_type& -2441: operator<<(ios_base& (*__pf) (ios_base&)) -2441: { -2441: -2441: -2441: -2441: __pf(*this); -2441: return *this; -2441: } -2441: # 165 "/usr/include/c++/8/ostream" 3 -2441: __ostream_type& -2441: operator<<(long __n) -2441: { return _M_insert(__n); } -2441: -2441: __ostream_type& -2441: operator<<(unsigned long __n) -2441: { return _M_insert(__n); } -2441: -2441: __ostream_type& -2441: operator<<(bool __n) -2441: { return _M_insert(__n); } -2441: -2441: __ostream_type& -2441: operator<<(short __n); -2441: -2441: __ostream_type& -2441: operator<<(unsigned short __n) -2441: { -2441: -2441: -2441: return _M_insert(static_cast(__n)); -2441: } -2441: -2441: __ostream_type& -2441: operator<<(int __n); -2441: -2441: __ostream_type& -2441: operator<<(unsigned int __n) -2441: { -2441: -2441: -2441: return _M_insert(static_cast(__n)); -2441: } -2441: -2441: -2441: __ostream_type& -2441: operator<<(long long __n) -2441: { return _M_insert(__n); } -2441: -2441: __ostream_type& -2441: operator<<(unsigned long long __n) -2441: { return _M_insert(__n); } -2441: # 219 "/usr/include/c++/8/ostream" 3 -2441: __ostream_type& -2441: operator<<(double __f) -2441: { return _M_insert(__f); } -2441: -2441: __ostream_type& -2441: operator<<(float __f) -2441: { -2441: -2441: -2441: return _M_insert(static_cast(__f)); -2441: } -2441: -2441: __ostream_type& -2441: operator<<(long double __f) -2441: { return _M_insert(__f); } -2441: # 244 "/usr/include/c++/8/ostream" 3 -2441: __ostream_type& -2441: operator<<(const void* __p) -2441: { return _M_insert(__p); } -2441: # 269 "/usr/include/c++/8/ostream" 3 -2441: __ostream_type& -2441: operator<<(__streambuf_type* __sb); -2441: # 302 "/usr/include/c++/8/ostream" 3 -2441: __ostream_type& -2441: put(char_type __c); -2441: -2441: -2441: -2441: -2441: -2441: -2441: void -2441: _M_write(const char_type* __s, streamsize __n) -2441: { -2441: const streamsize __put = this->rdbuf()->sputn(__s, __n); -2441: if (__put != __n) -2441: this->setstate(ios_base::badbit); -2441: } -2441: # 334 "/usr/include/c++/8/ostream" 3 -2441: __ostream_type& -2441: write(const char_type* __s, streamsize __n); -2441: # 347 "/usr/include/c++/8/ostream" 3 -2441: __ostream_type& -2441: flush(); -2441: # 357 "/usr/include/c++/8/ostream" 3 -2441: pos_type -2441: tellp(); -2441: # 368 "/usr/include/c++/8/ostream" 3 -2441: __ostream_type& -2441: seekp(pos_type); -2441: # 380 "/usr/include/c++/8/ostream" 3 -2441: __ostream_type& -2441: seekp(off_type, ios_base::seekdir); -2441: -2441: protected: -2441: basic_ostream() -2441: { this->init(0); } -2441: -2441: -2441: -2441: basic_ostream(basic_iostream<_CharT, _Traits>&) { } -2441: -2441: basic_ostream(const basic_ostream&) = delete; -2441: -2441: basic_ostream(basic_ostream&& __rhs) -2441: : __ios_type() -2441: { __ios_type::move(__rhs); } -2441: -2441: -2441: -2441: basic_ostream& operator=(const basic_ostream&) = delete; -2441: -2441: basic_ostream& -2441: operator=(basic_ostream&& __rhs) -2441: { -2441: swap(__rhs); -2441: return *this; -2441: } -2441: -2441: void -2441: swap(basic_ostream& __rhs) -2441: { __ios_type::swap(__rhs); } -2441: -2441: -2441: template -2441: __ostream_type& -2441: _M_insert(_ValueT __v); -2441: }; -2441: # 425 "/usr/include/c++/8/ostream" 3 -2441: template -2441: class basic_ostream<_CharT, _Traits>::sentry -2441: { -2441: -2441: bool _M_ok; -2441: basic_ostream<_CharT, _Traits>& _M_os; -2441: -2441: public: -2441: # 444 "/usr/include/c++/8/ostream" 3 -2441: explicit -2441: sentry(basic_ostream<_CharT, _Traits>& __os); -2441: # 454 "/usr/include/c++/8/ostream" 3 -2441: ~sentry() -2441: { -2441: -2441: if (bool(_M_os.flags() & ios_base::unitbuf) && !uncaught_exception()) -2441: { -2441: -2441: if (_M_os.rdbuf() && _M_os.rdbuf()->pubsync() == -1) -2441: _M_os.setstate(ios_base::badbit); -2441: } -2441: } -2441: # 473 "/usr/include/c++/8/ostream" 3 -2441: explicit -2441: -2441: operator bool() const -2441: { return _M_ok; } -2441: }; -2441: # 495 "/usr/include/c++/8/ostream" 3 -2441: template -2441: inline basic_ostream<_CharT, _Traits>& -2441: operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c) -2441: { return __ostream_insert(__out, &__c, 1); } -2441: -2441: template -2441: inline basic_ostream<_CharT, _Traits>& -2441: operator<<(basic_ostream<_CharT, _Traits>& __out, char __c) -2441: { return (__out << __out.widen(__c)); } -2441: -2441: -2441: template -2441: inline basic_ostream& -2441: operator<<(basic_ostream& __out, char __c) -2441: { return __ostream_insert(__out, &__c, 1); } -2441: -2441: -2441: template -2441: inline basic_ostream& -2441: operator<<(basic_ostream& __out, signed char __c) -2441: { return (__out << static_cast(__c)); } -2441: -2441: template -2441: inline basic_ostream& -2441: operator<<(basic_ostream& __out, unsigned char __c) -2441: { return (__out << static_cast(__c)); } -2441: # 537 "/usr/include/c++/8/ostream" 3 -2441: template -2441: inline basic_ostream<_CharT, _Traits>& -2441: operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s) -2441: { -2441: if (!__s) -2441: __out.setstate(ios_base::badbit); -2441: else -2441: __ostream_insert(__out, __s, -2441: static_cast(_Traits::length(__s))); -2441: return __out; -2441: } -2441: -2441: template -2441: basic_ostream<_CharT, _Traits> & -2441: operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s); -2441: -2441: -2441: template -2441: inline basic_ostream& -2441: operator<<(basic_ostream& __out, const char* __s) -2441: { -2441: if (!__s) -2441: __out.setstate(ios_base::badbit); -2441: else -2441: __ostream_insert(__out, __s, -2441: static_cast(_Traits::length(__s))); -2441: return __out; -2441: } -2441: -2441: -2441: template -2441: inline basic_ostream& -2441: operator<<(basic_ostream& __out, const signed char* __s) -2441: { return (__out << reinterpret_cast(__s)); } -2441: -2441: template -2441: inline basic_ostream & -2441: operator<<(basic_ostream& __out, const unsigned char* __s) -2441: { return (__out << reinterpret_cast(__s)); } -2441: # 588 "/usr/include/c++/8/ostream" 3 -2441: template -2441: inline basic_ostream<_CharT, _Traits>& -2441: endl(basic_ostream<_CharT, _Traits>& __os) -2441: { return flush(__os.put(__os.widen('\n'))); } -2441: # 600 "/usr/include/c++/8/ostream" 3 -2441: template -2441: inline basic_ostream<_CharT, _Traits>& -2441: ends(basic_ostream<_CharT, _Traits>& __os) -2441: { return __os.put(_CharT()); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline basic_ostream<_CharT, _Traits>& -2441: flush(basic_ostream<_CharT, _Traits>& __os) -2441: { return __os.flush(); } -2441: -2441: -2441: template -2441: basic_ostream<_Ch, _Up>& -2441: __is_convertible_to_basic_ostream_test(basic_ostream<_Ch, _Up>*); -2441: -2441: template -2441: struct __is_convertible_to_basic_ostream_impl -2441: { -2441: using __ostream_type = void; -2441: }; -2441: -2441: template -2441: using __do_is_convertible_to_basic_ostream_impl = -2441: decltype(__is_convertible_to_basic_ostream_test -2441: (declval::type*>())); -2441: -2441: template -2441: struct __is_convertible_to_basic_ostream_impl -2441: <_Tp, -2441: __void_t<__do_is_convertible_to_basic_ostream_impl<_Tp>>> -2441: { -2441: using __ostream_type = -2441: __do_is_convertible_to_basic_ostream_impl<_Tp>; -2441: }; -2441: -2441: template -2441: struct __is_convertible_to_basic_ostream -2441: : __is_convertible_to_basic_ostream_impl<_Tp> -2441: { -2441: public: -2441: using type = __not_::__ostream_type>>; -2441: constexpr static bool value = type::value; -2441: }; -2441: -2441: template -2441: struct __is_insertable : false_type {}; -2441: -2441: template -2441: struct __is_insertable<_Ostream, _Tp, -2441: __void_t() -2441: << declval())>> -2441: : true_type {}; -2441: -2441: template -2441: using __rvalue_ostream_type = -2441: typename __is_convertible_to_basic_ostream< -2441: _Ostream>::__ostream_type; -2441: # 674 "/usr/include/c++/8/ostream" 3 -2441: template -2441: inline -2441: typename enable_if<__and_<__not_>, -2441: __is_convertible_to_basic_ostream<_Ostream>, -2441: __is_insertable< -2441: __rvalue_ostream_type<_Ostream>, -2441: const _Tp&>>::value, -2441: __rvalue_ostream_type<_Ostream>>::type -2441: operator<<(_Ostream&& __os, const _Tp& __x) -2441: { -2441: __rvalue_ostream_type<_Ostream> __ret_os = __os; -2441: __ret_os << __x; -2441: return __ret_os; -2441: } -2441: -2441: -2441: -2441: } -2441: -2441: # 1 "/usr/include/c++/8/bits/ostream.tcc" 1 3 -2441: # 37 "/usr/include/c++/8/bits/ostream.tcc" 3 -2441: -2441: # 38 "/usr/include/c++/8/bits/ostream.tcc" 3 -2441: -2441: -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: template -2441: basic_ostream<_CharT, _Traits>::sentry:: -2441: sentry(basic_ostream<_CharT, _Traits>& __os) -2441: : _M_ok(false), _M_os(__os) -2441: { -2441: -2441: if (__os.tie() && __os.good()) -2441: __os.tie()->flush(); -2441: -2441: if (__os.good()) -2441: _M_ok = true; -2441: else -2441: __os.setstate(ios_base::failbit); -2441: } -2441: -2441: template -2441: template -2441: basic_ostream<_CharT, _Traits>& -2441: basic_ostream<_CharT, _Traits>:: -2441: _M_insert(_ValueT __v) -2441: { -2441: sentry __cerb(*this); -2441: if (__cerb) -2441: { -2441: ios_base::iostate __err = ios_base::goodbit; -2441: try -2441: { -2441: const __num_put_type& __np = __check_facet(this->_M_num_put); -2441: if (__np.put(*this, *this, this->fill(), __v).failed()) -2441: __err |= ios_base::badbit; -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: this->_M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { this->_M_setstate(ios_base::badbit); } -2441: if (__err) -2441: this->setstate(__err); -2441: } -2441: return *this; -2441: } -2441: -2441: template -2441: basic_ostream<_CharT, _Traits>& -2441: basic_ostream<_CharT, _Traits>:: -2441: operator<<(short __n) -2441: { -2441: -2441: -2441: const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield; -2441: if (__fmt == ios_base::oct || __fmt == ios_base::hex) -2441: return _M_insert(static_cast(static_cast(__n))); -2441: else -2441: return _M_insert(static_cast(__n)); -2441: } -2441: -2441: template -2441: basic_ostream<_CharT, _Traits>& -2441: basic_ostream<_CharT, _Traits>:: -2441: operator<<(int __n) -2441: { -2441: -2441: -2441: const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield; -2441: if (__fmt == ios_base::oct || __fmt == ios_base::hex) -2441: return _M_insert(static_cast(static_cast(__n))); -2441: else -2441: return _M_insert(static_cast(__n)); -2441: } -2441: -2441: template -2441: basic_ostream<_CharT, _Traits>& -2441: basic_ostream<_CharT, _Traits>:: -2441: operator<<(__streambuf_type* __sbin) -2441: { -2441: ios_base::iostate __err = ios_base::goodbit; -2441: sentry __cerb(*this); -2441: if (__cerb && __sbin) -2441: { -2441: try -2441: { -2441: if (!__copy_streambufs(__sbin, this->rdbuf())) -2441: __err |= ios_base::failbit; -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: this->_M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { this->_M_setstate(ios_base::failbit); } -2441: } -2441: else if (!__sbin) -2441: __err |= ios_base::badbit; -2441: if (__err) -2441: this->setstate(__err); -2441: return *this; -2441: } -2441: -2441: template -2441: basic_ostream<_CharT, _Traits>& -2441: basic_ostream<_CharT, _Traits>:: -2441: put(char_type __c) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: sentry __cerb(*this); -2441: if (__cerb) -2441: { -2441: ios_base::iostate __err = ios_base::goodbit; -2441: try -2441: { -2441: const int_type __put = this->rdbuf()->sputc(__c); -2441: if (traits_type::eq_int_type(__put, traits_type::eof())) -2441: __err |= ios_base::badbit; -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: this->_M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { this->_M_setstate(ios_base::badbit); } -2441: if (__err) -2441: this->setstate(__err); -2441: } -2441: return *this; -2441: } -2441: -2441: template -2441: basic_ostream<_CharT, _Traits>& -2441: basic_ostream<_CharT, _Traits>:: -2441: write(const _CharT* __s, streamsize __n) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: sentry __cerb(*this); -2441: if (__cerb) -2441: { -2441: try -2441: { _M_write(__s, __n); } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: this->_M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { this->_M_setstate(ios_base::badbit); } -2441: } -2441: return *this; -2441: } -2441: -2441: template -2441: basic_ostream<_CharT, _Traits>& -2441: basic_ostream<_CharT, _Traits>:: -2441: flush() -2441: { -2441: -2441: -2441: -2441: ios_base::iostate __err = ios_base::goodbit; -2441: try -2441: { -2441: if (this->rdbuf() && this->rdbuf()->pubsync() == -1) -2441: __err |= ios_base::badbit; -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: this->_M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { this->_M_setstate(ios_base::badbit); } -2441: if (__err) -2441: this->setstate(__err); -2441: return *this; -2441: } -2441: -2441: template -2441: typename basic_ostream<_CharT, _Traits>::pos_type -2441: basic_ostream<_CharT, _Traits>:: -2441: tellp() -2441: { -2441: pos_type __ret = pos_type(-1); -2441: try -2441: { -2441: if (!this->fail()) -2441: __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::out); -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: this->_M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { this->_M_setstate(ios_base::badbit); } -2441: return __ret; -2441: } -2441: -2441: template -2441: basic_ostream<_CharT, _Traits>& -2441: basic_ostream<_CharT, _Traits>:: -2441: seekp(pos_type __pos) -2441: { -2441: ios_base::iostate __err = ios_base::goodbit; -2441: try -2441: { -2441: if (!this->fail()) -2441: { -2441: -2441: -2441: const pos_type __p = this->rdbuf()->pubseekpos(__pos, -2441: ios_base::out); -2441: -2441: -2441: if (__p == pos_type(off_type(-1))) -2441: __err |= ios_base::failbit; -2441: } -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: this->_M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { this->_M_setstate(ios_base::badbit); } -2441: if (__err) -2441: this->setstate(__err); -2441: return *this; -2441: } -2441: -2441: template -2441: basic_ostream<_CharT, _Traits>& -2441: basic_ostream<_CharT, _Traits>:: -2441: seekp(off_type __off, ios_base::seekdir __dir) -2441: { -2441: ios_base::iostate __err = ios_base::goodbit; -2441: try -2441: { -2441: if (!this->fail()) -2441: { -2441: -2441: -2441: const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir, -2441: ios_base::out); -2441: -2441: -2441: if (__p == pos_type(off_type(-1))) -2441: __err |= ios_base::failbit; -2441: } -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: this->_M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { this->_M_setstate(ios_base::badbit); } -2441: if (__err) -2441: this->setstate(__err); -2441: return *this; -2441: } -2441: -2441: template -2441: basic_ostream<_CharT, _Traits>& -2441: operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s) -2441: { -2441: if (!__s) -2441: __out.setstate(ios_base::badbit); -2441: else -2441: { -2441: -2441: -2441: const size_t __clen = char_traits::length(__s); -2441: try -2441: { -2441: struct __ptr_guard -2441: { -2441: _CharT *__p; -2441: __ptr_guard (_CharT *__ip): __p(__ip) { } -2441: ~__ptr_guard() { delete[] __p; } -2441: _CharT* __get() { return __p; } -2441: } __pg (new _CharT[__clen]); -2441: -2441: _CharT *__ws = __pg.__get(); -2441: for (size_t __i = 0; __i < __clen; ++__i) -2441: __ws[__i] = __out.widen(__s[__i]); -2441: __ostream_insert(__out, __ws, __clen); -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: __out._M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { __out._M_setstate(ios_base::badbit); } -2441: } -2441: return __out; -2441: } -2441: -2441: -2441: -2441: -2441: extern template class basic_ostream; -2441: extern template ostream& endl(ostream&); -2441: extern template ostream& ends(ostream&); -2441: extern template ostream& flush(ostream&); -2441: extern template ostream& operator<<(ostream&, char); -2441: extern template ostream& operator<<(ostream&, unsigned char); -2441: extern template ostream& operator<<(ostream&, signed char); -2441: extern template ostream& operator<<(ostream&, const char*); -2441: extern template ostream& operator<<(ostream&, const unsigned char*); -2441: extern template ostream& operator<<(ostream&, const signed char*); -2441: -2441: extern template ostream& ostream::_M_insert(long); -2441: extern template ostream& ostream::_M_insert(unsigned long); -2441: extern template ostream& ostream::_M_insert(bool); -2441: -2441: extern template ostream& ostream::_M_insert(long long); -2441: extern template ostream& ostream::_M_insert(unsigned long long); -2441: -2441: extern template ostream& ostream::_M_insert(double); -2441: extern template ostream& ostream::_M_insert(long double); -2441: extern template ostream& ostream::_M_insert(const void*); -2441: -2441: -2441: extern template class basic_ostream; -2441: extern template wostream& endl(wostream&); -2441: extern template wostream& ends(wostream&); -2441: extern template wostream& flush(wostream&); -2441: extern template wostream& operator<<(wostream&, wchar_t); -2441: extern template wostream& operator<<(wostream&, char); -2441: extern template wostream& operator<<(wostream&, const wchar_t*); -2441: extern template wostream& operator<<(wostream&, const char*); -2441: -2441: extern template wostream& wostream::_M_insert(long); -2441: extern template wostream& wostream::_M_insert(unsigned long); -2441: extern template wostream& wostream::_M_insert(bool); -2441: -2441: extern template wostream& wostream::_M_insert(long long); -2441: extern template wostream& wostream::_M_insert(unsigned long long); -2441: -2441: extern template wostream& wostream::_M_insert(double); -2441: extern template wostream& wostream::_M_insert(long double); -2441: extern template wostream& wostream::_M_insert(const void*); -2441: -2441: -2441: -2441: -2441: } -2441: # 694 "/usr/include/c++/8/ostream" 2 3 -2441: # 40 "/usr/include/c++/8/istream" 2 3 -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: # 57 "/usr/include/c++/8/istream" 3 -2441: template -2441: class basic_istream : virtual public basic_ios<_CharT, _Traits> -2441: { -2441: public: -2441: -2441: typedef _CharT char_type; -2441: typedef typename _Traits::int_type int_type; -2441: typedef typename _Traits::pos_type pos_type; -2441: typedef typename _Traits::off_type off_type; -2441: typedef _Traits traits_type; -2441: -2441: -2441: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; -2441: typedef basic_ios<_CharT, _Traits> __ios_type; -2441: typedef basic_istream<_CharT, _Traits> __istream_type; -2441: typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> > -2441: __num_get_type; -2441: typedef ctype<_CharT> __ctype_type; -2441: -2441: protected: -2441: -2441: -2441: -2441: -2441: -2441: streamsize _M_gcount; -2441: -2441: public: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: explicit -2441: basic_istream(__streambuf_type* __sb) -2441: : _M_gcount(streamsize(0)) -2441: { this->init(__sb); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual -2441: ~basic_istream() -2441: { _M_gcount = streamsize(0); } -2441: -2441: -2441: class sentry; -2441: friend class sentry; -2441: # 119 "/usr/include/c++/8/istream" 3 -2441: __istream_type& -2441: operator>>(__istream_type& (*__pf)(__istream_type&)) -2441: { return __pf(*this); } -2441: -2441: __istream_type& -2441: operator>>(__ios_type& (*__pf)(__ios_type&)) -2441: { -2441: __pf(*this); -2441: return *this; -2441: } -2441: -2441: __istream_type& -2441: operator>>(ios_base& (*__pf)(ios_base&)) -2441: { -2441: __pf(*this); -2441: return *this; -2441: } -2441: # 167 "/usr/include/c++/8/istream" 3 -2441: __istream_type& -2441: operator>>(bool& __n) -2441: { return _M_extract(__n); } -2441: -2441: __istream_type& -2441: operator>>(short& __n); -2441: -2441: __istream_type& -2441: operator>>(unsigned short& __n) -2441: { return _M_extract(__n); } -2441: -2441: __istream_type& -2441: operator>>(int& __n); -2441: -2441: __istream_type& -2441: operator>>(unsigned int& __n) -2441: { return _M_extract(__n); } -2441: -2441: __istream_type& -2441: operator>>(long& __n) -2441: { return _M_extract(__n); } -2441: -2441: __istream_type& -2441: operator>>(unsigned long& __n) -2441: { return _M_extract(__n); } -2441: -2441: -2441: __istream_type& -2441: operator>>(long long& __n) -2441: { return _M_extract(__n); } -2441: -2441: __istream_type& -2441: operator>>(unsigned long long& __n) -2441: { return _M_extract(__n); } -2441: # 213 "/usr/include/c++/8/istream" 3 -2441: __istream_type& -2441: operator>>(float& __f) -2441: { return _M_extract(__f); } -2441: -2441: __istream_type& -2441: operator>>(double& __f) -2441: { return _M_extract(__f); } -2441: -2441: __istream_type& -2441: operator>>(long double& __f) -2441: { return _M_extract(__f); } -2441: # 234 "/usr/include/c++/8/istream" 3 -2441: __istream_type& -2441: operator>>(void*& __p) -2441: { return _M_extract(__p); } -2441: # 258 "/usr/include/c++/8/istream" 3 -2441: __istream_type& -2441: operator>>(__streambuf_type* __sb); -2441: # 268 "/usr/include/c++/8/istream" 3 -2441: streamsize -2441: gcount() const -2441: { return _M_gcount; } -2441: # 301 "/usr/include/c++/8/istream" 3 -2441: int_type -2441: get(); -2441: # 315 "/usr/include/c++/8/istream" 3 -2441: __istream_type& -2441: get(char_type& __c); -2441: # 342 "/usr/include/c++/8/istream" 3 -2441: __istream_type& -2441: get(char_type* __s, streamsize __n, char_type __delim); -2441: # 353 "/usr/include/c++/8/istream" 3 -2441: __istream_type& -2441: get(char_type* __s, streamsize __n) -2441: { return this->get(__s, __n, this->widen('\n')); } -2441: # 376 "/usr/include/c++/8/istream" 3 -2441: __istream_type& -2441: get(__streambuf_type& __sb, char_type __delim); -2441: # 386 "/usr/include/c++/8/istream" 3 -2441: __istream_type& -2441: get(__streambuf_type& __sb) -2441: { return this->get(__sb, this->widen('\n')); } -2441: # 415 "/usr/include/c++/8/istream" 3 -2441: __istream_type& -2441: getline(char_type* __s, streamsize __n, char_type __delim); -2441: # 426 "/usr/include/c++/8/istream" 3 -2441: __istream_type& -2441: getline(char_type* __s, streamsize __n) -2441: { return this->getline(__s, __n, this->widen('\n')); } -2441: # 450 "/usr/include/c++/8/istream" 3 -2441: __istream_type& -2441: ignore(streamsize __n, int_type __delim); -2441: -2441: __istream_type& -2441: ignore(streamsize __n); -2441: -2441: __istream_type& -2441: ignore(); -2441: # 467 "/usr/include/c++/8/istream" 3 -2441: int_type -2441: peek(); -2441: # 485 "/usr/include/c++/8/istream" 3 -2441: __istream_type& -2441: read(char_type* __s, streamsize __n); -2441: # 504 "/usr/include/c++/8/istream" 3 -2441: streamsize -2441: readsome(char_type* __s, streamsize __n); -2441: # 521 "/usr/include/c++/8/istream" 3 -2441: __istream_type& -2441: putback(char_type __c); -2441: # 537 "/usr/include/c++/8/istream" 3 -2441: __istream_type& -2441: unget(); -2441: # 555 "/usr/include/c++/8/istream" 3 -2441: int -2441: sync(); -2441: # 570 "/usr/include/c++/8/istream" 3 -2441: pos_type -2441: tellg(); -2441: # 585 "/usr/include/c++/8/istream" 3 -2441: __istream_type& -2441: seekg(pos_type); -2441: # 601 "/usr/include/c++/8/istream" 3 -2441: __istream_type& -2441: seekg(off_type, ios_base::seekdir); -2441: -2441: -2441: protected: -2441: basic_istream() -2441: : _M_gcount(streamsize(0)) -2441: { this->init(0); } -2441: -2441: -2441: basic_istream(const basic_istream&) = delete; -2441: -2441: basic_istream(basic_istream&& __rhs) -2441: : __ios_type(), _M_gcount(__rhs._M_gcount) -2441: { -2441: __ios_type::move(__rhs); -2441: __rhs._M_gcount = 0; -2441: } -2441: -2441: -2441: -2441: basic_istream& operator=(const basic_istream&) = delete; -2441: -2441: basic_istream& -2441: operator=(basic_istream&& __rhs) -2441: { -2441: swap(__rhs); -2441: return *this; -2441: } -2441: -2441: void -2441: swap(basic_istream& __rhs) -2441: { -2441: __ios_type::swap(__rhs); -2441: std::swap(_M_gcount, __rhs._M_gcount); -2441: } -2441: -2441: -2441: template -2441: __istream_type& -2441: _M_extract(_ValueT& __v); -2441: }; -2441: -2441: -2441: template<> -2441: basic_istream& -2441: basic_istream:: -2441: getline(char_type* __s, streamsize __n, char_type __delim); -2441: -2441: template<> -2441: basic_istream& -2441: basic_istream:: -2441: ignore(streamsize __n); -2441: -2441: template<> -2441: basic_istream& -2441: basic_istream:: -2441: ignore(streamsize __n, int_type __delim); -2441: -2441: -2441: template<> -2441: basic_istream& -2441: basic_istream:: -2441: getline(char_type* __s, streamsize __n, char_type __delim); -2441: -2441: template<> -2441: basic_istream& -2441: basic_istream:: -2441: ignore(streamsize __n); -2441: -2441: template<> -2441: basic_istream& -2441: basic_istream:: -2441: ignore(streamsize __n, int_type __delim); -2441: # 685 "/usr/include/c++/8/istream" 3 -2441: template -2441: class basic_istream<_CharT, _Traits>::sentry -2441: { -2441: -2441: bool _M_ok; -2441: -2441: public: -2441: -2441: typedef _Traits traits_type; -2441: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; -2441: typedef basic_istream<_CharT, _Traits> __istream_type; -2441: typedef typename __istream_type::__ctype_type __ctype_type; -2441: typedef typename _Traits::int_type __int_type; -2441: # 721 "/usr/include/c++/8/istream" 3 -2441: explicit -2441: sentry(basic_istream<_CharT, _Traits>& __is, bool __noskipws = false); -2441: # 732 "/usr/include/c++/8/istream" 3 -2441: explicit -2441: -2441: operator bool() const -2441: { return _M_ok; } -2441: }; -2441: # 750 "/usr/include/c++/8/istream" 3 -2441: template -2441: basic_istream<_CharT, _Traits>& -2441: operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c); -2441: -2441: template -2441: inline basic_istream& -2441: operator>>(basic_istream& __in, unsigned char& __c) -2441: { return (__in >> reinterpret_cast(__c)); } -2441: -2441: template -2441: inline basic_istream& -2441: operator>>(basic_istream& __in, signed char& __c) -2441: { return (__in >> reinterpret_cast(__c)); } -2441: # 792 "/usr/include/c++/8/istream" 3 -2441: template -2441: basic_istream<_CharT, _Traits>& -2441: operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s); -2441: -2441: -2441: template<> -2441: basic_istream& -2441: operator>>(basic_istream& __in, char* __s); -2441: -2441: template -2441: inline basic_istream& -2441: operator>>(basic_istream& __in, unsigned char* __s) -2441: { return (__in >> reinterpret_cast(__s)); } -2441: -2441: template -2441: inline basic_istream& -2441: operator>>(basic_istream& __in, signed char* __s) -2441: { return (__in >> reinterpret_cast(__s)); } -2441: # 823 "/usr/include/c++/8/istream" 3 -2441: template -2441: class basic_iostream -2441: : public basic_istream<_CharT, _Traits>, -2441: public basic_ostream<_CharT, _Traits> -2441: { -2441: public: -2441: -2441: -2441: -2441: typedef _CharT char_type; -2441: typedef typename _Traits::int_type int_type; -2441: typedef typename _Traits::pos_type pos_type; -2441: typedef typename _Traits::off_type off_type; -2441: typedef _Traits traits_type; -2441: -2441: -2441: typedef basic_istream<_CharT, _Traits> __istream_type; -2441: typedef basic_ostream<_CharT, _Traits> __ostream_type; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: explicit -2441: basic_iostream(basic_streambuf<_CharT, _Traits>* __sb) -2441: : __istream_type(__sb), __ostream_type(__sb) { } -2441: -2441: -2441: -2441: -2441: virtual -2441: ~basic_iostream() { } -2441: -2441: protected: -2441: basic_iostream() -2441: : __istream_type(), __ostream_type() { } -2441: -2441: -2441: basic_iostream(const basic_iostream&) = delete; -2441: -2441: basic_iostream(basic_iostream&& __rhs) -2441: : __istream_type(std::move(__rhs)), __ostream_type(*this) -2441: { } -2441: -2441: -2441: -2441: basic_iostream& operator=(const basic_iostream&) = delete; -2441: -2441: basic_iostream& -2441: operator=(basic_iostream&& __rhs) -2441: { -2441: swap(__rhs); -2441: return *this; -2441: } -2441: -2441: void -2441: swap(basic_iostream& __rhs) -2441: { __istream_type::swap(__rhs); } -2441: -2441: }; -2441: # 906 "/usr/include/c++/8/istream" 3 -2441: template -2441: basic_istream<_CharT, _Traits>& -2441: ws(basic_istream<_CharT, _Traits>& __is); -2441: -2441: -2441: template -2441: basic_istream<_Ch, _Up>& -2441: __is_convertible_to_basic_istream_test(basic_istream<_Ch, _Up>*); -2441: -2441: template -2441: struct __is_convertible_to_basic_istream_impl -2441: { -2441: using __istream_type = void; -2441: }; -2441: -2441: template -2441: using __do_is_convertible_to_basic_istream_impl = -2441: decltype(__is_convertible_to_basic_istream_test -2441: (declval::type*>())); -2441: -2441: template -2441: struct __is_convertible_to_basic_istream_impl -2441: <_Tp, -2441: __void_t<__do_is_convertible_to_basic_istream_impl<_Tp>>> -2441: { -2441: using __istream_type = -2441: __do_is_convertible_to_basic_istream_impl<_Tp>; -2441: }; -2441: -2441: template -2441: struct __is_convertible_to_basic_istream -2441: : __is_convertible_to_basic_istream_impl<_Tp> -2441: { -2441: public: -2441: using type = __not_::__istream_type>>; -2441: constexpr static bool value = type::value; -2441: }; -2441: -2441: template -2441: struct __is_extractable : false_type {}; -2441: -2441: template -2441: struct __is_extractable<_Istream, _Tp, -2441: __void_t() -2441: >> declval<_Tp>())>> -2441: : true_type {}; -2441: -2441: template -2441: using __rvalue_istream_type = -2441: typename __is_convertible_to_basic_istream< -2441: _Istream>::__istream_type; -2441: # 972 "/usr/include/c++/8/istream" 3 -2441: template -2441: inline -2441: typename enable_if<__and_<__not_>, -2441: __is_convertible_to_basic_istream<_Istream>, -2441: __is_extractable< -2441: __rvalue_istream_type<_Istream>, -2441: _Tp&&>>::value, -2441: __rvalue_istream_type<_Istream>>::type -2441: operator>>(_Istream&& __is, _Tp&& __x) -2441: { -2441: __rvalue_istream_type<_Istream> __ret_is = __is; -2441: __ret_is >> std::forward<_Tp>(__x); -2441: return __ret_is; -2441: } -2441: -2441: -2441: -2441: } -2441: -2441: # 1 "/usr/include/c++/8/bits/istream.tcc" 1 3 -2441: # 37 "/usr/include/c++/8/bits/istream.tcc" 3 -2441: -2441: # 38 "/usr/include/c++/8/bits/istream.tcc" 3 -2441: -2441: -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: template -2441: basic_istream<_CharT, _Traits>::sentry:: -2441: sentry(basic_istream<_CharT, _Traits>& __in, bool __noskip) : _M_ok(false) -2441: { -2441: ios_base::iostate __err = ios_base::goodbit; -2441: if (__in.good()) -2441: try -2441: { -2441: if (__in.tie()) -2441: __in.tie()->flush(); -2441: if (!__noskip && bool(__in.flags() & ios_base::skipws)) -2441: { -2441: const __int_type __eof = traits_type::eof(); -2441: __streambuf_type* __sb = __in.rdbuf(); -2441: __int_type __c = __sb->sgetc(); -2441: -2441: const __ctype_type& __ct = __check_facet(__in._M_ctype); -2441: while (!traits_type::eq_int_type(__c, __eof) -2441: && __ct.is(ctype_base::space, -2441: traits_type::to_char_type(__c))) -2441: __c = __sb->snextc(); -2441: -2441: -2441: -2441: -2441: if (traits_type::eq_int_type(__c, __eof)) -2441: __err |= ios_base::eofbit; -2441: } -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: __in._M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { __in._M_setstate(ios_base::badbit); } -2441: -2441: if (__in.good() && __err == ios_base::goodbit) -2441: _M_ok = true; -2441: else -2441: { -2441: __err |= ios_base::failbit; -2441: __in.setstate(__err); -2441: } -2441: } -2441: -2441: template -2441: template -2441: basic_istream<_CharT, _Traits>& -2441: basic_istream<_CharT, _Traits>:: -2441: _M_extract(_ValueT& __v) -2441: { -2441: sentry __cerb(*this, false); -2441: if (__cerb) -2441: { -2441: ios_base::iostate __err = ios_base::goodbit; -2441: try -2441: { -2441: const __num_get_type& __ng = __check_facet(this->_M_num_get); -2441: __ng.get(*this, 0, *this, __err, __v); -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: this->_M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { this->_M_setstate(ios_base::badbit); } -2441: if (__err) -2441: this->setstate(__err); -2441: } -2441: return *this; -2441: } -2441: -2441: template -2441: basic_istream<_CharT, _Traits>& -2441: basic_istream<_CharT, _Traits>:: -2441: operator>>(short& __n) -2441: { -2441: -2441: -2441: sentry __cerb(*this, false); -2441: if (__cerb) -2441: { -2441: ios_base::iostate __err = ios_base::goodbit; -2441: try -2441: { -2441: long __l; -2441: const __num_get_type& __ng = __check_facet(this->_M_num_get); -2441: __ng.get(*this, 0, *this, __err, __l); -2441: -2441: -2441: -2441: if (__l < __gnu_cxx::__numeric_traits::__min) -2441: { -2441: __err |= ios_base::failbit; -2441: __n = __gnu_cxx::__numeric_traits::__min; -2441: } -2441: else if (__l > __gnu_cxx::__numeric_traits::__max) -2441: { -2441: __err |= ios_base::failbit; -2441: __n = __gnu_cxx::__numeric_traits::__max; -2441: } -2441: else -2441: __n = short(__l); -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: this->_M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { this->_M_setstate(ios_base::badbit); } -2441: if (__err) -2441: this->setstate(__err); -2441: } -2441: return *this; -2441: } -2441: -2441: template -2441: basic_istream<_CharT, _Traits>& -2441: basic_istream<_CharT, _Traits>:: -2441: operator>>(int& __n) -2441: { -2441: -2441: -2441: sentry __cerb(*this, false); -2441: if (__cerb) -2441: { -2441: ios_base::iostate __err = ios_base::goodbit; -2441: try -2441: { -2441: long __l; -2441: const __num_get_type& __ng = __check_facet(this->_M_num_get); -2441: __ng.get(*this, 0, *this, __err, __l); -2441: -2441: -2441: -2441: if (__l < __gnu_cxx::__numeric_traits::__min) -2441: { -2441: __err |= ios_base::failbit; -2441: __n = __gnu_cxx::__numeric_traits::__min; -2441: } -2441: else if (__l > __gnu_cxx::__numeric_traits::__max) -2441: { -2441: __err |= ios_base::failbit; -2441: __n = __gnu_cxx::__numeric_traits::__max; -2441: } -2441: else -2441: __n = int(__l); -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: this->_M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { this->_M_setstate(ios_base::badbit); } -2441: if (__err) -2441: this->setstate(__err); -2441: } -2441: return *this; -2441: } -2441: -2441: template -2441: basic_istream<_CharT, _Traits>& -2441: basic_istream<_CharT, _Traits>:: -2441: operator>>(__streambuf_type* __sbout) -2441: { -2441: ios_base::iostate __err = ios_base::goodbit; -2441: sentry __cerb(*this, false); -2441: if (__cerb && __sbout) -2441: { -2441: try -2441: { -2441: bool __ineof; -2441: if (!__copy_streambufs_eof(this->rdbuf(), __sbout, __ineof)) -2441: __err |= ios_base::failbit; -2441: if (__ineof) -2441: __err |= ios_base::eofbit; -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: this->_M_setstate(ios_base::failbit); -2441: throw; -2441: } -2441: catch(...) -2441: { this->_M_setstate(ios_base::failbit); } -2441: } -2441: else if (!__sbout) -2441: __err |= ios_base::failbit; -2441: if (__err) -2441: this->setstate(__err); -2441: return *this; -2441: } -2441: -2441: template -2441: typename basic_istream<_CharT, _Traits>::int_type -2441: basic_istream<_CharT, _Traits>:: -2441: get(void) -2441: { -2441: const int_type __eof = traits_type::eof(); -2441: int_type __c = __eof; -2441: _M_gcount = 0; -2441: ios_base::iostate __err = ios_base::goodbit; -2441: sentry __cerb(*this, true); -2441: if (__cerb) -2441: { -2441: try -2441: { -2441: __c = this->rdbuf()->sbumpc(); -2441: -2441: if (!traits_type::eq_int_type(__c, __eof)) -2441: _M_gcount = 1; -2441: else -2441: __err |= ios_base::eofbit; -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: this->_M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { this->_M_setstate(ios_base::badbit); } -2441: } -2441: if (!_M_gcount) -2441: __err |= ios_base::failbit; -2441: if (__err) -2441: this->setstate(__err); -2441: return __c; -2441: } -2441: -2441: template -2441: basic_istream<_CharT, _Traits>& -2441: basic_istream<_CharT, _Traits>:: -2441: get(char_type& __c) -2441: { -2441: _M_gcount = 0; -2441: ios_base::iostate __err = ios_base::goodbit; -2441: sentry __cerb(*this, true); -2441: if (__cerb) -2441: { -2441: try -2441: { -2441: const int_type __cb = this->rdbuf()->sbumpc(); -2441: -2441: if (!traits_type::eq_int_type(__cb, traits_type::eof())) -2441: { -2441: _M_gcount = 1; -2441: __c = traits_type::to_char_type(__cb); -2441: } -2441: else -2441: __err |= ios_base::eofbit; -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: this->_M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { this->_M_setstate(ios_base::badbit); } -2441: } -2441: if (!_M_gcount) -2441: __err |= ios_base::failbit; -2441: if (__err) -2441: this->setstate(__err); -2441: return *this; -2441: } -2441: -2441: template -2441: basic_istream<_CharT, _Traits>& -2441: basic_istream<_CharT, _Traits>:: -2441: get(char_type* __s, streamsize __n, char_type __delim) -2441: { -2441: _M_gcount = 0; -2441: ios_base::iostate __err = ios_base::goodbit; -2441: sentry __cerb(*this, true); -2441: if (__cerb) -2441: { -2441: try -2441: { -2441: const int_type __idelim = traits_type::to_int_type(__delim); -2441: const int_type __eof = traits_type::eof(); -2441: __streambuf_type* __sb = this->rdbuf(); -2441: int_type __c = __sb->sgetc(); -2441: -2441: while (_M_gcount + 1 < __n -2441: && !traits_type::eq_int_type(__c, __eof) -2441: && !traits_type::eq_int_type(__c, __idelim)) -2441: { -2441: *__s++ = traits_type::to_char_type(__c); -2441: ++_M_gcount; -2441: __c = __sb->snextc(); -2441: } -2441: if (traits_type::eq_int_type(__c, __eof)) -2441: __err |= ios_base::eofbit; -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: this->_M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { this->_M_setstate(ios_base::badbit); } -2441: } -2441: -2441: -2441: if (__n > 0) -2441: *__s = char_type(); -2441: if (!_M_gcount) -2441: __err |= ios_base::failbit; -2441: if (__err) -2441: this->setstate(__err); -2441: return *this; -2441: } -2441: -2441: template -2441: basic_istream<_CharT, _Traits>& -2441: basic_istream<_CharT, _Traits>:: -2441: get(__streambuf_type& __sb, char_type __delim) -2441: { -2441: _M_gcount = 0; -2441: ios_base::iostate __err = ios_base::goodbit; -2441: sentry __cerb(*this, true); -2441: if (__cerb) -2441: { -2441: try -2441: { -2441: const int_type __idelim = traits_type::to_int_type(__delim); -2441: const int_type __eof = traits_type::eof(); -2441: __streambuf_type* __this_sb = this->rdbuf(); -2441: int_type __c = __this_sb->sgetc(); -2441: char_type __c2 = traits_type::to_char_type(__c); -2441: -2441: while (!traits_type::eq_int_type(__c, __eof) -2441: && !traits_type::eq_int_type(__c, __idelim) -2441: && !traits_type::eq_int_type(__sb.sputc(__c2), __eof)) -2441: { -2441: ++_M_gcount; -2441: __c = __this_sb->snextc(); -2441: __c2 = traits_type::to_char_type(__c); -2441: } -2441: if (traits_type::eq_int_type(__c, __eof)) -2441: __err |= ios_base::eofbit; -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: this->_M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { this->_M_setstate(ios_base::badbit); } -2441: } -2441: if (!_M_gcount) -2441: __err |= ios_base::failbit; -2441: if (__err) -2441: this->setstate(__err); -2441: return *this; -2441: } -2441: -2441: template -2441: basic_istream<_CharT, _Traits>& -2441: basic_istream<_CharT, _Traits>:: -2441: getline(char_type* __s, streamsize __n, char_type __delim) -2441: { -2441: _M_gcount = 0; -2441: ios_base::iostate __err = ios_base::goodbit; -2441: sentry __cerb(*this, true); -2441: if (__cerb) -2441: { -2441: try -2441: { -2441: const int_type __idelim = traits_type::to_int_type(__delim); -2441: const int_type __eof = traits_type::eof(); -2441: __streambuf_type* __sb = this->rdbuf(); -2441: int_type __c = __sb->sgetc(); -2441: -2441: while (_M_gcount + 1 < __n -2441: && !traits_type::eq_int_type(__c, __eof) -2441: && !traits_type::eq_int_type(__c, __idelim)) -2441: { -2441: *__s++ = traits_type::to_char_type(__c); -2441: __c = __sb->snextc(); -2441: ++_M_gcount; -2441: } -2441: if (traits_type::eq_int_type(__c, __eof)) -2441: __err |= ios_base::eofbit; -2441: else -2441: { -2441: if (traits_type::eq_int_type(__c, __idelim)) -2441: { -2441: __sb->sbumpc(); -2441: ++_M_gcount; -2441: } -2441: else -2441: __err |= ios_base::failbit; -2441: } -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: this->_M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { this->_M_setstate(ios_base::badbit); } -2441: } -2441: -2441: -2441: if (__n > 0) -2441: *__s = char_type(); -2441: if (!_M_gcount) -2441: __err |= ios_base::failbit; -2441: if (__err) -2441: this->setstate(__err); -2441: return *this; -2441: } -2441: -2441: -2441: -2441: -2441: template -2441: basic_istream<_CharT, _Traits>& -2441: basic_istream<_CharT, _Traits>:: -2441: ignore(void) -2441: { -2441: _M_gcount = 0; -2441: sentry __cerb(*this, true); -2441: if (__cerb) -2441: { -2441: ios_base::iostate __err = ios_base::goodbit; -2441: try -2441: { -2441: const int_type __eof = traits_type::eof(); -2441: __streambuf_type* __sb = this->rdbuf(); -2441: -2441: if (traits_type::eq_int_type(__sb->sbumpc(), __eof)) -2441: __err |= ios_base::eofbit; -2441: else -2441: _M_gcount = 1; -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: this->_M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { this->_M_setstate(ios_base::badbit); } -2441: if (__err) -2441: this->setstate(__err); -2441: } -2441: return *this; -2441: } -2441: -2441: template -2441: basic_istream<_CharT, _Traits>& -2441: basic_istream<_CharT, _Traits>:: -2441: ignore(streamsize __n) -2441: { -2441: _M_gcount = 0; -2441: sentry __cerb(*this, true); -2441: if (__cerb && __n > 0) -2441: { -2441: ios_base::iostate __err = ios_base::goodbit; -2441: try -2441: { -2441: const int_type __eof = traits_type::eof(); -2441: __streambuf_type* __sb = this->rdbuf(); -2441: int_type __c = __sb->sgetc(); -2441: # 521 "/usr/include/c++/8/bits/istream.tcc" 3 -2441: bool __large_ignore = false; -2441: while (true) -2441: { -2441: while (_M_gcount < __n -2441: && !traits_type::eq_int_type(__c, __eof)) -2441: { -2441: ++_M_gcount; -2441: __c = __sb->snextc(); -2441: } -2441: if (__n == __gnu_cxx::__numeric_traits::__max -2441: && !traits_type::eq_int_type(__c, __eof)) -2441: { -2441: _M_gcount = -2441: __gnu_cxx::__numeric_traits::__min; -2441: __large_ignore = true; -2441: } -2441: else -2441: break; -2441: } -2441: -2441: if (__large_ignore) -2441: _M_gcount = __gnu_cxx::__numeric_traits::__max; -2441: -2441: if (traits_type::eq_int_type(__c, __eof)) -2441: __err |= ios_base::eofbit; -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: this->_M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { this->_M_setstate(ios_base::badbit); } -2441: if (__err) -2441: this->setstate(__err); -2441: } -2441: return *this; -2441: } -2441: -2441: template -2441: basic_istream<_CharT, _Traits>& -2441: basic_istream<_CharT, _Traits>:: -2441: ignore(streamsize __n, int_type __delim) -2441: { -2441: _M_gcount = 0; -2441: sentry __cerb(*this, true); -2441: if (__cerb && __n > 0) -2441: { -2441: ios_base::iostate __err = ios_base::goodbit; -2441: try -2441: { -2441: const int_type __eof = traits_type::eof(); -2441: __streambuf_type* __sb = this->rdbuf(); -2441: int_type __c = __sb->sgetc(); -2441: -2441: -2441: bool __large_ignore = false; -2441: while (true) -2441: { -2441: while (_M_gcount < __n -2441: && !traits_type::eq_int_type(__c, __eof) -2441: && !traits_type::eq_int_type(__c, __delim)) -2441: { -2441: ++_M_gcount; -2441: __c = __sb->snextc(); -2441: } -2441: if (__n == __gnu_cxx::__numeric_traits::__max -2441: && !traits_type::eq_int_type(__c, __eof) -2441: && !traits_type::eq_int_type(__c, __delim)) -2441: { -2441: _M_gcount = -2441: __gnu_cxx::__numeric_traits::__min; -2441: __large_ignore = true; -2441: } -2441: else -2441: break; -2441: } -2441: -2441: if (__large_ignore) -2441: _M_gcount = __gnu_cxx::__numeric_traits::__max; -2441: -2441: if (traits_type::eq_int_type(__c, __eof)) -2441: __err |= ios_base::eofbit; -2441: else if (traits_type::eq_int_type(__c, __delim)) -2441: { -2441: if (_M_gcount -2441: < __gnu_cxx::__numeric_traits::__max) -2441: ++_M_gcount; -2441: __sb->sbumpc(); -2441: } -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: this->_M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { this->_M_setstate(ios_base::badbit); } -2441: if (__err) -2441: this->setstate(__err); -2441: } -2441: return *this; -2441: } -2441: -2441: template -2441: typename basic_istream<_CharT, _Traits>::int_type -2441: basic_istream<_CharT, _Traits>:: -2441: peek(void) -2441: { -2441: int_type __c = traits_type::eof(); -2441: _M_gcount = 0; -2441: sentry __cerb(*this, true); -2441: if (__cerb) -2441: { -2441: ios_base::iostate __err = ios_base::goodbit; -2441: try -2441: { -2441: __c = this->rdbuf()->sgetc(); -2441: if (traits_type::eq_int_type(__c, traits_type::eof())) -2441: __err |= ios_base::eofbit; -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: this->_M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { this->_M_setstate(ios_base::badbit); } -2441: if (__err) -2441: this->setstate(__err); -2441: } -2441: return __c; -2441: } -2441: -2441: template -2441: basic_istream<_CharT, _Traits>& -2441: basic_istream<_CharT, _Traits>:: -2441: read(char_type* __s, streamsize __n) -2441: { -2441: _M_gcount = 0; -2441: sentry __cerb(*this, true); -2441: if (__cerb) -2441: { -2441: ios_base::iostate __err = ios_base::goodbit; -2441: try -2441: { -2441: _M_gcount = this->rdbuf()->sgetn(__s, __n); -2441: if (_M_gcount != __n) -2441: __err |= (ios_base::eofbit | ios_base::failbit); -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: this->_M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { this->_M_setstate(ios_base::badbit); } -2441: if (__err) -2441: this->setstate(__err); -2441: } -2441: return *this; -2441: } -2441: -2441: template -2441: streamsize -2441: basic_istream<_CharT, _Traits>:: -2441: readsome(char_type* __s, streamsize __n) -2441: { -2441: _M_gcount = 0; -2441: sentry __cerb(*this, true); -2441: if (__cerb) -2441: { -2441: ios_base::iostate __err = ios_base::goodbit; -2441: try -2441: { -2441: -2441: const streamsize __num = this->rdbuf()->in_avail(); -2441: if (__num > 0) -2441: _M_gcount = this->rdbuf()->sgetn(__s, std::min(__num, __n)); -2441: else if (__num == -1) -2441: __err |= ios_base::eofbit; -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: this->_M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { this->_M_setstate(ios_base::badbit); } -2441: if (__err) -2441: this->setstate(__err); -2441: } -2441: return _M_gcount; -2441: } -2441: -2441: template -2441: basic_istream<_CharT, _Traits>& -2441: basic_istream<_CharT, _Traits>:: -2441: putback(char_type __c) -2441: { -2441: -2441: -2441: _M_gcount = 0; -2441: -2441: this->clear(this->rdstate() & ~ios_base::eofbit); -2441: sentry __cerb(*this, true); -2441: if (__cerb) -2441: { -2441: ios_base::iostate __err = ios_base::goodbit; -2441: try -2441: { -2441: const int_type __eof = traits_type::eof(); -2441: __streambuf_type* __sb = this->rdbuf(); -2441: if (!__sb -2441: || traits_type::eq_int_type(__sb->sputbackc(__c), __eof)) -2441: __err |= ios_base::badbit; -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: this->_M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { this->_M_setstate(ios_base::badbit); } -2441: if (__err) -2441: this->setstate(__err); -2441: } -2441: return *this; -2441: } -2441: -2441: template -2441: basic_istream<_CharT, _Traits>& -2441: basic_istream<_CharT, _Traits>:: -2441: unget(void) -2441: { -2441: -2441: -2441: _M_gcount = 0; -2441: -2441: this->clear(this->rdstate() & ~ios_base::eofbit); -2441: sentry __cerb(*this, true); -2441: if (__cerb) -2441: { -2441: ios_base::iostate __err = ios_base::goodbit; -2441: try -2441: { -2441: const int_type __eof = traits_type::eof(); -2441: __streambuf_type* __sb = this->rdbuf(); -2441: if (!__sb -2441: || traits_type::eq_int_type(__sb->sungetc(), __eof)) -2441: __err |= ios_base::badbit; -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: this->_M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { this->_M_setstate(ios_base::badbit); } -2441: if (__err) -2441: this->setstate(__err); -2441: } -2441: return *this; -2441: } -2441: -2441: template -2441: int -2441: basic_istream<_CharT, _Traits>:: -2441: sync(void) -2441: { -2441: -2441: -2441: int __ret = -1; -2441: sentry __cerb(*this, true); -2441: if (__cerb) -2441: { -2441: ios_base::iostate __err = ios_base::goodbit; -2441: try -2441: { -2441: __streambuf_type* __sb = this->rdbuf(); -2441: if (__sb) -2441: { -2441: if (__sb->pubsync() == -1) -2441: __err |= ios_base::badbit; -2441: else -2441: __ret = 0; -2441: } -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: this->_M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { this->_M_setstate(ios_base::badbit); } -2441: if (__err) -2441: this->setstate(__err); -2441: } -2441: return __ret; -2441: } -2441: -2441: template -2441: typename basic_istream<_CharT, _Traits>::pos_type -2441: basic_istream<_CharT, _Traits>:: -2441: tellg(void) -2441: { -2441: -2441: -2441: pos_type __ret = pos_type(-1); -2441: sentry __cerb(*this, true); -2441: if (__cerb) -2441: { -2441: try -2441: { -2441: if (!this->fail()) -2441: __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, -2441: ios_base::in); -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: this->_M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { this->_M_setstate(ios_base::badbit); } -2441: } -2441: return __ret; -2441: } -2441: -2441: template -2441: basic_istream<_CharT, _Traits>& -2441: basic_istream<_CharT, _Traits>:: -2441: seekg(pos_type __pos) -2441: { -2441: -2441: -2441: -2441: this->clear(this->rdstate() & ~ios_base::eofbit); -2441: sentry __cerb(*this, true); -2441: if (__cerb) -2441: { -2441: ios_base::iostate __err = ios_base::goodbit; -2441: try -2441: { -2441: if (!this->fail()) -2441: { -2441: -2441: const pos_type __p = this->rdbuf()->pubseekpos(__pos, -2441: ios_base::in); -2441: -2441: -2441: if (__p == pos_type(off_type(-1))) -2441: __err |= ios_base::failbit; -2441: } -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: this->_M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { this->_M_setstate(ios_base::badbit); } -2441: if (__err) -2441: this->setstate(__err); -2441: } -2441: return *this; -2441: } -2441: -2441: template -2441: basic_istream<_CharT, _Traits>& -2441: basic_istream<_CharT, _Traits>:: -2441: seekg(off_type __off, ios_base::seekdir __dir) -2441: { -2441: -2441: -2441: -2441: this->clear(this->rdstate() & ~ios_base::eofbit); -2441: sentry __cerb(*this, true); -2441: if (__cerb) -2441: { -2441: ios_base::iostate __err = ios_base::goodbit; -2441: try -2441: { -2441: if (!this->fail()) -2441: { -2441: -2441: const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir, -2441: ios_base::in); -2441: -2441: -2441: if (__p == pos_type(off_type(-1))) -2441: __err |= ios_base::failbit; -2441: } -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: this->_M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { this->_M_setstate(ios_base::badbit); } -2441: if (__err) -2441: this->setstate(__err); -2441: } -2441: return *this; -2441: } -2441: -2441: -2441: template -2441: basic_istream<_CharT, _Traits>& -2441: operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c) -2441: { -2441: typedef basic_istream<_CharT, _Traits> __istream_type; -2441: typedef typename __istream_type::int_type __int_type; -2441: -2441: typename __istream_type::sentry __cerb(__in, false); -2441: if (__cerb) -2441: { -2441: ios_base::iostate __err = ios_base::goodbit; -2441: try -2441: { -2441: const __int_type __cb = __in.rdbuf()->sbumpc(); -2441: if (!_Traits::eq_int_type(__cb, _Traits::eof())) -2441: __c = _Traits::to_char_type(__cb); -2441: else -2441: __err |= (ios_base::eofbit | ios_base::failbit); -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: __in._M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { __in._M_setstate(ios_base::badbit); } -2441: if (__err) -2441: __in.setstate(__err); -2441: } -2441: return __in; -2441: } -2441: -2441: template -2441: basic_istream<_CharT, _Traits>& -2441: operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s) -2441: { -2441: typedef basic_istream<_CharT, _Traits> __istream_type; -2441: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; -2441: typedef typename _Traits::int_type int_type; -2441: typedef _CharT char_type; -2441: typedef ctype<_CharT> __ctype_type; -2441: -2441: streamsize __extracted = 0; -2441: ios_base::iostate __err = ios_base::goodbit; -2441: typename __istream_type::sentry __cerb(__in, false); -2441: if (__cerb) -2441: { -2441: try -2441: { -2441: -2441: streamsize __num = __in.width(); -2441: if (__num <= 0) -2441: __num = __gnu_cxx::__numeric_traits::__max; -2441: -2441: const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); -2441: -2441: const int_type __eof = _Traits::eof(); -2441: __streambuf_type* __sb = __in.rdbuf(); -2441: int_type __c = __sb->sgetc(); -2441: -2441: while (__extracted < __num - 1 -2441: && !_Traits::eq_int_type(__c, __eof) -2441: && !__ct.is(ctype_base::space, -2441: _Traits::to_char_type(__c))) -2441: { -2441: *__s++ = _Traits::to_char_type(__c); -2441: ++__extracted; -2441: __c = __sb->snextc(); -2441: } -2441: if (_Traits::eq_int_type(__c, __eof)) -2441: __err |= ios_base::eofbit; -2441: -2441: -2441: -2441: *__s = char_type(); -2441: __in.width(0); -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: __in._M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { __in._M_setstate(ios_base::badbit); } -2441: } -2441: if (!__extracted) -2441: __err |= ios_base::failbit; -2441: if (__err) -2441: __in.setstate(__err); -2441: return __in; -2441: } -2441: -2441: -2441: template -2441: basic_istream<_CharT, _Traits>& -2441: ws(basic_istream<_CharT, _Traits>& __in) -2441: { -2441: typedef basic_istream<_CharT, _Traits> __istream_type; -2441: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; -2441: typedef typename __istream_type::int_type __int_type; -2441: typedef ctype<_CharT> __ctype_type; -2441: -2441: const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); -2441: const __int_type __eof = _Traits::eof(); -2441: __streambuf_type* __sb = __in.rdbuf(); -2441: __int_type __c = __sb->sgetc(); -2441: -2441: while (!_Traits::eq_int_type(__c, __eof) -2441: && __ct.is(ctype_base::space, _Traits::to_char_type(__c))) -2441: __c = __sb->snextc(); -2441: -2441: if (_Traits::eq_int_type(__c, __eof)) -2441: __in.setstate(ios_base::eofbit); -2441: return __in; -2441: } -2441: -2441: -2441: -2441: -2441: extern template class basic_istream; -2441: extern template istream& ws(istream&); -2441: extern template istream& operator>>(istream&, char&); -2441: extern template istream& operator>>(istream&, char*); -2441: extern template istream& operator>>(istream&, unsigned char&); -2441: extern template istream& operator>>(istream&, signed char&); -2441: extern template istream& operator>>(istream&, unsigned char*); -2441: extern template istream& operator>>(istream&, signed char*); -2441: -2441: extern template istream& istream::_M_extract(unsigned short&); -2441: extern template istream& istream::_M_extract(unsigned int&); -2441: extern template istream& istream::_M_extract(long&); -2441: extern template istream& istream::_M_extract(unsigned long&); -2441: extern template istream& istream::_M_extract(bool&); -2441: -2441: extern template istream& istream::_M_extract(long long&); -2441: extern template istream& istream::_M_extract(unsigned long long&); -2441: -2441: extern template istream& istream::_M_extract(float&); -2441: extern template istream& istream::_M_extract(double&); -2441: extern template istream& istream::_M_extract(long double&); -2441: extern template istream& istream::_M_extract(void*&); -2441: -2441: extern template class basic_iostream; -2441: -2441: -2441: extern template class basic_istream; -2441: extern template wistream& ws(wistream&); -2441: extern template wistream& operator>>(wistream&, wchar_t&); -2441: extern template wistream& operator>>(wistream&, wchar_t*); -2441: -2441: extern template wistream& wistream::_M_extract(unsigned short&); -2441: extern template wistream& wistream::_M_extract(unsigned int&); -2441: extern template wistream& wistream::_M_extract(long&); -2441: extern template wistream& wistream::_M_extract(unsigned long&); -2441: extern template wistream& wistream::_M_extract(bool&); -2441: -2441: extern template wistream& wistream::_M_extract(long long&); -2441: extern template wistream& wistream::_M_extract(unsigned long long&); -2441: -2441: extern template wistream& wistream::_M_extract(float&); -2441: extern template wistream& wistream::_M_extract(double&); -2441: extern template wistream& wistream::_M_extract(long double&); -2441: extern template wistream& wistream::_M_extract(void*&); -2441: -2441: extern template class basic_iostream; -2441: -2441: -2441: -2441: -2441: } -2441: # 992 "/usr/include/c++/8/istream" 2 3 -2441: # 31 "../../src/globals_inlines.hh" 2 -2441: -2441: # 1 "/usr/include/c++/8/cctype" 1 3 -2441: # 39 "/usr/include/c++/8/cctype" 3 -2441: -2441: # 40 "/usr/include/c++/8/cctype" 3 -2441: # 33 "../../src/globals_inlines.hh" 2 -2441: -2441: -2441: -2441: # 35 "../../src/globals_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: inline dimension_type -2441: not_a_dimension() { -2441: return std::numeric_limits::max(); -2441: } -2441: -2441: inline int32_t -2441: hash_code_from_dimension(dimension_type dim) { -2441: const dimension_type divisor = 1U << (32 - 1); -2441: dim = dim % divisor; -2441: return static_cast(dim); -2441: } -2441: -2441: inline const Weightwatch_Traits::Threshold& -2441: Weightwatch_Traits::get() { -2441: return weight; -2441: } -2441: -2441: inline bool -2441: Weightwatch_Traits::less_than(const Threshold& a, const Threshold& b) { -2441: return b - a < (1ULL << (((sizeof(Threshold)) * static_cast(8)) - 1)); -2441: } -2441: -2441: inline Weightwatch_Traits::Delta -2441: Weightwatch_Traits::compute_delta(unsigned long unscaled, unsigned scale) { -2441: if ((std::numeric_limits::max() >> scale) < unscaled) { -2441: throw std::invalid_argument("PPL::Weightwatch_Traits::" -2441: "compute_delta(u, s):\n" -2441: "values of u and s cause wrap around."); -2441: } -2441: return static_cast(unscaled) << scale; -2441: } -2441: -2441: inline void -2441: Weightwatch_Traits::from_delta(Threshold& threshold, const Delta& delta) { -2441: threshold = weight + delta; -2441: } -2441: -2441: inline void -2441: maybe_abandon() { -2441: -2441: -2441: -2441: -2441: -2441: if (Weightwatch_Traits::check_function != 0) { -2441: Weightwatch_Traits::check_function(); -2441: } -2441: if (const Throwable* const p = abandon_expensive_computations) { -2441: p->throw_me(); -2441: } -2441: } -2441: -2441: inline dimension_type -2441: compute_capacity(const dimension_type requested_size, -2441: const dimension_type maximum_size) { -2441: -2441: # 92 "../../src/globals_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 92 "../../src/globals_inlines.hh" -2441: ; -2441: -2441: return (requested_size < maximum_size/2) -2441: ? (2*(requested_size + 1)) -2441: : maximum_size; -2441: -2441: -2441: -2441: -2441: } -2441: -2441: template -2441: inline typename -2441: Enable_If::value, memory_size_type>::type -2441: external_memory_in_bytes(const T&) { -2441: return 0; -2441: } -2441: -2441: template -2441: inline typename -2441: Enable_If::value, memory_size_type>::type -2441: total_memory_in_bytes(const T&) { -2441: return sizeof(T); -2441: } -2441: -2441: inline memory_size_type -2441: external_memory_in_bytes(const mpz_class& x) { -2441: return static_cast(x.get_mpz_t()[0]._mp_alloc) -2441: * 4; -2441: } -2441: -2441: inline memory_size_type -2441: total_memory_in_bytes(const mpz_class& x) { -2441: return sizeof(x) + external_memory_in_bytes(x); -2441: } -2441: -2441: inline memory_size_type -2441: external_memory_in_bytes(const mpq_class& x) { -2441: return external_memory_in_bytes(x.get_num()) -2441: + external_memory_in_bytes(x.get_den()); -2441: } -2441: -2441: inline memory_size_type -2441: total_memory_in_bytes(const mpq_class& x) { -2441: return sizeof(x) + external_memory_in_bytes(x); -2441: } -2441: -2441: inline void -2441: ascii_dump(std::ostream& s, Representation r) { -2441: if (r == DENSE) { -2441: s << "DENSE"; -2441: } -2441: else { -2441: s << "SPARSE"; -2441: } -2441: } -2441: -2441: inline bool -2441: ascii_load(std::istream& is, Representation& r) { -2441: std::string s; -2441: if (!(is >> s)) { -2441: return false; -2441: } -2441: -2441: if (s == "DENSE") { -2441: r = DENSE; -2441: return true; -2441: } -2441: if (s == "SPARSE") { -2441: r = SPARSE; -2441: return true; -2441: } -2441: return false; -2441: } -2441: -2441: inline bool -2441: is_space(char c) { -2441: return isspace(c) != 0; -2441: } -2441: -2441: template -2441: inline typename RA_Container::iterator -2441: nth_iter(RA_Container& cont, dimension_type n) { -2441: typedef typename RA_Container::difference_type diff_t; -2441: return cont.begin() + static_cast(n); -2441: } -2441: -2441: template -2441: inline typename RA_Container::const_iterator -2441: nth_iter(const RA_Container& cont, dimension_type n) { -2441: typedef typename RA_Container::difference_type diff_t; -2441: return cont.begin() + static_cast(n); -2441: } -2441: -2441: inline dimension_type -2441: least_significant_one_mask(const dimension_type i) { -2441: return i & (~i + 1U); -2441: } -2441: -2441: } -2441: # 570 "../../src/globals_defs.hh" 2 -2441: # 28 "../../src/Variable_inlines.hh" 2 -2441: -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: inline dimension_type -2441: Variable::max_space_dimension() { -2441: return not_a_dimension() - 1; -2441: } -2441: -2441: inline -2441: Variable::Variable(dimension_type i) -2441: : varid((i < max_space_dimension()) -2441: ? i -2441: : (throw std::length_error("PPL::Variable::Variable(i):\n" -2441: "i exceeds the maximum allowed " -2441: "variable identifier."), i)) { -2441: } -2441: -2441: inline dimension_type -2441: Variable::id() const { -2441: return varid; -2441: } -2441: -2441: inline dimension_type -2441: Variable::space_dimension() const { -2441: return varid + 1; -2441: } -2441: -2441: inline memory_size_type -2441: Variable::external_memory_in_bytes() const { -2441: return 0; -2441: } -2441: -2441: inline memory_size_type -2441: Variable::total_memory_in_bytes() const { -2441: return sizeof(*this) + external_memory_in_bytes(); -2441: } -2441: -2441: inline void -2441: Variable::set_output_function(output_function_type* p) { -2441: current_output_function = p; -2441: } -2441: -2441: inline Variable::output_function_type* -2441: Variable::get_output_function() { -2441: return current_output_function; -2441: } -2441: -2441: -2441: inline bool -2441: less(const Variable v, const Variable w) { -2441: return v.id() < w.id(); -2441: } -2441: -2441: inline bool -2441: Variable::Compare::operator()(const Variable x, const Variable y) const { -2441: return less(x, y); -2441: } -2441: -2441: inline void -2441: Variable::m_swap(Variable& v) { -2441: using std::swap; -2441: swap(varid, v.varid); -2441: } -2441: -2441: inline void -2441: swap(Variable& x, Variable& y) { -2441: x.m_swap(y); -2441: } -2441: -2441: } -2441: # 156 "../../src/Variable_defs.hh" 2 -2441: # 28 "../../src/Float_inlines.hh" 2 -2441: # 1 "../../src/Linear_Form_defs.hh" 1 -2441: # 28 "../../src/Linear_Form_defs.hh" -2441: # 1 "../../src/Linear_Expression_types.hh" 1 -2441: # 16 "../../src/Linear_Expression_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: class Linear_Expression; -2441: -2441: } -2441: # 29 "../../src/Linear_Form_defs.hh" 2 -2441: -2441: # 1 "../../src/Box_types.hh" 1 -2441: # 16 "../../src/Box_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: class Box; -2441: -2441: class Box_Helpers; -2441: -2441: } -2441: # 31 "../../src/Linear_Form_defs.hh" 2 -2441: # 1 "../../src/Float_defs.hh" 1 -2441: # 32 "../../src/Linear_Form_defs.hh" 2 -2441: # 1 "/usr/include/c++/8/vector" 1 3 -2441: # 58 "/usr/include/c++/8/vector" 3 -2441: -2441: # 59 "/usr/include/c++/8/vector" 3 -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/c++/8/bits/stl_uninitialized.h" 1 3 -2441: # 67 "/usr/include/c++/8/bits/stl_uninitialized.h" 3 -2441: -2441: # 67 "/usr/include/c++/8/bits/stl_uninitialized.h" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: template -2441: struct __uninitialized_copy -2441: { -2441: template -2441: static _ForwardIterator -2441: __uninit_copy(_InputIterator __first, _InputIterator __last, -2441: _ForwardIterator __result) -2441: { -2441: _ForwardIterator __cur = __result; -2441: try -2441: { -2441: for (; __first != __last; ++__first, (void)++__cur) -2441: std::_Construct(std::__addressof(*__cur), *__first); -2441: return __cur; -2441: } -2441: catch(...) -2441: { -2441: std::_Destroy(__result, __cur); -2441: throw; -2441: } -2441: } -2441: }; -2441: -2441: template<> -2441: struct __uninitialized_copy -2441: { -2441: template -2441: static _ForwardIterator -2441: __uninit_copy(_InputIterator __first, _InputIterator __last, -2441: _ForwardIterator __result) -2441: { return std::copy(__first, __last, __result); } -2441: }; -2441: # 113 "/usr/include/c++/8/bits/stl_uninitialized.h" 3 -2441: template -2441: inline _ForwardIterator -2441: uninitialized_copy(_InputIterator __first, _InputIterator __last, -2441: _ForwardIterator __result) -2441: { -2441: typedef typename iterator_traits<_InputIterator>::value_type -2441: _ValueType1; -2441: typedef typename iterator_traits<_ForwardIterator>::value_type -2441: _ValueType2; -2441: -2441: -2441: -2441: -2441: typedef typename iterator_traits<_InputIterator>::reference _RefType1; -2441: typedef typename iterator_traits<_ForwardIterator>::reference _RefType2; -2441: const bool __assignable = is_assignable<_RefType2, _RefType1>::value; -2441: -2441: -2441: return std::__uninitialized_copy<__is_trivial(_ValueType1) -2441: && __is_trivial(_ValueType2) -2441: && __assignable>:: -2441: __uninit_copy(__first, __last, __result); -2441: } -2441: -2441: -2441: template -2441: struct __uninitialized_fill -2441: { -2441: template -2441: static void -2441: __uninit_fill(_ForwardIterator __first, _ForwardIterator __last, -2441: const _Tp& __x) -2441: { -2441: _ForwardIterator __cur = __first; -2441: try -2441: { -2441: for (; __cur != __last; ++__cur) -2441: std::_Construct(std::__addressof(*__cur), __x); -2441: } -2441: catch(...) -2441: { -2441: std::_Destroy(__first, __cur); -2441: throw; -2441: } -2441: } -2441: }; -2441: -2441: template<> -2441: struct __uninitialized_fill -2441: { -2441: template -2441: static void -2441: __uninit_fill(_ForwardIterator __first, _ForwardIterator __last, -2441: const _Tp& __x) -2441: { std::fill(__first, __last, __x); } -2441: }; -2441: # 179 "/usr/include/c++/8/bits/stl_uninitialized.h" 3 -2441: template -2441: inline void -2441: uninitialized_fill(_ForwardIterator __first, _ForwardIterator __last, -2441: const _Tp& __x) -2441: { -2441: typedef typename iterator_traits<_ForwardIterator>::value_type -2441: _ValueType; -2441: -2441: -2441: -2441: -2441: const bool __assignable = is_copy_assignable<_ValueType>::value; -2441: -2441: -2441: std::__uninitialized_fill<__is_trivial(_ValueType) && __assignable>:: -2441: __uninit_fill(__first, __last, __x); -2441: } -2441: -2441: -2441: template -2441: struct __uninitialized_fill_n -2441: { -2441: template -2441: static _ForwardIterator -2441: __uninit_fill_n(_ForwardIterator __first, _Size __n, -2441: const _Tp& __x) -2441: { -2441: _ForwardIterator __cur = __first; -2441: try -2441: { -2441: for (; __n > 0; --__n, (void) ++__cur) -2441: std::_Construct(std::__addressof(*__cur), __x); -2441: return __cur; -2441: } -2441: catch(...) -2441: { -2441: std::_Destroy(__first, __cur); -2441: throw; -2441: } -2441: } -2441: }; -2441: -2441: template<> -2441: struct __uninitialized_fill_n -2441: { -2441: template -2441: static _ForwardIterator -2441: __uninit_fill_n(_ForwardIterator __first, _Size __n, -2441: const _Tp& __x) -2441: { return std::fill_n(__first, __n, __x); } -2441: }; -2441: # 242 "/usr/include/c++/8/bits/stl_uninitialized.h" 3 -2441: template -2441: inline _ForwardIterator -2441: uninitialized_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x) -2441: { -2441: typedef typename iterator_traits<_ForwardIterator>::value_type -2441: _ValueType; -2441: -2441: -2441: -2441: -2441: const bool __assignable = is_copy_assignable<_ValueType>::value; -2441: -2441: return __uninitialized_fill_n<__is_trivial(_ValueType) && __assignable>:: -2441: __uninit_fill_n(__first, __n, __x); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: _ForwardIterator -2441: __uninitialized_copy_a(_InputIterator __first, _InputIterator __last, -2441: _ForwardIterator __result, _Allocator& __alloc) -2441: { -2441: _ForwardIterator __cur = __result; -2441: try -2441: { -2441: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; -2441: for (; __first != __last; ++__first, (void)++__cur) -2441: __traits::construct(__alloc, std::__addressof(*__cur), *__first); -2441: return __cur; -2441: } -2441: catch(...) -2441: { -2441: std::_Destroy(__result, __cur, __alloc); -2441: throw; -2441: } -2441: } -2441: -2441: template -2441: inline _ForwardIterator -2441: __uninitialized_copy_a(_InputIterator __first, _InputIterator __last, -2441: _ForwardIterator __result, allocator<_Tp>&) -2441: { return std::uninitialized_copy(__first, __last, __result); } -2441: -2441: template -2441: inline _ForwardIterator -2441: __uninitialized_move_a(_InputIterator __first, _InputIterator __last, -2441: _ForwardIterator __result, _Allocator& __alloc) -2441: { -2441: return std::__uninitialized_copy_a(std::make_move_iterator(__first), -2441: std::make_move_iterator(__last), -2441: __result, __alloc); -2441: } -2441: -2441: template -2441: inline _ForwardIterator -2441: __uninitialized_move_if_noexcept_a(_InputIterator __first, -2441: _InputIterator __last, -2441: _ForwardIterator __result, -2441: _Allocator& __alloc) -2441: { -2441: return std::__uninitialized_copy_a -2441: (std::__make_move_if_noexcept_iterator(__first), -2441: std::__make_move_if_noexcept_iterator(__last), __result, __alloc); -2441: } -2441: -2441: template -2441: void -2441: __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last, -2441: const _Tp& __x, _Allocator& __alloc) -2441: { -2441: _ForwardIterator __cur = __first; -2441: try -2441: { -2441: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; -2441: for (; __cur != __last; ++__cur) -2441: __traits::construct(__alloc, std::__addressof(*__cur), __x); -2441: } -2441: catch(...) -2441: { -2441: std::_Destroy(__first, __cur, __alloc); -2441: throw; -2441: } -2441: } -2441: -2441: template -2441: inline void -2441: __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last, -2441: const _Tp& __x, allocator<_Tp2>&) -2441: { std::uninitialized_fill(__first, __last, __x); } -2441: -2441: template -2441: _ForwardIterator -2441: __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n, -2441: const _Tp& __x, _Allocator& __alloc) -2441: { -2441: _ForwardIterator __cur = __first; -2441: try -2441: { -2441: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; -2441: for (; __n > 0; --__n, (void) ++__cur) -2441: __traits::construct(__alloc, std::__addressof(*__cur), __x); -2441: return __cur; -2441: } -2441: catch(...) -2441: { -2441: std::_Destroy(__first, __cur, __alloc); -2441: throw; -2441: } -2441: } -2441: -2441: template -2441: inline _ForwardIterator -2441: __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n, -2441: const _Tp& __x, allocator<_Tp2>&) -2441: { return std::uninitialized_fill_n(__first, __n, __x); } -2441: # 378 "/usr/include/c++/8/bits/stl_uninitialized.h" 3 -2441: template -2441: inline _ForwardIterator -2441: __uninitialized_copy_move(_InputIterator1 __first1, -2441: _InputIterator1 __last1, -2441: _InputIterator2 __first2, -2441: _InputIterator2 __last2, -2441: _ForwardIterator __result, -2441: _Allocator& __alloc) -2441: { -2441: _ForwardIterator __mid = std::__uninitialized_copy_a(__first1, __last1, -2441: __result, -2441: __alloc); -2441: try -2441: { -2441: return std::__uninitialized_move_a(__first2, __last2, __mid, __alloc); -2441: } -2441: catch(...) -2441: { -2441: std::_Destroy(__result, __mid, __alloc); -2441: throw; -2441: } -2441: } -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline _ForwardIterator -2441: __uninitialized_move_copy(_InputIterator1 __first1, -2441: _InputIterator1 __last1, -2441: _InputIterator2 __first2, -2441: _InputIterator2 __last2, -2441: _ForwardIterator __result, -2441: _Allocator& __alloc) -2441: { -2441: _ForwardIterator __mid = std::__uninitialized_move_a(__first1, __last1, -2441: __result, -2441: __alloc); -2441: try -2441: { -2441: return std::__uninitialized_copy_a(__first2, __last2, __mid, __alloc); -2441: } -2441: catch(...) -2441: { -2441: std::_Destroy(__result, __mid, __alloc); -2441: throw; -2441: } -2441: } -2441: -2441: -2441: -2441: -2441: template -2441: inline _ForwardIterator -2441: __uninitialized_fill_move(_ForwardIterator __result, _ForwardIterator __mid, -2441: const _Tp& __x, _InputIterator __first, -2441: _InputIterator __last, _Allocator& __alloc) -2441: { -2441: std::__uninitialized_fill_a(__result, __mid, __x, __alloc); -2441: try -2441: { -2441: return std::__uninitialized_move_a(__first, __last, __mid, __alloc); -2441: } -2441: catch(...) -2441: { -2441: std::_Destroy(__result, __mid, __alloc); -2441: throw; -2441: } -2441: } -2441: -2441: -2441: -2441: -2441: template -2441: inline void -2441: __uninitialized_move_fill(_InputIterator __first1, _InputIterator __last1, -2441: _ForwardIterator __first2, -2441: _ForwardIterator __last2, const _Tp& __x, -2441: _Allocator& __alloc) -2441: { -2441: _ForwardIterator __mid2 = std::__uninitialized_move_a(__first1, __last1, -2441: __first2, -2441: __alloc); -2441: try -2441: { -2441: std::__uninitialized_fill_a(__mid2, __last2, __x, __alloc); -2441: } -2441: catch(...) -2441: { -2441: std::_Destroy(__first2, __mid2, __alloc); -2441: throw; -2441: } -2441: } -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct __uninitialized_default_1 -2441: { -2441: template -2441: static void -2441: __uninit_default(_ForwardIterator __first, _ForwardIterator __last) -2441: { -2441: _ForwardIterator __cur = __first; -2441: try -2441: { -2441: for (; __cur != __last; ++__cur) -2441: std::_Construct(std::__addressof(*__cur)); -2441: } -2441: catch(...) -2441: { -2441: std::_Destroy(__first, __cur); -2441: throw; -2441: } -2441: } -2441: }; -2441: -2441: template<> -2441: struct __uninitialized_default_1 -2441: { -2441: template -2441: static void -2441: __uninit_default(_ForwardIterator __first, _ForwardIterator __last) -2441: { -2441: typedef typename iterator_traits<_ForwardIterator>::value_type -2441: _ValueType; -2441: -2441: std::fill(__first, __last, _ValueType()); -2441: } -2441: }; -2441: -2441: template -2441: struct __uninitialized_default_n_1 -2441: { -2441: template -2441: static _ForwardIterator -2441: __uninit_default_n(_ForwardIterator __first, _Size __n) -2441: { -2441: _ForwardIterator __cur = __first; -2441: try -2441: { -2441: for (; __n > 0; --__n, (void) ++__cur) -2441: std::_Construct(std::__addressof(*__cur)); -2441: return __cur; -2441: } -2441: catch(...) -2441: { -2441: std::_Destroy(__first, __cur); -2441: throw; -2441: } -2441: } -2441: }; -2441: -2441: template<> -2441: struct __uninitialized_default_n_1 -2441: { -2441: template -2441: static _ForwardIterator -2441: __uninit_default_n(_ForwardIterator __first, _Size __n) -2441: { -2441: typedef typename iterator_traits<_ForwardIterator>::value_type -2441: _ValueType; -2441: -2441: return std::fill_n(__first, __n, _ValueType()); -2441: } -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: inline void -2441: __uninitialized_default(_ForwardIterator __first, -2441: _ForwardIterator __last) -2441: { -2441: typedef typename iterator_traits<_ForwardIterator>::value_type -2441: _ValueType; -2441: -2441: const bool __assignable = is_copy_assignable<_ValueType>::value; -2441: -2441: std::__uninitialized_default_1<__is_trivial(_ValueType) -2441: && __assignable>:: -2441: __uninit_default(__first, __last); -2441: } -2441: -2441: -2441: -2441: template -2441: inline _ForwardIterator -2441: __uninitialized_default_n(_ForwardIterator __first, _Size __n) -2441: { -2441: typedef typename iterator_traits<_ForwardIterator>::value_type -2441: _ValueType; -2441: -2441: const bool __assignable = is_copy_assignable<_ValueType>::value; -2441: -2441: return __uninitialized_default_n_1<__is_trivial(_ValueType) -2441: && __assignable>:: -2441: __uninit_default_n(__first, __n); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: template -2441: void -2441: __uninitialized_default_a(_ForwardIterator __first, -2441: _ForwardIterator __last, -2441: _Allocator& __alloc) -2441: { -2441: _ForwardIterator __cur = __first; -2441: try -2441: { -2441: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; -2441: for (; __cur != __last; ++__cur) -2441: __traits::construct(__alloc, std::__addressof(*__cur)); -2441: } -2441: catch(...) -2441: { -2441: std::_Destroy(__first, __cur, __alloc); -2441: throw; -2441: } -2441: } -2441: -2441: template -2441: inline void -2441: __uninitialized_default_a(_ForwardIterator __first, -2441: _ForwardIterator __last, -2441: allocator<_Tp>&) -2441: { std::__uninitialized_default(__first, __last); } -2441: -2441: -2441: -2441: -2441: -2441: template -2441: _ForwardIterator -2441: __uninitialized_default_n_a(_ForwardIterator __first, _Size __n, -2441: _Allocator& __alloc) -2441: { -2441: _ForwardIterator __cur = __first; -2441: try -2441: { -2441: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; -2441: for (; __n > 0; --__n, (void) ++__cur) -2441: __traits::construct(__alloc, std::__addressof(*__cur)); -2441: return __cur; -2441: } -2441: catch(...) -2441: { -2441: std::_Destroy(__first, __cur, __alloc); -2441: throw; -2441: } -2441: } -2441: -2441: template -2441: inline _ForwardIterator -2441: __uninitialized_default_n_a(_ForwardIterator __first, _Size __n, -2441: allocator<_Tp>&) -2441: { return std::__uninitialized_default_n(__first, __n); } -2441: -2441: template -2441: struct __uninitialized_default_novalue_1 -2441: { -2441: template -2441: static void -2441: __uninit_default_novalue(_ForwardIterator __first, -2441: _ForwardIterator __last) -2441: { -2441: _ForwardIterator __cur = __first; -2441: try -2441: { -2441: for (; __cur != __last; ++__cur) -2441: std::_Construct_novalue(std::__addressof(*__cur)); -2441: } -2441: catch(...) -2441: { -2441: std::_Destroy(__first, __cur); -2441: throw; -2441: } -2441: } -2441: }; -2441: -2441: template<> -2441: struct __uninitialized_default_novalue_1 -2441: { -2441: template -2441: static void -2441: __uninit_default_novalue(_ForwardIterator __first, -2441: _ForwardIterator __last) -2441: { -2441: } -2441: }; -2441: -2441: template -2441: struct __uninitialized_default_novalue_n_1 -2441: { -2441: template -2441: static _ForwardIterator -2441: __uninit_default_novalue_n(_ForwardIterator __first, _Size __n) -2441: { -2441: _ForwardIterator __cur = __first; -2441: try -2441: { -2441: for (; __n > 0; --__n, (void) ++__cur) -2441: std::_Construct_novalue(std::__addressof(*__cur)); -2441: return __cur; -2441: } -2441: catch(...) -2441: { -2441: std::_Destroy(__first, __cur); -2441: throw; -2441: } -2441: } -2441: }; -2441: -2441: template<> -2441: struct __uninitialized_default_novalue_n_1 -2441: { -2441: template -2441: static _ForwardIterator -2441: __uninit_default_novalue_n(_ForwardIterator __first, _Size __n) -2441: { return std::next(__first, __n); } -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: inline void -2441: __uninitialized_default_novalue(_ForwardIterator __first, -2441: _ForwardIterator __last) -2441: { -2441: typedef typename iterator_traits<_ForwardIterator>::value_type -2441: _ValueType; -2441: -2441: std::__uninitialized_default_novalue_1< -2441: is_trivially_default_constructible<_ValueType>::value>:: -2441: __uninit_default_novalue(__first, __last); -2441: } -2441: -2441: -2441: -2441: template -2441: inline _ForwardIterator -2441: __uninitialized_default_novalue_n(_ForwardIterator __first, _Size __n) -2441: { -2441: typedef typename iterator_traits<_ForwardIterator>::value_type -2441: _ValueType; -2441: -2441: return __uninitialized_default_novalue_n_1< -2441: is_trivially_default_constructible<_ValueType>::value>:: -2441: __uninit_default_novalue_n(__first, __n); -2441: } -2441: -2441: template -2441: _ForwardIterator -2441: __uninitialized_copy_n(_InputIterator __first, _Size __n, -2441: _ForwardIterator __result, input_iterator_tag) -2441: { -2441: _ForwardIterator __cur = __result; -2441: try -2441: { -2441: for (; __n > 0; --__n, (void) ++__first, ++__cur) -2441: std::_Construct(std::__addressof(*__cur), *__first); -2441: return __cur; -2441: } -2441: catch(...) -2441: { -2441: std::_Destroy(__result, __cur); -2441: throw; -2441: } -2441: } -2441: -2441: template -2441: inline _ForwardIterator -2441: __uninitialized_copy_n(_RandomAccessIterator __first, _Size __n, -2441: _ForwardIterator __result, -2441: random_access_iterator_tag) -2441: { return std::uninitialized_copy(__first, __first + __n, __result); } -2441: -2441: template -2441: pair<_InputIterator, _ForwardIterator> -2441: __uninitialized_copy_n_pair(_InputIterator __first, _Size __n, -2441: _ForwardIterator __result, input_iterator_tag) -2441: { -2441: _ForwardIterator __cur = __result; -2441: try -2441: { -2441: for (; __n > 0; --__n, (void) ++__first, ++__cur) -2441: std::_Construct(std::__addressof(*__cur), *__first); -2441: return {__first, __cur}; -2441: } -2441: catch(...) -2441: { -2441: std::_Destroy(__result, __cur); -2441: throw; -2441: } -2441: } -2441: -2441: template -2441: inline pair<_RandomAccessIterator, _ForwardIterator> -2441: __uninitialized_copy_n_pair(_RandomAccessIterator __first, _Size __n, -2441: _ForwardIterator __result, -2441: random_access_iterator_tag) -2441: { -2441: auto __second_res = uninitialized_copy(__first, __first + __n, __result); -2441: auto __first_res = std::next(__first, __n); -2441: return {__first_res, __second_res}; -2441: } -2441: # 810 "/usr/include/c++/8/bits/stl_uninitialized.h" 3 -2441: template -2441: inline _ForwardIterator -2441: uninitialized_copy_n(_InputIterator __first, _Size __n, -2441: _ForwardIterator __result) -2441: { return std::__uninitialized_copy_n(__first, __n, __result, -2441: std::__iterator_category(__first)); } -2441: -2441: template -2441: inline pair<_InputIterator, _ForwardIterator> -2441: __uninitialized_copy_n_pair(_InputIterator __first, _Size __n, -2441: _ForwardIterator __result) -2441: { -2441: return -2441: std::__uninitialized_copy_n_pair(__first, __n, __result, -2441: std::__iterator_category(__first)); -2441: } -2441: # 882 "/usr/include/c++/8/bits/stl_uninitialized.h" 3 -2441: -2441: } -2441: # 64 "/usr/include/c++/8/vector" 2 3 -2441: # 1 "/usr/include/c++/8/bits/stl_vector.h" 1 3 -2441: # 74 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: -2441: template -2441: struct _Vector_base -2441: { -2441: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template -2441: rebind<_Tp>::other _Tp_alloc_type; -2441: typedef typename __gnu_cxx::__alloc_traits<_Tp_alloc_type>::pointer -2441: pointer; -2441: -2441: struct _Vector_impl -2441: : public _Tp_alloc_type -2441: { -2441: pointer _M_start; -2441: pointer _M_finish; -2441: pointer _M_end_of_storage; -2441: -2441: _Vector_impl() -2441: : _Tp_alloc_type(), _M_start(), _M_finish(), _M_end_of_storage() -2441: { } -2441: -2441: _Vector_impl(_Tp_alloc_type const& __a) noexcept -2441: : _Tp_alloc_type(__a), _M_start(), _M_finish(), _M_end_of_storage() -2441: { } -2441: -2441: -2441: _Vector_impl(_Tp_alloc_type&& __a) noexcept -2441: : _Tp_alloc_type(std::move(__a)), -2441: _M_start(), _M_finish(), _M_end_of_storage() -2441: { } -2441: -2441: -2441: void _M_swap_data(_Vector_impl& __x) noexcept -2441: { -2441: std::swap(_M_start, __x._M_start); -2441: std::swap(_M_finish, __x._M_finish); -2441: std::swap(_M_end_of_storage, __x._M_end_of_storage); -2441: } -2441: # 231 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: }; -2441: -2441: public: -2441: typedef _Alloc allocator_type; -2441: -2441: _Tp_alloc_type& -2441: _M_get_Tp_allocator() noexcept -2441: { return *static_cast<_Tp_alloc_type*>(&this->_M_impl); } -2441: -2441: const _Tp_alloc_type& -2441: _M_get_Tp_allocator() const noexcept -2441: { return *static_cast(&this->_M_impl); } -2441: -2441: allocator_type -2441: get_allocator() const noexcept -2441: { return allocator_type(_M_get_Tp_allocator()); } -2441: -2441: _Vector_base() -2441: : _M_impl() { } -2441: -2441: _Vector_base(const allocator_type& __a) noexcept -2441: : _M_impl(__a) { } -2441: -2441: _Vector_base(size_t __n) -2441: : _M_impl() -2441: { _M_create_storage(__n); } -2441: -2441: _Vector_base(size_t __n, const allocator_type& __a) -2441: : _M_impl(__a) -2441: { _M_create_storage(__n); } -2441: -2441: -2441: _Vector_base(_Tp_alloc_type&& __a) noexcept -2441: : _M_impl(std::move(__a)) { } -2441: -2441: _Vector_base(_Vector_base&& __x) noexcept -2441: : _M_impl(std::move(__x._M_get_Tp_allocator())) -2441: { this->_M_impl._M_swap_data(__x._M_impl); } -2441: -2441: _Vector_base(_Vector_base&& __x, const allocator_type& __a) -2441: : _M_impl(__a) -2441: { -2441: if (__x.get_allocator() == __a) -2441: this->_M_impl._M_swap_data(__x._M_impl); -2441: else -2441: { -2441: size_t __n = __x._M_impl._M_finish - __x._M_impl._M_start; -2441: _M_create_storage(__n); -2441: } -2441: } -2441: -2441: -2441: ~_Vector_base() noexcept -2441: { -2441: _M_deallocate(_M_impl._M_start, -2441: _M_impl._M_end_of_storage - _M_impl._M_start); -2441: } -2441: -2441: public: -2441: _Vector_impl _M_impl; -2441: -2441: pointer -2441: _M_allocate(size_t __n) -2441: { -2441: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Tr; -2441: return __n != 0 ? _Tr::allocate(_M_impl, __n) : pointer(); -2441: } -2441: -2441: void -2441: _M_deallocate(pointer __p, size_t __n) -2441: { -2441: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Tr; -2441: if (__p) -2441: _Tr::deallocate(_M_impl, __p, __n); -2441: } -2441: -2441: private: -2441: void -2441: _M_create_storage(size_t __n) -2441: { -2441: this->_M_impl._M_start = this->_M_allocate(__n); -2441: this->_M_impl._M_finish = this->_M_impl._M_start; -2441: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; -2441: } -2441: }; -2441: # 338 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: template > -2441: class vector : protected _Vector_base<_Tp, _Alloc> -2441: { -2441: # 351 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: static_assert(is_same::type, _Tp>::value, -2441: "std::vector must have a non-const, non-volatile value_type"); -2441: -2441: -2441: -2441: -2441: -2441: -2441: typedef _Vector_base<_Tp, _Alloc> _Base; -2441: typedef typename _Base::_Tp_alloc_type _Tp_alloc_type; -2441: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Alloc_traits; -2441: -2441: public: -2441: typedef _Tp value_type; -2441: typedef typename _Base::pointer pointer; -2441: typedef typename _Alloc_traits::const_pointer const_pointer; -2441: typedef typename _Alloc_traits::reference reference; -2441: typedef typename _Alloc_traits::const_reference const_reference; -2441: typedef __gnu_cxx::__normal_iterator iterator; -2441: typedef __gnu_cxx::__normal_iterator -2441: const_iterator; -2441: typedef std::reverse_iterator const_reverse_iterator; -2441: typedef std::reverse_iterator reverse_iterator; -2441: typedef size_t size_type; -2441: typedef ptrdiff_t difference_type; -2441: typedef _Alloc allocator_type; -2441: -2441: protected: -2441: using _Base::_M_allocate; -2441: using _Base::_M_deallocate; -2441: using _Base::_M_impl; -2441: using _Base::_M_get_Tp_allocator; -2441: -2441: public: -2441: -2441: -2441: -2441: -2441: -2441: -2441: vector() -2441: -2441: noexcept(is_nothrow_default_constructible<_Alloc>::value) -2441: -2441: : _Base() { } -2441: -2441: -2441: -2441: -2441: -2441: explicit -2441: vector(const allocator_type& __a) noexcept -2441: : _Base(__a) { } -2441: # 414 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: explicit -2441: vector(size_type __n, const allocator_type& __a = allocator_type()) -2441: : _Base(__n, __a) -2441: { _M_default_initialize(__n); } -2441: # 427 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: vector(size_type __n, const value_type& __value, -2441: const allocator_type& __a = allocator_type()) -2441: : _Base(__n, __a) -2441: { _M_fill_initialize(__n, __value); } -2441: # 458 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: vector(const vector& __x) -2441: : _Base(__x.size(), -2441: _Alloc_traits::_S_select_on_copy(__x._M_get_Tp_allocator())) -2441: { -2441: this->_M_impl._M_finish = -2441: std::__uninitialized_copy_a(__x.begin(), __x.end(), -2441: this->_M_impl._M_start, -2441: _M_get_Tp_allocator()); -2441: } -2441: # 476 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: vector(vector&& __x) noexcept -2441: : _Base(std::move(__x)) { } -2441: -2441: -2441: vector(const vector& __x, const allocator_type& __a) -2441: : _Base(__x.size(), __a) -2441: { -2441: this->_M_impl._M_finish = -2441: std::__uninitialized_copy_a(__x.begin(), __x.end(), -2441: this->_M_impl._M_start, -2441: _M_get_Tp_allocator()); -2441: } -2441: -2441: -2441: vector(vector&& __rv, const allocator_type& __m) -2441: noexcept(_Alloc_traits::_S_always_equal()) -2441: : _Base(std::move(__rv), __m) -2441: { -2441: if (__rv.get_allocator() != __m) -2441: { -2441: this->_M_impl._M_finish = -2441: std::__uninitialized_move_a(__rv.begin(), __rv.end(), -2441: this->_M_impl._M_start, -2441: _M_get_Tp_allocator()); -2441: __rv.clear(); -2441: } -2441: } -2441: # 515 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: vector(initializer_list __l, -2441: const allocator_type& __a = allocator_type()) -2441: : _Base(__a) -2441: { -2441: _M_range_initialize(__l.begin(), __l.end(), -2441: random_access_iterator_tag()); -2441: } -2441: # 541 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: template> -2441: vector(_InputIterator __first, _InputIterator __last, -2441: const allocator_type& __a = allocator_type()) -2441: : _Base(__a) -2441: { _M_initialize_dispatch(__first, __last, __false_type()); } -2441: # 565 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: ~vector() noexcept -2441: { -2441: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, -2441: _M_get_Tp_allocator()); -2441: ; -2441: } -2441: # 581 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: vector& -2441: operator=(const vector& __x); -2441: # 595 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: vector& -2441: operator=(vector&& __x) noexcept(_Alloc_traits::_S_nothrow_move()) -2441: { -2441: constexpr bool __move_storage = -2441: _Alloc_traits::_S_propagate_on_move_assign() -2441: || _Alloc_traits::_S_always_equal(); -2441: _M_move_assign(std::move(__x), __bool_constant<__move_storage>()); -2441: return *this; -2441: } -2441: # 616 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: vector& -2441: operator=(initializer_list __l) -2441: { -2441: this->_M_assign_aux(__l.begin(), __l.end(), -2441: random_access_iterator_tag()); -2441: return *this; -2441: } -2441: # 635 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: void -2441: assign(size_type __n, const value_type& __val) -2441: { _M_fill_assign(__n, __val); } -2441: # 652 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: template> -2441: void -2441: assign(_InputIterator __first, _InputIterator __last) -2441: { _M_assign_dispatch(__first, __last, __false_type()); } -2441: # 680 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: void -2441: assign(initializer_list __l) -2441: { -2441: this->_M_assign_aux(__l.begin(), __l.end(), -2441: random_access_iterator_tag()); -2441: } -2441: -2441: -2441: -2441: using _Base::get_allocator; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: iterator -2441: begin() noexcept -2441: { return iterator(this->_M_impl._M_start); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_iterator -2441: begin() const noexcept -2441: { return const_iterator(this->_M_impl._M_start); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: iterator -2441: end() noexcept -2441: { return iterator(this->_M_impl._M_finish); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_iterator -2441: end() const noexcept -2441: { return const_iterator(this->_M_impl._M_finish); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: reverse_iterator -2441: rbegin() noexcept -2441: { return reverse_iterator(end()); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_reverse_iterator -2441: rbegin() const noexcept -2441: { return const_reverse_iterator(end()); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: reverse_iterator -2441: rend() noexcept -2441: { return reverse_iterator(begin()); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_reverse_iterator -2441: rend() const noexcept -2441: { return const_reverse_iterator(begin()); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_iterator -2441: cbegin() const noexcept -2441: { return const_iterator(this->_M_impl._M_start); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_iterator -2441: cend() const noexcept -2441: { return const_iterator(this->_M_impl._M_finish); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_reverse_iterator -2441: crbegin() const noexcept -2441: { return const_reverse_iterator(end()); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_reverse_iterator -2441: crend() const noexcept -2441: { return const_reverse_iterator(begin()); } -2441: -2441: -2441: -2441: -2441: size_type -2441: size() const noexcept -2441: { return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); } -2441: -2441: -2441: size_type -2441: max_size() const noexcept -2441: { return _Alloc_traits::max_size(_M_get_Tp_allocator()); } -2441: # 823 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: void -2441: resize(size_type __new_size) -2441: { -2441: if (__new_size > size()) -2441: _M_default_append(__new_size - size()); -2441: else if (__new_size < size()) -2441: _M_erase_at_end(this->_M_impl._M_start + __new_size); -2441: } -2441: # 843 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: void -2441: resize(size_type __new_size, const value_type& __x) -2441: { -2441: if (__new_size > size()) -2441: _M_fill_insert(end(), __new_size - size(), __x); -2441: else if (__new_size < size()) -2441: _M_erase_at_end(this->_M_impl._M_start + __new_size); -2441: } -2441: # 875 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: void -2441: shrink_to_fit() -2441: { _M_shrink_to_fit(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: size_type -2441: capacity() const noexcept -2441: { return size_type(this->_M_impl._M_end_of_storage -2441: - this->_M_impl._M_start); } -2441: -2441: -2441: -2441: -2441: -2441: bool -2441: empty() const noexcept -2441: { return begin() == end(); } -2441: # 914 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: void -2441: reserve(size_type __n); -2441: # 929 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: reference -2441: operator[](size_type __n) noexcept -2441: { -2441: ; -2441: return *(this->_M_impl._M_start + __n); -2441: } -2441: # 947 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: const_reference -2441: operator[](size_type __n) const noexcept -2441: { -2441: ; -2441: return *(this->_M_impl._M_start + __n); -2441: } -2441: -2441: protected: -2441: -2441: void -2441: _M_range_check(size_type __n) const -2441: { -2441: if (__n >= this->size()) -2441: __throw_out_of_range_fmt(("vector::_M_range_check: __n " "(which is %zu) >= this->size() " "(which is %zu)") -2441: -2441: , -2441: __n, this->size()); -2441: } -2441: -2441: public: -2441: # 978 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: reference -2441: at(size_type __n) -2441: { -2441: _M_range_check(__n); -2441: return (*this)[__n]; -2441: } -2441: # 996 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: const_reference -2441: at(size_type __n) const -2441: { -2441: _M_range_check(__n); -2441: return (*this)[__n]; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: reference -2441: front() noexcept -2441: { -2441: ; -2441: return *begin(); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: const_reference -2441: front() const noexcept -2441: { -2441: ; -2441: return *begin(); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: reference -2441: back() noexcept -2441: { -2441: ; -2441: return *(end() - 1); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: const_reference -2441: back() const noexcept -2441: { -2441: ; -2441: return *(end() - 1); -2441: } -2441: # 1054 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: _Tp* -2441: data() noexcept -2441: { return _M_data_ptr(this->_M_impl._M_start); } -2441: -2441: const _Tp* -2441: data() const noexcept -2441: { return _M_data_ptr(this->_M_impl._M_start); } -2441: # 1073 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: void -2441: push_back(const value_type& __x) -2441: { -2441: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) -2441: { -2441: ; -2441: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, -2441: __x); -2441: ++this->_M_impl._M_finish; -2441: ; -2441: } -2441: else -2441: _M_realloc_insert(end(), __x); -2441: } -2441: -2441: -2441: void -2441: push_back(value_type&& __x) -2441: { emplace_back(std::move(__x)); } -2441: -2441: template -2441: -2441: -2441: -2441: void -2441: -2441: emplace_back(_Args&&... __args); -2441: # 1111 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: void -2441: pop_back() noexcept -2441: { -2441: ; -2441: --this->_M_impl._M_finish; -2441: _Alloc_traits::destroy(this->_M_impl, this->_M_impl._M_finish); -2441: ; -2441: } -2441: # 1133 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: template -2441: iterator -2441: emplace(const_iterator __position, _Args&&... __args) -2441: { return _M_emplace_aux(__position, std::forward<_Args>(__args)...); } -2441: # 1149 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: iterator -2441: insert(const_iterator __position, const value_type& __x); -2441: # 1179 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: iterator -2441: insert(const_iterator __position, value_type&& __x) -2441: { return _M_insert_rval(__position, std::move(__x)); } -2441: # 1196 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: iterator -2441: insert(const_iterator __position, initializer_list __l) -2441: { -2441: auto __offset = __position - cbegin(); -2441: _M_range_insert(begin() + __offset, __l.begin(), __l.end(), -2441: std::random_access_iterator_tag()); -2441: return begin() + __offset; -2441: } -2441: # 1221 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: iterator -2441: insert(const_iterator __position, size_type __n, const value_type& __x) -2441: { -2441: difference_type __offset = __position - cbegin(); -2441: _M_fill_insert(begin() + __offset, __n, __x); -2441: return begin() + __offset; -2441: } -2441: # 1263 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: template> -2441: iterator -2441: insert(const_iterator __position, _InputIterator __first, -2441: _InputIterator __last) -2441: { -2441: difference_type __offset = __position - cbegin(); -2441: _M_insert_dispatch(begin() + __offset, -2441: __first, __last, __false_type()); -2441: return begin() + __offset; -2441: } -2441: # 1315 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: iterator -2441: -2441: erase(const_iterator __position) -2441: { return _M_erase(begin() + (__position - cbegin())); } -2441: # 1342 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: iterator -2441: -2441: erase(const_iterator __first, const_iterator __last) -2441: { -2441: const auto __beg = begin(); -2441: const auto __cbeg = cbegin(); -2441: return _M_erase(__beg + (__first - __cbeg), __beg + (__last - __cbeg)); -2441: } -2441: # 1366 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: void -2441: swap(vector& __x) noexcept -2441: { -2441: -2441: -2441: ; -2441: -2441: this->_M_impl._M_swap_data(__x._M_impl); -2441: _Alloc_traits::_S_on_swap(_M_get_Tp_allocator(), -2441: __x._M_get_Tp_allocator()); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void -2441: clear() noexcept -2441: { _M_erase_at_end(this->_M_impl._M_start); } -2441: -2441: protected: -2441: -2441: -2441: -2441: -2441: template -2441: pointer -2441: _M_allocate_and_copy(size_type __n, -2441: _ForwardIterator __first, _ForwardIterator __last) -2441: { -2441: pointer __result = this->_M_allocate(__n); -2441: try -2441: { -2441: std::__uninitialized_copy_a(__first, __last, __result, -2441: _M_get_Tp_allocator()); -2441: return __result; -2441: } -2441: catch(...) -2441: { -2441: _M_deallocate(__result, __n); -2441: throw; -2441: } -2441: } -2441: # 1419 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: template -2441: void -2441: _M_initialize_dispatch(_Integer __n, _Integer __value, __true_type) -2441: { -2441: this->_M_impl._M_start = _M_allocate(static_cast(__n)); -2441: this->_M_impl._M_end_of_storage = -2441: this->_M_impl._M_start + static_cast(__n); -2441: _M_fill_initialize(static_cast(__n), __value); -2441: } -2441: -2441: -2441: template -2441: void -2441: _M_initialize_dispatch(_InputIterator __first, _InputIterator __last, -2441: __false_type) -2441: { -2441: typedef typename std::iterator_traits<_InputIterator>:: -2441: iterator_category _IterCategory; -2441: _M_range_initialize(__first, __last, _IterCategory()); -2441: } -2441: -2441: -2441: template -2441: void -2441: _M_range_initialize(_InputIterator __first, _InputIterator __last, -2441: std::input_iterator_tag) -2441: { -2441: try { -2441: for (; __first != __last; ++__first) -2441: -2441: emplace_back(*__first); -2441: -2441: -2441: -2441: } catch(...) { -2441: clear(); -2441: throw; -2441: } -2441: } -2441: -2441: -2441: template -2441: void -2441: _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last, -2441: std::forward_iterator_tag) -2441: { -2441: const size_type __n = std::distance(__first, __last); -2441: this->_M_impl._M_start = this->_M_allocate(__n); -2441: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; -2441: this->_M_impl._M_finish = -2441: std::__uninitialized_copy_a(__first, __last, -2441: this->_M_impl._M_start, -2441: _M_get_Tp_allocator()); -2441: } -2441: -2441: -2441: -2441: void -2441: _M_fill_initialize(size_type __n, const value_type& __value) -2441: { -2441: this->_M_impl._M_finish = -2441: std::__uninitialized_fill_n_a(this->_M_impl._M_start, __n, __value, -2441: _M_get_Tp_allocator()); -2441: } -2441: -2441: -2441: -2441: void -2441: _M_default_initialize(size_type __n) -2441: { -2441: this->_M_impl._M_finish = -2441: std::__uninitialized_default_n_a(this->_M_impl._M_start, __n, -2441: _M_get_Tp_allocator()); -2441: } -2441: # 1502 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: template -2441: void -2441: _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) -2441: { _M_fill_assign(__n, __val); } -2441: -2441: -2441: template -2441: void -2441: _M_assign_dispatch(_InputIterator __first, _InputIterator __last, -2441: __false_type) -2441: { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } -2441: -2441: -2441: template -2441: void -2441: _M_assign_aux(_InputIterator __first, _InputIterator __last, -2441: std::input_iterator_tag); -2441: -2441: -2441: template -2441: void -2441: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, -2441: std::forward_iterator_tag); -2441: -2441: -2441: -2441: void -2441: _M_fill_assign(size_type __n, const value_type& __val); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: void -2441: _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val, -2441: __true_type) -2441: { _M_fill_insert(__pos, __n, __val); } -2441: -2441: -2441: template -2441: void -2441: _M_insert_dispatch(iterator __pos, _InputIterator __first, -2441: _InputIterator __last, __false_type) -2441: { -2441: _M_range_insert(__pos, __first, __last, -2441: std::__iterator_category(__first)); -2441: } -2441: -2441: -2441: template -2441: void -2441: _M_range_insert(iterator __pos, _InputIterator __first, -2441: _InputIterator __last, std::input_iterator_tag); -2441: -2441: -2441: template -2441: void -2441: _M_range_insert(iterator __pos, _ForwardIterator __first, -2441: _ForwardIterator __last, std::forward_iterator_tag); -2441: -2441: -2441: -2441: void -2441: _M_fill_insert(iterator __pos, size_type __n, const value_type& __x); -2441: -2441: -2441: -2441: void -2441: _M_default_append(size_type __n); -2441: -2441: bool -2441: _M_shrink_to_fit(); -2441: # 1589 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: struct _Temporary_value -2441: { -2441: template -2441: explicit -2441: _Temporary_value(vector* __vec, _Args&&... __args) : _M_this(__vec) -2441: { -2441: _Alloc_traits::construct(_M_this->_M_impl, _M_ptr(), -2441: std::forward<_Args>(__args)...); -2441: } -2441: -2441: ~_Temporary_value() -2441: { _Alloc_traits::destroy(_M_this->_M_impl, _M_ptr()); } -2441: -2441: value_type& -2441: _M_val() { return *reinterpret_cast<_Tp*>(&__buf); } -2441: -2441: private: -2441: pointer -2441: _M_ptr() { return pointer_traits::pointer_to(_M_val()); } -2441: -2441: vector* _M_this; -2441: typename aligned_storage::type __buf; -2441: }; -2441: -2441: -2441: -2441: template -2441: void -2441: _M_insert_aux(iterator __position, _Arg&& __arg); -2441: -2441: template -2441: void -2441: _M_realloc_insert(iterator __position, _Args&&... __args); -2441: -2441: -2441: iterator -2441: _M_insert_rval(const_iterator __position, value_type&& __v); -2441: -2441: -2441: template -2441: iterator -2441: _M_emplace_aux(const_iterator __position, _Args&&... __args); -2441: -2441: -2441: iterator -2441: _M_emplace_aux(const_iterator __position, value_type&& __v) -2441: { return _M_insert_rval(__position, std::move(__v)); } -2441: -2441: -2441: -2441: size_type -2441: _M_check_len(size_type __n, const char* __s) const -2441: { -2441: if (max_size() - size() < __n) -2441: __throw_length_error((__s)); -2441: -2441: const size_type __len = size() + std::max(size(), __n); -2441: return (__len < size() || __len > max_size()) ? max_size() : __len; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: void -2441: _M_erase_at_end(pointer __pos) noexcept -2441: { -2441: if (size_type __n = this->_M_impl._M_finish - __pos) -2441: { -2441: std::_Destroy(__pos, this->_M_impl._M_finish, -2441: _M_get_Tp_allocator()); -2441: this->_M_impl._M_finish = __pos; -2441: ; -2441: } -2441: } -2441: -2441: iterator -2441: _M_erase(iterator __position); -2441: -2441: iterator -2441: _M_erase(iterator __first, iterator __last); -2441: -2441: -2441: private: -2441: -2441: -2441: -2441: void -2441: _M_move_assign(vector&& __x, std::true_type) noexcept -2441: { -2441: vector __tmp(get_allocator()); -2441: this->_M_impl._M_swap_data(__tmp._M_impl); -2441: this->_M_impl._M_swap_data(__x._M_impl); -2441: std::__alloc_on_move(_M_get_Tp_allocator(), __x._M_get_Tp_allocator()); -2441: } -2441: -2441: -2441: -2441: void -2441: _M_move_assign(vector&& __x, std::false_type) -2441: { -2441: if (__x._M_get_Tp_allocator() == this->_M_get_Tp_allocator()) -2441: _M_move_assign(std::move(__x), std::true_type()); -2441: else -2441: { -2441: -2441: -2441: this->assign(std::__make_move_if_noexcept_iterator(__x.begin()), -2441: std::__make_move_if_noexcept_iterator(__x.end())); -2441: __x.clear(); -2441: } -2441: } -2441: -2441: -2441: template -2441: _Up* -2441: _M_data_ptr(_Up* __ptr) const noexcept -2441: { return __ptr; } -2441: -2441: -2441: template -2441: typename std::pointer_traits<_Ptr>::element_type* -2441: _M_data_ptr(_Ptr __ptr) const -2441: { return empty() ? nullptr : std::__to_address(__ptr); } -2441: # 1729 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: }; -2441: # 1751 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: template -2441: inline bool -2441: operator==(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) -2441: { return (__x.size() == __y.size() -2441: && std::equal(__x.begin(), __x.end(), __y.begin())); } -2441: # 1768 "/usr/include/c++/8/bits/stl_vector.h" 3 -2441: template -2441: inline bool -2441: operator<(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) -2441: { return std::lexicographical_compare(__x.begin(), __x.end(), -2441: __y.begin(), __y.end()); } -2441: -2441: -2441: template -2441: inline bool -2441: operator!=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) -2441: { return !(__x == __y); } -2441: -2441: -2441: template -2441: inline bool -2441: operator>(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) -2441: { return __y < __x; } -2441: -2441: -2441: template -2441: inline bool -2441: operator<=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) -2441: { return !(__y < __x); } -2441: -2441: -2441: template -2441: inline bool -2441: operator>=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) -2441: { return !(__x < __y); } -2441: -2441: -2441: template -2441: inline void -2441: swap(vector<_Tp, _Alloc>& __x, vector<_Tp, _Alloc>& __y) -2441: noexcept(noexcept(__x.swap(__y))) -2441: { __x.swap(__y); } -2441: -2441: -2441: -2441: } -2441: # 65 "/usr/include/c++/8/vector" 2 3 -2441: # 1 "/usr/include/c++/8/bits/stl_bvector.h" 1 3 -2441: # 64 "/usr/include/c++/8/bits/stl_bvector.h" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: typedef unsigned long _Bit_type; -2441: enum { _S_word_bit = int(8 * sizeof(_Bit_type)) }; -2441: -2441: struct _Bit_reference -2441: { -2441: _Bit_type * _M_p; -2441: _Bit_type _M_mask; -2441: -2441: _Bit_reference(_Bit_type * __x, _Bit_type __y) -2441: : _M_p(__x), _M_mask(__y) { } -2441: -2441: _Bit_reference() noexcept : _M_p(0), _M_mask(0) { } -2441: -2441: operator bool() const noexcept -2441: { return !!(*_M_p & _M_mask); } -2441: -2441: _Bit_reference& -2441: operator=(bool __x) noexcept -2441: { -2441: if (__x) -2441: *_M_p |= _M_mask; -2441: else -2441: *_M_p &= ~_M_mask; -2441: return *this; -2441: } -2441: -2441: _Bit_reference& -2441: operator=(const _Bit_reference& __x) noexcept -2441: { return *this = bool(__x); } -2441: -2441: bool -2441: operator==(const _Bit_reference& __x) const -2441: { return bool(*this) == bool(__x); } -2441: -2441: bool -2441: operator<(const _Bit_reference& __x) const -2441: { return !bool(*this) && bool(__x); } -2441: -2441: void -2441: flip() noexcept -2441: { *_M_p ^= _M_mask; } -2441: }; -2441: -2441: -2441: inline void -2441: swap(_Bit_reference __x, _Bit_reference __y) noexcept -2441: { -2441: bool __tmp = __x; -2441: __x = __y; -2441: __y = __tmp; -2441: } -2441: -2441: inline void -2441: swap(_Bit_reference __x, bool& __y) noexcept -2441: { -2441: bool __tmp = __x; -2441: __x = __y; -2441: __y = __tmp; -2441: } -2441: -2441: inline void -2441: swap(bool& __x, _Bit_reference __y) noexcept -2441: { -2441: bool __tmp = __x; -2441: __x = __y; -2441: __y = __tmp; -2441: } -2441: -2441: -2441: struct _Bit_iterator_base -2441: : public std::iterator -2441: { -2441: _Bit_type * _M_p; -2441: unsigned int _M_offset; -2441: -2441: _Bit_iterator_base(_Bit_type * __x, unsigned int __y) -2441: : _M_p(__x), _M_offset(__y) { } -2441: -2441: void -2441: _M_bump_up() -2441: { -2441: if (_M_offset++ == int(_S_word_bit) - 1) -2441: { -2441: _M_offset = 0; -2441: ++_M_p; -2441: } -2441: } -2441: -2441: void -2441: _M_bump_down() -2441: { -2441: if (_M_offset-- == 0) -2441: { -2441: _M_offset = int(_S_word_bit) - 1; -2441: --_M_p; -2441: } -2441: } -2441: -2441: void -2441: _M_incr(ptrdiff_t __i) -2441: { -2441: difference_type __n = __i + _M_offset; -2441: _M_p += __n / int(_S_word_bit); -2441: __n = __n % int(_S_word_bit); -2441: if (__n < 0) -2441: { -2441: __n += int(_S_word_bit); -2441: --_M_p; -2441: } -2441: _M_offset = static_cast(__n); -2441: } -2441: -2441: bool -2441: operator==(const _Bit_iterator_base& __i) const -2441: { return _M_p == __i._M_p && _M_offset == __i._M_offset; } -2441: -2441: bool -2441: operator<(const _Bit_iterator_base& __i) const -2441: { -2441: return _M_p < __i._M_p -2441: || (_M_p == __i._M_p && _M_offset < __i._M_offset); -2441: } -2441: -2441: bool -2441: operator!=(const _Bit_iterator_base& __i) const -2441: { return !(*this == __i); } -2441: -2441: bool -2441: operator>(const _Bit_iterator_base& __i) const -2441: { return __i < *this; } -2441: -2441: bool -2441: operator<=(const _Bit_iterator_base& __i) const -2441: { return !(__i < *this); } -2441: -2441: bool -2441: operator>=(const _Bit_iterator_base& __i) const -2441: { return !(*this < __i); } -2441: }; -2441: -2441: inline ptrdiff_t -2441: operator-(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) -2441: { -2441: return (int(_S_word_bit) * (__x._M_p - __y._M_p) -2441: + __x._M_offset - __y._M_offset); -2441: } -2441: -2441: struct _Bit_iterator : public _Bit_iterator_base -2441: { -2441: typedef _Bit_reference reference; -2441: typedef _Bit_reference* pointer; -2441: typedef _Bit_iterator iterator; -2441: -2441: _Bit_iterator() : _Bit_iterator_base(0, 0) { } -2441: -2441: _Bit_iterator(_Bit_type * __x, unsigned int __y) -2441: : _Bit_iterator_base(__x, __y) { } -2441: -2441: iterator -2441: _M_const_cast() const -2441: { return *this; } -2441: -2441: reference -2441: operator*() const -2441: { return reference(_M_p, 1UL << _M_offset); } -2441: -2441: iterator& -2441: operator++() -2441: { -2441: _M_bump_up(); -2441: return *this; -2441: } -2441: -2441: iterator -2441: operator++(int) -2441: { -2441: iterator __tmp = *this; -2441: _M_bump_up(); -2441: return __tmp; -2441: } -2441: -2441: iterator& -2441: operator--() -2441: { -2441: _M_bump_down(); -2441: return *this; -2441: } -2441: -2441: iterator -2441: operator--(int) -2441: { -2441: iterator __tmp = *this; -2441: _M_bump_down(); -2441: return __tmp; -2441: } -2441: -2441: iterator& -2441: operator+=(difference_type __i) -2441: { -2441: _M_incr(__i); -2441: return *this; -2441: } -2441: -2441: iterator& -2441: operator-=(difference_type __i) -2441: { -2441: *this += -__i; -2441: return *this; -2441: } -2441: -2441: iterator -2441: operator+(difference_type __i) const -2441: { -2441: iterator __tmp = *this; -2441: return __tmp += __i; -2441: } -2441: -2441: iterator -2441: operator-(difference_type __i) const -2441: { -2441: iterator __tmp = *this; -2441: return __tmp -= __i; -2441: } -2441: -2441: reference -2441: operator[](difference_type __i) const -2441: { return *(*this + __i); } -2441: }; -2441: -2441: inline _Bit_iterator -2441: operator+(ptrdiff_t __n, const _Bit_iterator& __x) -2441: { return __x + __n; } -2441: -2441: struct _Bit_const_iterator : public _Bit_iterator_base -2441: { -2441: typedef bool reference; -2441: typedef bool const_reference; -2441: typedef const bool* pointer; -2441: typedef _Bit_const_iterator const_iterator; -2441: -2441: _Bit_const_iterator() : _Bit_iterator_base(0, 0) { } -2441: -2441: _Bit_const_iterator(_Bit_type * __x, unsigned int __y) -2441: : _Bit_iterator_base(__x, __y) { } -2441: -2441: _Bit_const_iterator(const _Bit_iterator& __x) -2441: : _Bit_iterator_base(__x._M_p, __x._M_offset) { } -2441: -2441: _Bit_iterator -2441: _M_const_cast() const -2441: { return _Bit_iterator(_M_p, _M_offset); } -2441: -2441: const_reference -2441: operator*() const -2441: { return _Bit_reference(_M_p, 1UL << _M_offset); } -2441: -2441: const_iterator& -2441: operator++() -2441: { -2441: _M_bump_up(); -2441: return *this; -2441: } -2441: -2441: const_iterator -2441: operator++(int) -2441: { -2441: const_iterator __tmp = *this; -2441: _M_bump_up(); -2441: return __tmp; -2441: } -2441: -2441: const_iterator& -2441: operator--() -2441: { -2441: _M_bump_down(); -2441: return *this; -2441: } -2441: -2441: const_iterator -2441: operator--(int) -2441: { -2441: const_iterator __tmp = *this; -2441: _M_bump_down(); -2441: return __tmp; -2441: } -2441: -2441: const_iterator& -2441: operator+=(difference_type __i) -2441: { -2441: _M_incr(__i); -2441: return *this; -2441: } -2441: -2441: const_iterator& -2441: operator-=(difference_type __i) -2441: { -2441: *this += -__i; -2441: return *this; -2441: } -2441: -2441: const_iterator -2441: operator+(difference_type __i) const -2441: { -2441: const_iterator __tmp = *this; -2441: return __tmp += __i; -2441: } -2441: -2441: const_iterator -2441: operator-(difference_type __i) const -2441: { -2441: const_iterator __tmp = *this; -2441: return __tmp -= __i; -2441: } -2441: -2441: const_reference -2441: operator[](difference_type __i) const -2441: { return *(*this + __i); } -2441: }; -2441: -2441: inline _Bit_const_iterator -2441: operator+(ptrdiff_t __n, const _Bit_const_iterator& __x) -2441: { return __x + __n; } -2441: -2441: inline void -2441: __fill_bvector(_Bit_type * __v, -2441: unsigned int __first, unsigned int __last, bool __x) -2441: { -2441: const _Bit_type __fmask = ~0ul << __first; -2441: const _Bit_type __lmask = ~0ul >> (_S_word_bit - __last); -2441: const _Bit_type __mask = __fmask & __lmask; -2441: -2441: if (__x) -2441: *__v |= __mask; -2441: else -2441: *__v &= ~__mask; -2441: } -2441: -2441: inline void -2441: fill(_Bit_iterator __first, _Bit_iterator __last, const bool& __x) -2441: { -2441: if (__first._M_p != __last._M_p) -2441: { -2441: _Bit_type* __first_p = __first._M_p; -2441: if (__first._M_offset != 0) -2441: __fill_bvector(__first_p++, __first._M_offset, _S_word_bit, __x); -2441: -2441: __builtin_memset(__first_p, __x ? ~0 : 0, -2441: (__last._M_p - __first_p) * sizeof(_Bit_type)); -2441: -2441: if (__last._M_offset != 0) -2441: __fill_bvector(__last._M_p, 0, __last._M_offset, __x); -2441: } -2441: else if (__first._M_offset != __last._M_offset) -2441: __fill_bvector(__first._M_p, __first._M_offset, __last._M_offset, __x); -2441: } -2441: -2441: template -2441: struct _Bvector_base -2441: { -2441: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template -2441: rebind<_Bit_type>::other _Bit_alloc_type; -2441: typedef typename __gnu_cxx::__alloc_traits<_Bit_alloc_type> -2441: _Bit_alloc_traits; -2441: typedef typename _Bit_alloc_traits::pointer _Bit_pointer; -2441: -2441: struct _Bvector_impl_data -2441: { -2441: _Bit_iterator _M_start; -2441: _Bit_iterator _M_finish; -2441: _Bit_pointer _M_end_of_storage; -2441: -2441: _Bvector_impl_data() noexcept -2441: : _M_start(), _M_finish(), _M_end_of_storage() -2441: { } -2441: -2441: -2441: _Bvector_impl_data(_Bvector_impl_data&& __x) noexcept -2441: : _M_start(__x._M_start), _M_finish(__x._M_finish) -2441: , _M_end_of_storage(__x._M_end_of_storage) -2441: { __x._M_reset(); } -2441: -2441: void -2441: _M_move_data(_Bvector_impl_data&& __x) noexcept -2441: { -2441: this->_M_start = __x._M_start; -2441: this->_M_finish = __x._M_finish; -2441: this->_M_end_of_storage = __x._M_end_of_storage; -2441: __x._M_reset(); -2441: } -2441: -2441: -2441: void -2441: _M_reset() noexcept -2441: { -2441: _M_start = _M_finish = _Bit_iterator(); -2441: _M_end_of_storage = _Bit_pointer(); -2441: } -2441: }; -2441: -2441: struct _Bvector_impl -2441: : public _Bit_alloc_type, public _Bvector_impl_data -2441: { -2441: public: -2441: _Bvector_impl() noexcept(is_nothrow_default_constructible<_Bit_alloc_type>::value) -2441: -2441: : _Bit_alloc_type() -2441: { } -2441: -2441: _Bvector_impl(const _Bit_alloc_type& __a) noexcept -2441: : _Bit_alloc_type(__a) -2441: { } -2441: -2441: -2441: _Bvector_impl(_Bvector_impl&&) = default; -2441: -2441: -2441: _Bit_type* -2441: _M_end_addr() const noexcept -2441: { -2441: if (this->_M_end_of_storage) -2441: return std::__addressof(this->_M_end_of_storage[-1]) + 1; -2441: return 0; -2441: } -2441: }; -2441: -2441: public: -2441: typedef _Alloc allocator_type; -2441: -2441: _Bit_alloc_type& -2441: _M_get_Bit_allocator() noexcept -2441: { return this->_M_impl; } -2441: -2441: const _Bit_alloc_type& -2441: _M_get_Bit_allocator() const noexcept -2441: { return this->_M_impl; } -2441: -2441: allocator_type -2441: get_allocator() const noexcept -2441: { return allocator_type(_M_get_Bit_allocator()); } -2441: -2441: -2441: _Bvector_base() = default; -2441: -2441: -2441: -2441: -2441: _Bvector_base(const allocator_type& __a) -2441: : _M_impl(__a) { } -2441: -2441: -2441: _Bvector_base(_Bvector_base&&) = default; -2441: -2441: -2441: ~_Bvector_base() -2441: { this->_M_deallocate(); } -2441: -2441: protected: -2441: _Bvector_impl _M_impl; -2441: -2441: _Bit_pointer -2441: _M_allocate(size_t __n) -2441: { return _Bit_alloc_traits::allocate(_M_impl, _S_nword(__n)); } -2441: -2441: void -2441: _M_deallocate() -2441: { -2441: if (_M_impl._M_start._M_p) -2441: { -2441: const size_t __n = _M_impl._M_end_addr() - _M_impl._M_start._M_p; -2441: _Bit_alloc_traits::deallocate(_M_impl, -2441: _M_impl._M_end_of_storage - __n, -2441: __n); -2441: _M_impl._M_reset(); -2441: } -2441: } -2441: -2441: -2441: void -2441: _M_move_data(_Bvector_base&& __x) noexcept -2441: { _M_impl._M_move_data(std::move(__x._M_impl)); } -2441: -2441: -2441: static size_t -2441: _S_nword(size_t __n) -2441: { return (__n + int(_S_word_bit) - 1) / int(_S_word_bit); } -2441: }; -2441: -2441: -2441: -2441: } -2441: -2441: -2441: -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: # 587 "/usr/include/c++/8/bits/stl_bvector.h" 3 -2441: template -2441: class vector : protected _Bvector_base<_Alloc> -2441: { -2441: typedef _Bvector_base<_Alloc> _Base; -2441: typedef typename _Base::_Bit_pointer _Bit_pointer; -2441: typedef typename _Base::_Bit_alloc_traits _Bit_alloc_traits; -2441: -2441: -2441: friend struct std::hash; -2441: -2441: -2441: public: -2441: typedef bool value_type; -2441: typedef size_t size_type; -2441: typedef ptrdiff_t difference_type; -2441: typedef _Bit_reference reference; -2441: typedef bool const_reference; -2441: typedef _Bit_reference* pointer; -2441: typedef const bool* const_pointer; -2441: typedef _Bit_iterator iterator; -2441: typedef _Bit_const_iterator const_iterator; -2441: typedef std::reverse_iterator const_reverse_iterator; -2441: typedef std::reverse_iterator reverse_iterator; -2441: typedef _Alloc allocator_type; -2441: -2441: allocator_type -2441: get_allocator() const -2441: { return _Base::get_allocator(); } -2441: -2441: protected: -2441: using _Base::_M_allocate; -2441: using _Base::_M_deallocate; -2441: using _Base::_S_nword; -2441: using _Base::_M_get_Bit_allocator; -2441: -2441: public: -2441: -2441: vector() = default; -2441: -2441: -2441: -2441: -2441: explicit -2441: vector(const allocator_type& __a) -2441: : _Base(__a) { } -2441: -2441: -2441: explicit -2441: vector(size_type __n, const allocator_type& __a = allocator_type()) -2441: : vector(__n, false, __a) -2441: { } -2441: -2441: vector(size_type __n, const bool& __value, -2441: const allocator_type& __a = allocator_type()) -2441: -2441: -2441: -2441: -2441: -2441: : _Base(__a) -2441: { -2441: _M_initialize(__n); -2441: _M_initialize_value(__value); -2441: } -2441: -2441: vector(const vector& __x) -2441: : _Base(_Bit_alloc_traits::_S_select_on_copy(__x._M_get_Bit_allocator())) -2441: { -2441: _M_initialize(__x.size()); -2441: _M_copy_aligned(__x.begin(), __x.end(), this->_M_impl._M_start); -2441: } -2441: -2441: -2441: vector(vector&&) = default; -2441: -2441: vector(vector&& __x, const allocator_type& __a) -2441: noexcept(_Bit_alloc_traits::_S_always_equal()) -2441: : _Base(__a) -2441: { -2441: if (__x.get_allocator() == __a) -2441: this->_M_move_data(std::move(__x)); -2441: else -2441: { -2441: _M_initialize(__x.size()); -2441: _M_copy_aligned(__x.begin(), __x.end(), begin()); -2441: __x.clear(); -2441: } -2441: } -2441: -2441: vector(const vector& __x, const allocator_type& __a) -2441: : _Base(__a) -2441: { -2441: _M_initialize(__x.size()); -2441: _M_copy_aligned(__x.begin(), __x.end(), this->_M_impl._M_start); -2441: } -2441: -2441: vector(initializer_list __l, -2441: const allocator_type& __a = allocator_type()) -2441: : _Base(__a) -2441: { -2441: _M_initialize_range(__l.begin(), __l.end(), -2441: random_access_iterator_tag()); -2441: } -2441: -2441: -2441: -2441: template> -2441: vector(_InputIterator __first, _InputIterator __last, -2441: const allocator_type& __a = allocator_type()) -2441: : _Base(__a) -2441: { _M_initialize_dispatch(__first, __last, __false_type()); } -2441: # 710 "/usr/include/c++/8/bits/stl_bvector.h" 3 -2441: ~vector() noexcept { } -2441: -2441: vector& -2441: operator=(const vector& __x) -2441: { -2441: if (&__x == this) -2441: return *this; -2441: -2441: if (_Bit_alloc_traits::_S_propagate_on_copy_assign()) -2441: { -2441: if (this->_M_get_Bit_allocator() != __x._M_get_Bit_allocator()) -2441: { -2441: this->_M_deallocate(); -2441: std::__alloc_on_copy(_M_get_Bit_allocator(), -2441: __x._M_get_Bit_allocator()); -2441: _M_initialize(__x.size()); -2441: } -2441: else -2441: std::__alloc_on_copy(_M_get_Bit_allocator(), -2441: __x._M_get_Bit_allocator()); -2441: } -2441: -2441: if (__x.size() > capacity()) -2441: { -2441: this->_M_deallocate(); -2441: _M_initialize(__x.size()); -2441: } -2441: this->_M_impl._M_finish = _M_copy_aligned(__x.begin(), __x.end(), -2441: begin()); -2441: return *this; -2441: } -2441: -2441: -2441: vector& -2441: operator=(vector&& __x) noexcept(_Bit_alloc_traits::_S_nothrow_move()) -2441: { -2441: if (_Bit_alloc_traits::_S_propagate_on_move_assign() -2441: || this->_M_get_Bit_allocator() == __x._M_get_Bit_allocator()) -2441: { -2441: this->_M_deallocate(); -2441: this->_M_move_data(std::move(__x)); -2441: std::__alloc_on_move(_M_get_Bit_allocator(), -2441: __x._M_get_Bit_allocator()); -2441: } -2441: else -2441: { -2441: if (__x.size() > capacity()) -2441: { -2441: this->_M_deallocate(); -2441: _M_initialize(__x.size()); -2441: } -2441: this->_M_impl._M_finish = _M_copy_aligned(__x.begin(), __x.end(), -2441: begin()); -2441: __x.clear(); -2441: } -2441: return *this; -2441: } -2441: -2441: vector& -2441: operator=(initializer_list __l) -2441: { -2441: this->assign (__l.begin(), __l.end()); -2441: return *this; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: void -2441: assign(size_type __n, const bool& __x) -2441: { _M_fill_assign(__n, __x); } -2441: -2441: -2441: template> -2441: void -2441: assign(_InputIterator __first, _InputIterator __last) -2441: { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } -2441: # 801 "/usr/include/c++/8/bits/stl_bvector.h" 3 -2441: void -2441: assign(initializer_list __l) -2441: { _M_assign_aux(__l.begin(), __l.end(), random_access_iterator_tag()); } -2441: -2441: -2441: iterator -2441: begin() noexcept -2441: { return this->_M_impl._M_start; } -2441: -2441: const_iterator -2441: begin() const noexcept -2441: { return this->_M_impl._M_start; } -2441: -2441: iterator -2441: end() noexcept -2441: { return this->_M_impl._M_finish; } -2441: -2441: const_iterator -2441: end() const noexcept -2441: { return this->_M_impl._M_finish; } -2441: -2441: reverse_iterator -2441: rbegin() noexcept -2441: { return reverse_iterator(end()); } -2441: -2441: const_reverse_iterator -2441: rbegin() const noexcept -2441: { return const_reverse_iterator(end()); } -2441: -2441: reverse_iterator -2441: rend() noexcept -2441: { return reverse_iterator(begin()); } -2441: -2441: const_reverse_iterator -2441: rend() const noexcept -2441: { return const_reverse_iterator(begin()); } -2441: -2441: -2441: const_iterator -2441: cbegin() const noexcept -2441: { return this->_M_impl._M_start; } -2441: -2441: const_iterator -2441: cend() const noexcept -2441: { return this->_M_impl._M_finish; } -2441: -2441: const_reverse_iterator -2441: crbegin() const noexcept -2441: { return const_reverse_iterator(end()); } -2441: -2441: const_reverse_iterator -2441: crend() const noexcept -2441: { return const_reverse_iterator(begin()); } -2441: -2441: -2441: size_type -2441: size() const noexcept -2441: { return size_type(end() - begin()); } -2441: -2441: size_type -2441: max_size() const noexcept -2441: { -2441: const size_type __isize = -2441: __gnu_cxx::__numeric_traits::__max -2441: - int(_S_word_bit) + 1; -2441: const size_type __asize -2441: = _Bit_alloc_traits::max_size(_M_get_Bit_allocator()); -2441: return (__asize <= __isize / int(_S_word_bit) -2441: ? __asize * int(_S_word_bit) : __isize); -2441: } -2441: -2441: size_type -2441: capacity() const noexcept -2441: { return size_type(const_iterator(this->_M_impl._M_end_addr(), 0) -2441: - begin()); } -2441: -2441: bool -2441: empty() const noexcept -2441: { return begin() == end(); } -2441: -2441: reference -2441: operator[](size_type __n) -2441: { -2441: return *iterator(this->_M_impl._M_start._M_p -2441: + __n / int(_S_word_bit), __n % int(_S_word_bit)); -2441: } -2441: -2441: const_reference -2441: operator[](size_type __n) const -2441: { -2441: return *const_iterator(this->_M_impl._M_start._M_p -2441: + __n / int(_S_word_bit), __n % int(_S_word_bit)); -2441: } -2441: -2441: protected: -2441: void -2441: _M_range_check(size_type __n) const -2441: { -2441: if (__n >= this->size()) -2441: __throw_out_of_range_fmt(("vector::_M_range_check: __n " "(which is %zu) >= this->size() " "(which is %zu)") -2441: -2441: , -2441: __n, this->size()); -2441: } -2441: -2441: public: -2441: reference -2441: at(size_type __n) -2441: { _M_range_check(__n); return (*this)[__n]; } -2441: -2441: const_reference -2441: at(size_type __n) const -2441: { _M_range_check(__n); return (*this)[__n]; } -2441: -2441: void -2441: reserve(size_type __n) -2441: { -2441: if (__n > max_size()) -2441: __throw_length_error(("vector::reserve")); -2441: if (capacity() < __n) -2441: _M_reallocate(__n); -2441: } -2441: -2441: reference -2441: front() -2441: { return *begin(); } -2441: -2441: const_reference -2441: front() const -2441: { return *begin(); } -2441: -2441: reference -2441: back() -2441: { return *(end() - 1); } -2441: -2441: const_reference -2441: back() const -2441: { return *(end() - 1); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: void -2441: data() noexcept { } -2441: -2441: void -2441: push_back(bool __x) -2441: { -2441: if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr()) -2441: *this->_M_impl._M_finish++ = __x; -2441: else -2441: _M_insert_aux(end(), __x); -2441: } -2441: -2441: void -2441: swap(vector& __x) noexcept -2441: { -2441: std::swap(this->_M_impl._M_start, __x._M_impl._M_start); -2441: std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish); -2441: std::swap(this->_M_impl._M_end_of_storage, -2441: __x._M_impl._M_end_of_storage); -2441: _Bit_alloc_traits::_S_on_swap(_M_get_Bit_allocator(), -2441: __x._M_get_Bit_allocator()); -2441: } -2441: -2441: -2441: static void -2441: swap(reference __x, reference __y) noexcept -2441: { -2441: bool __tmp = __x; -2441: __x = __y; -2441: __y = __tmp; -2441: } -2441: -2441: iterator -2441: -2441: insert(const_iterator __position, const bool& __x = bool()) -2441: -2441: -2441: -2441: { -2441: const difference_type __n = __position - begin(); -2441: if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr() -2441: && __position == end()) -2441: *this->_M_impl._M_finish++ = __x; -2441: else -2441: _M_insert_aux(__position._M_const_cast(), __x); -2441: return begin() + __n; -2441: } -2441: -2441: -2441: template> -2441: iterator -2441: insert(const_iterator __position, -2441: _InputIterator __first, _InputIterator __last) -2441: { -2441: difference_type __offset = __position - cbegin(); -2441: _M_insert_dispatch(__position._M_const_cast(), -2441: __first, __last, __false_type()); -2441: return begin() + __offset; -2441: } -2441: # 1017 "/usr/include/c++/8/bits/stl_bvector.h" 3 -2441: iterator -2441: insert(const_iterator __position, size_type __n, const bool& __x) -2441: { -2441: difference_type __offset = __position - cbegin(); -2441: _M_fill_insert(__position._M_const_cast(), __n, __x); -2441: return begin() + __offset; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: iterator -2441: insert(const_iterator __p, initializer_list __l) -2441: { return this->insert(__p, __l.begin(), __l.end()); } -2441: -2441: -2441: void -2441: pop_back() -2441: { --this->_M_impl._M_finish; } -2441: -2441: iterator -2441: -2441: erase(const_iterator __position) -2441: -2441: -2441: -2441: { return _M_erase(__position._M_const_cast()); } -2441: -2441: iterator -2441: -2441: erase(const_iterator __first, const_iterator __last) -2441: -2441: -2441: -2441: { return _M_erase(__first._M_const_cast(), __last._M_const_cast()); } -2441: -2441: void -2441: resize(size_type __new_size, bool __x = bool()) -2441: { -2441: if (__new_size < size()) -2441: _M_erase_at_end(begin() + difference_type(__new_size)); -2441: else -2441: insert(end(), __new_size - size(), __x); -2441: } -2441: -2441: -2441: void -2441: shrink_to_fit() -2441: { _M_shrink_to_fit(); } -2441: -2441: -2441: void -2441: flip() noexcept -2441: { -2441: _Bit_type * const __end = this->_M_impl._M_end_addr(); -2441: for (_Bit_type * __p = this->_M_impl._M_start._M_p; __p != __end; ++__p) -2441: *__p = ~*__p; -2441: } -2441: -2441: void -2441: clear() noexcept -2441: { _M_erase_at_end(begin()); } -2441: -2441: -2441: template -2441: -2441: -2441: -2441: void -2441: -2441: emplace_back(_Args&&... __args) -2441: { -2441: push_back(bool(__args...)); -2441: -2441: -2441: -2441: } -2441: -2441: template -2441: iterator -2441: emplace(const_iterator __pos, _Args&&... __args) -2441: { return insert(__pos, bool(__args...)); } -2441: -2441: -2441: protected: -2441: -2441: iterator -2441: _M_copy_aligned(const_iterator __first, const_iterator __last, -2441: iterator __result) -2441: { -2441: _Bit_type* __q = std::copy(__first._M_p, __last._M_p, __result._M_p); -2441: return std::copy(const_iterator(__last._M_p, 0), __last, -2441: iterator(__q, 0)); -2441: } -2441: -2441: void -2441: _M_initialize(size_type __n) -2441: { -2441: if (__n) -2441: { -2441: _Bit_pointer __q = this->_M_allocate(__n); -2441: this->_M_impl._M_end_of_storage = __q + _S_nword(__n); -2441: this->_M_impl._M_start = iterator(std::__addressof(*__q), 0); -2441: } -2441: else -2441: { -2441: this->_M_impl._M_end_of_storage = _Bit_pointer(); -2441: this->_M_impl._M_start = iterator(0, 0); -2441: } -2441: this->_M_impl._M_finish = this->_M_impl._M_start + difference_type(__n); -2441: -2441: } -2441: -2441: void -2441: _M_initialize_value(bool __x) -2441: { -2441: if (_Bit_type* __p = this->_M_impl._M_start._M_p) -2441: __builtin_memset(__p, __x ? ~0 : 0, -2441: (this->_M_impl._M_end_addr() - __p) -2441: * sizeof(_Bit_type)); -2441: } -2441: -2441: void -2441: _M_reallocate(size_type __n); -2441: -2441: -2441: bool -2441: _M_shrink_to_fit(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: void -2441: _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type) -2441: { -2441: _M_initialize(static_cast(__n)); -2441: _M_initialize_value(__x); -2441: } -2441: -2441: template -2441: void -2441: _M_initialize_dispatch(_InputIterator __first, _InputIterator __last, -2441: __false_type) -2441: { _M_initialize_range(__first, __last, -2441: std::__iterator_category(__first)); } -2441: -2441: template -2441: void -2441: _M_initialize_range(_InputIterator __first, _InputIterator __last, -2441: std::input_iterator_tag) -2441: { -2441: for (; __first != __last; ++__first) -2441: push_back(*__first); -2441: } -2441: -2441: template -2441: void -2441: _M_initialize_range(_ForwardIterator __first, _ForwardIterator __last, -2441: std::forward_iterator_tag) -2441: { -2441: const size_type __n = std::distance(__first, __last); -2441: _M_initialize(__n); -2441: std::copy(__first, __last, this->_M_impl._M_start); -2441: } -2441: # 1203 "/usr/include/c++/8/bits/stl_bvector.h" 3 -2441: void -2441: _M_fill_assign(size_t __n, bool __x) -2441: { -2441: if (__n > size()) -2441: { -2441: _M_initialize_value(__x); -2441: insert(end(), __n - size(), __x); -2441: } -2441: else -2441: { -2441: _M_erase_at_end(begin() + __n); -2441: _M_initialize_value(__x); -2441: } -2441: } -2441: -2441: template -2441: void -2441: _M_assign_aux(_InputIterator __first, _InputIterator __last, -2441: std::input_iterator_tag) -2441: { -2441: iterator __cur = begin(); -2441: for (; __first != __last && __cur != end(); ++__cur, ++__first) -2441: *__cur = *__first; -2441: if (__first == __last) -2441: _M_erase_at_end(__cur); -2441: else -2441: insert(end(), __first, __last); -2441: } -2441: -2441: template -2441: void -2441: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, -2441: std::forward_iterator_tag) -2441: { -2441: const size_type __len = std::distance(__first, __last); -2441: if (__len < size()) -2441: _M_erase_at_end(std::copy(__first, __last, begin())); -2441: else -2441: { -2441: _ForwardIterator __mid = __first; -2441: std::advance(__mid, size()); -2441: std::copy(__first, __mid, begin()); -2441: insert(end(), __mid, __last); -2441: } -2441: } -2441: -2441: -2441: -2441: -2441: -2441: template -2441: void -2441: _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __x, -2441: __true_type) -2441: { _M_fill_insert(__pos, __n, __x); } -2441: -2441: template -2441: void -2441: _M_insert_dispatch(iterator __pos, -2441: _InputIterator __first, _InputIterator __last, -2441: __false_type) -2441: { _M_insert_range(__pos, __first, __last, -2441: std::__iterator_category(__first)); } -2441: -2441: void -2441: _M_fill_insert(iterator __position, size_type __n, bool __x); -2441: -2441: template -2441: void -2441: _M_insert_range(iterator __pos, _InputIterator __first, -2441: _InputIterator __last, std::input_iterator_tag) -2441: { -2441: for (; __first != __last; ++__first) -2441: { -2441: __pos = insert(__pos, *__first); -2441: ++__pos; -2441: } -2441: } -2441: -2441: template -2441: void -2441: _M_insert_range(iterator __position, _ForwardIterator __first, -2441: _ForwardIterator __last, std::forward_iterator_tag); -2441: -2441: void -2441: _M_insert_aux(iterator __position, bool __x); -2441: -2441: size_type -2441: _M_check_len(size_type __n, const char* __s) const -2441: { -2441: if (max_size() - size() < __n) -2441: __throw_length_error((__s)); -2441: -2441: const size_type __len = size() + std::max(size(), __n); -2441: return (__len < size() || __len > max_size()) ? max_size() : __len; -2441: } -2441: -2441: void -2441: _M_erase_at_end(iterator __pos) -2441: { this->_M_impl._M_finish = __pos; } -2441: -2441: iterator -2441: _M_erase(iterator __pos); -2441: -2441: iterator -2441: _M_erase(iterator __first, iterator __last); -2441: }; -2441: -2441: -2441: -2441: } -2441: -2441: -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: -2441: template -2441: struct hash> -2441: : public __hash_base> -2441: { -2441: size_t -2441: operator()(const std::vector&) const noexcept; -2441: }; -2441: -2441: -2441: } -2441: # 66 "/usr/include/c++/8/vector" 2 3 -2441: -2441: -2441: -2441: # 1 "/usr/include/c++/8/bits/vector.tcc" 1 3 -2441: # 59 "/usr/include/c++/8/bits/vector.tcc" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: template -2441: void -2441: vector<_Tp, _Alloc>:: -2441: reserve(size_type __n) -2441: { -2441: if (__n > this->max_size()) -2441: __throw_length_error(("vector::reserve")); -2441: if (this->capacity() < __n) -2441: { -2441: const size_type __old_size = size(); -2441: pointer __tmp = _M_allocate_and_copy(__n, -2441: std::__make_move_if_noexcept_iterator(this->_M_impl._M_start), -2441: std::__make_move_if_noexcept_iterator(this->_M_impl._M_finish)); -2441: ; -2441: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, -2441: _M_get_Tp_allocator()); -2441: _M_deallocate(this->_M_impl._M_start, -2441: this->_M_impl._M_end_of_storage -2441: - this->_M_impl._M_start); -2441: this->_M_impl._M_start = __tmp; -2441: this->_M_impl._M_finish = __tmp + __old_size; -2441: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; -2441: } -2441: } -2441: -2441: -2441: template -2441: template -2441: -2441: -2441: -2441: void -2441: -2441: vector<_Tp, _Alloc>:: -2441: emplace_back(_Args&&... __args) -2441: { -2441: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) -2441: { -2441: ; -2441: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, -2441: std::forward<_Args>(__args)...); -2441: ++this->_M_impl._M_finish; -2441: ; -2441: } -2441: else -2441: _M_realloc_insert(end(), std::forward<_Args>(__args)...); -2441: -2441: -2441: -2441: } -2441: -2441: -2441: template -2441: typename vector<_Tp, _Alloc>::iterator -2441: vector<_Tp, _Alloc>:: -2441: -2441: insert(const_iterator __position, const value_type& __x) -2441: -2441: -2441: -2441: { -2441: const size_type __n = __position - begin(); -2441: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) -2441: if (__position == end()) -2441: { -2441: ; -2441: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, -2441: __x); -2441: ++this->_M_impl._M_finish; -2441: ; -2441: } -2441: else -2441: { -2441: -2441: const auto __pos = begin() + (__position - cbegin()); -2441: -2441: -2441: _Temporary_value __x_copy(this, __x); -2441: _M_insert_aux(__pos, std::move(__x_copy._M_val())); -2441: -2441: -2441: -2441: } -2441: else -2441: -2441: _M_realloc_insert(begin() + (__position - cbegin()), __x); -2441: -2441: -2441: -2441: -2441: return iterator(this->_M_impl._M_start + __n); -2441: } -2441: -2441: template -2441: typename vector<_Tp, _Alloc>::iterator -2441: vector<_Tp, _Alloc>:: -2441: _M_erase(iterator __position) -2441: { -2441: if (__position + 1 != end()) -2441: std::move(__position + 1, end(), __position); -2441: --this->_M_impl._M_finish; -2441: _Alloc_traits::destroy(this->_M_impl, this->_M_impl._M_finish); -2441: ; -2441: return __position; -2441: } -2441: -2441: template -2441: typename vector<_Tp, _Alloc>::iterator -2441: vector<_Tp, _Alloc>:: -2441: _M_erase(iterator __first, iterator __last) -2441: { -2441: if (__first != __last) -2441: { -2441: if (__last != end()) -2441: std::move(__last, end(), __first); -2441: _M_erase_at_end(__first.base() + (end() - __last)); -2441: } -2441: return __first; -2441: } -2441: -2441: template -2441: vector<_Tp, _Alloc>& -2441: vector<_Tp, _Alloc>:: -2441: operator=(const vector<_Tp, _Alloc>& __x) -2441: { -2441: if (&__x != this) -2441: { -2441: ; -2441: -2441: if (_Alloc_traits::_S_propagate_on_copy_assign()) -2441: { -2441: if (!_Alloc_traits::_S_always_equal() -2441: && _M_get_Tp_allocator() != __x._M_get_Tp_allocator()) -2441: { -2441: -2441: this->clear(); -2441: _M_deallocate(this->_M_impl._M_start, -2441: this->_M_impl._M_end_of_storage -2441: - this->_M_impl._M_start); -2441: this->_M_impl._M_start = nullptr; -2441: this->_M_impl._M_finish = nullptr; -2441: this->_M_impl._M_end_of_storage = nullptr; -2441: } -2441: std::__alloc_on_copy(_M_get_Tp_allocator(), -2441: __x._M_get_Tp_allocator()); -2441: } -2441: -2441: const size_type __xlen = __x.size(); -2441: if (__xlen > capacity()) -2441: { -2441: pointer __tmp = _M_allocate_and_copy(__xlen, __x.begin(), -2441: __x.end()); -2441: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, -2441: _M_get_Tp_allocator()); -2441: _M_deallocate(this->_M_impl._M_start, -2441: this->_M_impl._M_end_of_storage -2441: - this->_M_impl._M_start); -2441: this->_M_impl._M_start = __tmp; -2441: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __xlen; -2441: } -2441: else if (size() >= __xlen) -2441: { -2441: std::_Destroy(std::copy(__x.begin(), __x.end(), begin()), -2441: end(), _M_get_Tp_allocator()); -2441: } -2441: else -2441: { -2441: std::copy(__x._M_impl._M_start, __x._M_impl._M_start + size(), -2441: this->_M_impl._M_start); -2441: std::__uninitialized_copy_a(__x._M_impl._M_start + size(), -2441: __x._M_impl._M_finish, -2441: this->_M_impl._M_finish, -2441: _M_get_Tp_allocator()); -2441: } -2441: this->_M_impl._M_finish = this->_M_impl._M_start + __xlen; -2441: } -2441: return *this; -2441: } -2441: -2441: template -2441: void -2441: vector<_Tp, _Alloc>:: -2441: _M_fill_assign(size_t __n, const value_type& __val) -2441: { -2441: if (__n > capacity()) -2441: { -2441: vector __tmp(__n, __val, _M_get_Tp_allocator()); -2441: __tmp._M_impl._M_swap_data(this->_M_impl); -2441: } -2441: else if (__n > size()) -2441: { -2441: std::fill(begin(), end(), __val); -2441: const size_type __add = __n - size(); -2441: ; -2441: this->_M_impl._M_finish = -2441: std::__uninitialized_fill_n_a(this->_M_impl._M_finish, -2441: __add, __val, _M_get_Tp_allocator()); -2441: ; -2441: } -2441: else -2441: _M_erase_at_end(std::fill_n(this->_M_impl._M_start, __n, __val)); -2441: } -2441: -2441: template -2441: template -2441: void -2441: vector<_Tp, _Alloc>:: -2441: _M_assign_aux(_InputIterator __first, _InputIterator __last, -2441: std::input_iterator_tag) -2441: { -2441: pointer __cur(this->_M_impl._M_start); -2441: for (; __first != __last && __cur != this->_M_impl._M_finish; -2441: ++__cur, ++__first) -2441: *__cur = *__first; -2441: if (__first == __last) -2441: _M_erase_at_end(__cur); -2441: else -2441: _M_range_insert(end(), __first, __last, -2441: std::__iterator_category(__first)); -2441: } -2441: -2441: template -2441: template -2441: void -2441: vector<_Tp, _Alloc>:: -2441: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, -2441: std::forward_iterator_tag) -2441: { -2441: const size_type __len = std::distance(__first, __last); -2441: -2441: if (__len > capacity()) -2441: { -2441: pointer __tmp(_M_allocate_and_copy(__len, __first, __last)); -2441: ; -2441: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, -2441: _M_get_Tp_allocator()); -2441: _M_deallocate(this->_M_impl._M_start, -2441: this->_M_impl._M_end_of_storage -2441: - this->_M_impl._M_start); -2441: this->_M_impl._M_start = __tmp; -2441: this->_M_impl._M_finish = this->_M_impl._M_start + __len; -2441: this->_M_impl._M_end_of_storage = this->_M_impl._M_finish; -2441: } -2441: else if (size() >= __len) -2441: _M_erase_at_end(std::copy(__first, __last, this->_M_impl._M_start)); -2441: else -2441: { -2441: _ForwardIterator __mid = __first; -2441: std::advance(__mid, size()); -2441: std::copy(__first, __mid, this->_M_impl._M_start); -2441: const size_type __attribute__((__unused__)) __n = __len - size(); -2441: ; -2441: this->_M_impl._M_finish = -2441: std::__uninitialized_copy_a(__mid, __last, -2441: this->_M_impl._M_finish, -2441: _M_get_Tp_allocator()); -2441: ; -2441: } -2441: } -2441: -2441: -2441: template -2441: auto -2441: vector<_Tp, _Alloc>:: -2441: _M_insert_rval(const_iterator __position, value_type&& __v) -> iterator -2441: { -2441: const auto __n = __position - cbegin(); -2441: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) -2441: if (__position == cend()) -2441: { -2441: ; -2441: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, -2441: std::move(__v)); -2441: ++this->_M_impl._M_finish; -2441: ; -2441: } -2441: else -2441: _M_insert_aux(begin() + __n, std::move(__v)); -2441: else -2441: _M_realloc_insert(begin() + __n, std::move(__v)); -2441: -2441: return iterator(this->_M_impl._M_start + __n); -2441: } -2441: -2441: template -2441: template -2441: auto -2441: vector<_Tp, _Alloc>:: -2441: _M_emplace_aux(const_iterator __position, _Args&&... __args) -2441: -> iterator -2441: { -2441: const auto __n = __position - cbegin(); -2441: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) -2441: if (__position == cend()) -2441: { -2441: ; -2441: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, -2441: std::forward<_Args>(__args)...); -2441: ++this->_M_impl._M_finish; -2441: ; -2441: } -2441: else -2441: { -2441: -2441: -2441: -2441: _Temporary_value __tmp(this, std::forward<_Args>(__args)...); -2441: _M_insert_aux(begin() + __n, std::move(__tmp._M_val())); -2441: } -2441: else -2441: _M_realloc_insert(begin() + __n, std::forward<_Args>(__args)...); -2441: -2441: return iterator(this->_M_impl._M_start + __n); -2441: } -2441: -2441: template -2441: template -2441: void -2441: vector<_Tp, _Alloc>:: -2441: _M_insert_aux(iterator __position, _Arg&& __arg) -2441: -2441: -2441: -2441: -2441: -2441: -2441: { -2441: ; -2441: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, -2441: std::move(*(this->_M_impl._M_finish - 1))); -2441: ++this->_M_impl._M_finish; -2441: ; -2441: -2441: -2441: -2441: std::move_backward(__position.base(), this->_M_impl._M_finish - 2, this->_M_impl._M_finish - 1) -2441: -2441: ; -2441: -2441: -2441: -2441: *__position = std::forward<_Arg>(__arg); -2441: -2441: } -2441: -2441: -2441: template -2441: template -2441: void -2441: vector<_Tp, _Alloc>:: -2441: _M_realloc_insert(iterator __position, _Args&&... __args) -2441: -2441: -2441: -2441: -2441: -2441: -2441: { -2441: const size_type __len = -2441: _M_check_len(size_type(1), "vector::_M_realloc_insert"); -2441: pointer __old_start = this->_M_impl._M_start; -2441: pointer __old_finish = this->_M_impl._M_finish; -2441: const size_type __elems_before = __position - begin(); -2441: pointer __new_start(this->_M_allocate(__len)); -2441: pointer __new_finish(__new_start); -2441: try -2441: { -2441: -2441: -2441: -2441: -2441: -2441: _Alloc_traits::construct(this->_M_impl, -2441: __new_start + __elems_before, -2441: -2441: std::forward<_Args>(__args)...); -2441: -2441: -2441: -2441: __new_finish = pointer(); -2441: -2441: __new_finish -2441: = std::__uninitialized_move_if_noexcept_a -2441: (__old_start, __position.base(), -2441: __new_start, _M_get_Tp_allocator()); -2441: -2441: ++__new_finish; -2441: -2441: __new_finish -2441: = std::__uninitialized_move_if_noexcept_a -2441: (__position.base(), __old_finish, -2441: __new_finish, _M_get_Tp_allocator()); -2441: } -2441: catch(...) -2441: { -2441: if (!__new_finish) -2441: _Alloc_traits::destroy(this->_M_impl, -2441: __new_start + __elems_before); -2441: else -2441: std::_Destroy(__new_start, __new_finish, _M_get_Tp_allocator()); -2441: _M_deallocate(__new_start, __len); -2441: throw; -2441: } -2441: ; -2441: std::_Destroy(__old_start, __old_finish, _M_get_Tp_allocator()); -2441: _M_deallocate(__old_start, -2441: this->_M_impl._M_end_of_storage - __old_start); -2441: this->_M_impl._M_start = __new_start; -2441: this->_M_impl._M_finish = __new_finish; -2441: this->_M_impl._M_end_of_storage = __new_start + __len; -2441: } -2441: -2441: template -2441: void -2441: vector<_Tp, _Alloc>:: -2441: _M_fill_insert(iterator __position, size_type __n, const value_type& __x) -2441: { -2441: if (__n != 0) -2441: { -2441: if (size_type(this->_M_impl._M_end_of_storage -2441: - this->_M_impl._M_finish) >= __n) -2441: { -2441: -2441: -2441: -2441: _Temporary_value __tmp(this, __x); -2441: value_type& __x_copy = __tmp._M_val(); -2441: -2441: const size_type __elems_after = end() - __position; -2441: pointer __old_finish(this->_M_impl._M_finish); -2441: if (__elems_after > __n) -2441: { -2441: ; -2441: std::__uninitialized_move_a(this->_M_impl._M_finish - __n, -2441: this->_M_impl._M_finish, -2441: this->_M_impl._M_finish, -2441: _M_get_Tp_allocator()); -2441: this->_M_impl._M_finish += __n; -2441: ; -2441: std::move_backward(__position.base(), __old_finish - __n, __old_finish) -2441: ; -2441: std::fill(__position.base(), __position.base() + __n, -2441: __x_copy); -2441: } -2441: else -2441: { -2441: ; -2441: this->_M_impl._M_finish = -2441: std::__uninitialized_fill_n_a(this->_M_impl._M_finish, -2441: __n - __elems_after, -2441: __x_copy, -2441: _M_get_Tp_allocator()); -2441: ; -2441: std::__uninitialized_move_a(__position.base(), __old_finish, -2441: this->_M_impl._M_finish, -2441: _M_get_Tp_allocator()); -2441: this->_M_impl._M_finish += __elems_after; -2441: ; -2441: std::fill(__position.base(), __old_finish, __x_copy); -2441: } -2441: } -2441: else -2441: { -2441: const size_type __len = -2441: _M_check_len(__n, "vector::_M_fill_insert"); -2441: const size_type __elems_before = __position - begin(); -2441: pointer __new_start(this->_M_allocate(__len)); -2441: pointer __new_finish(__new_start); -2441: try -2441: { -2441: -2441: std::__uninitialized_fill_n_a(__new_start + __elems_before, -2441: __n, __x, -2441: _M_get_Tp_allocator()); -2441: __new_finish = pointer(); -2441: -2441: __new_finish -2441: = std::__uninitialized_move_if_noexcept_a -2441: (this->_M_impl._M_start, __position.base(), -2441: __new_start, _M_get_Tp_allocator()); -2441: -2441: __new_finish += __n; -2441: -2441: __new_finish -2441: = std::__uninitialized_move_if_noexcept_a -2441: (__position.base(), this->_M_impl._M_finish, -2441: __new_finish, _M_get_Tp_allocator()); -2441: } -2441: catch(...) -2441: { -2441: if (!__new_finish) -2441: std::_Destroy(__new_start + __elems_before, -2441: __new_start + __elems_before + __n, -2441: _M_get_Tp_allocator()); -2441: else -2441: std::_Destroy(__new_start, __new_finish, -2441: _M_get_Tp_allocator()); -2441: _M_deallocate(__new_start, __len); -2441: throw; -2441: } -2441: ; -2441: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, -2441: _M_get_Tp_allocator()); -2441: _M_deallocate(this->_M_impl._M_start, -2441: this->_M_impl._M_end_of_storage -2441: - this->_M_impl._M_start); -2441: this->_M_impl._M_start = __new_start; -2441: this->_M_impl._M_finish = __new_finish; -2441: this->_M_impl._M_end_of_storage = __new_start + __len; -2441: } -2441: } -2441: } -2441: -2441: -2441: template -2441: void -2441: vector<_Tp, _Alloc>:: -2441: _M_default_append(size_type __n) -2441: { -2441: if (__n != 0) -2441: { -2441: const size_type __size = size(); -2441: size_type __navail = size_type(this->_M_impl._M_end_of_storage -2441: - this->_M_impl._M_finish); -2441: -2441: if (__size > max_size() || __navail > max_size() - __size) -2441: __builtin_unreachable(); -2441: -2441: if (__navail >= __n) -2441: { -2441: ; -2441: this->_M_impl._M_finish = -2441: std::__uninitialized_default_n_a(this->_M_impl._M_finish, -2441: __n, _M_get_Tp_allocator()); -2441: ; -2441: } -2441: else -2441: { -2441: const size_type __len = -2441: _M_check_len(__n, "vector::_M_default_append"); -2441: pointer __new_start(this->_M_allocate(__len)); -2441: pointer __destroy_from = pointer(); -2441: try -2441: { -2441: std::__uninitialized_default_n_a(__new_start + __size, -2441: __n, _M_get_Tp_allocator()); -2441: __destroy_from = __new_start + __size; -2441: std::__uninitialized_move_if_noexcept_a( -2441: this->_M_impl._M_start, this->_M_impl._M_finish, -2441: __new_start, _M_get_Tp_allocator()); -2441: } -2441: catch(...) -2441: { -2441: if (__destroy_from) -2441: std::_Destroy(__destroy_from, __destroy_from + __n, -2441: _M_get_Tp_allocator()); -2441: _M_deallocate(__new_start, __len); -2441: throw; -2441: } -2441: ; -2441: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, -2441: _M_get_Tp_allocator()); -2441: _M_deallocate(this->_M_impl._M_start, -2441: this->_M_impl._M_end_of_storage -2441: - this->_M_impl._M_start); -2441: this->_M_impl._M_start = __new_start; -2441: this->_M_impl._M_finish = __new_start + __size + __n; -2441: this->_M_impl._M_end_of_storage = __new_start + __len; -2441: } -2441: } -2441: } -2441: -2441: template -2441: bool -2441: vector<_Tp, _Alloc>:: -2441: _M_shrink_to_fit() -2441: { -2441: if (capacity() == size()) -2441: return false; -2441: ; -2441: return std::__shrink_to_fit_aux::_S_do_it(*this); -2441: } -2441: -2441: -2441: template -2441: template -2441: void -2441: vector<_Tp, _Alloc>:: -2441: _M_range_insert(iterator __pos, _InputIterator __first, -2441: _InputIterator __last, std::input_iterator_tag) -2441: { -2441: if (__pos == end()) -2441: { -2441: for (; __first != __last; ++__first) -2441: insert(end(), *__first); -2441: } -2441: else if (__first != __last) -2441: { -2441: vector __tmp(__first, __last, _M_get_Tp_allocator()); -2441: insert(__pos, -2441: std::make_move_iterator(__tmp.begin()), -2441: std::make_move_iterator(__tmp.end())); -2441: } -2441: } -2441: -2441: template -2441: template -2441: void -2441: vector<_Tp, _Alloc>:: -2441: _M_range_insert(iterator __position, _ForwardIterator __first, -2441: _ForwardIterator __last, std::forward_iterator_tag) -2441: { -2441: if (__first != __last) -2441: { -2441: const size_type __n = std::distance(__first, __last); -2441: if (size_type(this->_M_impl._M_end_of_storage -2441: - this->_M_impl._M_finish) >= __n) -2441: { -2441: const size_type __elems_after = end() - __position; -2441: pointer __old_finish(this->_M_impl._M_finish); -2441: if (__elems_after > __n) -2441: { -2441: ; -2441: std::__uninitialized_move_a(this->_M_impl._M_finish - __n, -2441: this->_M_impl._M_finish, -2441: this->_M_impl._M_finish, -2441: _M_get_Tp_allocator()); -2441: this->_M_impl._M_finish += __n; -2441: ; -2441: std::move_backward(__position.base(), __old_finish - __n, __old_finish) -2441: ; -2441: std::copy(__first, __last, __position); -2441: } -2441: else -2441: { -2441: _ForwardIterator __mid = __first; -2441: std::advance(__mid, __elems_after); -2441: ; -2441: std::__uninitialized_copy_a(__mid, __last, -2441: this->_M_impl._M_finish, -2441: _M_get_Tp_allocator()); -2441: this->_M_impl._M_finish += __n - __elems_after; -2441: ; -2441: std::__uninitialized_move_a(__position.base(), -2441: __old_finish, -2441: this->_M_impl._M_finish, -2441: _M_get_Tp_allocator()); -2441: this->_M_impl._M_finish += __elems_after; -2441: ; -2441: std::copy(__first, __mid, __position); -2441: } -2441: } -2441: else -2441: { -2441: const size_type __len = -2441: _M_check_len(__n, "vector::_M_range_insert"); -2441: pointer __new_start(this->_M_allocate(__len)); -2441: pointer __new_finish(__new_start); -2441: try -2441: { -2441: __new_finish -2441: = std::__uninitialized_move_if_noexcept_a -2441: (this->_M_impl._M_start, __position.base(), -2441: __new_start, _M_get_Tp_allocator()); -2441: __new_finish -2441: = std::__uninitialized_copy_a(__first, __last, -2441: __new_finish, -2441: _M_get_Tp_allocator()); -2441: __new_finish -2441: = std::__uninitialized_move_if_noexcept_a -2441: (__position.base(), this->_M_impl._M_finish, -2441: __new_finish, _M_get_Tp_allocator()); -2441: } -2441: catch(...) -2441: { -2441: std::_Destroy(__new_start, __new_finish, -2441: _M_get_Tp_allocator()); -2441: _M_deallocate(__new_start, __len); -2441: throw; -2441: } -2441: ; -2441: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, -2441: _M_get_Tp_allocator()); -2441: _M_deallocate(this->_M_impl._M_start, -2441: this->_M_impl._M_end_of_storage -2441: - this->_M_impl._M_start); -2441: this->_M_impl._M_start = __new_start; -2441: this->_M_impl._M_finish = __new_finish; -2441: this->_M_impl._M_end_of_storage = __new_start + __len; -2441: } -2441: } -2441: } -2441: -2441: -2441: -2441: template -2441: void -2441: vector:: -2441: _M_reallocate(size_type __n) -2441: { -2441: _Bit_pointer __q = this->_M_allocate(__n); -2441: iterator __start(std::__addressof(*__q), 0); -2441: iterator __finish(_M_copy_aligned(begin(), end(), __start)); -2441: this->_M_deallocate(); -2441: this->_M_impl._M_start = __start; -2441: this->_M_impl._M_finish = __finish; -2441: this->_M_impl._M_end_of_storage = __q + _S_nword(__n); -2441: } -2441: -2441: template -2441: void -2441: vector:: -2441: _M_fill_insert(iterator __position, size_type __n, bool __x) -2441: { -2441: if (__n == 0) -2441: return; -2441: if (capacity() - size() >= __n) -2441: { -2441: std::copy_backward(__position, end(), -2441: this->_M_impl._M_finish + difference_type(__n)); -2441: std::fill(__position, __position + difference_type(__n), __x); -2441: this->_M_impl._M_finish += difference_type(__n); -2441: } -2441: else -2441: { -2441: const size_type __len = -2441: _M_check_len(__n, "vector::_M_fill_insert"); -2441: _Bit_pointer __q = this->_M_allocate(__len); -2441: iterator __start(std::__addressof(*__q), 0); -2441: iterator __i = _M_copy_aligned(begin(), __position, __start); -2441: std::fill(__i, __i + difference_type(__n), __x); -2441: iterator __finish = std::copy(__position, end(), -2441: __i + difference_type(__n)); -2441: this->_M_deallocate(); -2441: this->_M_impl._M_end_of_storage = __q + _S_nword(__len); -2441: this->_M_impl._M_start = __start; -2441: this->_M_impl._M_finish = __finish; -2441: } -2441: } -2441: -2441: template -2441: template -2441: void -2441: vector:: -2441: _M_insert_range(iterator __position, _ForwardIterator __first, -2441: _ForwardIterator __last, std::forward_iterator_tag) -2441: { -2441: if (__first != __last) -2441: { -2441: size_type __n = std::distance(__first, __last); -2441: if (capacity() - size() >= __n) -2441: { -2441: std::copy_backward(__position, end(), -2441: this->_M_impl._M_finish -2441: + difference_type(__n)); -2441: std::copy(__first, __last, __position); -2441: this->_M_impl._M_finish += difference_type(__n); -2441: } -2441: else -2441: { -2441: const size_type __len = -2441: _M_check_len(__n, "vector::_M_insert_range"); -2441: _Bit_pointer __q = this->_M_allocate(__len); -2441: iterator __start(std::__addressof(*__q), 0); -2441: iterator __i = _M_copy_aligned(begin(), __position, __start); -2441: __i = std::copy(__first, __last, __i); -2441: iterator __finish = std::copy(__position, end(), __i); -2441: this->_M_deallocate(); -2441: this->_M_impl._M_end_of_storage = __q + _S_nword(__len); -2441: this->_M_impl._M_start = __start; -2441: this->_M_impl._M_finish = __finish; -2441: } -2441: } -2441: } -2441: -2441: template -2441: void -2441: vector:: -2441: _M_insert_aux(iterator __position, bool __x) -2441: { -2441: if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr()) -2441: { -2441: std::copy_backward(__position, this->_M_impl._M_finish, -2441: this->_M_impl._M_finish + 1); -2441: *__position = __x; -2441: ++this->_M_impl._M_finish; -2441: } -2441: else -2441: { -2441: const size_type __len = -2441: _M_check_len(size_type(1), "vector::_M_insert_aux"); -2441: _Bit_pointer __q = this->_M_allocate(__len); -2441: iterator __start(std::__addressof(*__q), 0); -2441: iterator __i = _M_copy_aligned(begin(), __position, __start); -2441: *__i++ = __x; -2441: iterator __finish = std::copy(__position, end(), __i); -2441: this->_M_deallocate(); -2441: this->_M_impl._M_end_of_storage = __q + _S_nword(__len); -2441: this->_M_impl._M_start = __start; -2441: this->_M_impl._M_finish = __finish; -2441: } -2441: } -2441: -2441: template -2441: typename vector::iterator -2441: vector:: -2441: _M_erase(iterator __position) -2441: { -2441: if (__position + 1 != end()) -2441: std::copy(__position + 1, end(), __position); -2441: --this->_M_impl._M_finish; -2441: return __position; -2441: } -2441: -2441: template -2441: typename vector::iterator -2441: vector:: -2441: _M_erase(iterator __first, iterator __last) -2441: { -2441: if (__first != __last) -2441: _M_erase_at_end(std::copy(__last, end(), __first)); -2441: return __first; -2441: } -2441: -2441: -2441: template -2441: bool -2441: vector:: -2441: _M_shrink_to_fit() -2441: { -2441: if (capacity() - size() < int(_S_word_bit)) -2441: return false; -2441: try -2441: { -2441: _M_reallocate(size()); -2441: return true; -2441: } -2441: catch(...) -2441: { return false; } -2441: } -2441: -2441: -2441: -2441: -2441: } -2441: -2441: -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: template -2441: size_t -2441: hash>:: -2441: operator()(const std::vector& __b) const noexcept -2441: { -2441: size_t __hash = 0; -2441: using std::_S_word_bit; -2441: using std::_Bit_type; -2441: -2441: const size_t __words = __b.size() / _S_word_bit; -2441: if (__words) -2441: { -2441: const size_t __clength = __words * sizeof(_Bit_type); -2441: __hash = std::_Hash_impl::hash(__b._M_impl._M_start._M_p, __clength); -2441: } -2441: -2441: const size_t __extrabits = __b.size() % _S_word_bit; -2441: if (__extrabits) -2441: { -2441: _Bit_type __hiword = *__b._M_impl._M_finish._M_p; -2441: __hiword &= ~((~static_cast<_Bit_type>(0)) << __extrabits); -2441: -2441: const size_t __clength -2441: = (__extrabits + 8 - 1) / 8; -2441: if (__words) -2441: __hash = std::_Hash_impl::hash(&__hiword, __clength, __hash); -2441: else -2441: __hash = std::_Hash_impl::hash(&__hiword, __clength); -2441: } -2441: -2441: return __hash; -2441: } -2441: -2441: -2441: } -2441: # 70 "/usr/include/c++/8/vector" 2 3 -2441: # 33 "../../src/Linear_Form_defs.hh" 2 -2441: -2441: -2441: # 34 "../../src/Linear_Form_defs.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: template -2441: void swap(Linear_Form& x, Linear_Form& y); -2441: -2441: -2441: -2441: -2441: -2441: template -2441: Linear_Form -2441: operator+(const Linear_Form& f1, const Linear_Form& f2); -2441: -2441: -2441: -2441: template -2441: Linear_Form -2441: operator+(Variable v, const Linear_Form& f); -2441: -2441: -2441: -2441: template -2441: Linear_Form -2441: operator+(const Linear_Form& f, Variable v); -2441: -2441: -2441: -2441: template -2441: Linear_Form -2441: operator+(const C& n, const Linear_Form& f); -2441: -2441: -2441: -2441: template -2441: Linear_Form -2441: operator+(const Linear_Form& f, const C& n); -2441: -2441: -2441: -2441: template -2441: Linear_Form -2441: operator+(const Linear_Form& f); -2441: -2441: -2441: -2441: template -2441: Linear_Form -2441: operator-(const Linear_Form& f); -2441: -2441: -2441: -2441: template -2441: Linear_Form -2441: operator-(const Linear_Form& f1, const Linear_Form& f2); -2441: -2441: -2441: -2441: template -2441: Linear_Form -2441: operator-(Variable v, const Linear_Form& f); -2441: -2441: -2441: -2441: template -2441: Linear_Form -2441: operator-(const Linear_Form& f, Variable v); -2441: -2441: -2441: -2441: template -2441: Linear_Form -2441: operator-(const C& n, const Linear_Form& f); -2441: -2441: -2441: -2441: template -2441: Linear_Form -2441: operator-(const Linear_Form& f, const C& n); -2441: -2441: -2441: -2441: template -2441: Linear_Form -2441: operator*(const C& n, const Linear_Form& f); -2441: -2441: -2441: -2441: template -2441: Linear_Form -2441: operator*(const Linear_Form& f, const C& n); -2441: -2441: -2441: -2441: template -2441: Linear_Form& -2441: operator+=(Linear_Form& f1, const Linear_Form& f2); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: Linear_Form& -2441: operator+=(Linear_Form& f, Variable v); -2441: -2441: -2441: -2441: template -2441: Linear_Form& -2441: operator+=(Linear_Form& f, const C& n); -2441: -2441: -2441: -2441: template -2441: Linear_Form& -2441: operator-=(Linear_Form& f1, const Linear_Form& f2); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: Linear_Form& -2441: operator-=(Linear_Form& f, Variable v); -2441: -2441: -2441: -2441: template -2441: Linear_Form& -2441: operator-=(Linear_Form& f, const C& n); -2441: -2441: -2441: -2441: template -2441: Linear_Form& -2441: operator*=(Linear_Form& f, const C& n); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: Linear_Form& -2441: operator/=(Linear_Form& f, const C& n); -2441: -2441: -2441: -2441: template -2441: bool -2441: operator==(const Linear_Form& x, const Linear_Form& y); -2441: -2441: -2441: -2441: template -2441: bool -2441: operator!=(const Linear_Form& x, const Linear_Form& y); -2441: -2441: namespace IO_Operators { -2441: -2441: -2441: -2441: template -2441: std::ostream& operator<<(std::ostream& s, const Linear_Form& f); -2441: -2441: } -2441: -2441: } -2441: # 260 "../../src/Linear_Form_defs.hh" -2441: template -2441: class Parma_Polyhedra_Library::Linear_Form { -2441: public: -2441: -2441: Linear_Form(); -2441: -2441: -2441: Linear_Form(const Linear_Form& f); -2441: -2441: -2441: ~Linear_Form(); -2441: -2441: -2441: explicit Linear_Form(const C& n); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: Linear_Form(Variable v); -2441: -2441: -2441: Linear_Form(const Linear_Expression& e); -2441: -2441: -2441: static dimension_type max_space_dimension(); -2441: -2441: -2441: dimension_type space_dimension() const; -2441: -2441: -2441: const C& coefficient(Variable v) const; -2441: -2441: -2441: const C& inhomogeneous_term() const; -2441: -2441: -2441: void negate(); -2441: -2441: -2441: -2441: -2441: -2441: memory_size_type total_memory_in_bytes() const; -2441: -2441: -2441: memory_size_type external_memory_in_bytes() const; -2441: -2441: void ascii_dump() const; void ascii_dump(std::ostream& s) const; void print() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool ascii_load(std::istream& s); -2441: -2441: -2441: bool OK() const; -2441: -2441: -2441: void m_swap(Linear_Form& y); -2441: # 336 "../../src/Linear_Form_defs.hh" -2441: bool overflows() const; -2441: # 365 "../../src/Linear_Form_defs.hh" -2441: void relative_error(Floating_Point_Format analyzed_format, -2441: Linear_Form& result) const; -2441: # 398 "../../src/Linear_Form_defs.hh" -2441: template -2441: bool intervalize(const FP_Oracle& oracle, C& result) const; -2441: -2441: private: -2441: -2441: static C zero; -2441: -2441: -2441: typedef std::vector vec_type; -2441: -2441: -2441: vec_type vec; -2441: -2441: -2441: -2441: -2441: -2441: -2441: Linear_Form(dimension_type sz, bool); -2441: # 426 "../../src/Linear_Form_defs.hh" -2441: Linear_Form(Variable v, Variable w); -2441: -2441: -2441: dimension_type size() const; -2441: -2441: -2441: void extend(dimension_type sz); -2441: -2441: -2441: C& operator[](dimension_type i); -2441: -2441: -2441: const C& operator[](dimension_type i) const; -2441: -2441: friend Linear_Form -2441: operator+(const Linear_Form& f1, const Linear_Form& f2); -2441: friend Linear_Form -2441: operator+(const C& n, const Linear_Form& f); -2441: friend Linear_Form -2441: operator+(const Linear_Form& f, const C& n); -2441: friend Linear_Form -2441: operator+(Variable v, const Linear_Form& f); -2441: -2441: friend Linear_Form -2441: operator-(const Linear_Form& f); -2441: -2441: friend Linear_Form -2441: operator-(const Linear_Form& f1, const Linear_Form& f2); -2441: friend Linear_Form -2441: operator-(const C& n, const Linear_Form& f); -2441: friend Linear_Form -2441: operator-(const Linear_Form& f, const C& n); -2441: friend Linear_Form -2441: operator-(Variable v, const Linear_Form& f); -2441: friend Linear_Form -2441: operator-(const Linear_Form& f, Variable v); -2441: -2441: friend Linear_Form -2441: operator*(const C& n, const Linear_Form& f); -2441: friend Linear_Form -2441: operator*(const Linear_Form& f, const C& n); -2441: -2441: friend Linear_Form& -2441: operator+=(Linear_Form& f1, const Linear_Form& f2); -2441: friend Linear_Form& -2441: operator+=(Linear_Form& f, Variable v); -2441: friend Linear_Form& -2441: operator+=(Linear_Form& f, const C& n); -2441: -2441: friend Linear_Form& -2441: operator-=(Linear_Form& f1, const Linear_Form& f2); -2441: friend Linear_Form& -2441: operator-=(Linear_Form& f, Variable v); -2441: friend Linear_Form& -2441: operator-=(Linear_Form& f, const C& n); -2441: -2441: friend Linear_Form& -2441: operator*=(Linear_Form& f, const C& n); -2441: -2441: friend Linear_Form& -2441: operator/=(Linear_Form& f, const C& n); -2441: -2441: friend bool -2441: operator==(const Linear_Form& x, const Linear_Form& y); -2441: -2441: friend std::ostream& -2441: Parma_Polyhedra_Library::IO_Operators -2441: ::operator<<(std::ostream& s, const Linear_Form& f); -2441: }; -2441: -2441: # 1 "../../src/Linear_Form_inlines.hh" 1 -2441: # 28 "../../src/Linear_Form_inlines.hh" -2441: # 1 "/usr/include/c++/8/iostream" 1 3 -2441: # 36 "/usr/include/c++/8/iostream" 3 -2441: -2441: # 37 "/usr/include/c++/8/iostream" 3 -2441: -2441: -2441: -2441: -2441: -2441: -2441: # 42 "/usr/include/c++/8/iostream" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: # 60 "/usr/include/c++/8/iostream" 3 -2441: extern istream cin; -2441: extern ostream cout; -2441: extern ostream cerr; -2441: extern ostream clog; -2441: -2441: -2441: extern wistream wcin; -2441: extern wostream wcout; -2441: extern wostream wcerr; -2441: extern wostream wclog; -2441: -2441: -2441: -2441: -2441: static ios_base::Init __ioinit; -2441: -2441: -2441: } -2441: # 29 "../../src/Linear_Form_inlines.hh" 2 -2441: -2441: -2441: -2441: # 31 "../../src/Linear_Form_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: inline dimension_type -2441: Linear_Form::max_space_dimension() { -2441: return vec_type().max_size() - 1; -2441: } -2441: -2441: template -2441: inline -2441: Linear_Form::Linear_Form() -2441: : vec(1, zero) { -2441: vec.reserve(compute_capacity(1, vec_type().max_size())); -2441: } -2441: -2441: template -2441: inline -2441: Linear_Form::Linear_Form(dimension_type sz, bool) -2441: : vec(sz, zero) { -2441: vec.reserve(compute_capacity(sz, vec_type().max_size())); -2441: } -2441: -2441: template -2441: inline -2441: Linear_Form::Linear_Form(const Linear_Form& f) -2441: : vec(f.vec) { -2441: } -2441: -2441: template -2441: inline -2441: Linear_Form::~Linear_Form() { -2441: } -2441: -2441: template -2441: inline dimension_type -2441: Linear_Form::size() const { -2441: return vec.size(); -2441: } -2441: -2441: template -2441: inline void -2441: Linear_Form::extend(dimension_type sz) { -2441: -2441: # 73 "../../src/Linear_Form_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 73 "../../src/Linear_Form_inlines.hh" -2441: ; -2441: vec.reserve(compute_capacity(sz, vec_type().max_size())); -2441: vec.resize(sz, zero); -2441: } -2441: -2441: template -2441: inline -2441: Linear_Form::Linear_Form(const C& n) -2441: : vec(1, n) { -2441: vec.reserve(compute_capacity(1, vec_type().max_size())); -2441: } -2441: -2441: template -2441: inline dimension_type -2441: Linear_Form::space_dimension() const { -2441: return size() - 1; -2441: } -2441: -2441: template -2441: inline const C& -2441: Linear_Form::coefficient(Variable v) const { -2441: if (v.space_dimension() > space_dimension()) { -2441: return zero; -2441: } -2441: return vec[v.id()+1]; -2441: } -2441: -2441: template -2441: inline C& -2441: Linear_Form::operator[](dimension_type i) { -2441: -2441: # 103 "../../src/Linear_Form_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 103 "../../src/Linear_Form_inlines.hh" -2441: ; -2441: return vec[i]; -2441: } -2441: -2441: template -2441: inline const C& -2441: Linear_Form::operator[](dimension_type i) const { -2441: -2441: # 110 "../../src/Linear_Form_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 110 "../../src/Linear_Form_inlines.hh" -2441: ; -2441: return vec[i]; -2441: } -2441: -2441: template -2441: inline const C& -2441: Linear_Form::inhomogeneous_term() const { -2441: return vec[0]; -2441: } -2441: -2441: template -2441: inline memory_size_type -2441: Linear_Form::total_memory_in_bytes() const { -2441: return sizeof(*this) + external_memory_in_bytes(); -2441: } -2441: -2441: -2441: template -2441: inline Linear_Form -2441: operator+(const Linear_Form& f) { -2441: return f; -2441: } -2441: -2441: -2441: template -2441: inline Linear_Form -2441: operator+(const Linear_Form& f, const C& n) { -2441: return n + f; -2441: } -2441: -2441: -2441: template -2441: inline Linear_Form -2441: operator+(const Linear_Form& f, const Variable v) { -2441: return v + f; -2441: } -2441: -2441: -2441: template -2441: inline Linear_Form -2441: operator-(const Linear_Form& f, const C& n) { -2441: return -n + f; -2441: } -2441: -2441: -2441: template -2441: inline Linear_Form -2441: operator-(const Variable v, const Variable w) { -2441: return Linear_Form(v, w); -2441: } -2441: -2441: -2441: template -2441: inline Linear_Form -2441: operator*(const Linear_Form& f, const C& n) { -2441: return n * f; -2441: } -2441: -2441: -2441: template -2441: inline Linear_Form& -2441: operator+=(Linear_Form& f, const C& n) { -2441: f[0] += n; -2441: return f; -2441: } -2441: -2441: -2441: template -2441: inline Linear_Form& -2441: operator-=(Linear_Form& f, const C& n) { -2441: f[0] -= n; -2441: return f; -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: operator!=(const Linear_Form& x, const Linear_Form& y) { -2441: return !(x == y); -2441: } -2441: -2441: template -2441: inline void -2441: Linear_Form::m_swap(Linear_Form& y) { -2441: using std::swap; -2441: swap(vec, y.vec); -2441: } -2441: -2441: template -2441: inline void -2441: Linear_Form::ascii_dump(std::ostream& s) const { -2441: using namespace IO_Operators; -2441: dimension_type space_dim = space_dimension(); -2441: s << space_dim << "\n"; -2441: for (dimension_type i = 0; i <= space_dim; ++i) { -2441: const char separator = ' '; -2441: s << vec[i] << separator; -2441: } -2441: s << "\n"; -2441: } -2441: -2441: template -2441: inline bool -2441: Linear_Form::ascii_load(std::istream& s) { -2441: using namespace IO_Operators; -2441: dimension_type new_dim; -2441: if (!(s >> new_dim)) { -2441: return false; -2441: } -2441: -2441: vec.resize(new_dim + 1, zero); -2441: for (dimension_type i = 0; i <= new_dim; ++i) { -2441: if (!(s >> vec[i])) { -2441: return false; -2441: } -2441: } -2441: -2441: ((void) 0); -2441: return true; -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: Linear_Form::overflows() const { -2441: if (!inhomogeneous_term().is_bounded()) { -2441: return true; -2441: } -2441: for (dimension_type i = space_dimension(); i-- > 0; ) { -2441: if (!coefficient(Variable(i)).is_bounded()) { -2441: return true; -2441: } -2441: } -2441: -2441: return false; -2441: } -2441: -2441: -2441: template -2441: inline void -2441: swap(Linear_Form& x, Linear_Form& y) { -2441: x.m_swap(y); -2441: } -2441: -2441: } -2441: # 497 "../../src/Linear_Form_defs.hh" 2 -2441: # 29 "../../src/Float_inlines.hh" 2 -2441: -2441: # 1 "/usr/include/c++/8/climits" 1 3 -2441: # 39 "/usr/include/c++/8/climits" 3 -2441: -2441: # 40 "/usr/include/c++/8/climits" 3 -2441: -2441: -2441: # 1 "/usr/lib/gcc/i686-linux-gnu/8/include-fixed/limits.h" 1 3 4 -2441: # 43 "/usr/include/c++/8/climits" 2 3 -2441: # 31 "../../src/Float_inlines.hh" 2 -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: inline int -2441: float_ieee754_half::inf_sign() const { -2441: if (word == NEG_INF) { -2441: return -1; -2441: } -2441: if (word == POS_INF) { -2441: return 1; -2441: } -2441: return 0; -2441: } -2441: -2441: inline bool -2441: float_ieee754_half::is_nan() const { -2441: return (word & ~SGN_MASK) > POS_INF; -2441: } -2441: -2441: inline int -2441: float_ieee754_half::zero_sign() const { -2441: if (word == NEG_ZERO) { -2441: return -1; -2441: } -2441: if (word == POS_ZERO) { -2441: return 1; -2441: } -2441: return 0; -2441: } -2441: -2441: inline void -2441: float_ieee754_half::negate() { -2441: word ^= SGN_MASK; -2441: } -2441: -2441: inline bool -2441: float_ieee754_half::sign_bit() const { -2441: return (word & SGN_MASK) != 0; -2441: } -2441: -2441: inline void -2441: float_ieee754_half::dec() { -2441: --word; -2441: } -2441: -2441: inline void -2441: float_ieee754_half::inc() { -2441: ++word; -2441: } -2441: -2441: inline void -2441: float_ieee754_half::set_max(bool negative) { -2441: word = WRD_MAX; -2441: if (negative) { -2441: word |= SGN_MASK; -2441: } -2441: } -2441: -2441: inline void -2441: float_ieee754_half::build(bool negative, mpz_t mantissa, int exponent) { -2441: word = static_cast( -2441: # 91 "../../src/Float_inlines.hh" 3 4 -2441: __gmpz_get_ui -2441: # 91 "../../src/Float_inlines.hh" -2441: (mantissa) -2441: & ((1UL << MANTISSA_BITS) - 1)); -2441: if (negative) { -2441: word |= SGN_MASK; -2441: } -2441: const int exponent_repr = exponent + EXPONENT_BIAS; -2441: ((void) 0); -2441: word |= static_cast(exponent_repr) << MANTISSA_BITS; -2441: } -2441: -2441: inline int -2441: float_ieee754_single::inf_sign() const { -2441: if (word == NEG_INF) { -2441: return -1; -2441: } -2441: if (word == POS_INF) { -2441: return 1; -2441: } -2441: return 0; -2441: } -2441: -2441: inline bool -2441: float_ieee754_single::is_nan() const { -2441: return (word & ~SGN_MASK) > POS_INF; -2441: } -2441: -2441: inline int -2441: float_ieee754_single::zero_sign() const { -2441: if (word == NEG_ZERO) { -2441: return -1; -2441: } -2441: if (word == POS_ZERO) { -2441: return 1; -2441: } -2441: return 0; -2441: } -2441: -2441: inline void -2441: float_ieee754_single::negate() { -2441: word ^= SGN_MASK; -2441: } -2441: -2441: inline bool -2441: float_ieee754_single::sign_bit() const { -2441: return (word & SGN_MASK) != 0; -2441: } -2441: -2441: inline void -2441: float_ieee754_single::dec() { -2441: --word; -2441: } -2441: -2441: inline void -2441: float_ieee754_single::inc() { -2441: ++word; -2441: } -2441: -2441: inline void -2441: float_ieee754_single::set_max(bool negative) { -2441: word = WRD_MAX; -2441: if (negative) { -2441: word |= SGN_MASK; -2441: } -2441: } -2441: -2441: inline void -2441: float_ieee754_single::build(bool negative, mpz_t mantissa, int exponent) { -2441: word = static_cast( -2441: # 158 "../../src/Float_inlines.hh" 3 4 -2441: __gmpz_get_ui -2441: # 158 "../../src/Float_inlines.hh" -2441: (mantissa) -2441: & ((1UL << MANTISSA_BITS) - 1)); -2441: if (negative) { -2441: word |= SGN_MASK; -2441: } -2441: const int exponent_repr = exponent + EXPONENT_BIAS; -2441: ((void) 0); -2441: word |= static_cast(exponent_repr) << MANTISSA_BITS; -2441: } -2441: -2441: inline int -2441: float_ieee754_double::inf_sign() const { -2441: if (lsp != LSP_INF) { -2441: return 0; -2441: } -2441: if (msp == MSP_NEG_INF) { -2441: return -1; -2441: } -2441: if (msp == MSP_POS_INF) { -2441: return 1; -2441: } -2441: return 0; -2441: } -2441: -2441: inline bool -2441: float_ieee754_double::is_nan() const { -2441: const uint32_t a = msp & ~MSP_SGN_MASK; -2441: return a > MSP_POS_INF || (a == MSP_POS_INF && lsp != LSP_INF); -2441: } -2441: -2441: inline int -2441: float_ieee754_double::zero_sign() const { -2441: if (lsp != LSP_ZERO) { -2441: return 0; -2441: } -2441: if (msp == MSP_NEG_ZERO) { -2441: return -1; -2441: } -2441: if (msp == MSP_POS_ZERO) { -2441: return 1; -2441: } -2441: return 0; -2441: } -2441: -2441: inline void -2441: float_ieee754_double::negate() { -2441: msp ^= MSP_SGN_MASK; -2441: } -2441: -2441: inline bool -2441: float_ieee754_double::sign_bit() const { -2441: return (msp & MSP_SGN_MASK) != 0; -2441: } -2441: -2441: inline void -2441: float_ieee754_double::dec() { -2441: if (lsp == 0) { -2441: --msp; -2441: lsp = LSP_MAX; -2441: } -2441: else { -2441: --lsp; -2441: } -2441: } -2441: -2441: inline void -2441: float_ieee754_double::inc() { -2441: if (lsp == LSP_MAX) { -2441: ++msp; -2441: lsp = 0; -2441: } -2441: else { -2441: ++lsp; -2441: } -2441: } -2441: -2441: inline void -2441: float_ieee754_double::set_max(bool negative) { -2441: msp = MSP_MAX; -2441: lsp = LSP_MAX; -2441: if (negative) { -2441: msp |= MSP_SGN_MASK; -2441: } -2441: } -2441: -2441: inline void -2441: float_ieee754_double::build(bool negative, mpz_t mantissa, int exponent) { -2441: unsigned long m; -2441: -2441: lsp = -2441: # 247 "../../src/Float_inlines.hh" 3 4 -2441: __gmpz_get_ui -2441: # 247 "../../src/Float_inlines.hh" -2441: (mantissa); -2441: -2441: # 248 "../../src/Float_inlines.hh" 3 4 -2441: __gmpz_tdiv_q_2exp -2441: # 248 "../../src/Float_inlines.hh" -2441: (mantissa, mantissa, 32); -2441: m = -2441: # 249 "../../src/Float_inlines.hh" 3 4 -2441: __gmpz_get_ui -2441: # 249 "../../src/Float_inlines.hh" -2441: (mantissa); -2441: -2441: -2441: -2441: -2441: -2441: msp = static_cast(m & ((1UL << (MANTISSA_BITS - 32)) - 1)); -2441: if (negative) { -2441: msp |= MSP_SGN_MASK; -2441: } -2441: const int exponent_repr = exponent + EXPONENT_BIAS; -2441: ((void) 0); -2441: msp |= static_cast(exponent_repr) << (MANTISSA_BITS - 32); -2441: } -2441: -2441: inline int -2441: float_ibm_single::inf_sign() const { -2441: if (word == NEG_INF) { -2441: return -1; -2441: } -2441: if (word == POS_INF) { -2441: return 1; -2441: } -2441: return 0; -2441: } -2441: -2441: inline bool -2441: float_ibm_single::is_nan() const { -2441: return (word & ~SGN_MASK) > POS_INF; -2441: } -2441: -2441: inline int -2441: float_ibm_single::zero_sign() const { -2441: if (word == NEG_ZERO) { -2441: return -1; -2441: } -2441: if (word == POS_ZERO) { -2441: return 1; -2441: } -2441: return 0; -2441: } -2441: -2441: inline void -2441: float_ibm_single::negate() { -2441: word ^= SGN_MASK; -2441: } -2441: -2441: inline bool -2441: float_ibm_single::sign_bit() const { -2441: return (word & SGN_MASK) != 0; -2441: } -2441: -2441: inline void -2441: float_ibm_single::dec() { -2441: --word; -2441: } -2441: -2441: inline void -2441: float_ibm_single::inc() { -2441: ++word; -2441: } -2441: -2441: inline void -2441: float_ibm_single::set_max(bool negative) { -2441: word = WRD_MAX; -2441: if (negative) { -2441: word |= SGN_MASK; -2441: } -2441: } -2441: -2441: inline void -2441: float_ibm_single::build(bool negative, mpz_t mantissa, int exponent) { -2441: word = static_cast( -2441: # 321 "../../src/Float_inlines.hh" 3 4 -2441: __gmpz_get_ui -2441: # 321 "../../src/Float_inlines.hh" -2441: (mantissa) -2441: & ((1UL << MANTISSA_BITS) - 1)); -2441: if (negative) { -2441: word |= SGN_MASK; -2441: } -2441: const int exponent_repr = exponent + EXPONENT_BIAS; -2441: ((void) 0); -2441: word |= static_cast(exponent_repr) << MANTISSA_BITS; -2441: } -2441: -2441: inline int -2441: float_intel_double_extended::inf_sign() const { -2441: if (lsp != LSP_INF) { -2441: return 0; -2441: } -2441: const uint32_t a = msp & MSP_NEG_INF; -2441: if (a == MSP_NEG_INF) { -2441: return -1; -2441: } -2441: if (a == MSP_POS_INF) { -2441: return 1; -2441: } -2441: return 0; -2441: } -2441: -2441: inline bool -2441: float_intel_double_extended::is_nan() const { -2441: return (msp & MSP_POS_INF) == MSP_POS_INF -2441: && lsp != LSP_INF; -2441: } -2441: -2441: inline int -2441: float_intel_double_extended::zero_sign() const { -2441: if (lsp != LSP_ZERO) { -2441: return 0; -2441: } -2441: const uint32_t a = msp & MSP_NEG_INF; -2441: if (a == MSP_NEG_ZERO) { -2441: return -1; -2441: } -2441: if (a == MSP_POS_ZERO) { -2441: return 1; -2441: } -2441: return 0; -2441: } -2441: -2441: inline void -2441: float_intel_double_extended::negate() { -2441: msp ^= MSP_SGN_MASK; -2441: } -2441: -2441: inline bool -2441: float_intel_double_extended::sign_bit() const { -2441: return (msp & MSP_SGN_MASK) != 0; -2441: } -2441: -2441: inline void -2441: float_intel_double_extended::dec() { -2441: if ((lsp & LSP_DMAX) == 0) { -2441: --msp; -2441: lsp = ((msp & MSP_NEG_INF) == 0) ? LSP_DMAX : LSP_NMAX; -2441: } -2441: else { -2441: --lsp; -2441: } -2441: } -2441: -2441: inline void -2441: float_intel_double_extended::inc() { -2441: if ((lsp & LSP_DMAX) == LSP_DMAX) { -2441: ++msp; -2441: lsp = LSP_DMAX + 1; -2441: } -2441: else { -2441: ++lsp; -2441: } -2441: } -2441: -2441: inline void -2441: float_intel_double_extended::set_max(bool negative) { -2441: msp = MSP_MAX; -2441: lsp = LSP_NMAX; -2441: if (negative) { -2441: msp |= MSP_SGN_MASK; -2441: } -2441: } -2441: -2441: inline void -2441: float_intel_double_extended::build(bool negative, -2441: mpz_t mantissa, int exponent) { -2441: -2441: -2441: # 412 "../../src/Float_inlines.hh" 3 4 -2441: __gmpz_export -2441: # 412 "../../src/Float_inlines.hh" -2441: (&lsp, 0, -1, sizeof(lsp), 0, 0, mantissa); -2441: -2441: -2441: -2441: msp = (negative ? MSP_SGN_MASK : 0); -2441: const int exponent_repr = exponent + EXPONENT_BIAS; -2441: ((void) 0); -2441: msp |= static_cast(exponent_repr); -2441: } -2441: -2441: inline int -2441: float_ieee754_quad::inf_sign() const { -2441: if (lsp != LSP_INF) { -2441: return 0; -2441: } -2441: if (msp == MSP_NEG_INF) { -2441: return -1; -2441: } -2441: if (msp == MSP_POS_INF) { -2441: return 1; -2441: } -2441: return 0; -2441: } -2441: -2441: inline bool -2441: float_ieee754_quad::is_nan() const { -2441: return (msp & ~MSP_SGN_MASK) == MSP_POS_INF -2441: && lsp != LSP_INF; -2441: } -2441: -2441: inline int -2441: float_ieee754_quad::zero_sign() const { -2441: if (lsp != LSP_ZERO) { -2441: return 0; -2441: } -2441: if (msp == MSP_NEG_ZERO) { -2441: return -1; -2441: } -2441: if (msp == MSP_POS_ZERO) { -2441: return 1; -2441: } -2441: return 0; -2441: } -2441: -2441: inline void -2441: float_ieee754_quad::negate() { -2441: msp ^= MSP_SGN_MASK; -2441: } -2441: -2441: inline bool -2441: float_ieee754_quad::sign_bit() const { -2441: return (msp & MSP_SGN_MASK) != 0; -2441: } -2441: -2441: inline void -2441: float_ieee754_quad::dec() { -2441: if (lsp == 0) { -2441: --msp; -2441: lsp = LSP_MAX; -2441: } -2441: else { -2441: --lsp; -2441: } -2441: } -2441: -2441: inline void -2441: float_ieee754_quad::inc() { -2441: if (lsp == LSP_MAX) { -2441: ++msp; -2441: lsp = 0; -2441: } -2441: else { -2441: ++lsp; -2441: } -2441: } -2441: -2441: inline void -2441: float_ieee754_quad::set_max(bool negative) { -2441: msp = MSP_MAX; -2441: lsp = LSP_MAX; -2441: if (negative) { -2441: msp |= MSP_SGN_MASK; -2441: } -2441: } -2441: -2441: inline void -2441: float_ieee754_quad::build(bool negative, mpz_t mantissa, int exponent) { -2441: uint64_t parts[2]; -2441: -2441: # 500 "../../src/Float_inlines.hh" 3 4 -2441: __gmpz_export -2441: # 500 "../../src/Float_inlines.hh" -2441: (parts, 0, -1, sizeof(parts[0]), 0, 0, mantissa); -2441: lsp = parts[0]; -2441: msp = parts[1]; -2441: msp &= ((static_cast(1) << (MANTISSA_BITS - 64)) - 1); -2441: if (negative) { -2441: msp |= MSP_SGN_MASK; -2441: } -2441: const int exponent_repr = exponent + EXPONENT_BIAS; -2441: ((void) 0); -2441: msp |= static_cast(exponent_repr) << (MANTISSA_BITS - 64); -2441: } -2441: -2441: inline bool -2441: is_less_precise_than(Floating_Point_Format f1, Floating_Point_Format f2) { -2441: return f1 < f2; -2441: } -2441: -2441: inline unsigned int -2441: msb_position(unsigned long long v) { -2441: return static_cast(((sizeof(v)) * static_cast(8))) - 1U - clz(v); -2441: } -2441: -2441: template -2441: inline void -2441: affine_form_image(std::map >& lf_store, -2441: const Variable var, -2441: const Linear_Form& lf) { -2441: -2441: lf_store[var.id()] = lf; -2441: -2441: discard_occurrences(lf_store, var); -2441: } -2441: -2441: -2441: inline -2441: Float::Float() { -2441: } -2441: -2441: inline -2441: Float::Float(float v) { -2441: u.number = v; -2441: } -2441: -2441: inline float -2441: Float::value() { -2441: return u.number; -2441: } -2441: -2441: -2441: -2441: inline -2441: Float::Float() { -2441: } -2441: -2441: inline -2441: Float::Float(double v) { -2441: u.number = v; -2441: } -2441: -2441: inline double -2441: Float::value() { -2441: return u.number; -2441: } -2441: -2441: -2441: -2441: inline -2441: Float::Float() { -2441: } -2441: -2441: inline -2441: Float::Float(long double v) { -2441: u.number = v; -2441: } -2441: -2441: inline long double -2441: Float::value() { -2441: return u.number; -2441: } -2441: -2441: -2441: } -2441: # 520 "../../src/Float_defs.hh" 2 -2441: # 1 "../../src/Float_templates.hh" 1 -2441: # 30 "../../src/Float_templates.hh" -2441: # 1 "/usr/include/c++/8/cmath" 1 3 -2441: # 39 "/usr/include/c++/8/cmath" 3 -2441: -2441: # 40 "/usr/include/c++/8/cmath" 3 -2441: # 31 "../../src/Float_templates.hh" 2 -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: const FP_Interval_Type& compute_absolute_error( -2441: const Floating_Point_Format analyzed_format) { -2441: typedef typename FP_Interval_Type::boundary_type analyzer_format; -2441: -2441: -2441: static const FP_Interval_Type ZERO_INTERVAL = FP_Interval_Type(0); -2441: -2441: static FP_Interval_Type ieee754_half_result = ZERO_INTERVAL; -2441: static FP_Interval_Type ieee754_single_result = ZERO_INTERVAL; -2441: static FP_Interval_Type ieee754_double_result = ZERO_INTERVAL; -2441: static FP_Interval_Type ibm_single_result = ZERO_INTERVAL; -2441: static FP_Interval_Type ieee754_quad_result = ZERO_INTERVAL; -2441: static FP_Interval_Type intel_double_extended_result = ZERO_INTERVAL; -2441: -2441: FP_Interval_Type* to_compute = -2441: # 49 "../../src/Float_templates.hh" 3 4 -2441: __null -2441: # 49 "../../src/Float_templates.hh" -2441: ; -2441: -2441: unsigned int f_base; -2441: int f_exponent_bias; -2441: unsigned int f_mantissa_bits; -2441: switch (analyzed_format) { -2441: case IEEE754_HALF: -2441: if (ieee754_half_result != ZERO_INTERVAL) { -2441: return ieee754_half_result; -2441: } -2441: to_compute = &ieee754_half_result; -2441: f_base = float_ieee754_half::BASE; -2441: f_exponent_bias = float_ieee754_half::EXPONENT_BIAS; -2441: f_mantissa_bits = float_ieee754_half::MANTISSA_BITS; -2441: break; -2441: case IEEE754_SINGLE: -2441: if (ieee754_single_result != ZERO_INTERVAL) { -2441: return ieee754_single_result; -2441: } -2441: -2441: to_compute = &ieee754_single_result; -2441: f_base = float_ieee754_single::BASE; -2441: f_exponent_bias = float_ieee754_single::EXPONENT_BIAS; -2441: f_mantissa_bits = float_ieee754_single::MANTISSA_BITS; -2441: break; -2441: case IEEE754_DOUBLE: -2441: if (ieee754_double_result != ZERO_INTERVAL) { -2441: return ieee754_double_result; -2441: } -2441: -2441: to_compute = &ieee754_double_result; -2441: f_base = float_ieee754_double::BASE; -2441: f_exponent_bias = float_ieee754_double::EXPONENT_BIAS; -2441: f_mantissa_bits = float_ieee754_double::MANTISSA_BITS; -2441: break; -2441: case IBM_SINGLE: -2441: if (ibm_single_result != ZERO_INTERVAL) { -2441: return ibm_single_result; -2441: } -2441: -2441: to_compute = &ibm_single_result; -2441: f_base = float_ibm_single::BASE; -2441: f_exponent_bias = float_ibm_single::EXPONENT_BIAS; -2441: f_mantissa_bits = float_ibm_single::MANTISSA_BITS; -2441: break; -2441: case IEEE754_QUAD: -2441: if (ieee754_quad_result != ZERO_INTERVAL) { -2441: return ieee754_quad_result; -2441: } -2441: -2441: to_compute = &ieee754_quad_result; -2441: f_base = float_ieee754_quad::BASE; -2441: f_exponent_bias = float_ieee754_quad::EXPONENT_BIAS; -2441: f_mantissa_bits = float_ieee754_quad::MANTISSA_BITS; -2441: break; -2441: case INTEL_DOUBLE_EXTENDED: -2441: if (intel_double_extended_result != ZERO_INTERVAL) { -2441: return intel_double_extended_result; -2441: } -2441: -2441: to_compute = &intel_double_extended_result; -2441: f_base = float_intel_double_extended::BASE; -2441: f_exponent_bias = float_intel_double_extended::EXPONENT_BIAS; -2441: f_mantissa_bits = float_intel_double_extended::MANTISSA_BITS; -2441: break; -2441: default: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: -2441: ((void) 0); -2441: -2441: -2441: analyzer_format omega; -2441: int power = static_cast(msb_position(f_base)) -2441: * ((1 - f_exponent_bias) - static_cast(f_mantissa_bits)); -2441: omega = std::max(static_cast(ldexp(1.0, power)), -2441: std::numeric_limits::denorm_min()); -2441: -2441: to_compute->build(i_constraint(GREATER_OR_EQUAL, -omega), -2441: i_constraint(LESS_OR_EQUAL, omega)); -2441: return *to_compute; -2441: } -2441: -2441: template -2441: void -2441: discard_occurrences(std::map >& lf_store, -2441: Variable var) { -2441: typedef Linear_Form FP_Linear_Form; -2441: typedef typename std::map::iterator Iter; -2441: for (Iter i = lf_store.begin(); i != lf_store.end(); ) { -2441: if ((i->second).coefficient(var) != 0) { -2441: i = lf_store.erase(i); -2441: } -2441: else { -2441: ++i; -2441: } -2441: } -2441: } -2441: -2441: -2441: -2441: template -2441: void upper_bound_assign(std::map >& ls1, -2441: const std::map >& ls2) { -2441: typedef Linear_Form FP_Linear_Form; -2441: typedef typename std::map::iterator Iter; -2441: typedef typename std::map::const_iterator Const_Iter; -2441: -2441: Const_Iter i2_end = ls2.end(); -2441: for (Iter i1 = ls1.begin(), i1_end = ls1.end(); i1 != i1_end; ) { -2441: Const_Iter i2 = ls2.find(i1->first); -2441: if ((i2 == i2_end) || (i1->second != i2->second)) { -2441: i1 = ls1.erase(i1); -2441: } -2441: else { -2441: ++i1; -2441: } -2441: } -2441: } -2441: -2441: } -2441: # 521 "../../src/Float_defs.hh" 2 -2441: # 32 "../../src/checked_defs.hh" 2 -2441: # 1 "/usr/include/c++/8/cassert" 1 3 -2441: # 41 "/usr/include/c++/8/cassert" 3 -2441: -2441: # 42 "/usr/include/c++/8/cassert" 3 -2441: -2441: -2441: # 1 "/usr/include/assert.h" 1 3 4 -2441: # 44 "/usr/include/c++/8/cassert" 2 3 -2441: # 33 "../../src/checked_defs.hh" 2 -2441: -2441: -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: namespace Checked { -2441: # 471 "../../src/checked_defs.hh" -2441: template struct copy_function_struct; template inline void copy( Type1& arg1, const Type2& arg2) { return copy_function_struct::function(arg1, arg2); } -2441: -2441: template struct sgn_function_struct; template inline Result_Relation sgn(const From& arg) { return sgn_function_struct::function(arg); } -2441: -2441: template struct cmp_function_struct; template inline Result_Relation cmp(const Type1& arg1, const Type2& arg2) { return cmp_function_struct::function(arg1, arg2); } -2441: -2441: template struct classify_function_struct; template inline Result classify(const Type& arg, bool a1, bool a2, bool a3) { return classify_function_struct::function(arg, a1, a2, a3); } -2441: -2441: template struct is_nan_function_struct; template inline bool is_nan(const Type& arg) { return is_nan_function_struct::function(arg); } -2441: -2441: template struct is_minf_function_struct; template inline bool is_minf(const Type& arg) { return is_minf_function_struct::function(arg); } -2441: -2441: template struct is_pinf_function_struct; template inline bool is_pinf(const Type& arg) { return is_pinf_function_struct::function(arg); } -2441: -2441: template struct is_int_function_struct; template inline bool is_int(const Type& arg) { return is_int_function_struct::function(arg); } -2441: -2441: template struct assign_special_function_struct; template inline Result assign_special( Type& arg, Result_Class a1, Rounding_Dir a2) { return assign_special_function_struct::function(arg, a1, a2); } -2441: -2441: template struct construct_special_function_struct; template inline Result construct_special( Type& arg, Result_Class a1, Rounding_Dir a2) { return construct_special_function_struct::function(arg, a1, a2); } -2441: -2441: template struct construct_function_struct; template inline Result construct( To& arg1, const From& arg2, Rounding_Dir a1) { return construct_function_struct::function(arg1, arg2, a1); } -2441: -2441: template struct assign_function_struct; template inline Result assign( To& arg1, const From& arg2, Rounding_Dir a1) { return assign_function_struct::function(arg1, arg2, a1); } -2441: -2441: template struct floor_function_struct; template inline Result floor( To& arg1, const From& arg2, Rounding_Dir a1) { return floor_function_struct::function(arg1, arg2, a1); } -2441: -2441: template struct ceil_function_struct; template inline Result ceil( To& arg1, const From& arg2, Rounding_Dir a1) { return ceil_function_struct::function(arg1, arg2, a1); } -2441: -2441: template struct trunc_function_struct; template inline Result trunc( To& arg1, const From& arg2, Rounding_Dir a1) { return trunc_function_struct::function(arg1, arg2, a1); } -2441: -2441: template struct neg_function_struct; template inline Result neg( To& arg1, const From& arg2, Rounding_Dir a1) { return neg_function_struct::function(arg1, arg2, a1); } -2441: -2441: template struct abs_function_struct; template inline Result abs( To& arg1, const From& arg2, Rounding_Dir a1) { return abs_function_struct::function(arg1, arg2, a1); } -2441: -2441: template struct sqrt_function_struct; template inline Result sqrt( To& arg1, const From& arg2, Rounding_Dir a1) { return sqrt_function_struct::function(arg1, arg2, a1); } -2441: -2441: template struct add_function_struct; template inline Result add( To& arg1, const From1& arg2, const From2& arg3, Rounding_Dir a1) { return add_function_struct ::function(arg1, arg2, arg3, a1); } -2441: -2441: -2441: template struct sub_function_struct; template inline Result sub( To& arg1, const From1& arg2, const From2& arg3, Rounding_Dir a1) { return sub_function_struct ::function(arg1, arg2, arg3, a1); } -2441: -2441: -2441: template struct mul_function_struct; template inline Result mul( To& arg1, const From1& arg2, const From2& arg3, Rounding_Dir a1) { return mul_function_struct ::function(arg1, arg2, arg3, a1); } -2441: -2441: -2441: template struct div_function_struct; template inline Result div( To& arg1, const From1& arg2, const From2& arg3, Rounding_Dir a1) { return div_function_struct ::function(arg1, arg2, arg3, a1); } -2441: -2441: -2441: template struct rem_function_struct; template inline Result rem( To& arg1, const From1& arg2, const From2& arg3, Rounding_Dir a1) { return rem_function_struct ::function(arg1, arg2, arg3, a1); } -2441: -2441: -2441: template struct idiv_function_struct; template inline Result idiv( To& arg1, const From1& arg2, const From2& arg3, Rounding_Dir a1) { return idiv_function_struct ::function(arg1, arg2, arg3, a1); } -2441: -2441: -2441: template struct add_2exp_function_struct; template inline Result add_2exp( To& arg1, const From& arg2, unsigned int a1, Rounding_Dir a2) { return add_2exp_function_struct::function(arg1, arg2, a1, a2); } -2441: -2441: -2441: template struct sub_2exp_function_struct; template inline Result sub_2exp( To& arg1, const From& arg2, unsigned int a1, Rounding_Dir a2) { return sub_2exp_function_struct::function(arg1, arg2, a1, a2); } -2441: -2441: -2441: template struct mul_2exp_function_struct; template inline Result mul_2exp( To& arg1, const From& arg2, unsigned int a1, Rounding_Dir a2) { return mul_2exp_function_struct::function(arg1, arg2, a1, a2); } -2441: -2441: -2441: template struct div_2exp_function_struct; template inline Result div_2exp( To& arg1, const From& arg2, unsigned int a1, Rounding_Dir a2) { return div_2exp_function_struct::function(arg1, arg2, a1, a2); } -2441: -2441: -2441: template struct smod_2exp_function_struct; template inline Result smod_2exp( To& arg1, const From& arg2, unsigned int a1, Rounding_Dir a2) { return smod_2exp_function_struct::function(arg1, arg2, a1, a2); } -2441: -2441: -2441: template struct umod_2exp_function_struct; template inline Result umod_2exp( To& arg1, const From& arg2, unsigned int a1, Rounding_Dir a2) { return umod_2exp_function_struct::function(arg1, arg2, a1, a2); } -2441: -2441: -2441: template struct add_mul_function_struct; template inline Result add_mul( To& arg1, const From1& arg2, const From2& arg3, Rounding_Dir a1) { return add_mul_function_struct ::function(arg1, arg2, arg3, a1); } -2441: -2441: -2441: template struct sub_mul_function_struct; template inline Result sub_mul( To& arg1, const From1& arg2, const From2& arg3, Rounding_Dir a1) { return sub_mul_function_struct ::function(arg1, arg2, arg3, a1); } -2441: -2441: -2441: template struct gcd_function_struct; template inline Result gcd( To& arg1, const From1& arg2, const From2& arg3, Rounding_Dir a1) { return gcd_function_struct ::function(arg1, arg2, arg3, a1); } -2441: -2441: -2441: template struct gcdext_function_struct; template inline Result gcdext( To1& arg1, To2& arg2, To3& arg3, const From1& arg4, const From2& arg5, Rounding_Dir a1) { return gcdext_function_struct ::function(arg1, arg2, arg3, arg4, arg5, a1); } -2441: -2441: -2441: template struct lcm_function_struct; template inline Result lcm( To& arg1, const From1& arg2, const From2& arg3, Rounding_Dir a1) { return lcm_function_struct ::function(arg1, arg2, arg3, a1); } -2441: -2441: -2441: template struct input_function_struct; template inline Result input( Type& arg, std::istream& a1, Rounding_Dir a2) { return input_function_struct::function(arg, a1, a2); } -2441: -2441: template struct output_function_struct; template inline Result output(std::ostream& b1, const Type& arg, const Numeric_Format& a1, Rounding_Dir a2) { return output_function_struct::function(b1, arg, a1, a2); } -2441: # 577 "../../src/checked_defs.hh" -2441: template -2441: Result round(To& to, Result r, Rounding_Dir dir); -2441: -2441: Result input_mpq(mpq_class& to, std::istream& is); -2441: -2441: std::string float_mpq_to_string(mpq_class& q); -2441: -2441: } -2441: -2441: struct Minus_Infinity { -2441: static const Result_Class vclass = VC_MINUS_INFINITY; -2441: }; -2441: struct Plus_Infinity { -2441: static const Result_Class vclass = VC_PLUS_INFINITY; -2441: }; -2441: struct Not_A_Number { -2441: static const Result_Class vclass = VC_NAN; -2441: }; -2441: -2441: template -2441: struct Is_Special : public False { }; -2441: -2441: template <> -2441: struct Is_Special : public True {}; -2441: -2441: template <> -2441: struct Is_Special : public True {}; -2441: -2441: template <> -2441: struct Is_Special : public True {}; -2441: -2441: extern Minus_Infinity MINUS_INFINITY; -2441: extern Plus_Infinity PLUS_INFINITY; -2441: extern Not_A_Number NOT_A_NUMBER; -2441: -2441: -2441: -2441: -2441: template -2441: struct Checked_Number_Transparent_Policy { -2441: -2441: enum const_bool_value_check_overflow { check_overflow = (false) }; -2441: -2441: -2441: enum const_bool_value_check_inf_add_inf { check_inf_add_inf = (false) }; -2441: -2441: -2441: enum const_bool_value_check_inf_sub_inf { check_inf_sub_inf = (false) }; -2441: -2441: -2441: enum const_bool_value_check_inf_mul_zero { check_inf_mul_zero = (false) }; -2441: -2441: -2441: enum const_bool_value_check_div_zero { check_div_zero = (false) }; -2441: -2441: -2441: enum const_bool_value_check_inf_div_inf { check_inf_div_inf = (false) }; -2441: -2441: -2441: enum const_bool_value_check_inf_mod { check_inf_mod = (false) }; -2441: -2441: -2441: enum const_bool_value_check_sqrt_neg { check_sqrt_neg = (false) }; -2441: -2441: -2441: enum const_bool_value_has_nan { has_nan = (std::numeric_limits::has_quiet_NaN) }; -2441: -2441: -2441: enum const_bool_value_has_infinity { has_infinity = (std::numeric_limits::has_infinity) }; -2441: -2441: -2441: -2441: -2441: -2441: enum const_bool_value_convertible { convertible = (true) }; -2441: -2441: -2441: enum const_bool_value_fpu_check_inexact { fpu_check_inexact = (false) }; -2441: -2441: -2441: enum const_bool_value_fpu_check_nan_result { fpu_check_nan_result = (false) }; -2441: -2441: -2441: -2441: -2441: -2441: static const Rounding_Dir ROUND_DEFAULT_CONSTRUCTOR = ROUND_NATIVE; -2441: -2441: -2441: -2441: -2441: -2441: static const Rounding_Dir ROUND_DEFAULT_OPERATOR = ROUND_NATIVE; -2441: -2441: -2441: -2441: -2441: -2441: static const Rounding_Dir ROUND_DEFAULT_INPUT = ROUND_NATIVE; -2441: -2441: -2441: -2441: -2441: -2441: static const Rounding_Dir ROUND_DEFAULT_OUTPUT = ROUND_NATIVE; -2441: -2441: -2441: -2441: -2441: -2441: static const Rounding_Dir ROUND_DEFAULT_FUNCTION = ROUND_NATIVE; -2441: -2441: -2441: -2441: -2441: -2441: static void handle_result(Result r); -2441: }; -2441: -2441: } -2441: -2441: -2441: -2441: # 1 "../../src/checked_inlines.hh" 1 -2441: # 41 "../../src/checked_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: namespace Checked { -2441: -2441: template -2441: struct Safe_Conversion : public False { -2441: }; -2441: template -2441: struct Safe_Conversion : public True { -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: -2441: -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: -2441: -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: -2441: -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: -2441: -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: -2441: -2441: -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: -2441: -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: -2441: -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: -2441: -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: # 174 "../../src/checked_inlines.hh" -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: -2441: -2441: -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: template <> struct Safe_Conversion : public True { }; -2441: template <> struct Safe_Conversion : public True { }; -2441: -2441: -2441: -2441: -2441: template -2441: struct construct_function_struct { -2441: static inline Result function(Type& to, const Type& from, Rounding_Dir) { -2441: new(&to) Type(from); -2441: return V_EQ; -2441: } -2441: }; -2441: -2441: template -2441: struct construct_function_struct { -2441: static inline Result function(To& to, const From& from, Rounding_Dir dir) { -2441: new(&to) To(); -2441: return assign(to, from, dir); -2441: } -2441: }; -2441: -2441: template -2441: struct construct_special_function_struct { -2441: static inline Result function(To& to, Result_Class r, Rounding_Dir dir) { -2441: new(&to) To(); -2441: return assign_special(to, r, dir); -2441: } -2441: }; -2441: -2441: template -2441: inline Result -2441: assign_exact(To& to, const From& from, Rounding_Dir) { -2441: to = from; -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline typename Enable_If::value, void>::type -2441: copy_generic(Type& to, const Type& from) { -2441: to = from; -2441: } -2441: -2441: template -2441: inline Result -2441: abs_generic(To& to, const From& from, Rounding_Dir dir) { -2441: if (from < 0) { -2441: return neg(to, from, dir); -2441: } -2441: else { -2441: return assign(to, from, dir); -2441: } -2441: } -2441: -2441: template -2441: inline void -2441: gcd_exact_no_abs(To& to, const From& x, const From& y) { -2441: To w_x = x; -2441: To w_y = y; -2441: To remainder; -2441: while (w_y != 0) { -2441: -2441: -2441: -2441: rem(remainder, w_x, w_y, -2441: ROUND_NOT_NEEDED); -2441: w_x = w_y; -2441: w_y = remainder; -2441: } -2441: to = w_x; -2441: } -2441: -2441: template -2441: inline Result -2441: gcd_exact(To& to, const From1& x, const From2& y, Rounding_Dir dir) { -2441: gcd_exact_no_abs(to, x, y); -2441: return abs(to, to, dir); -2441: } -2441: -2441: template -2441: inline Result -2441: gcdext_exact(To1& to, To2& s, To3& t, const From1& x, const From2& y, -2441: Rounding_Dir dir) { -2441: -2441: -2441: -2441: -2441: if (y == 0) { -2441: if (x == 0) { -2441: s = 0; -2441: t = 1; -2441: return V_EQ; -2441: } -2441: else { -2441: if (x < 0) { -2441: s = -1; -2441: } -2441: else { -2441: s = 1; -2441: } -2441: t = 0; -2441: return abs(to, x, dir); -2441: } -2441: } -2441: -2441: s = 1; -2441: t = 0; -2441: bool negative_x = x < 0; -2441: bool negative_y = y < 0; -2441: -2441: Result r; -2441: r = abs(to, x, dir); -2441: if (r != V_EQ) { -2441: return r; -2441: } -2441: -2441: From2 a_y; -2441: r = abs(a_y, y, dir); -2441: if (r != V_EQ) { -2441: return r; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: if (to == a_y) { -2441: goto sign_check; -2441: } -2441: -2441: -2441: { -2441: To2 v1 = 0; -2441: To3 v2 = 1; -2441: To1 v3 = static_cast(a_y); -2441: while (true) { -2441: To1 q = to / v3; -2441: -2441: To1 t3 = to - q*v3; -2441: To2 t1 = s - static_cast(q)*v1; -2441: To3 t2 = t - static_cast(q)*v2; -2441: s = v1; -2441: t = v2; -2441: to = v3; -2441: if (t3 == 0) { -2441: break; -2441: } -2441: v1 = t1; -2441: v2 = t2; -2441: v3 = t3; -2441: } -2441: } -2441: -2441: -2441: sign_check: -2441: -2441: if (negative_x) { -2441: r = neg(s, s, dir); -2441: if (r != V_EQ) { -2441: return r; -2441: } -2441: } -2441: if (negative_y) { -2441: return neg(t, t, dir); -2441: } -2441: return V_EQ; -2441: -2441: } -2441: -2441: template -2441: inline Result -2441: lcm_gcd_exact(To& to, const From1& x, const From2& y, Rounding_Dir dir) { -2441: if (x == 0 || y == 0) { -2441: to = 0; -2441: return V_EQ; -2441: } -2441: To a_x; -2441: To a_y; -2441: Result r; -2441: r = abs(a_x, x, dir); -2441: if (r != V_EQ) { -2441: return r; -2441: } -2441: r = abs(a_y, y, dir); -2441: if (r != V_EQ) { -2441: return r; -2441: } -2441: To gcd; -2441: gcd_exact_no_abs(gcd, a_x, a_y); -2441: -2441: -2441: -2441: div(to, a_x, gcd, ROUND_NOT_NEEDED); -2441: return mul(to, to, a_y, dir); -2441: } -2441: -2441: template -2441: inline Result_Relation -2441: sgn_generic(const Type& x) { -2441: if (x > 0) { -2441: return VR_GT; -2441: } -2441: if (x == 0) { -2441: return VR_EQ; -2441: } -2441: return VR_LT; -2441: } -2441: -2441: template -2441: struct Safe_Int_Comparison : public False { -2441: }; -2441: -2441: template -2441: struct Safe_Int_Comparison::value && C_Integer::value)>::type> -2441: : public Bool<(C_Integer::is_signed -2441: ? (C_Integer::is_signed -2441: || sizeof(T2) < sizeof(T1) -2441: || sizeof(T2) < sizeof(int)) -2441: : (!C_Integer::is_signed -2441: || sizeof(T1) < sizeof(T2) -2441: || sizeof(T1) < sizeof(int)))> { -2441: }; -2441: -2441: -2441: template -2441: inline typename Enable_If<(Safe_Int_Comparison::value -2441: || Safe_Conversion::value -2441: || Safe_Conversion::value), bool>::type -2441: lt(const T1& x, const T2& y) { -2441: return x < y; -2441: } -2441: template -2441: inline typename Enable_If<(Safe_Int_Comparison::value -2441: || Safe_Conversion::value -2441: || Safe_Conversion::value), bool>::type -2441: le(const T1& x, const T2& y) { -2441: return x <= y; -2441: } -2441: template -2441: inline typename Enable_If<(Safe_Int_Comparison::value -2441: || Safe_Conversion::value -2441: || Safe_Conversion::value), bool>::type -2441: eq(const T1& x, const T2& y) { -2441: return x == y; -2441: } -2441: -2441: template -2441: inline typename Enable_If<(!Safe_Int_Comparison::value -2441: && C_Integer::value -2441: && C_Integer::is_signed), bool>::type -2441: lt(const S& x, const U& y) { -2441: return x < 0 || static_cast::other_type>(x) < y; -2441: } -2441: -2441: template -2441: inline typename Enable_If<(!Safe_Int_Comparison::value -2441: && C_Integer::value -2441: && C_Integer::is_signed), bool>::type -2441: lt(const U& x, const S& y) { -2441: return y >= 0 && x < static_cast::other_type>(y); -2441: } -2441: -2441: template -2441: inline typename Enable_If<(!Safe_Int_Comparison::value -2441: && C_Integer::value -2441: && C_Integer::is_signed), bool>::type -2441: le(const S& x, const U& y) { -2441: return x < 0 || static_cast::other_type>(x) <= y; -2441: } -2441: -2441: template -2441: inline typename Enable_If<(!Safe_Int_Comparison::value -2441: && C_Integer::value -2441: && C_Integer::is_signed), bool>::type -2441: le(const U& x, const S& y) { -2441: return y >= 0 && x <= static_cast::other_type>(y); -2441: } -2441: -2441: template -2441: inline typename Enable_If<(!Safe_Int_Comparison::value -2441: && C_Integer::value -2441: && C_Integer::is_signed), bool>::type -2441: eq(const S& x, const U& y) { -2441: return x >= 0 && static_cast::other_type>(x) == y; -2441: } -2441: -2441: template -2441: inline typename Enable_If<(!Safe_Int_Comparison::value -2441: && C_Integer::value -2441: && C_Integer::is_signed), bool>::type -2441: eq(const U& x, const S& y) { -2441: return y >= 0 && x == static_cast::other_type>(y); -2441: } -2441: -2441: template -2441: inline typename Enable_If<(!Safe_Conversion::value -2441: && !Safe_Conversion::value -2441: && (!C_Integer::value || !C_Integer::value)), bool>::type -2441: eq(const T1& x, const T2& y) { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp; T1& tmp = holder_tmp.item(); -2441: Result r = assign_r(tmp, y, ROUND_CHECK); -2441: -2441: -2441: -2441: -2441: ((void) 0); -2441: return r == V_EQ && x == tmp; -2441: } -2441: -2441: template -2441: inline typename Enable_If<(!Safe_Conversion::value -2441: && !Safe_Conversion::value -2441: && (!C_Integer::value || !C_Integer::value)), bool>::type -2441: lt(const T1& x, const T2& y) { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp; T1& tmp = holder_tmp.item(); -2441: Result r = assign_r(tmp, y, ROUND_UP); -2441: if (!result_representable(r)) { -2441: return true; -2441: } -2441: switch (result_relation(r)) { -2441: case VR_EQ: -2441: case VR_LT: -2441: case VR_LE: -2441: return x < tmp; -2441: default: -2441: return false; -2441: } -2441: } -2441: -2441: template -2441: inline typename -2441: Enable_If<(!Safe_Conversion::value -2441: && !Safe_Conversion::value -2441: && (!C_Integer::value || !C_Integer::value)), bool>::type -2441: le(const T1& x, const T2& y) { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp; T1& tmp = holder_tmp.item(); -2441: Result r = assign_r(tmp, y, (ROUND_UP | ROUND_STRICT_RELATION)); -2441: -2441: -2441: -2441: -2441: ((void) 0); -2441: if (!result_representable(r)) { -2441: return true; -2441: } -2441: switch (result_relation(r)) { -2441: case VR_EQ: -2441: return x <= tmp; -2441: case VR_LT: -2441: return x < tmp; -2441: case VR_LE: -2441: case VR_GE: -2441: case VR_LGE: -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return false; -2441: default: -2441: return false; -2441: } -2441: } -2441: -2441: template -2441: inline bool -2441: lt_p(const Type1& x, const Type2& y) { -2441: return lt(x, y); -2441: } -2441: -2441: template -2441: inline bool -2441: le_p(const Type1& x, const Type2& y) { -2441: return le(x, y); -2441: } -2441: -2441: template -2441: inline bool -2441: eq_p(const Type1& x, const Type2& y) { -2441: return eq(x, y); -2441: } -2441: -2441: template -2441: inline Result_Relation -2441: cmp_generic(const Type1& x, const Type2& y) { -2441: if (lt(y, x)) { -2441: return VR_GT; -2441: } -2441: if (lt(x, y)) { -2441: return VR_LT; -2441: } -2441: return VR_EQ; -2441: } -2441: -2441: template -2441: inline Result -2441: assign_nan(Type& to, Result r) { -2441: assign_special(to, VC_NAN, ROUND_IGNORE); -2441: return r; -2441: } -2441: -2441: template -2441: inline Result -2441: input_generic(Type& to, std::istream& is, Rounding_Dir dir) { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_q; mpq_class& q = holder_q.item(); -2441: Result r = input_mpq(q, is); -2441: Result_Class c = result_class(r); -2441: switch (c) { -2441: case VC_MINUS_INFINITY: -2441: case VC_PLUS_INFINITY: -2441: return assign_special(to, c, dir); -2441: case VC_NAN: -2441: return assign_nan(to, r); -2441: default: -2441: break; -2441: } -2441: ((void) 0); -2441: return assign(to, q, dir); -2441: } -2441: -2441: } -2441: -2441: } -2441: # 701 "../../src/checked_defs.hh" 2 -2441: # 1 "../../src/checked_int_inlines.hh" 1 -2441: # 28 "../../src/checked_int_inlines.hh" -2441: # 1 "/usr/include/c++/8/cerrno" 1 3 -2441: # 39 "/usr/include/c++/8/cerrno" 3 -2441: -2441: # 40 "/usr/include/c++/8/cerrno" 3 -2441: # 29 "../../src/checked_int_inlines.hh" 2 -2441: # 1 "/usr/include/c++/8/cstdlib" 1 3 -2441: # 39 "/usr/include/c++/8/cstdlib" 3 -2441: -2441: # 40 "/usr/include/c++/8/cstdlib" 3 -2441: # 30 "../../src/checked_int_inlines.hh" 2 -2441: # 1 "/usr/include/c++/8/climits" 1 3 -2441: # 39 "/usr/include/c++/8/climits" 3 -2441: -2441: # 40 "/usr/include/c++/8/climits" 3 -2441: -2441: -2441: # 1 "/usr/lib/gcc/i686-linux-gnu/8/include-fixed/limits.h" 1 3 4 -2441: # 43 "/usr/include/c++/8/climits" 2 3 -2441: # 31 "../../src/checked_int_inlines.hh" 2 -2441: # 43 "../../src/checked_int_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: namespace Checked { -2441: # 71 "../../src/checked_int_inlines.hh" -2441: template -2441: struct Extended_Int { -2441: static const Type plus_infinity = C_Integer::max; -2441: static const Type minus_infinity = ((C_Integer::min >= 0) -2441: ? (C_Integer::max - 1) -2441: : C_Integer::min); -2441: static const Type not_a_number -2441: = ((C_Integer::min >= 0) -2441: ? (C_Integer::max - 2 * (Policy::has_infinity ? 1 : 0)) -2441: : (C_Integer::min + (Policy::has_infinity ? 1 : 0))); -2441: static const Type min -2441: = (C_Integer::min -2441: + ((C_Integer::min >= 0) -2441: ? 0 -2441: : ((Policy::has_infinity ? 1 : 0) + (Policy::has_nan ? 1 : 0)))); -2441: static const Type max -2441: = (C_Integer::max -2441: - ((C_Integer::min >= 0) -2441: ? (2 * (Policy::has_infinity ? 1 : 0) + (Policy::has_nan ? 1 : 0)) -2441: : (Policy::has_infinity ? 1 : 0))); -2441: }; -2441: -2441: template -2441: inline Result -2441: set_neg_overflow_int(To& to, Rounding_Dir dir) { -2441: if (round_up(dir)) { -2441: to = Extended_Int::min; -2441: return V_LT_INF; -2441: } -2441: else { -2441: if (Policy::has_infinity) { -2441: to = Extended_Int::minus_infinity; -2441: return V_GT_MINUS_INFINITY; -2441: } -2441: return V_GT_MINUS_INFINITY | V_UNREPRESENTABLE; -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: set_pos_overflow_int(To& to, Rounding_Dir dir) { -2441: if (round_down(dir)) { -2441: to = Extended_Int::max; -2441: return V_GT_SUP; -2441: } -2441: else { -2441: if (Policy::has_infinity) { -2441: to = Extended_Int::plus_infinity; -2441: return V_LT_PLUS_INFINITY; -2441: } -2441: return V_LT_PLUS_INFINITY | V_UNREPRESENTABLE; -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: round_lt_int_no_overflow(To& to, Rounding_Dir dir) { -2441: if (round_down(dir)) { -2441: --to; -2441: return V_GT; -2441: } -2441: return V_LT; -2441: } -2441: -2441: template -2441: inline Result -2441: round_gt_int_no_overflow(To& to, Rounding_Dir dir) { -2441: if (round_up(dir)) { -2441: ++to; -2441: return V_LT; -2441: } -2441: return V_GT; -2441: } -2441: -2441: template -2441: inline Result -2441: round_lt_int(To& to, Rounding_Dir dir) { -2441: if (round_down(dir)) { -2441: if (to == Extended_Int::min) { -2441: if (Policy::has_infinity) { -2441: to = Extended_Int::minus_infinity; -2441: return V_GT_MINUS_INFINITY; -2441: } -2441: return V_GT_MINUS_INFINITY | V_UNREPRESENTABLE; -2441: } -2441: else { -2441: --to; -2441: return V_GT; -2441: } -2441: } -2441: return V_LT; -2441: } -2441: -2441: template -2441: inline Result -2441: round_gt_int(To& to, Rounding_Dir dir) { -2441: if (round_up(dir)) { -2441: if (to == Extended_Int::max) { -2441: if (Policy::has_infinity) { -2441: to = Extended_Int::plus_infinity; -2441: return V_LT_PLUS_INFINITY; -2441: } -2441: return V_LT_PLUS_INFINITY | V_UNREPRESENTABLE; -2441: } -2441: else { -2441: ++to; -2441: return V_LT; -2441: } -2441: } -2441: return V_GT; -2441: } -2441: -2441: template struct copy_function_struct { static inline void function( char& arg1, const char &arg2) { return copy_generic(arg1, arg2); } }; -2441: template struct copy_function_struct { static inline void function( signed char& arg1, const signed char &arg2) { return copy_generic(arg1, arg2); } }; -2441: template struct copy_function_struct { static inline void function( signed short& arg1, const signed short &arg2) { return copy_generic(arg1, arg2); } }; -2441: template struct copy_function_struct { static inline void function( signed int& arg1, const signed int &arg2) { return copy_generic(arg1, arg2); } }; -2441: template struct copy_function_struct { static inline void function( signed long& arg1, const signed long &arg2) { return copy_generic(arg1, arg2); } }; -2441: template struct copy_function_struct { static inline void function( signed long long& arg1, const signed long long &arg2) { return copy_generic(arg1, arg2); } }; -2441: template struct copy_function_struct { static inline void function( unsigned char& arg1, const unsigned char &arg2) { return copy_generic(arg1, arg2); } }; -2441: template struct copy_function_struct { static inline void function( unsigned short& arg1, const unsigned short &arg2) { return copy_generic(arg1, arg2); } }; -2441: template struct copy_function_struct { static inline void function( unsigned int& arg1, const unsigned int &arg2) { return copy_generic(arg1, arg2); } }; -2441: template struct copy_function_struct { static inline void function( unsigned long& arg1, const unsigned long &arg2) { return copy_generic(arg1, arg2); } }; -2441: template struct copy_function_struct { static inline void function( unsigned long long& arg1, const unsigned long long &arg2) { return copy_generic(arg1, arg2); } }; -2441: -2441: template -2441: inline Result -2441: classify_int(const Type v, bool nan, bool inf, bool sign) { -2441: if (Policy::has_nan -2441: && (nan || sign) -2441: && v == Extended_Int::not_a_number) { -2441: return V_NAN; -2441: } -2441: if (!inf && !sign) { -2441: return V_LGE; -2441: } -2441: if (Policy::has_infinity) { -2441: if (v == Extended_Int::minus_infinity) { -2441: return inf ? V_EQ_MINUS_INFINITY : V_LT; -2441: } -2441: if (v == Extended_Int::plus_infinity) { -2441: return inf ? V_EQ_PLUS_INFINITY : V_GT; -2441: } -2441: } -2441: if (sign) { -2441: if (v < 0) { -2441: return V_LT; -2441: } -2441: if (v > 0) { -2441: return V_GT; -2441: } -2441: return V_EQ; -2441: } -2441: return V_LGE; -2441: } -2441: -2441: template struct classify_function_struct { static inline Result function(const char& arg, bool a1, bool a2, bool a3) { return classify_int(arg, a1, a2, a3); } }; -2441: template struct classify_function_struct { static inline Result function(const signed char& arg, bool a1, bool a2, bool a3) { return classify_int(arg, a1, a2, a3); } }; -2441: template struct classify_function_struct { static inline Result function(const signed short& arg, bool a1, bool a2, bool a3) { return classify_int(arg, a1, a2, a3); } }; -2441: template struct classify_function_struct { static inline Result function(const signed int& arg, bool a1, bool a2, bool a3) { return classify_int(arg, a1, a2, a3); } }; -2441: template struct classify_function_struct { static inline Result function(const signed long& arg, bool a1, bool a2, bool a3) { return classify_int(arg, a1, a2, a3); } }; -2441: template struct classify_function_struct { static inline Result function(const signed long long& arg, bool a1, bool a2, bool a3) { return classify_int(arg, a1, a2, a3); } }; -2441: template struct classify_function_struct { static inline Result function(const unsigned char& arg, bool a1, bool a2, bool a3) { return classify_int(arg, a1, a2, a3); } }; -2441: template struct classify_function_struct { static inline Result function(const unsigned short& arg, bool a1, bool a2, bool a3) { return classify_int(arg, a1, a2, a3); } }; -2441: template struct classify_function_struct { static inline Result function(const unsigned int& arg, bool a1, bool a2, bool a3) { return classify_int(arg, a1, a2, a3); } }; -2441: template struct classify_function_struct { static inline Result function(const unsigned long& arg, bool a1, bool a2, bool a3) { return classify_int(arg, a1, a2, a3); } }; -2441: template struct classify_function_struct { static inline Result function(const unsigned long long& arg, bool a1, bool a2, bool a3) { return classify_int(arg, a1, a2, a3); } }; -2441: -2441: template -2441: inline bool -2441: is_nan_int(const Type v) { -2441: return Policy::has_nan && v == Extended_Int::not_a_number; -2441: } -2441: -2441: template struct is_nan_function_struct { static inline bool function(const char& arg) { return is_nan_int(arg); } }; -2441: template struct is_nan_function_struct { static inline bool function(const signed char& arg) { return is_nan_int(arg); } }; -2441: template struct is_nan_function_struct { static inline bool function(const signed short& arg) { return is_nan_int(arg); } }; -2441: template struct is_nan_function_struct { static inline bool function(const signed int& arg) { return is_nan_int(arg); } }; -2441: template struct is_nan_function_struct { static inline bool function(const signed long& arg) { return is_nan_int(arg); } }; -2441: template struct is_nan_function_struct { static inline bool function(const signed long long& arg) { return is_nan_int(arg); } }; -2441: template struct is_nan_function_struct { static inline bool function(const unsigned char& arg) { return is_nan_int(arg); } }; -2441: template struct is_nan_function_struct { static inline bool function(const unsigned short& arg) { return is_nan_int(arg); } }; -2441: template struct is_nan_function_struct { static inline bool function(const unsigned int& arg) { return is_nan_int(arg); } }; -2441: template struct is_nan_function_struct { static inline bool function(const unsigned long& arg) { return is_nan_int(arg); } }; -2441: template struct is_nan_function_struct { static inline bool function(const unsigned long long& arg) { return is_nan_int(arg); } }; -2441: -2441: template -2441: inline bool -2441: is_minf_int(const Type v) { -2441: return Policy::has_infinity -2441: && v == Extended_Int::minus_infinity; -2441: } -2441: -2441: template struct is_minf_function_struct { static inline bool function(const char& arg) { return is_minf_int(arg); } }; -2441: template struct is_minf_function_struct { static inline bool function(const signed char& arg) { return is_minf_int(arg); } }; -2441: template struct is_minf_function_struct { static inline bool function(const signed short& arg) { return is_minf_int(arg); } }; -2441: template struct is_minf_function_struct { static inline bool function(const signed int& arg) { return is_minf_int(arg); } }; -2441: template struct is_minf_function_struct { static inline bool function(const signed long& arg) { return is_minf_int(arg); } }; -2441: template struct is_minf_function_struct { static inline bool function(const signed long long& arg) { return is_minf_int(arg); } }; -2441: template struct is_minf_function_struct { static inline bool function(const unsigned char& arg) { return is_minf_int(arg); } }; -2441: template struct is_minf_function_struct { static inline bool function(const unsigned short& arg) { return is_minf_int(arg); } }; -2441: template struct is_minf_function_struct { static inline bool function(const unsigned int& arg) { return is_minf_int(arg); } }; -2441: template struct is_minf_function_struct { static inline bool function(const unsigned long& arg) { return is_minf_int(arg); } }; -2441: template struct is_minf_function_struct { static inline bool function(const unsigned long long& arg) { return is_minf_int(arg); } }; -2441: -2441: template -2441: inline bool -2441: is_pinf_int(const Type v) { -2441: return Policy::has_infinity -2441: && v == Extended_Int::plus_infinity; -2441: } -2441: -2441: template struct is_pinf_function_struct { static inline bool function(const char& arg) { return is_pinf_int(arg); } }; -2441: template struct is_pinf_function_struct { static inline bool function(const signed char& arg) { return is_pinf_int(arg); } }; -2441: template struct is_pinf_function_struct { static inline bool function(const signed short& arg) { return is_pinf_int(arg); } }; -2441: template struct is_pinf_function_struct { static inline bool function(const signed int& arg) { return is_pinf_int(arg); } }; -2441: template struct is_pinf_function_struct { static inline bool function(const signed long& arg) { return is_pinf_int(arg); } }; -2441: template struct is_pinf_function_struct { static inline bool function(const signed long long& arg) { return is_pinf_int(arg); } }; -2441: template struct is_pinf_function_struct { static inline bool function(const unsigned char& arg) { return is_pinf_int(arg); } }; -2441: template struct is_pinf_function_struct { static inline bool function(const unsigned short& arg) { return is_pinf_int(arg); } }; -2441: template struct is_pinf_function_struct { static inline bool function(const unsigned int& arg) { return is_pinf_int(arg); } }; -2441: template struct is_pinf_function_struct { static inline bool function(const unsigned long& arg) { return is_pinf_int(arg); } }; -2441: template struct is_pinf_function_struct { static inline bool function(const unsigned long long& arg) { return is_pinf_int(arg); } }; -2441: -2441: template -2441: inline bool -2441: is_int_int(const Type v) { -2441: return !is_nan(v); -2441: } -2441: -2441: template struct is_int_function_struct { static inline bool function(const char& arg) { return is_int_int(arg); } }; -2441: template struct is_int_function_struct { static inline bool function(const signed char& arg) { return is_int_int(arg); } }; -2441: template struct is_int_function_struct { static inline bool function(const signed short& arg) { return is_int_int(arg); } }; -2441: template struct is_int_function_struct { static inline bool function(const signed int& arg) { return is_int_int(arg); } }; -2441: template struct is_int_function_struct { static inline bool function(const signed long& arg) { return is_int_int(arg); } }; -2441: template struct is_int_function_struct { static inline bool function(const signed long long& arg) { return is_int_int(arg); } }; -2441: template struct is_int_function_struct { static inline bool function(const unsigned char& arg) { return is_int_int(arg); } }; -2441: template struct is_int_function_struct { static inline bool function(const unsigned short& arg) { return is_int_int(arg); } }; -2441: template struct is_int_function_struct { static inline bool function(const unsigned int& arg) { return is_int_int(arg); } }; -2441: template struct is_int_function_struct { static inline bool function(const unsigned long& arg) { return is_int_int(arg); } }; -2441: template struct is_int_function_struct { static inline bool function(const unsigned long long& arg) { return is_int_int(arg); } }; -2441: -2441: template -2441: inline Result -2441: assign_special_int(Type& v, Result_Class c, Rounding_Dir dir) { -2441: ((void) 0); -2441: switch (c) { -2441: case VC_NAN: -2441: if (Policy::has_nan) { -2441: v = Extended_Int::not_a_number; -2441: return V_NAN; -2441: } -2441: return V_NAN | V_UNREPRESENTABLE; -2441: case VC_MINUS_INFINITY: -2441: if (Policy::has_infinity) { -2441: v = Extended_Int::minus_infinity; -2441: return V_EQ_MINUS_INFINITY; -2441: } -2441: if (round_up(dir)) { -2441: v = Extended_Int::min; -2441: return V_LT_INF; -2441: } -2441: return V_EQ_MINUS_INFINITY | V_UNREPRESENTABLE; -2441: case VC_PLUS_INFINITY: -2441: if (Policy::has_infinity) { -2441: v = Extended_Int::plus_infinity; -2441: return V_EQ_PLUS_INFINITY; -2441: } -2441: if (round_down(dir)) { -2441: v = Extended_Int::max; -2441: return V_GT_SUP; -2441: } -2441: return V_EQ_PLUS_INFINITY | V_UNREPRESENTABLE; -2441: default: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return V_NAN | V_UNREPRESENTABLE; -2441: } -2441: } -2441: -2441: template struct assign_special_function_struct { static inline Result function( char& arg, Result_Class a1, Rounding_Dir a2) { return assign_special_int(arg, a1, a2); } }; -2441: template struct assign_special_function_struct { static inline Result function( signed char& arg, Result_Class a1, Rounding_Dir a2) { return assign_special_int(arg, a1, a2); } }; -2441: template struct assign_special_function_struct { static inline Result function( signed short& arg, Result_Class a1, Rounding_Dir a2) { return assign_special_int(arg, a1, a2); } }; -2441: template struct assign_special_function_struct { static inline Result function( signed int& arg, Result_Class a1, Rounding_Dir a2) { return assign_special_int(arg, a1, a2); } }; -2441: template struct assign_special_function_struct { static inline Result function( signed long& arg, Result_Class a1, Rounding_Dir a2) { return assign_special_int(arg, a1, a2); } }; -2441: template struct assign_special_function_struct { static inline Result function( signed long long& arg, Result_Class a1, Rounding_Dir a2) { return assign_special_int(arg, a1, a2); } }; -2441: template struct assign_special_function_struct { static inline Result function( unsigned char& arg, Result_Class a1, Rounding_Dir a2) { return assign_special_int(arg, a1, a2); } }; -2441: template struct assign_special_function_struct { static inline Result function( unsigned short& arg, Result_Class a1, Rounding_Dir a2) { return assign_special_int(arg, a1, a2); } }; -2441: template struct assign_special_function_struct { static inline Result function( unsigned int& arg, Result_Class a1, Rounding_Dir a2) { return assign_special_int(arg, a1, a2); } }; -2441: template struct assign_special_function_struct { static inline Result function( unsigned long& arg, Result_Class a1, Rounding_Dir a2) { return assign_special_int(arg, a1, a2); } }; -2441: template struct assign_special_function_struct { static inline Result function( unsigned long long& arg, Result_Class a1, Rounding_Dir a2) { return assign_special_int(arg, a1, a2); } }; -2441: -2441: template -2441: inline Result -2441: assign_signed_int_signed_int(To& to, const From from, Rounding_Dir dir) { -2441: if (sizeof(To) < sizeof(From) -2441: || (sizeof(To) == sizeof(From) -2441: && (Extended_Int::min > Extended_Int::min -2441: || Extended_Int::max < Extended_Int::max))) { -2441: if (((To_Policy::check_overflow) ? (((from) < (static_cast(Extended_Int::min)))) : ( -2441: # 368 "../../src/checked_int_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 368 "../../src/checked_int_inlines.hh" -2441: , false)) -2441: -2441: ) { -2441: return set_neg_overflow_int(to, dir); -2441: } -2441: if (((To_Policy::check_overflow) ? (((from) > (static_cast(Extended_Int::max)))) : ( -2441: # 373 "../../src/checked_int_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 373 "../../src/checked_int_inlines.hh" -2441: , false)) -2441: -2441: ) { -2441: return set_pos_overflow_int(to, dir); -2441: } -2441: } -2441: to = static_cast(from); -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline Result -2441: assign_signed_int_unsigned_int(To& to, const From from, Rounding_Dir dir) { -2441: if (sizeof(To) <= sizeof(From)) { -2441: if (((To_Policy::check_overflow) ? (from > static_cast(Extended_Int::max)) : ( -2441: # 387 "../../src/checked_int_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 387 "../../src/checked_int_inlines.hh" -2441: , false)) -2441: ) { -2441: return set_pos_overflow_int(to, dir); -2441: } -2441: } -2441: to = static_cast(from); -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline Result -2441: assign_unsigned_int_signed_int(To& to, const From from, Rounding_Dir dir) { -2441: if (((To_Policy::check_overflow) ? (from < 0) : ( -2441: # 399 "../../src/checked_int_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 399 "../../src/checked_int_inlines.hh" -2441: , false))) { -2441: return set_neg_overflow_int(to, dir); -2441: } -2441: if (sizeof(To) < sizeof(From)) { -2441: if (((To_Policy::check_overflow) ? (from > static_cast(Extended_Int::max)) : ( -2441: # 403 "../../src/checked_int_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 403 "../../src/checked_int_inlines.hh" -2441: , false)) -2441: ) { -2441: return set_pos_overflow_int(to, dir); -2441: } -2441: } -2441: to = static_cast(from); -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline Result -2441: assign_unsigned_int_unsigned_int(To& to, const From from, Rounding_Dir dir) { -2441: if (sizeof(To) < sizeof(From) -2441: || (sizeof(To) == sizeof(From) -2441: && Extended_Int::max < Extended_Int::max)) { -2441: if (((To_Policy::check_overflow) ? (((from) > (static_cast(Extended_Int::max)))) : ( -2441: # 418 "../../src/checked_int_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 418 "../../src/checked_int_inlines.hh" -2441: , false)) -2441: -2441: ) { -2441: return set_pos_overflow_int(to, dir); -2441: } -2441: } -2441: to = static_cast(from); -2441: return V_EQ; -2441: } -2441: # 451 "../../src/checked_int_inlines.hh" -2441: template struct assign_function_struct { static inline Result function( char& arg1, const char &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: -2441: template struct assign_function_struct { static inline Result function( signed char& arg1, const signed char &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed short& arg1, const signed short &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed int& arg1, const signed int &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed long& arg1, const signed long &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed long long& arg1, const signed long long &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: -2441: -2441: -2441: template struct assign_function_struct { static inline Result function( unsigned char& arg1, const unsigned char &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned short& arg1, const unsigned short &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned int& arg1, const unsigned int &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned long& arg1, const unsigned long &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned long long& arg1, const unsigned long long &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: -2441: -2441: template struct assign_function_struct { static inline Result function( char& arg1, const signed short &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( signed short& arg1, const char &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( char& arg1, const signed int &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( signed int& arg1, const char &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( char& arg1, const signed long &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( signed long& arg1, const char &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( char& arg1, const signed long long &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( signed long long& arg1, const char &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: -2441: template struct assign_function_struct { static inline Result function( signed char& arg1, const signed short &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( signed short& arg1, const signed char &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed char& arg1, const signed int &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( signed int& arg1, const signed char &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed char& arg1, const signed long &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( signed long& arg1, const signed char &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed char& arg1, const signed long long &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( signed long long& arg1, const signed char &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed short& arg1, const signed int &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( signed int& arg1, const signed short &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed short& arg1, const signed long &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( signed long& arg1, const signed short &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed short& arg1, const signed long long &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( signed long long& arg1, const signed short &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed int& arg1, const signed long &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( signed long& arg1, const signed int &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed int& arg1, const signed long long &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( signed long long& arg1, const signed int &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed long& arg1, const signed long long &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( signed long long& arg1, const signed long &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: template struct assign_function_struct { static inline Result function( unsigned char& arg1, const unsigned short &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( unsigned short& arg1, const unsigned char &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned char& arg1, const unsigned int &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( unsigned int& arg1, const unsigned char &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned char& arg1, const unsigned long &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( unsigned long& arg1, const unsigned char &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned char& arg1, const unsigned long long &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( unsigned long long& arg1, const unsigned char &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned short& arg1, const unsigned int &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( unsigned int& arg1, const unsigned short &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned short& arg1, const unsigned long &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( unsigned long& arg1, const unsigned short &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned short& arg1, const unsigned long long &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( unsigned long long& arg1, const unsigned short &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned int& arg1, const unsigned long &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( unsigned long& arg1, const unsigned int &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned int& arg1, const unsigned long long &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( unsigned long long& arg1, const unsigned int &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned long& arg1, const unsigned long long &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( unsigned long long& arg1, const unsigned long &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: template struct assign_function_struct { static inline Result function( unsigned char& arg1, const signed short &arg2, Rounding_Dir a1) { return assign_unsigned_int_signed_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( signed short& arg1, const unsigned char &arg2, Rounding_Dir a1) { return assign_signed_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned char& arg1, const signed int &arg2, Rounding_Dir a1) { return assign_unsigned_int_signed_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( signed int& arg1, const unsigned char &arg2, Rounding_Dir a1) { return assign_signed_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned char& arg1, const signed long &arg2, Rounding_Dir a1) { return assign_unsigned_int_signed_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( signed long& arg1, const unsigned char &arg2, Rounding_Dir a1) { return assign_signed_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned char& arg1, const signed long long &arg2, Rounding_Dir a1) { return assign_unsigned_int_signed_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( signed long long& arg1, const unsigned char &arg2, Rounding_Dir a1) { return assign_signed_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned short& arg1, const signed int &arg2, Rounding_Dir a1) { return assign_unsigned_int_signed_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( signed int& arg1, const unsigned short &arg2, Rounding_Dir a1) { return assign_signed_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned short& arg1, const signed long &arg2, Rounding_Dir a1) { return assign_unsigned_int_signed_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( signed long& arg1, const unsigned short &arg2, Rounding_Dir a1) { return assign_signed_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned short& arg1, const signed long long &arg2, Rounding_Dir a1) { return assign_unsigned_int_signed_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( signed long long& arg1, const unsigned short &arg2, Rounding_Dir a1) { return assign_signed_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned int& arg1, const signed long &arg2, Rounding_Dir a1) { return assign_unsigned_int_signed_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( signed long& arg1, const unsigned int &arg2, Rounding_Dir a1) { return assign_signed_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned int& arg1, const signed long long &arg2, Rounding_Dir a1) { return assign_unsigned_int_signed_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( signed long long& arg1, const unsigned int &arg2, Rounding_Dir a1) { return assign_signed_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned long& arg1, const signed long long &arg2, Rounding_Dir a1) { return assign_unsigned_int_signed_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( signed long long& arg1, const unsigned long &arg2, Rounding_Dir a1) { return assign_signed_int_unsigned_int(arg1, arg2, a1); } }; -2441: -2441: template struct assign_function_struct { static inline Result function( char& arg1, const unsigned char &arg2, Rounding_Dir a1) { return assign_signed_int_unsigned_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( unsigned char& arg1, const char &arg2, Rounding_Dir a1) { return assign_unsigned_int_signed_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( char& arg1, const unsigned short &arg2, Rounding_Dir a1) { return assign_signed_int_unsigned_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( unsigned short& arg1, const char &arg2, Rounding_Dir a1) { return assign_unsigned_int_signed_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( char& arg1, const unsigned int &arg2, Rounding_Dir a1) { return assign_signed_int_unsigned_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( unsigned int& arg1, const char &arg2, Rounding_Dir a1) { return assign_unsigned_int_signed_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( char& arg1, const unsigned long &arg2, Rounding_Dir a1) { return assign_signed_int_unsigned_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( unsigned long& arg1, const char &arg2, Rounding_Dir a1) { return assign_unsigned_int_signed_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( char& arg1, const unsigned long long &arg2, Rounding_Dir a1) { return assign_signed_int_unsigned_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( unsigned long long& arg1, const char &arg2, Rounding_Dir a1) { return assign_unsigned_int_signed_int(arg1, arg2, a1); } }; -2441: -2441: -2441: -2441: template struct assign_function_struct { static inline Result function( signed char& arg1, const unsigned char &arg2, Rounding_Dir a1) { return assign_signed_int_unsigned_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( unsigned char& arg1, const signed char &arg2, Rounding_Dir a1) { return assign_unsigned_int_signed_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed char& arg1, const unsigned short &arg2, Rounding_Dir a1) { return assign_signed_int_unsigned_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( unsigned short& arg1, const signed char &arg2, Rounding_Dir a1) { return assign_unsigned_int_signed_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed char& arg1, const unsigned int &arg2, Rounding_Dir a1) { return assign_signed_int_unsigned_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( unsigned int& arg1, const signed char &arg2, Rounding_Dir a1) { return assign_unsigned_int_signed_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed char& arg1, const unsigned long &arg2, Rounding_Dir a1) { return assign_signed_int_unsigned_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( unsigned long& arg1, const signed char &arg2, Rounding_Dir a1) { return assign_unsigned_int_signed_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed char& arg1, const unsigned long long &arg2, Rounding_Dir a1) { return assign_signed_int_unsigned_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( unsigned long long& arg1, const signed char &arg2, Rounding_Dir a1) { return assign_unsigned_int_signed_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed short& arg1, const unsigned short &arg2, Rounding_Dir a1) { return assign_signed_int_unsigned_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( unsigned short& arg1, const signed short &arg2, Rounding_Dir a1) { return assign_unsigned_int_signed_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed short& arg1, const unsigned int &arg2, Rounding_Dir a1) { return assign_signed_int_unsigned_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( unsigned int& arg1, const signed short &arg2, Rounding_Dir a1) { return assign_unsigned_int_signed_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed short& arg1, const unsigned long &arg2, Rounding_Dir a1) { return assign_signed_int_unsigned_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( unsigned long& arg1, const signed short &arg2, Rounding_Dir a1) { return assign_unsigned_int_signed_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed short& arg1, const unsigned long long &arg2, Rounding_Dir a1) { return assign_signed_int_unsigned_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( unsigned long long& arg1, const signed short &arg2, Rounding_Dir a1) { return assign_unsigned_int_signed_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed int& arg1, const unsigned int &arg2, Rounding_Dir a1) { return assign_signed_int_unsigned_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( unsigned int& arg1, const signed int &arg2, Rounding_Dir a1) { return assign_unsigned_int_signed_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed int& arg1, const unsigned long &arg2, Rounding_Dir a1) { return assign_signed_int_unsigned_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( unsigned long& arg1, const signed int &arg2, Rounding_Dir a1) { return assign_unsigned_int_signed_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed int& arg1, const unsigned long long &arg2, Rounding_Dir a1) { return assign_signed_int_unsigned_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( unsigned long long& arg1, const signed int &arg2, Rounding_Dir a1) { return assign_unsigned_int_signed_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed long& arg1, const unsigned long &arg2, Rounding_Dir a1) { return assign_signed_int_unsigned_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( unsigned long& arg1, const signed long &arg2, Rounding_Dir a1) { return assign_unsigned_int_signed_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed long& arg1, const unsigned long long &arg2, Rounding_Dir a1) { return assign_signed_int_unsigned_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( unsigned long long& arg1, const signed long &arg2, Rounding_Dir a1) { return assign_unsigned_int_signed_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed long long& arg1, const unsigned long long &arg2, Rounding_Dir a1) { return assign_signed_int_unsigned_int(arg1, arg2, a1); } }; template struct assign_function_struct { static inline Result function( unsigned long long& arg1, const signed long long &arg2, Rounding_Dir a1) { return assign_unsigned_int_signed_int(arg1, arg2, a1); } }; -2441: -2441: template -2441: inline Result -2441: assign_int_float(To& to, const From from, Rounding_Dir dir) { -2441: if (is_nan(from)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: else if (is_minf(from)) { -2441: return assign_special(to, VC_MINUS_INFINITY, dir); -2441: } -2441: else if (is_pinf(from)) { -2441: return assign_special(to, VC_PLUS_INFINITY, dir); -2441: } -2441: # 565 "../../src/checked_int_inlines.hh" -2441: if (((To_Policy::check_overflow) ? ((from < Extended_Int::min)) : ( -2441: # 565 "../../src/checked_int_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 565 "../../src/checked_int_inlines.hh" -2441: , false)) -2441: ) { -2441: return set_neg_overflow_int(to, dir); -2441: } -2441: if (((To_Policy::check_overflow) ? ((from > Extended_Int::max)) : ( -2441: # 569 "../../src/checked_int_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 569 "../../src/checked_int_inlines.hh" -2441: , false)) -2441: ) { -2441: return set_pos_overflow_int(to, dir); -2441: } -2441: -2441: if (round_not_requested(dir)) { -2441: to = from; -2441: return V_LGE; -2441: } -2441: From i_from = rint(from); -2441: to = i_from; -2441: if (from == i_from) { -2441: return V_EQ; -2441: } -2441: if (round_direct(ROUND_UP)) { -2441: return round_lt_int(to, dir); -2441: } -2441: if (round_direct(ROUND_DOWN)) { -2441: return round_gt_int(to, dir); -2441: } -2441: if (from < i_from) { -2441: return round_lt_int(to, dir); -2441: } -2441: ((void) 0); -2441: return round_gt_int(to, dir); -2441: } -2441: -2441: template struct assign_function_struct { static inline Result function( char& arg1, const float &arg2, Rounding_Dir a1) { return assign_int_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed char& arg1, const float &arg2, Rounding_Dir a1) { return assign_int_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed short& arg1, const float &arg2, Rounding_Dir a1) { return assign_int_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed int& arg1, const float &arg2, Rounding_Dir a1) { return assign_int_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed long& arg1, const float &arg2, Rounding_Dir a1) { return assign_int_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed long long& arg1, const float &arg2, Rounding_Dir a1) { return assign_int_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned char& arg1, const float &arg2, Rounding_Dir a1) { return assign_int_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned short& arg1, const float &arg2, Rounding_Dir a1) { return assign_int_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned int& arg1, const float &arg2, Rounding_Dir a1) { return assign_int_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned long& arg1, const float &arg2, Rounding_Dir a1) { return assign_int_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned long long& arg1, const float &arg2, Rounding_Dir a1) { return assign_int_float(arg1, arg2, a1); } }; -2441: -2441: template struct assign_function_struct { static inline Result function( char& arg1, const double &arg2, Rounding_Dir a1) { return assign_int_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed char& arg1, const double &arg2, Rounding_Dir a1) { return assign_int_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed short& arg1, const double &arg2, Rounding_Dir a1) { return assign_int_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed int& arg1, const double &arg2, Rounding_Dir a1) { return assign_int_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed long& arg1, const double &arg2, Rounding_Dir a1) { return assign_int_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed long long& arg1, const double &arg2, Rounding_Dir a1) { return assign_int_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned char& arg1, const double &arg2, Rounding_Dir a1) { return assign_int_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned short& arg1, const double &arg2, Rounding_Dir a1) { return assign_int_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned int& arg1, const double &arg2, Rounding_Dir a1) { return assign_int_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned long& arg1, const double &arg2, Rounding_Dir a1) { return assign_int_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned long long& arg1, const double &arg2, Rounding_Dir a1) { return assign_int_float(arg1, arg2, a1); } }; -2441: -2441: template struct assign_function_struct { static inline Result function( char& arg1, const long double &arg2, Rounding_Dir a1) { return assign_int_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed char& arg1, const long double &arg2, Rounding_Dir a1) { return assign_int_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed short& arg1, const long double &arg2, Rounding_Dir a1) { return assign_int_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed int& arg1, const long double &arg2, Rounding_Dir a1) { return assign_int_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed long& arg1, const long double &arg2, Rounding_Dir a1) { return assign_int_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed long long& arg1, const long double &arg2, Rounding_Dir a1) { return assign_int_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned char& arg1, const long double &arg2, Rounding_Dir a1) { return assign_int_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned short& arg1, const long double &arg2, Rounding_Dir a1) { return assign_int_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned int& arg1, const long double &arg2, Rounding_Dir a1) { return assign_int_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned long& arg1, const long double &arg2, Rounding_Dir a1) { return assign_int_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned long long& arg1, const long double &arg2, Rounding_Dir a1) { return assign_int_float(arg1, arg2, a1); } }; -2441: # 639 "../../src/checked_int_inlines.hh" -2441: template -2441: inline Result -2441: assign_signed_int_mpz(To& to, const mpz_class& from, Rounding_Dir dir) { -2441: if (sizeof(To) <= sizeof(signed long)) { -2441: if (!To_Policy::check_overflow) { -2441: to = from.get_si(); -2441: return V_EQ; -2441: } -2441: if (from.fits_slong_p()) { -2441: signed long v = from.get_si(); -2441: if (((v) < ((Extended_Int::min)))) { -2441: return set_neg_overflow_int(to, dir); -2441: } -2441: if (((v) > ((Extended_Int::max)))) { -2441: return set_pos_overflow_int(to, dir); -2441: } -2441: to = v; -2441: return V_EQ; -2441: } -2441: } -2441: else { -2441: mpz_srcptr m = from.get_mpz_t(); -2441: size_t sz = -2441: # 661 "../../src/checked_int_inlines.hh" 3 4 -2441: __gmpz_size -2441: # 661 "../../src/checked_int_inlines.hh" -2441: (m); -2441: if (sz <= sizeof(To) / sizeof(mp_limb_t)) { -2441: if (sz == 0) { -2441: to = 0; -2441: return V_EQ; -2441: } -2441: To v; -2441: -2441: # 668 "../../src/checked_int_inlines.hh" 3 4 -2441: __gmpz_export -2441: # 668 "../../src/checked_int_inlines.hh" -2441: (&v, 0, -1, sizeof(To), 0, 0, m); -2441: if (v >= 0) { -2441: if (::sgn(from) < 0) { -2441: return neg(to, v, dir); -2441: } -2441: to = v; -2441: return V_EQ; -2441: } -2441: } -2441: } -2441: return (::sgn(from) < 0) -2441: ? set_neg_overflow_int(to, dir) -2441: : set_pos_overflow_int(to, dir); -2441: } -2441: -2441: -2441: template struct assign_function_struct { static inline Result function( char& arg1, const mpz_class &arg2, Rounding_Dir a1) { return assign_signed_int_mpz(arg1, arg2, a1); } }; -2441: -2441: template struct assign_function_struct { static inline Result function( signed char& arg1, const mpz_class &arg2, Rounding_Dir a1) { return assign_signed_int_mpz(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed short& arg1, const mpz_class &arg2, Rounding_Dir a1) { return assign_signed_int_mpz(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed int& arg1, const mpz_class &arg2, Rounding_Dir a1) { return assign_signed_int_mpz(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed long& arg1, const mpz_class &arg2, Rounding_Dir a1) { return assign_signed_int_mpz(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed long long& arg1, const mpz_class &arg2, Rounding_Dir a1) { return assign_signed_int_mpz(arg1, arg2, a1); } }; -2441: -2441: template -2441: inline Result -2441: assign_unsigned_int_mpz(To& to, const mpz_class& from, Rounding_Dir dir) { -2441: if (((To_Policy::check_overflow) ? (::sgn(from) < 0) : ( -2441: # 695 "../../src/checked_int_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 695 "../../src/checked_int_inlines.hh" -2441: , false))) { -2441: return set_neg_overflow_int(to, dir); -2441: } -2441: if (sizeof(To) <= sizeof(unsigned long)) { -2441: if (!To_Policy::check_overflow) { -2441: to = static_cast(from.get_ui()); -2441: return V_EQ; -2441: } -2441: if (from.fits_ulong_p()) { -2441: const unsigned long v = from.get_ui(); -2441: if (((v) > ((Extended_Int::max)))) { -2441: return set_pos_overflow_int(to, dir); -2441: } -2441: to = static_cast(v); -2441: return V_EQ; -2441: } -2441: } -2441: else { -2441: const mpz_srcptr m = from.get_mpz_t(); -2441: const size_t sz = -2441: # 714 "../../src/checked_int_inlines.hh" 3 4 -2441: __gmpz_size -2441: # 714 "../../src/checked_int_inlines.hh" -2441: (m); -2441: if (sz <= sizeof(To) / sizeof(mp_limb_t)) { -2441: if (sz == 0) { -2441: to = 0; -2441: } -2441: else { -2441: -2441: # 720 "../../src/checked_int_inlines.hh" 3 4 -2441: __gmpz_export -2441: # 720 "../../src/checked_int_inlines.hh" -2441: (&to, 0, -1, sizeof(To), 0, 0, m); -2441: } -2441: return V_EQ; -2441: } -2441: } -2441: return set_pos_overflow_int(to, dir); -2441: } -2441: -2441: -2441: -2441: -2441: template struct assign_function_struct { static inline Result function( unsigned char& arg1, const mpz_class &arg2, Rounding_Dir a1) { return assign_unsigned_int_mpz(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned short& arg1, const mpz_class &arg2, Rounding_Dir a1) { return assign_unsigned_int_mpz(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned int& arg1, const mpz_class &arg2, Rounding_Dir a1) { return assign_unsigned_int_mpz(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned long& arg1, const mpz_class &arg2, Rounding_Dir a1) { return assign_unsigned_int_mpz(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned long long& arg1, const mpz_class &arg2, Rounding_Dir a1) { return assign_unsigned_int_mpz(arg1, arg2, a1); } }; -2441: -2441: template -2441: inline Result -2441: assign_int_mpq(To& to, const mpq_class& from, Rounding_Dir dir) { -2441: mpz_srcptr n = from.get_num().get_mpz_t(); -2441: mpz_srcptr d = from.get_den().get_mpz_t(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_q; mpz_class& q = holder_q.item(); -2441: mpz_ptr q_z = q.get_mpz_t(); -2441: if (round_not_requested(dir)) { -2441: -2441: # 745 "../../src/checked_int_inlines.hh" 3 4 -2441: __gmpz_tdiv_q -2441: # 745 "../../src/checked_int_inlines.hh" -2441: (q_z, n, d); -2441: Result r = assign(to, q, dir); -2441: if (r != V_EQ) { -2441: return r; -2441: } -2441: return V_LGE; -2441: } -2441: mpz_t rem; -2441: int sign; -2441: -2441: # 754 "../../src/checked_int_inlines.hh" 3 4 -2441: __gmpz_init -2441: # 754 "../../src/checked_int_inlines.hh" -2441: (rem); -2441: -2441: # 755 "../../src/checked_int_inlines.hh" 3 4 -2441: __gmpz_tdiv_qr -2441: # 755 "../../src/checked_int_inlines.hh" -2441: (q_z, rem, n, d); -2441: sign = -2441: # 756 "../../src/checked_int_inlines.hh" 3 4 -2441: (( -2441: # 756 "../../src/checked_int_inlines.hh" -2441: rem -2441: # 756 "../../src/checked_int_inlines.hh" 3 4 -2441: )->_mp_size < 0 ? -1 : ( -2441: # 756 "../../src/checked_int_inlines.hh" -2441: rem -2441: # 756 "../../src/checked_int_inlines.hh" 3 4 -2441: )->_mp_size > 0) -2441: # 756 "../../src/checked_int_inlines.hh" -2441: ; -2441: -2441: # 757 "../../src/checked_int_inlines.hh" 3 4 -2441: __gmpz_clear -2441: # 757 "../../src/checked_int_inlines.hh" -2441: (rem); -2441: Result r = assign(to, q, dir); -2441: if (r != V_EQ) { -2441: return r; -2441: } -2441: switch (sign) { -2441: case -1: -2441: return round_lt_int(to, dir); -2441: case 1: -2441: return round_gt_int(to, dir); -2441: default: -2441: return V_EQ; -2441: } -2441: } -2441: -2441: template struct assign_function_struct { static inline Result function( char& arg1, const mpq_class &arg2, Rounding_Dir a1) { return assign_int_mpq(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed char& arg1, const mpq_class &arg2, Rounding_Dir a1) { return assign_int_mpq(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed short& arg1, const mpq_class &arg2, Rounding_Dir a1) { return assign_int_mpq(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed int& arg1, const mpq_class &arg2, Rounding_Dir a1) { return assign_int_mpq(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed long& arg1, const mpq_class &arg2, Rounding_Dir a1) { return assign_int_mpq(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( signed long long& arg1, const mpq_class &arg2, Rounding_Dir a1) { return assign_int_mpq(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned char& arg1, const mpq_class &arg2, Rounding_Dir a1) { return assign_int_mpq(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned short& arg1, const mpq_class &arg2, Rounding_Dir a1) { return assign_int_mpq(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned int& arg1, const mpq_class &arg2, Rounding_Dir a1) { return assign_int_mpq(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned long& arg1, const mpq_class &arg2, Rounding_Dir a1) { return assign_int_mpq(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( unsigned long long& arg1, const mpq_class &arg2, Rounding_Dir a1) { return assign_int_mpq(arg1, arg2, a1); } }; -2441: # 821 "../../src/checked_int_inlines.hh" -2441: template -2441: struct Larger; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template <> -2441: struct Larger { -2441: enum const_bool_value_use_for_neg { use_for_neg = (true) }; -2441: enum const_bool_value_use_for_add { use_for_add = (true) }; -2441: enum const_bool_value_use_for_sub { use_for_sub = (true) }; -2441: enum const_bool_value_use_for_mul { use_for_mul = (true) }; -2441: typedef int_fast16_t type_for_neg; -2441: typedef int_fast16_t type_for_add; -2441: typedef int_fast16_t type_for_sub; -2441: typedef int_fast16_t type_for_mul; -2441: }; -2441: -2441: template <> -2441: struct Larger { -2441: enum const_bool_value_use_for_neg { use_for_neg = (true) }; -2441: enum const_bool_value_use_for_add { use_for_add = (true) }; -2441: enum const_bool_value_use_for_sub { use_for_sub = (true) }; -2441: enum const_bool_value_use_for_mul { use_for_mul = (true) }; -2441: typedef int_fast16_t type_for_neg; -2441: typedef int_fast16_t type_for_add; -2441: typedef int_fast16_t type_for_sub; -2441: typedef int_fast16_t type_for_mul; -2441: }; -2441: -2441: template <> -2441: struct Larger { -2441: enum const_bool_value_use_for_neg { use_for_neg = (true) }; -2441: enum const_bool_value_use_for_add { use_for_add = (true) }; -2441: enum const_bool_value_use_for_sub { use_for_sub = (true) }; -2441: enum const_bool_value_use_for_mul { use_for_mul = (true) }; -2441: typedef int_fast16_t type_for_neg; -2441: typedef uint_fast16_t type_for_add; -2441: typedef int_fast16_t type_for_sub; -2441: typedef uint_fast16_t type_for_mul; -2441: }; -2441: -2441: template <> -2441: struct Larger { -2441: enum const_bool_value_use_for_neg { use_for_neg = (true) }; -2441: enum const_bool_value_use_for_add { use_for_add = (true) }; -2441: enum const_bool_value_use_for_sub { use_for_sub = (true) }; -2441: enum const_bool_value_use_for_mul { use_for_mul = (true) }; -2441: typedef int_fast32_t type_for_neg; -2441: typedef int_fast32_t type_for_add; -2441: typedef int_fast32_t type_for_sub; -2441: typedef int_fast32_t type_for_mul; -2441: }; -2441: -2441: template <> -2441: struct Larger { -2441: enum const_bool_value_use_for_neg { use_for_neg = (true) }; -2441: enum const_bool_value_use_for_add { use_for_add = (true) }; -2441: enum const_bool_value_use_for_sub { use_for_sub = (true) }; -2441: enum const_bool_value_use_for_mul { use_for_mul = (true) }; -2441: typedef int_fast32_t type_for_neg; -2441: typedef uint_fast32_t type_for_add; -2441: typedef int_fast32_t type_for_sub; -2441: typedef uint_fast32_t type_for_mul; -2441: }; -2441: -2441: template <> -2441: struct Larger { -2441: enum const_bool_value_use_for_neg { use_for_neg = ((32 == 64)) }; -2441: enum const_bool_value_use_for_add { use_for_add = ((32 == 64)) }; -2441: enum const_bool_value_use_for_sub { use_for_sub = ((32 == 64)) }; -2441: enum const_bool_value_use_for_mul { use_for_mul = (true) }; -2441: typedef int_fast64_t type_for_neg; -2441: typedef int_fast64_t type_for_add; -2441: typedef int_fast64_t type_for_sub; -2441: typedef int_fast64_t type_for_mul; -2441: }; -2441: -2441: template <> -2441: struct Larger { -2441: enum const_bool_value_use_for_neg { use_for_neg = ((32 == 64)) }; -2441: enum const_bool_value_use_for_add { use_for_add = ((32 == 64)) }; -2441: enum const_bool_value_use_for_sub { use_for_sub = ((32 == 64)) }; -2441: enum const_bool_value_use_for_mul { use_for_mul = (true) }; -2441: typedef int_fast64_t type_for_neg; -2441: typedef uint_fast64_t type_for_add; -2441: typedef int_fast64_t type_for_sub; -2441: typedef uint_fast64_t type_for_mul; -2441: }; -2441: -2441: template <> -2441: struct Larger { -2441: enum const_bool_value_use_for_neg { use_for_neg = (false) }; -2441: enum const_bool_value_use_for_add { use_for_add = (false) }; -2441: enum const_bool_value_use_for_sub { use_for_sub = (false) }; -2441: enum const_bool_value_use_for_mul { use_for_mul = ((32 == 32)) }; -2441: typedef int_fast64_t type_for_neg; -2441: typedef int_fast64_t type_for_add; -2441: typedef int_fast64_t type_for_sub; -2441: typedef int_fast64_t type_for_mul; -2441: }; -2441: -2441: template <> -2441: struct Larger { -2441: enum const_bool_value_use_for_neg { use_for_neg = (false) }; -2441: enum const_bool_value_use_for_add { use_for_add = (false) }; -2441: enum const_bool_value_use_for_sub { use_for_sub = (false) }; -2441: enum const_bool_value_use_for_mul { use_for_mul = ((32 == 32)) }; -2441: typedef int_fast64_t type_for_neg; -2441: typedef uint_fast64_t type_for_add; -2441: typedef int_fast64_t type_for_sub; -2441: typedef uint_fast64_t type_for_mul; -2441: }; -2441: -2441: template <> -2441: struct Larger { -2441: enum const_bool_value_use_for_neg { use_for_neg = (false) }; -2441: enum const_bool_value_use_for_add { use_for_add = (false) }; -2441: enum const_bool_value_use_for_sub { use_for_sub = (false) }; -2441: enum const_bool_value_use_for_mul { use_for_mul = (false) }; -2441: typedef int_fast64_t type_for_neg; -2441: typedef int_fast64_t type_for_add; -2441: typedef int_fast64_t type_for_sub; -2441: typedef int_fast64_t type_for_mul; -2441: }; -2441: -2441: template <> -2441: struct Larger { -2441: enum const_bool_value_use_for_neg { use_for_neg = (false) }; -2441: enum const_bool_value_use_for_add { use_for_add = (false) }; -2441: enum const_bool_value_use_for_sub { use_for_sub = (false) }; -2441: enum const_bool_value_use_for_mul { use_for_mul = (false) }; -2441: typedef int_fast64_t type_for_neg; -2441: typedef uint_fast64_t type_for_add; -2441: typedef int_fast64_t type_for_sub; -2441: typedef uint_fast64_t type_for_mul; -2441: }; -2441: -2441: template -2441: inline Result -2441: neg_int_larger(Type& to, const Type x, Rounding_Dir dir) { -2441: typename Larger::type_for_neg l = x; -2441: l = -l; -2441: return assign(to, l, dir); -2441: } -2441: -2441: template -2441: inline Result -2441: add_int_larger(Type& to, const Type x, const Type y, Rounding_Dir dir) { -2441: typename Larger::type_for_add l = x; -2441: l += y; -2441: return assign(to, l, dir); -2441: } -2441: -2441: template -2441: inline Result -2441: sub_int_larger(Type& to, const Type x, const Type y, Rounding_Dir dir) { -2441: typename Larger::type_for_sub l = x; -2441: l -= y; -2441: return assign(to, l, dir); -2441: } -2441: -2441: template -2441: inline Result -2441: mul_int_larger(Type& to, const Type x, const Type y, Rounding_Dir dir) { -2441: typename Larger::type_for_mul l = x; -2441: l *= y; -2441: return assign(to, l, dir); -2441: } -2441: -2441: template -2441: inline Result -2441: neg_signed_int(Type& to, const Type from, Rounding_Dir dir) { -2441: if (To_Policy::check_overflow && Larger::use_for_neg) { -2441: return neg_int_larger(to, from, dir); -2441: } -2441: if (((To_Policy::check_overflow) ? ((from < -Extended_Int::max)) : ( -2441: # 1003 "../../src/checked_int_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 1003 "../../src/checked_int_inlines.hh" -2441: , false)) -2441: ) { -2441: return set_pos_overflow_int(to, dir); -2441: } -2441: to = -from; -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline Result -2441: neg_unsigned_int(Type& to, const Type from, Rounding_Dir dir) { -2441: if (To_Policy::check_overflow && Larger::use_for_neg) { -2441: return neg_int_larger(to, from, dir); -2441: } -2441: if (((To_Policy::check_overflow) ? (from != 0) : ( -2441: # 1017 "../../src/checked_int_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 1017 "../../src/checked_int_inlines.hh" -2441: , false))) { -2441: return set_neg_overflow_int(to, dir); -2441: } -2441: to = from; -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline Result -2441: add_signed_int(Type& to, const Type x, const Type y, Rounding_Dir dir) { -2441: if (To_Policy::check_overflow && Larger::use_for_add) { -2441: return add_int_larger(to, x, y, dir); -2441: } -2441: if (To_Policy::check_overflow) { -2441: if (y >= 0) { -2441: if (x > Extended_Int::max - y) { -2441: return set_pos_overflow_int(to, dir); -2441: } -2441: } -2441: else if (x < Extended_Int::min - y) { -2441: return set_neg_overflow_int(to, dir); -2441: } -2441: } -2441: to = x + y; -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline Result -2441: add_unsigned_int(Type& to, const Type x, const Type y, Rounding_Dir dir) { -2441: if (To_Policy::check_overflow && Larger::use_for_add) { -2441: return add_int_larger(to, x, y, dir); -2441: } -2441: if (((To_Policy::check_overflow) ? ((x > Extended_Int::max - y)) : ( -2441: # 1052 "../../src/checked_int_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 1052 "../../src/checked_int_inlines.hh" -2441: , false)) -2441: ) { -2441: return set_pos_overflow_int(to, dir); -2441: } -2441: to = x + y; -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline Result -2441: sub_signed_int(Type& to, const Type x, const Type y, Rounding_Dir dir) { -2441: if (To_Policy::check_overflow && Larger::use_for_sub) { -2441: return sub_int_larger(to, x, y, dir); -2441: } -2441: if (To_Policy::check_overflow) { -2441: if (y >= 0) { -2441: if (x < Extended_Int::min + y) { -2441: return set_neg_overflow_int(to, dir); -2441: } -2441: } -2441: else if (x > Extended_Int::max + y) { -2441: return set_pos_overflow_int(to, dir); -2441: } -2441: } -2441: to = x - y; -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline Result -2441: sub_unsigned_int(Type& to, const Type x, const Type y, Rounding_Dir dir) { -2441: if (To_Policy::check_overflow && Larger::use_for_sub) { -2441: return sub_int_larger(to, x, y, dir); -2441: } -2441: if (((To_Policy::check_overflow) ? ((x < Extended_Int::min + y)) : ( -2441: # 1088 "../../src/checked_int_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 1088 "../../src/checked_int_inlines.hh" -2441: , false)) -2441: ) { -2441: return set_neg_overflow_int(to, dir); -2441: } -2441: to = x - y; -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline Result -2441: mul_signed_int(Type& to, const Type x, const Type y, Rounding_Dir dir) { -2441: if (To_Policy::check_overflow && Larger::use_for_mul) { -2441: return mul_int_larger(to, x, y, dir); -2441: } -2441: if (!To_Policy::check_overflow) { -2441: to = x * y; -2441: return V_EQ; -2441: } -2441: if (y == 0) { -2441: to = 0; -2441: return V_EQ; -2441: } -2441: if (y == -1) { -2441: return neg_signed_int(to, x, dir); -2441: } -2441: if (x >= 0) { -2441: if (y > 0) { -2441: if (x > Extended_Int::max / y) { -2441: return set_pos_overflow_int(to, dir); -2441: } -2441: } -2441: else { -2441: if (x > Extended_Int::min / y) { -2441: return set_neg_overflow_int(to, dir); -2441: } -2441: } -2441: } -2441: else { -2441: if (y < 0) { -2441: if (x < Extended_Int::max / y) { -2441: return set_pos_overflow_int(to, dir); -2441: } -2441: } -2441: else { -2441: if (x < Extended_Int::min / y) { -2441: return set_neg_overflow_int(to, dir); -2441: } -2441: } -2441: } -2441: to = x * y; -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline Result -2441: mul_unsigned_int(Type& to, const Type x, const Type y, Rounding_Dir dir) { -2441: if (To_Policy::check_overflow && Larger::use_for_mul) { -2441: return mul_int_larger(to, x, y, dir); -2441: } -2441: if (!To_Policy::check_overflow) { -2441: to = x * y; -2441: return V_EQ; -2441: } -2441: if (y == 0) { -2441: to = 0; -2441: return V_EQ; -2441: } -2441: if (x > Extended_Int::max / y) { -2441: return set_pos_overflow_int(to, dir); -2441: } -2441: to = x * y; -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline Result -2441: div_signed_int(Type& to, const Type x, const Type y, Rounding_Dir dir) { -2441: if (((To_Policy::check_div_zero) ? (y == 0) : ( -2441: # 1168 "../../src/checked_int_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 1168 "../../src/checked_int_inlines.hh" -2441: , false))) { -2441: return assign_nan(to, V_DIV_ZERO); -2441: } -2441: if (To_Policy::check_overflow && y == -1) { -2441: return neg_signed_int(to, x, dir); -2441: } -2441: to = x / y; -2441: if (round_not_requested(dir)) { -2441: return V_LGE; -2441: } -2441: if (y == -1) { -2441: return V_EQ; -2441: } -2441: Type m = x % y; -2441: if (m < 0) { -2441: return round_lt_int_no_overflow(to, dir); -2441: } -2441: else if (m > 0) { -2441: return round_gt_int_no_overflow(to, dir); -2441: } -2441: else { -2441: return V_EQ; -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: div_unsigned_int(Type& to, const Type x, const Type y, Rounding_Dir dir) { -2441: if (((To_Policy::check_div_zero) ? (y == 0) : ( -2441: # 1197 "../../src/checked_int_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 1197 "../../src/checked_int_inlines.hh" -2441: , false))) { -2441: return assign_nan(to, V_DIV_ZERO); -2441: } -2441: to = x / y; -2441: if (round_not_requested(dir)) { -2441: return V_GE; -2441: } -2441: Type m = x % y; -2441: if (m == 0) { -2441: return V_EQ; -2441: } -2441: return round_gt_int(to, dir); -2441: } -2441: -2441: template -2441: inline Result -2441: idiv_signed_int(Type& to, const Type x, const Type y, Rounding_Dir dir) { -2441: if (((To_Policy::check_div_zero) ? (y == 0) : ( -2441: # 1215 "../../src/checked_int_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 1215 "../../src/checked_int_inlines.hh" -2441: , false))) { -2441: return assign_nan(to, V_DIV_ZERO); -2441: } -2441: if (To_Policy::check_overflow && y == -1) { -2441: return neg_signed_int(to, x, dir); -2441: } -2441: to = x / y; -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline Result -2441: idiv_unsigned_int(Type& to, const Type x, const Type y, Rounding_Dir) { -2441: if (((To_Policy::check_div_zero) ? (y == 0) : ( -2441: # 1229 "../../src/checked_int_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 1229 "../../src/checked_int_inlines.hh" -2441: , false))) { -2441: return assign_nan(to, V_DIV_ZERO); -2441: } -2441: to = x / y; -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline Result -2441: rem_signed_int(Type& to, const Type x, const Type y, Rounding_Dir) { -2441: if (((To_Policy::check_div_zero) ? (y == 0) : ( -2441: # 1240 "../../src/checked_int_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 1240 "../../src/checked_int_inlines.hh" -2441: , false))) { -2441: return assign_nan(to, V_MOD_ZERO); -2441: } -2441: to = (y == -1) ? 0 : (x % y); -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline Result -2441: rem_unsigned_int(Type& to, const Type x, const Type y, Rounding_Dir) { -2441: if (((To_Policy::check_div_zero) ? (y == 0) : ( -2441: # 1251 "../../src/checked_int_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 1251 "../../src/checked_int_inlines.hh" -2441: , false))) { -2441: return assign_nan(to, V_MOD_ZERO); -2441: } -2441: to = x % y; -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline Result -2441: div_2exp_unsigned_int(Type& to, const Type x, unsigned int exp, -2441: Rounding_Dir dir) { -2441: if (exp >= ((sizeof(Type)) * static_cast(8))) { -2441: to = 0; -2441: if (round_not_requested(dir)) { -2441: return V_GE; -2441: } -2441: if (x == 0) { -2441: return V_EQ; -2441: } -2441: return round_gt_int_no_overflow(to, dir); -2441: } -2441: to = x >> exp; -2441: if (round_not_requested(dir)) { -2441: return V_GE; -2441: } -2441: if (x & ((Type(1) << exp) - 1)) { -2441: return round_gt_int_no_overflow(to, dir); -2441: } -2441: else { -2441: return V_EQ; -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: div_2exp_signed_int(Type& to, const Type x, unsigned int exp, -2441: Rounding_Dir dir) { -2441: if (x < 0) { -2441: if (exp >= ((sizeof(Type)) * static_cast(8))) { -2441: to = 0; -2441: if (round_not_requested(dir)) { -2441: return V_LE; -2441: } -2441: return round_lt_int_no_overflow(to, dir); -2441: } -2441: typedef typename C_Integer::other_type UType; -2441: UType ux = x; -2441: ux = -ux; -2441: to = ~Type(~-(ux >> exp)); -2441: if (round_not_requested(dir)) { -2441: return V_LE; -2441: } -2441: if (ux & ((UType(1) << exp) -1)) { -2441: return round_lt_int_no_overflow(to, dir); -2441: } -2441: return V_EQ; -2441: } -2441: else { -2441: if (exp >= ((sizeof(Type)) * static_cast(8)) - 1) { -2441: to = 0; -2441: if (round_not_requested(dir)) { -2441: return V_GE; -2441: } -2441: if (x == 0) { -2441: return V_EQ; -2441: } -2441: return round_gt_int_no_overflow(to, dir); -2441: } -2441: to = x >> exp; -2441: if (round_not_requested(dir)) { -2441: return V_GE; -2441: } -2441: if (x & ((Type(1) << exp) - 1)) { -2441: return round_gt_int_no_overflow(to, dir); -2441: } -2441: else { -2441: return V_EQ; -2441: } -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: add_2exp_unsigned_int(Type& to, const Type x, unsigned int exp, -2441: Rounding_Dir dir) { -2441: if (!To_Policy::check_overflow) { -2441: to = x + (Type(1) << exp); -2441: return V_EQ; -2441: } -2441: if (exp >= ((sizeof(Type)) * static_cast(8))) { -2441: return set_pos_overflow_int(to, dir); -2441: } -2441: Type n = Type(1) << exp; -2441: return add_unsigned_int(to, x, n, dir); -2441: } -2441: -2441: template -2441: inline Result -2441: add_2exp_signed_int(Type& to, const Type x, unsigned int exp, -2441: Rounding_Dir dir) { -2441: if (!To_Policy::check_overflow) { -2441: to = x + (Type(1) << exp); -2441: return V_EQ; -2441: } -2441: if (exp >= ((sizeof(Type)) * static_cast(8))) { -2441: return set_pos_overflow_int(to, dir); -2441: } -2441: if (exp == ((sizeof(Type)) * static_cast(8)) - 1) { -2441: Type n = -2 * (Type(1) << (exp - 1)); -2441: return sub_signed_int(to, x, n, dir); -2441: } -2441: else { -2441: Type n = Type(1) << exp; -2441: return add_signed_int(to, x, n, dir); -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: sub_2exp_unsigned_int(Type& to, const Type x, unsigned int exp, -2441: Rounding_Dir dir) { -2441: if (!To_Policy::check_overflow) { -2441: to = x - (Type(1) << exp); -2441: return V_EQ; -2441: } -2441: if (exp >= ((sizeof(Type)) * static_cast(8))) { -2441: return set_neg_overflow_int(to, dir); -2441: } -2441: Type n = Type(1) << exp; -2441: return sub_unsigned_int(to, x, n, dir); -2441: } -2441: -2441: template -2441: inline Result -2441: sub_2exp_signed_int(Type& to, const Type x, unsigned int exp, -2441: Rounding_Dir dir) { -2441: if (!To_Policy::check_overflow) { -2441: to = x - (Type(1) << exp); -2441: return V_EQ; -2441: } -2441: if (exp >= ((sizeof(Type)) * static_cast(8))) { -2441: return set_neg_overflow_int(to, dir); -2441: } -2441: if (exp == ((sizeof(Type)) * static_cast(8)) - 1) { -2441: Type n = -2 * (Type(1) << (exp - 1)); -2441: return add_signed_int(to, x, n, dir); -2441: } -2441: else { -2441: Type n = Type(1) << exp; -2441: return sub_signed_int(to, x, n, dir); -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: mul_2exp_unsigned_int(Type& to, const Type x, unsigned int exp, -2441: Rounding_Dir dir) { -2441: if (!To_Policy::check_overflow) { -2441: to = x << exp; -2441: return V_EQ; -2441: } -2441: if (exp >= ((sizeof(Type)) * static_cast(8))) { -2441: if (x == 0) { -2441: to = 0; -2441: return V_EQ; -2441: } -2441: return set_pos_overflow_int(to, dir); -2441: } -2441: if (x > Extended_Int::max >> exp) { -2441: return set_pos_overflow_int(to, dir); -2441: } -2441: to = x << exp; -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline Result -2441: mul_2exp_signed_int(Type& to, const Type x, unsigned int exp, -2441: Rounding_Dir dir) { -2441: if (x < 0) { -2441: if (!To_Policy::check_overflow) { -2441: to = x * (Type(1) << exp); -2441: return V_EQ; -2441: } -2441: if (exp >= ((sizeof(Type)) * static_cast(8))) { -2441: return set_neg_overflow_int(to, dir); -2441: } -2441: typedef typename C_Integer::other_type UType; -2441: UType mask = UType(-1) << (((sizeof(Type)) * static_cast(8)) - exp - 1); -2441: UType ux = x; -2441: if ((ux & mask) != mask) { -2441: return set_neg_overflow_int(to, dir); -2441: } -2441: ux <<= exp; -2441: Type n = ~(Type(~ux)); -2441: if (((n) < ((Extended_Int::min)))) { -2441: return set_neg_overflow_int(to, dir); -2441: } -2441: to = n; -2441: } -2441: else { -2441: if (!To_Policy::check_overflow) { -2441: to = x << exp; -2441: return V_EQ; -2441: } -2441: if (exp >= ((sizeof(Type)) * static_cast(8)) - 1) { -2441: if (x == 0) { -2441: to = 0; -2441: return V_EQ; -2441: } -2441: return set_pos_overflow_int(to, dir); -2441: } -2441: if (x > Extended_Int::max >> exp) { -2441: return set_pos_overflow_int(to, dir); -2441: } -2441: to = x << exp; -2441: } -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline Result -2441: smod_2exp_unsigned_int(Type& to, const Type x, unsigned int exp, -2441: Rounding_Dir dir) { -2441: if (exp > ((sizeof(Type)) * static_cast(8))) { -2441: to = x; -2441: } -2441: else { -2441: Type v = (exp == ((sizeof(Type)) * static_cast(8)) ? x : (x & ((Type(1) << exp) - 1))); -2441: if (v >= (Type(1) << (exp - 1))) { -2441: return set_neg_overflow_int(to, dir); -2441: } -2441: else { -2441: to = v; -2441: } -2441: } -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline Result -2441: smod_2exp_signed_int(Type& to, const Type x, unsigned int exp, -2441: Rounding_Dir) { -2441: if (exp >= ((sizeof(Type)) * static_cast(8))) { -2441: to = x; -2441: } -2441: else { -2441: Type m = Type(1) << (exp - 1); -2441: to = (x & (m - 1)) - (x & m); -2441: } -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline Result -2441: umod_2exp_unsigned_int(Type& to, const Type x, unsigned int exp, -2441: Rounding_Dir) { -2441: if (exp >= ((sizeof(Type)) * static_cast(8))) { -2441: to = x; -2441: } -2441: else { -2441: to = x & ((Type(1) << exp) - 1); -2441: } -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline Result -2441: umod_2exp_signed_int(Type& to, const Type x, unsigned int exp, -2441: Rounding_Dir dir) { -2441: if (exp >= ((sizeof(Type)) * static_cast(8))) { -2441: if (x < 0) { -2441: return set_pos_overflow_int(to, dir); -2441: } -2441: to = x; -2441: } -2441: else { -2441: to = x & ((Type(1) << exp) - 1); -2441: } -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline void -2441: isqrt_rem(Type& q, Type& r, const Type from) { -2441: q = 0; -2441: r = from; -2441: Type t(1); -2441: for (t <<= ((sizeof(Type)) * static_cast(8)) - 2; t != 0; t >>= 2) { -2441: Type s = q + t; -2441: if (s <= r) { -2441: r -= s; -2441: q = s + t; -2441: } -2441: q >>= 1; -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: sqrt_unsigned_int(Type& to, const Type from, Rounding_Dir dir) { -2441: Type rem; -2441: isqrt_rem(to, rem, from); -2441: if (round_not_requested(dir)) { -2441: return V_GE; -2441: } -2441: if (rem == 0) { -2441: return V_EQ; -2441: } -2441: return round_gt_int(to, dir); -2441: } -2441: -2441: template -2441: inline Result -2441: sqrt_signed_int(Type& to, const Type from, Rounding_Dir dir) { -2441: if (((To_Policy::check_sqrt_neg) ? (from < 0) : ( -2441: # 1566 "../../src/checked_int_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 1566 "../../src/checked_int_inlines.hh" -2441: , false))) { -2441: return assign_nan(to, V_SQRT_NEG); -2441: } -2441: return sqrt_unsigned_int(to, from, dir); -2441: } -2441: -2441: template -2441: inline Result -2441: add_mul_int(Type& to, const Type x, const Type y, Rounding_Dir dir) { -2441: Type z; -2441: Result r = mul(z, x, y, dir); -2441: switch (result_overflow(r)) { -2441: case 0: -2441: return add(to, to, z, dir); -2441: case -1: -2441: if (to <= 0) { -2441: return set_neg_overflow_int(to, dir); -2441: } -2441: return assign_nan(to, V_UNKNOWN_NEG_OVERFLOW); -2441: case 1: -2441: if (to >= 0) { -2441: return set_pos_overflow_int(to, dir); -2441: } -2441: return assign_nan(to, V_UNKNOWN_POS_OVERFLOW); -2441: default: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return V_NAN; -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: sub_mul_int(Type& to, const Type x, const Type y, Rounding_Dir dir) { -2441: Type z; -2441: Result r = mul(z, x, y, dir); -2441: switch (result_overflow(r)) { -2441: case 0: -2441: return sub(to, to, z, dir); -2441: case -1: -2441: if (to >= 0) { -2441: return set_pos_overflow_int(to, dir); -2441: } -2441: return assign_nan(to, V_UNKNOWN_NEG_OVERFLOW); -2441: case 1: -2441: if (to <= 0) { -2441: return set_neg_overflow_int(to, dir); -2441: } -2441: return assign_nan(to, V_UNKNOWN_POS_OVERFLOW); -2441: default: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return V_NAN; -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: output_char(std::ostream& os, Type& from, -2441: const Numeric_Format&, Rounding_Dir) { -2441: os << int(from); -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline Result -2441: output_int(std::ostream& os, Type& from, const Numeric_Format&, Rounding_Dir) { -2441: os << from; -2441: return V_EQ; -2441: } -2441: -2441: -2441: template struct floor_function_struct { static inline Result function( char& arg1, const char &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: -2441: template struct floor_function_struct { static inline Result function( signed char& arg1, const signed char &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: template struct floor_function_struct { static inline Result function( signed short& arg1, const signed short &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: template struct floor_function_struct { static inline Result function( signed int& arg1, const signed int &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: template struct floor_function_struct { static inline Result function( signed long& arg1, const signed long &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: template struct floor_function_struct { static inline Result function( signed long long& arg1, const signed long long &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: -2441: -2441: -2441: template struct floor_function_struct { static inline Result function( unsigned char& arg1, const unsigned char &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct floor_function_struct { static inline Result function( unsigned short& arg1, const unsigned short &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct floor_function_struct { static inline Result function( unsigned int& arg1, const unsigned int &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct floor_function_struct { static inline Result function( unsigned long& arg1, const unsigned long &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct floor_function_struct { static inline Result function( unsigned long long& arg1, const unsigned long long &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: -2441: -2441: template struct ceil_function_struct { static inline Result function( char& arg1, const char &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: -2441: template struct ceil_function_struct { static inline Result function( signed char& arg1, const signed char &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: template struct ceil_function_struct { static inline Result function( signed short& arg1, const signed short &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: template struct ceil_function_struct { static inline Result function( signed int& arg1, const signed int &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: template struct ceil_function_struct { static inline Result function( signed long& arg1, const signed long &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: template struct ceil_function_struct { static inline Result function( signed long long& arg1, const signed long long &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: -2441: -2441: -2441: template struct ceil_function_struct { static inline Result function( unsigned char& arg1, const unsigned char &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct ceil_function_struct { static inline Result function( unsigned short& arg1, const unsigned short &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct ceil_function_struct { static inline Result function( unsigned int& arg1, const unsigned int &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct ceil_function_struct { static inline Result function( unsigned long& arg1, const unsigned long &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct ceil_function_struct { static inline Result function( unsigned long long& arg1, const unsigned long long &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: -2441: -2441: template struct trunc_function_struct { static inline Result function( char& arg1, const char &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: -2441: template struct trunc_function_struct { static inline Result function( signed char& arg1, const signed char &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: template struct trunc_function_struct { static inline Result function( signed short& arg1, const signed short &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: template struct trunc_function_struct { static inline Result function( signed int& arg1, const signed int &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: template struct trunc_function_struct { static inline Result function( signed long& arg1, const signed long &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: template struct trunc_function_struct { static inline Result function( signed long long& arg1, const signed long long &arg2, Rounding_Dir a1) { return assign_signed_int_signed_int(arg1, arg2, a1); } }; -2441: -2441: -2441: -2441: template struct trunc_function_struct { static inline Result function( unsigned char& arg1, const unsigned char &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct trunc_function_struct { static inline Result function( unsigned short& arg1, const unsigned short &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct trunc_function_struct { static inline Result function( unsigned int& arg1, const unsigned int &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct trunc_function_struct { static inline Result function( unsigned long& arg1, const unsigned long &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct trunc_function_struct { static inline Result function( unsigned long long& arg1, const unsigned long long &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: -2441: -2441: template struct neg_function_struct { static inline Result function( char& arg1, const char &arg2, Rounding_Dir a1) { return neg_signed_int(arg1, arg2, a1); } }; -2441: -2441: template struct neg_function_struct { static inline Result function( signed char& arg1, const signed char &arg2, Rounding_Dir a1) { return neg_signed_int(arg1, arg2, a1); } }; -2441: template struct neg_function_struct { static inline Result function( signed short& arg1, const signed short &arg2, Rounding_Dir a1) { return neg_signed_int(arg1, arg2, a1); } }; -2441: template struct neg_function_struct { static inline Result function( signed int& arg1, const signed int &arg2, Rounding_Dir a1) { return neg_signed_int(arg1, arg2, a1); } }; -2441: template struct neg_function_struct { static inline Result function( signed long& arg1, const signed long &arg2, Rounding_Dir a1) { return neg_signed_int(arg1, arg2, a1); } }; -2441: template struct neg_function_struct { static inline Result function( signed long long& arg1, const signed long long &arg2, Rounding_Dir a1) { return neg_signed_int(arg1, arg2, a1); } }; -2441: -2441: -2441: -2441: template struct neg_function_struct { static inline Result function( unsigned char& arg1, const unsigned char &arg2, Rounding_Dir a1) { return neg_unsigned_int(arg1, arg2, a1); } }; -2441: template struct neg_function_struct { static inline Result function( unsigned short& arg1, const unsigned short &arg2, Rounding_Dir a1) { return neg_unsigned_int(arg1, arg2, a1); } }; -2441: template struct neg_function_struct { static inline Result function( unsigned int& arg1, const unsigned int &arg2, Rounding_Dir a1) { return neg_unsigned_int(arg1, arg2, a1); } }; -2441: template struct neg_function_struct { static inline Result function( unsigned long& arg1, const unsigned long &arg2, Rounding_Dir a1) { return neg_unsigned_int(arg1, arg2, a1); } }; -2441: template struct neg_function_struct { static inline Result function( unsigned long long& arg1, const unsigned long long &arg2, Rounding_Dir a1) { return neg_unsigned_int(arg1, arg2, a1); } }; -2441: -2441: -2441: template struct add_function_struct { static inline Result function( char& arg1, const char &arg2, const char &arg3, Rounding_Dir a1) { return add_signed_int(arg1, arg2, arg3, a1); } }; -2441: -2441: template struct add_function_struct { static inline Result function( signed char& arg1, const signed char &arg2, const signed char &arg3, Rounding_Dir a1) { return add_signed_int(arg1, arg2, arg3, a1); } }; -2441: template struct add_function_struct { static inline Result function( signed short& arg1, const signed short &arg2, const signed short &arg3, Rounding_Dir a1) { return add_signed_int(arg1, arg2, arg3, a1); } }; -2441: template struct add_function_struct { static inline Result function( signed int& arg1, const signed int &arg2, const signed int &arg3, Rounding_Dir a1) { return add_signed_int(arg1, arg2, arg3, a1); } }; -2441: template struct add_function_struct { static inline Result function( signed long& arg1, const signed long &arg2, const signed long &arg3, Rounding_Dir a1) { return add_signed_int(arg1, arg2, arg3, a1); } }; -2441: template struct add_function_struct { static inline Result function( signed long long& arg1, const signed long long &arg2, const signed long long &arg3, Rounding_Dir a1) { return add_signed_int(arg1, arg2, arg3, a1); } }; -2441: -2441: -2441: -2441: template struct add_function_struct { static inline Result function( unsigned char& arg1, const unsigned char &arg2, const unsigned char &arg3, Rounding_Dir a1) { return add_unsigned_int(arg1, arg2, arg3, a1); } }; -2441: template struct add_function_struct { static inline Result function( unsigned short& arg1, const unsigned short &arg2, const unsigned short &arg3, Rounding_Dir a1) { return add_unsigned_int(arg1, arg2, arg3, a1); } }; -2441: template struct add_function_struct { static inline Result function( unsigned int& arg1, const unsigned int &arg2, const unsigned int &arg3, Rounding_Dir a1) { return add_unsigned_int(arg1, arg2, arg3, a1); } }; -2441: template struct add_function_struct { static inline Result function( unsigned long& arg1, const unsigned long &arg2, const unsigned long &arg3, Rounding_Dir a1) { return add_unsigned_int(arg1, arg2, arg3, a1); } }; -2441: template struct add_function_struct { static inline Result function( unsigned long long& arg1, const unsigned long long &arg2, const unsigned long long &arg3, Rounding_Dir a1) { return add_unsigned_int(arg1, arg2, arg3, a1); } }; -2441: -2441: -2441: template struct sub_function_struct { static inline Result function( char& arg1, const char &arg2, const char &arg3, Rounding_Dir a1) { return sub_signed_int(arg1, arg2, arg3, a1); } }; -2441: -2441: template struct sub_function_struct { static inline Result function( signed char& arg1, const signed char &arg2, const signed char &arg3, Rounding_Dir a1) { return sub_signed_int(arg1, arg2, arg3, a1); } }; -2441: template struct sub_function_struct { static inline Result function( signed short& arg1, const signed short &arg2, const signed short &arg3, Rounding_Dir a1) { return sub_signed_int(arg1, arg2, arg3, a1); } }; -2441: template struct sub_function_struct { static inline Result function( signed int& arg1, const signed int &arg2, const signed int &arg3, Rounding_Dir a1) { return sub_signed_int(arg1, arg2, arg3, a1); } }; -2441: template struct sub_function_struct { static inline Result function( signed long& arg1, const signed long &arg2, const signed long &arg3, Rounding_Dir a1) { return sub_signed_int(arg1, arg2, arg3, a1); } }; -2441: template struct sub_function_struct { static inline Result function( signed long long& arg1, const signed long long &arg2, const signed long long &arg3, Rounding_Dir a1) { return sub_signed_int(arg1, arg2, arg3, a1); } }; -2441: -2441: -2441: -2441: template struct sub_function_struct { static inline Result function( unsigned char& arg1, const unsigned char &arg2, const unsigned char &arg3, Rounding_Dir a1) { return sub_unsigned_int(arg1, arg2, arg3, a1); } }; -2441: template struct sub_function_struct { static inline Result function( unsigned short& arg1, const unsigned short &arg2, const unsigned short &arg3, Rounding_Dir a1) { return sub_unsigned_int(arg1, arg2, arg3, a1); } }; -2441: template struct sub_function_struct { static inline Result function( unsigned int& arg1, const unsigned int &arg2, const unsigned int &arg3, Rounding_Dir a1) { return sub_unsigned_int(arg1, arg2, arg3, a1); } }; -2441: template struct sub_function_struct { static inline Result function( unsigned long& arg1, const unsigned long &arg2, const unsigned long &arg3, Rounding_Dir a1) { return sub_unsigned_int(arg1, arg2, arg3, a1); } }; -2441: template struct sub_function_struct { static inline Result function( unsigned long long& arg1, const unsigned long long &arg2, const unsigned long long &arg3, Rounding_Dir a1) { return sub_unsigned_int(arg1, arg2, arg3, a1); } }; -2441: -2441: -2441: template struct mul_function_struct { static inline Result function( char& arg1, const char &arg2, const char &arg3, Rounding_Dir a1) { return mul_signed_int(arg1, arg2, arg3, a1); } }; -2441: -2441: template struct mul_function_struct { static inline Result function( signed char& arg1, const signed char &arg2, const signed char &arg3, Rounding_Dir a1) { return mul_signed_int(arg1, arg2, arg3, a1); } }; -2441: template struct mul_function_struct { static inline Result function( signed short& arg1, const signed short &arg2, const signed short &arg3, Rounding_Dir a1) { return mul_signed_int(arg1, arg2, arg3, a1); } }; -2441: template struct mul_function_struct { static inline Result function( signed int& arg1, const signed int &arg2, const signed int &arg3, Rounding_Dir a1) { return mul_signed_int(arg1, arg2, arg3, a1); } }; -2441: template struct mul_function_struct { static inline Result function( signed long& arg1, const signed long &arg2, const signed long &arg3, Rounding_Dir a1) { return mul_signed_int(arg1, arg2, arg3, a1); } }; -2441: template struct mul_function_struct { static inline Result function( signed long long& arg1, const signed long long &arg2, const signed long long &arg3, Rounding_Dir a1) { return mul_signed_int(arg1, arg2, arg3, a1); } }; -2441: -2441: -2441: -2441: template struct mul_function_struct { static inline Result function( unsigned char& arg1, const unsigned char &arg2, const unsigned char &arg3, Rounding_Dir a1) { return mul_unsigned_int(arg1, arg2, arg3, a1); } }; -2441: template struct mul_function_struct { static inline Result function( unsigned short& arg1, const unsigned short &arg2, const unsigned short &arg3, Rounding_Dir a1) { return mul_unsigned_int(arg1, arg2, arg3, a1); } }; -2441: template struct mul_function_struct { static inline Result function( unsigned int& arg1, const unsigned int &arg2, const unsigned int &arg3, Rounding_Dir a1) { return mul_unsigned_int(arg1, arg2, arg3, a1); } }; -2441: template struct mul_function_struct { static inline Result function( unsigned long& arg1, const unsigned long &arg2, const unsigned long &arg3, Rounding_Dir a1) { return mul_unsigned_int(arg1, arg2, arg3, a1); } }; -2441: template struct mul_function_struct { static inline Result function( unsigned long long& arg1, const unsigned long long &arg2, const unsigned long long &arg3, Rounding_Dir a1) { return mul_unsigned_int(arg1, arg2, arg3, a1); } }; -2441: -2441: -2441: template struct div_function_struct { static inline Result function( char& arg1, const char &arg2, const char &arg3, Rounding_Dir a1) { return div_signed_int(arg1, arg2, arg3, a1); } }; -2441: -2441: template struct div_function_struct { static inline Result function( signed char& arg1, const signed char &arg2, const signed char &arg3, Rounding_Dir a1) { return div_signed_int(arg1, arg2, arg3, a1); } }; -2441: template struct div_function_struct { static inline Result function( signed short& arg1, const signed short &arg2, const signed short &arg3, Rounding_Dir a1) { return div_signed_int(arg1, arg2, arg3, a1); } }; -2441: template struct div_function_struct { static inline Result function( signed int& arg1, const signed int &arg2, const signed int &arg3, Rounding_Dir a1) { return div_signed_int(arg1, arg2, arg3, a1); } }; -2441: template struct div_function_struct { static inline Result function( signed long& arg1, const signed long &arg2, const signed long &arg3, Rounding_Dir a1) { return div_signed_int(arg1, arg2, arg3, a1); } }; -2441: template struct div_function_struct { static inline Result function( signed long long& arg1, const signed long long &arg2, const signed long long &arg3, Rounding_Dir a1) { return div_signed_int(arg1, arg2, arg3, a1); } }; -2441: -2441: -2441: -2441: template struct div_function_struct { static inline Result function( unsigned char& arg1, const unsigned char &arg2, const unsigned char &arg3, Rounding_Dir a1) { return div_unsigned_int(arg1, arg2, arg3, a1); } }; -2441: template struct div_function_struct { static inline Result function( unsigned short& arg1, const unsigned short &arg2, const unsigned short &arg3, Rounding_Dir a1) { return div_unsigned_int(arg1, arg2, arg3, a1); } }; -2441: template struct div_function_struct { static inline Result function( unsigned int& arg1, const unsigned int &arg2, const unsigned int &arg3, Rounding_Dir a1) { return div_unsigned_int(arg1, arg2, arg3, a1); } }; -2441: template struct div_function_struct { static inline Result function( unsigned long& arg1, const unsigned long &arg2, const unsigned long &arg3, Rounding_Dir a1) { return div_unsigned_int(arg1, arg2, arg3, a1); } }; -2441: template struct div_function_struct { static inline Result function( unsigned long long& arg1, const unsigned long long &arg2, const unsigned long long &arg3, Rounding_Dir a1) { return div_unsigned_int(arg1, arg2, arg3, a1); } }; -2441: -2441: -2441: template struct idiv_function_struct { static inline Result function( char& arg1, const char &arg2, const char &arg3, Rounding_Dir a1) { return idiv_signed_int(arg1, arg2, arg3, a1); } }; -2441: -2441: template struct idiv_function_struct { static inline Result function( signed char& arg1, const signed char &arg2, const signed char &arg3, Rounding_Dir a1) { return idiv_signed_int(arg1, arg2, arg3, a1); } }; -2441: template struct idiv_function_struct { static inline Result function( signed short& arg1, const signed short &arg2, const signed short &arg3, Rounding_Dir a1) { return idiv_signed_int(arg1, arg2, arg3, a1); } }; -2441: template struct idiv_function_struct { static inline Result function( signed int& arg1, const signed int &arg2, const signed int &arg3, Rounding_Dir a1) { return idiv_signed_int(arg1, arg2, arg3, a1); } }; -2441: template struct idiv_function_struct { static inline Result function( signed long& arg1, const signed long &arg2, const signed long &arg3, Rounding_Dir a1) { return idiv_signed_int(arg1, arg2, arg3, a1); } }; -2441: template struct idiv_function_struct { static inline Result function( signed long long& arg1, const signed long long &arg2, const signed long long &arg3, Rounding_Dir a1) { return idiv_signed_int(arg1, arg2, arg3, a1); } }; -2441: -2441: -2441: -2441: template struct idiv_function_struct { static inline Result function( unsigned char& arg1, const unsigned char &arg2, const unsigned char &arg3, Rounding_Dir a1) { return idiv_unsigned_int(arg1, arg2, arg3, a1); } }; -2441: template struct idiv_function_struct { static inline Result function( unsigned short& arg1, const unsigned short &arg2, const unsigned short &arg3, Rounding_Dir a1) { return idiv_unsigned_int(arg1, arg2, arg3, a1); } }; -2441: template struct idiv_function_struct { static inline Result function( unsigned int& arg1, const unsigned int &arg2, const unsigned int &arg3, Rounding_Dir a1) { return idiv_unsigned_int(arg1, arg2, arg3, a1); } }; -2441: template struct idiv_function_struct { static inline Result function( unsigned long& arg1, const unsigned long &arg2, const unsigned long &arg3, Rounding_Dir a1) { return idiv_unsigned_int(arg1, arg2, arg3, a1); } }; -2441: template struct idiv_function_struct { static inline Result function( unsigned long long& arg1, const unsigned long long &arg2, const unsigned long long &arg3, Rounding_Dir a1) { return idiv_unsigned_int(arg1, arg2, arg3, a1); } }; -2441: -2441: -2441: template struct rem_function_struct { static inline Result function( char& arg1, const char &arg2, const char &arg3, Rounding_Dir a1) { return rem_signed_int(arg1, arg2, arg3, a1); } }; -2441: -2441: template struct rem_function_struct { static inline Result function( signed char& arg1, const signed char &arg2, const signed char &arg3, Rounding_Dir a1) { return rem_signed_int(arg1, arg2, arg3, a1); } }; -2441: template struct rem_function_struct { static inline Result function( signed short& arg1, const signed short &arg2, const signed short &arg3, Rounding_Dir a1) { return rem_signed_int(arg1, arg2, arg3, a1); } }; -2441: template struct rem_function_struct { static inline Result function( signed int& arg1, const signed int &arg2, const signed int &arg3, Rounding_Dir a1) { return rem_signed_int(arg1, arg2, arg3, a1); } }; -2441: template struct rem_function_struct { static inline Result function( signed long& arg1, const signed long &arg2, const signed long &arg3, Rounding_Dir a1) { return rem_signed_int(arg1, arg2, arg3, a1); } }; -2441: template struct rem_function_struct { static inline Result function( signed long long& arg1, const signed long long &arg2, const signed long long &arg3, Rounding_Dir a1) { return rem_signed_int(arg1, arg2, arg3, a1); } }; -2441: -2441: -2441: -2441: template struct rem_function_struct { static inline Result function( unsigned char& arg1, const unsigned char &arg2, const unsigned char &arg3, Rounding_Dir a1) { return rem_unsigned_int(arg1, arg2, arg3, a1); } }; -2441: template struct rem_function_struct { static inline Result function( unsigned short& arg1, const unsigned short &arg2, const unsigned short &arg3, Rounding_Dir a1) { return rem_unsigned_int(arg1, arg2, arg3, a1); } }; -2441: template struct rem_function_struct { static inline Result function( unsigned int& arg1, const unsigned int &arg2, const unsigned int &arg3, Rounding_Dir a1) { return rem_unsigned_int(arg1, arg2, arg3, a1); } }; -2441: template struct rem_function_struct { static inline Result function( unsigned long& arg1, const unsigned long &arg2, const unsigned long &arg3, Rounding_Dir a1) { return rem_unsigned_int(arg1, arg2, arg3, a1); } }; -2441: template struct rem_function_struct { static inline Result function( unsigned long long& arg1, const unsigned long long &arg2, const unsigned long long &arg3, Rounding_Dir a1) { return rem_unsigned_int(arg1, arg2, arg3, a1); } }; -2441: -2441: -2441: template struct add_2exp_function_struct { static inline Result function( char& arg1, const char &arg2, unsigned int a1, Rounding_Dir a2) { return add_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: -2441: template struct add_2exp_function_struct { static inline Result function( signed char& arg1, const signed char &arg2, unsigned int a1, Rounding_Dir a2) { return add_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: template struct add_2exp_function_struct { static inline Result function( signed short& arg1, const signed short &arg2, unsigned int a1, Rounding_Dir a2) { return add_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: template struct add_2exp_function_struct { static inline Result function( signed int& arg1, const signed int &arg2, unsigned int a1, Rounding_Dir a2) { return add_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: template struct add_2exp_function_struct { static inline Result function( signed long& arg1, const signed long &arg2, unsigned int a1, Rounding_Dir a2) { return add_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: template struct add_2exp_function_struct { static inline Result function( signed long long& arg1, const signed long long &arg2, unsigned int a1, Rounding_Dir a2) { return add_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: -2441: -2441: -2441: template struct add_2exp_function_struct { static inline Result function( unsigned char& arg1, const unsigned char &arg2, unsigned int a1, Rounding_Dir a2) { return add_2exp_unsigned_int(arg1, arg2, a1, a2); } }; -2441: template struct add_2exp_function_struct { static inline Result function( unsigned short& arg1, const unsigned short &arg2, unsigned int a1, Rounding_Dir a2) { return add_2exp_unsigned_int(arg1, arg2, a1, a2); } }; -2441: template struct add_2exp_function_struct { static inline Result function( unsigned int& arg1, const unsigned int &arg2, unsigned int a1, Rounding_Dir a2) { return add_2exp_unsigned_int(arg1, arg2, a1, a2); } }; -2441: template struct add_2exp_function_struct { static inline Result function( unsigned long& arg1, const unsigned long &arg2, unsigned int a1, Rounding_Dir a2) { return add_2exp_unsigned_int(arg1, arg2, a1, a2); } }; -2441: template struct add_2exp_function_struct { static inline Result function( unsigned long long& arg1, const unsigned long long &arg2, unsigned int a1, Rounding_Dir a2) { return add_2exp_unsigned_int(arg1, arg2, a1, a2); } }; -2441: -2441: -2441: template struct sub_2exp_function_struct { static inline Result function( char& arg1, const char &arg2, unsigned int a1, Rounding_Dir a2) { return sub_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: -2441: template struct sub_2exp_function_struct { static inline Result function( signed char& arg1, const signed char &arg2, unsigned int a1, Rounding_Dir a2) { return sub_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: template struct sub_2exp_function_struct { static inline Result function( signed short& arg1, const signed short &arg2, unsigned int a1, Rounding_Dir a2) { return sub_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: template struct sub_2exp_function_struct { static inline Result function( signed int& arg1, const signed int &arg2, unsigned int a1, Rounding_Dir a2) { return sub_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: template struct sub_2exp_function_struct { static inline Result function( signed long& arg1, const signed long &arg2, unsigned int a1, Rounding_Dir a2) { return sub_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: template struct sub_2exp_function_struct { static inline Result function( signed long long& arg1, const signed long long &arg2, unsigned int a1, Rounding_Dir a2) { return sub_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: -2441: -2441: -2441: template struct sub_2exp_function_struct { static inline Result function( unsigned char& arg1, const unsigned char &arg2, unsigned int a1, Rounding_Dir a2) { return sub_2exp_unsigned_int(arg1, arg2, a1, a2); } }; -2441: template struct sub_2exp_function_struct { static inline Result function( unsigned short& arg1, const unsigned short &arg2, unsigned int a1, Rounding_Dir a2) { return sub_2exp_unsigned_int(arg1, arg2, a1, a2); } }; -2441: template struct sub_2exp_function_struct { static inline Result function( unsigned int& arg1, const unsigned int &arg2, unsigned int a1, Rounding_Dir a2) { return sub_2exp_unsigned_int(arg1, arg2, a1, a2); } }; -2441: template struct sub_2exp_function_struct { static inline Result function( unsigned long& arg1, const unsigned long &arg2, unsigned int a1, Rounding_Dir a2) { return sub_2exp_unsigned_int(arg1, arg2, a1, a2); } }; -2441: template struct sub_2exp_function_struct { static inline Result function( unsigned long long& arg1, const unsigned long long &arg2, unsigned int a1, Rounding_Dir a2) { return sub_2exp_unsigned_int(arg1, arg2, a1, a2); } }; -2441: -2441: -2441: template struct mul_2exp_function_struct { static inline Result function( char& arg1, const char &arg2, unsigned int a1, Rounding_Dir a2) { return mul_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: -2441: template struct mul_2exp_function_struct { static inline Result function( signed char& arg1, const signed char &arg2, unsigned int a1, Rounding_Dir a2) { return mul_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: template struct mul_2exp_function_struct { static inline Result function( signed short& arg1, const signed short &arg2, unsigned int a1, Rounding_Dir a2) { return mul_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: template struct mul_2exp_function_struct { static inline Result function( signed int& arg1, const signed int &arg2, unsigned int a1, Rounding_Dir a2) { return mul_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: template struct mul_2exp_function_struct { static inline Result function( signed long& arg1, const signed long &arg2, unsigned int a1, Rounding_Dir a2) { return mul_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: template struct mul_2exp_function_struct { static inline Result function( signed long long& arg1, const signed long long &arg2, unsigned int a1, Rounding_Dir a2) { return mul_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: -2441: -2441: -2441: template struct mul_2exp_function_struct { static inline Result function( unsigned char& arg1, const unsigned char &arg2, unsigned int a1, Rounding_Dir a2) { return mul_2exp_unsigned_int(arg1, arg2, a1, a2); } }; -2441: template struct mul_2exp_function_struct { static inline Result function( unsigned short& arg1, const unsigned short &arg2, unsigned int a1, Rounding_Dir a2) { return mul_2exp_unsigned_int(arg1, arg2, a1, a2); } }; -2441: template struct mul_2exp_function_struct { static inline Result function( unsigned int& arg1, const unsigned int &arg2, unsigned int a1, Rounding_Dir a2) { return mul_2exp_unsigned_int(arg1, arg2, a1, a2); } }; -2441: template struct mul_2exp_function_struct { static inline Result function( unsigned long& arg1, const unsigned long &arg2, unsigned int a1, Rounding_Dir a2) { return mul_2exp_unsigned_int(arg1, arg2, a1, a2); } }; -2441: template struct mul_2exp_function_struct { static inline Result function( unsigned long long& arg1, const unsigned long long &arg2, unsigned int a1, Rounding_Dir a2) { return mul_2exp_unsigned_int(arg1, arg2, a1, a2); } }; -2441: -2441: -2441: template struct div_2exp_function_struct { static inline Result function( char& arg1, const char &arg2, unsigned int a1, Rounding_Dir a2) { return div_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: -2441: template struct div_2exp_function_struct { static inline Result function( signed char& arg1, const signed char &arg2, unsigned int a1, Rounding_Dir a2) { return div_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: template struct div_2exp_function_struct { static inline Result function( signed short& arg1, const signed short &arg2, unsigned int a1, Rounding_Dir a2) { return div_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: template struct div_2exp_function_struct { static inline Result function( signed int& arg1, const signed int &arg2, unsigned int a1, Rounding_Dir a2) { return div_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: template struct div_2exp_function_struct { static inline Result function( signed long& arg1, const signed long &arg2, unsigned int a1, Rounding_Dir a2) { return div_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: template struct div_2exp_function_struct { static inline Result function( signed long long& arg1, const signed long long &arg2, unsigned int a1, Rounding_Dir a2) { return div_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: -2441: -2441: -2441: template struct div_2exp_function_struct { static inline Result function( unsigned char& arg1, const unsigned char &arg2, unsigned int a1, Rounding_Dir a2) { return div_2exp_unsigned_int(arg1, arg2, a1, a2); } }; -2441: template struct div_2exp_function_struct { static inline Result function( unsigned short& arg1, const unsigned short &arg2, unsigned int a1, Rounding_Dir a2) { return div_2exp_unsigned_int(arg1, arg2, a1, a2); } }; -2441: template struct div_2exp_function_struct { static inline Result function( unsigned int& arg1, const unsigned int &arg2, unsigned int a1, Rounding_Dir a2) { return div_2exp_unsigned_int(arg1, arg2, a1, a2); } }; -2441: template struct div_2exp_function_struct { static inline Result function( unsigned long& arg1, const unsigned long &arg2, unsigned int a1, Rounding_Dir a2) { return div_2exp_unsigned_int(arg1, arg2, a1, a2); } }; -2441: template struct div_2exp_function_struct { static inline Result function( unsigned long long& arg1, const unsigned long long &arg2, unsigned int a1, Rounding_Dir a2) { return div_2exp_unsigned_int(arg1, arg2, a1, a2); } }; -2441: -2441: -2441: template struct smod_2exp_function_struct { static inline Result function( char& arg1, const char &arg2, unsigned int a1, Rounding_Dir a2) { return smod_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: -2441: template struct smod_2exp_function_struct { static inline Result function( signed char& arg1, const signed char &arg2, unsigned int a1, Rounding_Dir a2) { return smod_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: template struct smod_2exp_function_struct { static inline Result function( signed short& arg1, const signed short &arg2, unsigned int a1, Rounding_Dir a2) { return smod_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: template struct smod_2exp_function_struct { static inline Result function( signed int& arg1, const signed int &arg2, unsigned int a1, Rounding_Dir a2) { return smod_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: template struct smod_2exp_function_struct { static inline Result function( signed long& arg1, const signed long &arg2, unsigned int a1, Rounding_Dir a2) { return smod_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: template struct smod_2exp_function_struct { static inline Result function( signed long long& arg1, const signed long long &arg2, unsigned int a1, Rounding_Dir a2) { return smod_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: -2441: -2441: -2441: template struct smod_2exp_function_struct { static inline Result function( unsigned char& arg1, const unsigned char &arg2, unsigned int a1, Rounding_Dir a2) { return smod_2exp_unsigned_int(arg1, arg2, a1, a2); } }; -2441: template struct smod_2exp_function_struct { static inline Result function( unsigned short& arg1, const unsigned short &arg2, unsigned int a1, Rounding_Dir a2) { return smod_2exp_unsigned_int(arg1, arg2, a1, a2); } }; -2441: template struct smod_2exp_function_struct { static inline Result function( unsigned int& arg1, const unsigned int &arg2, unsigned int a1, Rounding_Dir a2) { return smod_2exp_unsigned_int(arg1, arg2, a1, a2); } }; -2441: template struct smod_2exp_function_struct { static inline Result function( unsigned long& arg1, const unsigned long &arg2, unsigned int a1, Rounding_Dir a2) { return smod_2exp_unsigned_int(arg1, arg2, a1, a2); } }; -2441: template struct smod_2exp_function_struct { static inline Result function( unsigned long long& arg1, const unsigned long long &arg2, unsigned int a1, Rounding_Dir a2) { return smod_2exp_unsigned_int(arg1, arg2, a1, a2); } }; -2441: -2441: -2441: template struct umod_2exp_function_struct { static inline Result function( char& arg1, const char &arg2, unsigned int a1, Rounding_Dir a2) { return umod_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: -2441: template struct umod_2exp_function_struct { static inline Result function( signed char& arg1, const signed char &arg2, unsigned int a1, Rounding_Dir a2) { return umod_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: template struct umod_2exp_function_struct { static inline Result function( signed short& arg1, const signed short &arg2, unsigned int a1, Rounding_Dir a2) { return umod_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: template struct umod_2exp_function_struct { static inline Result function( signed int& arg1, const signed int &arg2, unsigned int a1, Rounding_Dir a2) { return umod_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: template struct umod_2exp_function_struct { static inline Result function( signed long& arg1, const signed long &arg2, unsigned int a1, Rounding_Dir a2) { return umod_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: template struct umod_2exp_function_struct { static inline Result function( signed long long& arg1, const signed long long &arg2, unsigned int a1, Rounding_Dir a2) { return umod_2exp_signed_int(arg1, arg2, a1, a2); } }; -2441: -2441: -2441: -2441: template struct umod_2exp_function_struct { static inline Result function( unsigned char& arg1, const unsigned char &arg2, unsigned int a1, Rounding_Dir a2) { return umod_2exp_unsigned_int(arg1, arg2, a1, a2); } }; -2441: template struct umod_2exp_function_struct { static inline Result function( unsigned short& arg1, const unsigned short &arg2, unsigned int a1, Rounding_Dir a2) { return umod_2exp_unsigned_int(arg1, arg2, a1, a2); } }; -2441: template struct umod_2exp_function_struct { static inline Result function( unsigned int& arg1, const unsigned int &arg2, unsigned int a1, Rounding_Dir a2) { return umod_2exp_unsigned_int(arg1, arg2, a1, a2); } }; -2441: template struct umod_2exp_function_struct { static inline Result function( unsigned long& arg1, const unsigned long &arg2, unsigned int a1, Rounding_Dir a2) { return umod_2exp_unsigned_int(arg1, arg2, a1, a2); } }; -2441: template struct umod_2exp_function_struct { static inline Result function( unsigned long long& arg1, const unsigned long long &arg2, unsigned int a1, Rounding_Dir a2) { return umod_2exp_unsigned_int(arg1, arg2, a1, a2); } }; -2441: -2441: -2441: template struct sqrt_function_struct { static inline Result function( char& arg1, const char &arg2, Rounding_Dir a1) { return sqrt_signed_int(arg1, arg2, a1); } }; -2441: -2441: template struct sqrt_function_struct { static inline Result function( signed char& arg1, const signed char &arg2, Rounding_Dir a1) { return sqrt_signed_int(arg1, arg2, a1); } }; -2441: template struct sqrt_function_struct { static inline Result function( signed short& arg1, const signed short &arg2, Rounding_Dir a1) { return sqrt_signed_int(arg1, arg2, a1); } }; -2441: template struct sqrt_function_struct { static inline Result function( signed int& arg1, const signed int &arg2, Rounding_Dir a1) { return sqrt_signed_int(arg1, arg2, a1); } }; -2441: template struct sqrt_function_struct { static inline Result function( signed long& arg1, const signed long &arg2, Rounding_Dir a1) { return sqrt_signed_int(arg1, arg2, a1); } }; -2441: template struct sqrt_function_struct { static inline Result function( signed long long& arg1, const signed long long &arg2, Rounding_Dir a1) { return sqrt_signed_int(arg1, arg2, a1); } }; -2441: -2441: -2441: -2441: template struct sqrt_function_struct { static inline Result function( unsigned char& arg1, const unsigned char &arg2, Rounding_Dir a1) { return sqrt_unsigned_int(arg1, arg2, a1); } }; -2441: template struct sqrt_function_struct { static inline Result function( unsigned short& arg1, const unsigned short &arg2, Rounding_Dir a1) { return sqrt_unsigned_int(arg1, arg2, a1); } }; -2441: template struct sqrt_function_struct { static inline Result function( unsigned int& arg1, const unsigned int &arg2, Rounding_Dir a1) { return sqrt_unsigned_int(arg1, arg2, a1); } }; -2441: template struct sqrt_function_struct { static inline Result function( unsigned long& arg1, const unsigned long &arg2, Rounding_Dir a1) { return sqrt_unsigned_int(arg1, arg2, a1); } }; -2441: template struct sqrt_function_struct { static inline Result function( unsigned long long& arg1, const unsigned long long &arg2, Rounding_Dir a1) { return sqrt_unsigned_int(arg1, arg2, a1); } }; -2441: -2441: -2441: template struct abs_function_struct { static inline Result function( char& arg1, const char &arg2, Rounding_Dir a1) { return abs_generic(arg1, arg2, a1); } }; -2441: -2441: template struct abs_function_struct { static inline Result function( signed char& arg1, const signed char &arg2, Rounding_Dir a1) { return abs_generic(arg1, arg2, a1); } }; -2441: template struct abs_function_struct { static inline Result function( signed short& arg1, const signed short &arg2, Rounding_Dir a1) { return abs_generic(arg1, arg2, a1); } }; -2441: template struct abs_function_struct { static inline Result function( signed int& arg1, const signed int &arg2, Rounding_Dir a1) { return abs_generic(arg1, arg2, a1); } }; -2441: template struct abs_function_struct { static inline Result function( signed long& arg1, const signed long &arg2, Rounding_Dir a1) { return abs_generic(arg1, arg2, a1); } }; -2441: template struct abs_function_struct { static inline Result function( signed long long& arg1, const signed long long &arg2, Rounding_Dir a1) { return abs_generic(arg1, arg2, a1); } }; -2441: -2441: -2441: -2441: template struct abs_function_struct { static inline Result function( unsigned char& arg1, const unsigned char &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct abs_function_struct { static inline Result function( unsigned short& arg1, const unsigned short &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct abs_function_struct { static inline Result function( unsigned int& arg1, const unsigned int &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct abs_function_struct { static inline Result function( unsigned long& arg1, const unsigned long &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: template struct abs_function_struct { static inline Result function( unsigned long long& arg1, const unsigned long long &arg2, Rounding_Dir a1) { return assign_unsigned_int_unsigned_int(arg1, arg2, a1); } }; -2441: -2441: template struct gcd_function_struct { static inline Result function( char& arg1, const char &arg2, const char &arg3, Rounding_Dir a1) { return gcd_exact(arg1, arg2, arg3, a1); } }; -2441: template struct gcd_function_struct { static inline Result function( signed char& arg1, const signed char &arg2, const signed char &arg3, Rounding_Dir a1) { return gcd_exact(arg1, arg2, arg3, a1); } }; -2441: template struct gcd_function_struct { static inline Result function( signed short& arg1, const signed short &arg2, const signed short &arg3, Rounding_Dir a1) { return gcd_exact(arg1, arg2, arg3, a1); } }; -2441: template struct gcd_function_struct { static inline Result function( signed int& arg1, const signed int &arg2, const signed int &arg3, Rounding_Dir a1) { return gcd_exact(arg1, arg2, arg3, a1); } }; -2441: template struct gcd_function_struct { static inline Result function( signed long& arg1, const signed long &arg2, const signed long &arg3, Rounding_Dir a1) { return gcd_exact(arg1, arg2, arg3, a1); } }; -2441: template struct gcd_function_struct { static inline Result function( signed long long& arg1, const signed long long &arg2, const signed long long &arg3, Rounding_Dir a1) { return gcd_exact(arg1, arg2, arg3, a1); } }; -2441: template struct gcd_function_struct { static inline Result function( unsigned char& arg1, const unsigned char &arg2, const unsigned char &arg3, Rounding_Dir a1) { return gcd_exact(arg1, arg2, arg3, a1); } }; -2441: template struct gcd_function_struct { static inline Result function( unsigned short& arg1, const unsigned short &arg2, const unsigned short &arg3, Rounding_Dir a1) { return gcd_exact(arg1, arg2, arg3, a1); } }; -2441: template struct gcd_function_struct { static inline Result function( unsigned int& arg1, const unsigned int &arg2, const unsigned int &arg3, Rounding_Dir a1) { return gcd_exact(arg1, arg2, arg3, a1); } }; -2441: template struct gcd_function_struct { static inline Result function( unsigned long& arg1, const unsigned long &arg2, const unsigned long &arg3, Rounding_Dir a1) { return gcd_exact(arg1, arg2, arg3, a1); } }; -2441: template struct gcd_function_struct { static inline Result function( unsigned long long& arg1, const unsigned long long &arg2, const unsigned long long &arg3, Rounding_Dir a1) { return gcd_exact(arg1, arg2, arg3, a1); } }; -2441: -2441: template struct gcdext_function_struct { static inline Result function( char& arg1, char &arg2, char &arg3, const char &arg4, const char &arg5, Rounding_Dir a1) { return gcdext_exact(arg1, arg2, arg3, arg4, arg5, a1); } }; -2441: -2441: template struct gcdext_function_struct { static inline Result function( signed char& arg1, signed char &arg2, signed char &arg3, const signed char &arg4, const signed char &arg5, Rounding_Dir a1) { return gcdext_exact(arg1, arg2, arg3, arg4, arg5, a1); } }; -2441: -2441: -2441: template struct gcdext_function_struct { static inline Result function( signed short& arg1, signed short &arg2, signed short &arg3, const signed short &arg4, const signed short &arg5, Rounding_Dir a1) { return gcdext_exact(arg1, arg2, arg3, arg4, arg5, a1); } }; -2441: -2441: -2441: template struct gcdext_function_struct { static inline Result function( signed int& arg1, signed int &arg2, signed int &arg3, const signed int &arg4, const signed int &arg5, Rounding_Dir a1) { return gcdext_exact(arg1, arg2, arg3, arg4, arg5, a1); } }; -2441: -2441: -2441: template struct gcdext_function_struct { static inline Result function( signed long& arg1, signed long &arg2, signed long &arg3, const signed long &arg4, const signed long &arg5, Rounding_Dir a1) { return gcdext_exact(arg1, arg2, arg3, arg4, arg5, a1); } }; -2441: -2441: -2441: template struct gcdext_function_struct { static inline Result function( signed long long& arg1, signed long long &arg2, signed long long &arg3, const signed long long &arg4, const signed long long &arg5, Rounding_Dir a1) { return gcdext_exact(arg1, arg2, arg3, arg4, arg5, a1); } }; -2441: -2441: -2441: template struct gcdext_function_struct { static inline Result function( unsigned char& arg1, unsigned char &arg2, unsigned char &arg3, const unsigned char &arg4, const unsigned char &arg5, Rounding_Dir a1) { return gcdext_exact(arg1, arg2, arg3, arg4, arg5, a1); } }; -2441: -2441: -2441: template struct gcdext_function_struct { static inline Result function( unsigned short& arg1, unsigned short &arg2, unsigned short &arg3, const unsigned short &arg4, const unsigned short &arg5, Rounding_Dir a1) { return gcdext_exact(arg1, arg2, arg3, arg4, arg5, a1); } }; -2441: -2441: -2441: template struct gcdext_function_struct { static inline Result function( unsigned int& arg1, unsigned int &arg2, unsigned int &arg3, const unsigned int &arg4, const unsigned int &arg5, Rounding_Dir a1) { return gcdext_exact(arg1, arg2, arg3, arg4, arg5, a1); } }; -2441: -2441: -2441: template struct gcdext_function_struct { static inline Result function( unsigned long& arg1, unsigned long &arg2, unsigned long &arg3, const unsigned long &arg4, const unsigned long &arg5, Rounding_Dir a1) { return gcdext_exact(arg1, arg2, arg3, arg4, arg5, a1); } }; -2441: -2441: -2441: template struct gcdext_function_struct { static inline Result function( unsigned long long& arg1, unsigned long long &arg2, unsigned long long &arg3, const unsigned long long &arg4, const unsigned long long &arg5, Rounding_Dir a1) { return gcdext_exact(arg1, arg2, arg3, arg4, arg5, a1); } }; -2441: -2441: -2441: -2441: -2441: template struct lcm_function_struct { static inline Result function( char& arg1, const char &arg2, const char &arg3, Rounding_Dir a1) { return lcm_gcd_exact(arg1, arg2, arg3, a1); } }; -2441: template struct lcm_function_struct { static inline Result function( signed char& arg1, const signed char &arg2, const signed char &arg3, Rounding_Dir a1) { return lcm_gcd_exact(arg1, arg2, arg3, a1); } }; -2441: template struct lcm_function_struct { static inline Result function( signed short& arg1, const signed short &arg2, const signed short &arg3, Rounding_Dir a1) { return lcm_gcd_exact(arg1, arg2, arg3, a1); } }; -2441: template struct lcm_function_struct { static inline Result function( signed int& arg1, const signed int &arg2, const signed int &arg3, Rounding_Dir a1) { return lcm_gcd_exact(arg1, arg2, arg3, a1); } }; -2441: template struct lcm_function_struct { static inline Result function( signed long& arg1, const signed long &arg2, const signed long &arg3, Rounding_Dir a1) { return lcm_gcd_exact(arg1, arg2, arg3, a1); } }; -2441: template struct lcm_function_struct { static inline Result function( signed long long& arg1, const signed long long &arg2, const signed long long &arg3, Rounding_Dir a1) { return lcm_gcd_exact(arg1, arg2, arg3, a1); } }; -2441: template struct lcm_function_struct { static inline Result function( unsigned char& arg1, const unsigned char &arg2, const unsigned char &arg3, Rounding_Dir a1) { return lcm_gcd_exact(arg1, arg2, arg3, a1); } }; -2441: template struct lcm_function_struct { static inline Result function( unsigned short& arg1, const unsigned short &arg2, const unsigned short &arg3, Rounding_Dir a1) { return lcm_gcd_exact(arg1, arg2, arg3, a1); } }; -2441: template struct lcm_function_struct { static inline Result function( unsigned int& arg1, const unsigned int &arg2, const unsigned int &arg3, Rounding_Dir a1) { return lcm_gcd_exact(arg1, arg2, arg3, a1); } }; -2441: template struct lcm_function_struct { static inline Result function( unsigned long& arg1, const unsigned long &arg2, const unsigned long &arg3, Rounding_Dir a1) { return lcm_gcd_exact(arg1, arg2, arg3, a1); } }; -2441: template struct lcm_function_struct { static inline Result function( unsigned long long& arg1, const unsigned long long &arg2, const unsigned long long &arg3, Rounding_Dir a1) { return lcm_gcd_exact(arg1, arg2, arg3, a1); } }; -2441: -2441: template struct sgn_function_struct { static inline Result_Relation function(const char& arg) { return sgn_generic(arg); } }; -2441: template struct sgn_function_struct { static inline Result_Relation function(const signed char& arg) { return sgn_generic(arg); } }; -2441: template struct sgn_function_struct { static inline Result_Relation function(const signed short& arg) { return sgn_generic(arg); } }; -2441: template struct sgn_function_struct { static inline Result_Relation function(const signed int& arg) { return sgn_generic(arg); } }; -2441: template struct sgn_function_struct { static inline Result_Relation function(const signed long& arg) { return sgn_generic(arg); } }; -2441: template struct sgn_function_struct { static inline Result_Relation function(const signed long long& arg) { return sgn_generic(arg); } }; -2441: template struct sgn_function_struct { static inline Result_Relation function(const unsigned char& arg) { return sgn_generic(arg); } }; -2441: template struct sgn_function_struct { static inline Result_Relation function(const unsigned short& arg) { return sgn_generic(arg); } }; -2441: template struct sgn_function_struct { static inline Result_Relation function(const unsigned int& arg) { return sgn_generic(arg); } }; -2441: template struct sgn_function_struct { static inline Result_Relation function(const unsigned long& arg) { return sgn_generic(arg); } }; -2441: template struct sgn_function_struct { static inline Result_Relation function(const unsigned long long& arg) { return sgn_generic(arg); } }; -2441: -2441: template struct cmp_function_struct { static inline Result_Relation function(const char& arg1, const char &arg2) { return cmp_generic(arg1, arg2); } }; -2441: template struct cmp_function_struct { static inline Result_Relation function(const signed char& arg1, const signed char &arg2) { return cmp_generic(arg1, arg2); } }; -2441: template struct cmp_function_struct { static inline Result_Relation function(const signed short& arg1, const signed short &arg2) { return cmp_generic(arg1, arg2); } }; -2441: template struct cmp_function_struct { static inline Result_Relation function(const signed int& arg1, const signed int &arg2) { return cmp_generic(arg1, arg2); } }; -2441: template struct cmp_function_struct { static inline Result_Relation function(const signed long& arg1, const signed long &arg2) { return cmp_generic(arg1, arg2); } }; -2441: template struct cmp_function_struct { static inline Result_Relation function(const signed long long& arg1, const signed long long &arg2) { return cmp_generic(arg1, arg2); } }; -2441: template struct cmp_function_struct { static inline Result_Relation function(const unsigned char& arg1, const unsigned char &arg2) { return cmp_generic(arg1, arg2); } }; -2441: template struct cmp_function_struct { static inline Result_Relation function(const unsigned short& arg1, const unsigned short &arg2) { return cmp_generic(arg1, arg2); } }; -2441: template struct cmp_function_struct { static inline Result_Relation function(const unsigned int& arg1, const unsigned int &arg2) { return cmp_generic(arg1, arg2); } }; -2441: template struct cmp_function_struct { static inline Result_Relation function(const unsigned long& arg1, const unsigned long &arg2) { return cmp_generic(arg1, arg2); } }; -2441: template struct cmp_function_struct { static inline Result_Relation function(const unsigned long long& arg1, const unsigned long long &arg2) { return cmp_generic(arg1, arg2); } }; -2441: -2441: template struct add_mul_function_struct { static inline Result function( char& arg1, const char &arg2, const char &arg3, Rounding_Dir a1) { return add_mul_int(arg1, arg2, arg3, a1); } }; -2441: template struct add_mul_function_struct { static inline Result function( signed char& arg1, const signed char &arg2, const signed char &arg3, Rounding_Dir a1) { return add_mul_int(arg1, arg2, arg3, a1); } }; -2441: template struct add_mul_function_struct { static inline Result function( signed short& arg1, const signed short &arg2, const signed short &arg3, Rounding_Dir a1) { return add_mul_int(arg1, arg2, arg3, a1); } }; -2441: template struct add_mul_function_struct { static inline Result function( signed int& arg1, const signed int &arg2, const signed int &arg3, Rounding_Dir a1) { return add_mul_int(arg1, arg2, arg3, a1); } }; -2441: template struct add_mul_function_struct { static inline Result function( signed long& arg1, const signed long &arg2, const signed long &arg3, Rounding_Dir a1) { return add_mul_int(arg1, arg2, arg3, a1); } }; -2441: template struct add_mul_function_struct { static inline Result function( signed long long& arg1, const signed long long &arg2, const signed long long &arg3, Rounding_Dir a1) { return add_mul_int(arg1, arg2, arg3, a1); } }; -2441: template struct add_mul_function_struct { static inline Result function( unsigned char& arg1, const unsigned char &arg2, const unsigned char &arg3, Rounding_Dir a1) { return add_mul_int(arg1, arg2, arg3, a1); } }; -2441: template struct add_mul_function_struct { static inline Result function( unsigned short& arg1, const unsigned short &arg2, const unsigned short &arg3, Rounding_Dir a1) { return add_mul_int(arg1, arg2, arg3, a1); } }; -2441: template struct add_mul_function_struct { static inline Result function( unsigned int& arg1, const unsigned int &arg2, const unsigned int &arg3, Rounding_Dir a1) { return add_mul_int(arg1, arg2, arg3, a1); } }; -2441: template struct add_mul_function_struct { static inline Result function( unsigned long& arg1, const unsigned long &arg2, const unsigned long &arg3, Rounding_Dir a1) { return add_mul_int(arg1, arg2, arg3, a1); } }; -2441: template struct add_mul_function_struct { static inline Result function( unsigned long long& arg1, const unsigned long long &arg2, const unsigned long long &arg3, Rounding_Dir a1) { return add_mul_int(arg1, arg2, arg3, a1); } }; -2441: -2441: template struct sub_mul_function_struct { static inline Result function( char& arg1, const char &arg2, const char &arg3, Rounding_Dir a1) { return sub_mul_int(arg1, arg2, arg3, a1); } }; -2441: template struct sub_mul_function_struct { static inline Result function( signed char& arg1, const signed char &arg2, const signed char &arg3, Rounding_Dir a1) { return sub_mul_int(arg1, arg2, arg3, a1); } }; -2441: template struct sub_mul_function_struct { static inline Result function( signed short& arg1, const signed short &arg2, const signed short &arg3, Rounding_Dir a1) { return sub_mul_int(arg1, arg2, arg3, a1); } }; -2441: template struct sub_mul_function_struct { static inline Result function( signed int& arg1, const signed int &arg2, const signed int &arg3, Rounding_Dir a1) { return sub_mul_int(arg1, arg2, arg3, a1); } }; -2441: template struct sub_mul_function_struct { static inline Result function( signed long& arg1, const signed long &arg2, const signed long &arg3, Rounding_Dir a1) { return sub_mul_int(arg1, arg2, arg3, a1); } }; -2441: template struct sub_mul_function_struct { static inline Result function( signed long long& arg1, const signed long long &arg2, const signed long long &arg3, Rounding_Dir a1) { return sub_mul_int(arg1, arg2, arg3, a1); } }; -2441: template struct sub_mul_function_struct { static inline Result function( unsigned char& arg1, const unsigned char &arg2, const unsigned char &arg3, Rounding_Dir a1) { return sub_mul_int(arg1, arg2, arg3, a1); } }; -2441: template struct sub_mul_function_struct { static inline Result function( unsigned short& arg1, const unsigned short &arg2, const unsigned short &arg3, Rounding_Dir a1) { return sub_mul_int(arg1, arg2, arg3, a1); } }; -2441: template struct sub_mul_function_struct { static inline Result function( unsigned int& arg1, const unsigned int &arg2, const unsigned int &arg3, Rounding_Dir a1) { return sub_mul_int(arg1, arg2, arg3, a1); } }; -2441: template struct sub_mul_function_struct { static inline Result function( unsigned long& arg1, const unsigned long &arg2, const unsigned long &arg3, Rounding_Dir a1) { return sub_mul_int(arg1, arg2, arg3, a1); } }; -2441: template struct sub_mul_function_struct { static inline Result function( unsigned long long& arg1, const unsigned long long &arg2, const unsigned long long &arg3, Rounding_Dir a1) { return sub_mul_int(arg1, arg2, arg3, a1); } }; -2441: -2441: template struct input_function_struct { static inline Result function( char& arg, std::istream& a1, Rounding_Dir a2) { return input_generic(arg, a1, a2); } }; -2441: template struct input_function_struct { static inline Result function( signed char& arg, std::istream& a1, Rounding_Dir a2) { return input_generic(arg, a1, a2); } }; -2441: template struct input_function_struct { static inline Result function( signed short& arg, std::istream& a1, Rounding_Dir a2) { return input_generic(arg, a1, a2); } }; -2441: template struct input_function_struct { static inline Result function( signed int& arg, std::istream& a1, Rounding_Dir a2) { return input_generic(arg, a1, a2); } }; -2441: template struct input_function_struct { static inline Result function( signed long& arg, std::istream& a1, Rounding_Dir a2) { return input_generic(arg, a1, a2); } }; -2441: template struct input_function_struct { static inline Result function( signed long long& arg, std::istream& a1, Rounding_Dir a2) { return input_generic(arg, a1, a2); } }; -2441: template struct input_function_struct { static inline Result function( unsigned char& arg, std::istream& a1, Rounding_Dir a2) { return input_generic(arg, a1, a2); } }; -2441: template struct input_function_struct { static inline Result function( unsigned short& arg, std::istream& a1, Rounding_Dir a2) { return input_generic(arg, a1, a2); } }; -2441: template struct input_function_struct { static inline Result function( unsigned int& arg, std::istream& a1, Rounding_Dir a2) { return input_generic(arg, a1, a2); } }; -2441: template struct input_function_struct { static inline Result function( unsigned long& arg, std::istream& a1, Rounding_Dir a2) { return input_generic(arg, a1, a2); } }; -2441: template struct input_function_struct { static inline Result function( unsigned long long& arg, std::istream& a1, Rounding_Dir a2) { return input_generic(arg, a1, a2); } }; -2441: -2441: template struct output_function_struct { static inline Result function(std::ostream& b1, const char& arg, const Numeric_Format& a1, Rounding_Dir a2) { return output_char(b1, arg, a1, a2); } }; -2441: template struct output_function_struct { static inline Result function(std::ostream& b1, const signed char& arg, const Numeric_Format& a1, Rounding_Dir a2) { return output_char(b1, arg, a1, a2); } }; -2441: template struct output_function_struct { static inline Result function(std::ostream& b1, const signed short& arg, const Numeric_Format& a1, Rounding_Dir a2) { return output_int(b1, arg, a1, a2); } }; -2441: template struct output_function_struct { static inline Result function(std::ostream& b1, const signed int& arg, const Numeric_Format& a1, Rounding_Dir a2) { return output_int(b1, arg, a1, a2); } }; -2441: template struct output_function_struct { static inline Result function(std::ostream& b1, const signed long& arg, const Numeric_Format& a1, Rounding_Dir a2) { return output_int(b1, arg, a1, a2); } }; -2441: template struct output_function_struct { static inline Result function(std::ostream& b1, const signed long long& arg, const Numeric_Format& a1, Rounding_Dir a2) { return output_int(b1, arg, a1, a2); } }; -2441: template struct output_function_struct { static inline Result function(std::ostream& b1, const unsigned char& arg, const Numeric_Format& a1, Rounding_Dir a2) { return output_char(b1, arg, a1, a2); } }; -2441: template struct output_function_struct { static inline Result function(std::ostream& b1, const unsigned short& arg, const Numeric_Format& a1, Rounding_Dir a2) { return output_int(b1, arg, a1, a2); } }; -2441: template struct output_function_struct { static inline Result function(std::ostream& b1, const unsigned int& arg, const Numeric_Format& a1, Rounding_Dir a2) { return output_int(b1, arg, a1, a2); } }; -2441: template struct output_function_struct { static inline Result function(std::ostream& b1, const unsigned long& arg, const Numeric_Format& a1, Rounding_Dir a2) { return output_int(b1, arg, a1, a2); } }; -2441: template struct output_function_struct { static inline Result function(std::ostream& b1, const unsigned long long& arg, const Numeric_Format& a1, Rounding_Dir a2) { return output_int(b1, arg, a1, a2); } }; -2441: -2441: } -2441: -2441: } -2441: # 702 "../../src/checked_defs.hh" 2 -2441: # 1 "../../src/checked_float_inlines.hh" 1 -2441: # 28 "../../src/checked_float_inlines.hh" -2441: # 1 "/usr/include/c++/8/cmath" 1 3 -2441: # 39 "/usr/include/c++/8/cmath" 3 -2441: -2441: # 40 "/usr/include/c++/8/cmath" 3 -2441: # 29 "../../src/checked_float_inlines.hh" 2 -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: namespace Checked { -2441: -2441: inline float -2441: multiply_add(float x, float y, float z) { -2441: -2441: -2441: -2441: -2441: return x*y + z; -2441: -2441: } -2441: -2441: inline double -2441: multiply_add(double x, double y, double z) { -2441: -2441: -2441: -2441: -2441: return x*y + z; -2441: -2441: } -2441: -2441: inline long double -2441: multiply_add(long double x, long double y, long double z) { -2441: -2441: -2441: -2441: -2441: return x*y + z; -2441: -2441: } -2441: -2441: -2441: inline float -2441: round_to_integer(float x) { -2441: return rintf(x); -2441: } -2441: -2441: -2441: inline double -2441: round_to_integer(double x) { -2441: return rint(x); -2441: } -2441: -2441: -2441: inline long double -2441: round_to_integer(long double x) { -2441: return rintl(x); -2441: } -2441: # 99 "../../src/checked_float_inlines.hh" -2441: inline bool -2441: fpu_direct_rounding(Rounding_Dir dir) { -2441: return round_direct(dir) || round_not_requested(dir); -2441: } -2441: -2441: inline bool -2441: fpu_inverse_rounding(Rounding_Dir dir) { -2441: return round_inverse(dir); -2441: } -2441: # 133 "../../src/checked_float_inlines.hh" -2441: inline void -2441: limit_precision(const float& v) { -2441: PPL_CC_FLUSH(v); -2441: } -2441: -2441: inline void -2441: limit_precision(const double& v) { -2441: PPL_CC_FLUSH(v); -2441: } -2441: -2441: inline void -2441: limit_precision(const long double&) { -2441: } -2441: -2441: template -2441: inline Result -2441: classify_float(const T v, bool nan, bool inf, bool sign) { -2441: Float f(v); -2441: if ((nan || sign) && ((Policy::has_nan) ? (f.u.binary.is_nan()) : ( -2441: # 151 "../../src/checked_float_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 151 "../../src/checked_float_inlines.hh" -2441: , false))) { -2441: return V_NAN; -2441: } -2441: if (inf) { -2441: if (Policy::has_infinity) { -2441: int sign_inf = f.u.binary.inf_sign(); -2441: if (sign_inf < 0) { -2441: return V_EQ_MINUS_INFINITY; -2441: } -2441: if (sign_inf > 0) { -2441: return V_EQ_PLUS_INFINITY; -2441: } -2441: } -2441: else { -2441: ((void) 0); -2441: } -2441: } -2441: if (sign) { -2441: if (v < 0) { -2441: return V_LT; -2441: } -2441: if (v > 0) { -2441: return V_GT; -2441: } -2441: return V_EQ; -2441: } -2441: return V_LGE; -2441: } -2441: -2441: template -2441: inline bool -2441: is_nan_float(const T v) { -2441: Float f(v); -2441: return ((Policy::has_nan) ? (f.u.binary.is_nan()) : ( -2441: # 184 "../../src/checked_float_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 184 "../../src/checked_float_inlines.hh" -2441: , false)); -2441: } -2441: -2441: template -2441: inline bool -2441: is_inf_float(const T v) { -2441: Float f(v); -2441: return ((Policy::has_infinity) ? ((f.u.binary.inf_sign() != 0)) : ( -2441: # 191 "../../src/checked_float_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 191 "../../src/checked_float_inlines.hh" -2441: , false)); -2441: } -2441: template -2441: inline bool -2441: is_minf_float(const T v) { -2441: Float f(v); -2441: return ((Policy::has_infinity) ? ((f.u.binary.inf_sign() < 0)) : ( -2441: # 197 "../../src/checked_float_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 197 "../../src/checked_float_inlines.hh" -2441: , false)); -2441: } -2441: -2441: template -2441: inline bool -2441: is_pinf_float(const T v) { -2441: Float f(v); -2441: return ((Policy::has_infinity) ? ((f.u.binary.inf_sign() > 0)) : ( -2441: # 204 "../../src/checked_float_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 204 "../../src/checked_float_inlines.hh" -2441: , false)); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: is_int_float(const T v) { -2441: return round_to_integer(v) == v; -2441: } -2441: -2441: template -2441: inline Result -2441: assign_special_float(T& v, Result_Class c, Rounding_Dir) { -2441: ((void) 0); -2441: switch (c) { -2441: case VC_MINUS_INFINITY: -2441: v = - -2441: # 220 "../../src/checked_float_inlines.hh" 3 4 -2441: (__builtin_huge_val ()) -2441: # 220 "../../src/checked_float_inlines.hh" -2441: ; -2441: return V_EQ_MINUS_INFINITY; -2441: case VC_PLUS_INFINITY: -2441: v = -2441: # 223 "../../src/checked_float_inlines.hh" 3 4 -2441: (__builtin_huge_val ()) -2441: # 223 "../../src/checked_float_inlines.hh" -2441: ; -2441: return V_EQ_PLUS_INFINITY; -2441: case VC_NAN: -2441: v = -2441: # 226 "../../src/checked_float_inlines.hh" 3 4 -2441: (__builtin_nanf ("")) -2441: # 226 "../../src/checked_float_inlines.hh" -2441: ; -2441: return V_NAN; -2441: default: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return V_NAN | V_UNREPRESENTABLE; -2441: } -2441: } -2441: -2441: template -2441: inline void -2441: pred_float(T& v) { -2441: Float f(v); -2441: ((void) 0); -2441: ((void) 0); -2441: if (f.u.binary.zero_sign() > 0) { -2441: f.u.binary.negate(); -2441: f.u.binary.inc(); -2441: } -2441: else if (f.u.binary.sign_bit()) { -2441: f.u.binary.inc(); -2441: } -2441: else { -2441: f.u.binary.dec(); -2441: } -2441: v = f.value(); -2441: } -2441: -2441: template -2441: inline void -2441: succ_float(T& v) { -2441: Float f(v); -2441: ((void) 0); -2441: ((void) 0); -2441: if (f.u.binary.zero_sign() < 0) { -2441: f.u.binary.negate(); -2441: f.u.binary.inc(); -2441: } -2441: else if (!f.u.binary.sign_bit()) { -2441: f.u.binary.inc(); -2441: } -2441: else { -2441: f.u.binary.dec(); -2441: } -2441: v = f.value(); -2441: } -2441: -2441: template -2441: inline Result -2441: round_lt_float(To& to, Rounding_Dir dir) { -2441: if (round_down(dir)) { -2441: pred_float(to); -2441: return V_GT; -2441: } -2441: return V_LT; -2441: } -2441: -2441: template -2441: inline Result -2441: round_gt_float(To& to, Rounding_Dir dir) { -2441: if (round_up(dir)) { -2441: succ_float(to); -2441: return V_LT; -2441: } -2441: return V_GT; -2441: } -2441: -2441: -2441: template -2441: inline void -2441: prepare_inexact(Rounding_Dir dir) { -2441: if (Policy::fpu_check_inexact -2441: && !round_not_needed(dir) && round_strict_relation(dir)) { -2441: fpu_reset_inexact(); -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: result_relation(Rounding_Dir dir) { -2441: if (Policy::fpu_check_inexact -2441: && !round_not_needed(dir) && round_strict_relation(dir)) { -2441: switch (fpu_check_inexact()) { -2441: case 0: -2441: return V_EQ; -2441: case -1: -2441: goto unknown; -2441: case 1: -2441: break; -2441: } -2441: switch (round_dir(dir)) { -2441: case ROUND_DOWN: -2441: return V_GT; -2441: case ROUND_UP: -2441: return V_LT; -2441: default: -2441: return V_NE; -2441: } -2441: } -2441: else { -2441: unknown: -2441: switch (round_dir(dir)) { -2441: case ROUND_DOWN: -2441: return V_GE; -2441: case ROUND_UP: -2441: return V_LE; -2441: default: -2441: return V_LGE; -2441: } -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: assign_float_float_exact(To& to, const From from, Rounding_Dir) { -2441: if (To_Policy::fpu_check_nan_result && is_nan(from)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: to = from; -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline Result -2441: assign_float_float_inexact(To& to, const From from, Rounding_Dir dir) { -2441: if (To_Policy::fpu_check_nan_result && is_nan(from)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: prepare_inexact(dir); -2441: if (fpu_direct_rounding(dir)) { -2441: to = from; -2441: } -2441: else if (fpu_inverse_rounding(dir)) { -2441: From tmp = -from; -2441: to = tmp; -2441: limit_precision(to); -2441: to = -to; -2441: } -2441: else { -2441: fpu_rounding_control_word_type old -2441: = fpu_save_rounding_direction(round_fpu_dir(dir)); -2441: limit_precision(from); -2441: to = from; -2441: limit_precision(to); -2441: fpu_restore_rounding_direction(old); -2441: } -2441: return result_relation(dir); -2441: } -2441: -2441: template -2441: inline Result -2441: assign_float_float(To& to, const From from, Rounding_Dir dir) { -2441: if (sizeof(From) > sizeof(To)) { -2441: return assign_float_float_inexact(to, from, dir); -2441: } -2441: else { -2441: return assign_float_float_exact(to, from, dir); -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: floor_float(Type& to, const Type from, Rounding_Dir) { -2441: if (To_Policy::fpu_check_nan_result && is_nan(from)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: if (fpu_direct_rounding(ROUND_DOWN)) { -2441: to = round_to_integer(from); -2441: } -2441: else if (fpu_inverse_rounding(ROUND_DOWN)) { -2441: to = round_to_integer(-from); -2441: limit_precision(to); -2441: to = -to; -2441: } -2441: else { -2441: fpu_rounding_control_word_type old -2441: = fpu_save_rounding_direction(round_fpu_dir(ROUND_DOWN)); -2441: limit_precision(from); -2441: to = round_to_integer(from); -2441: limit_precision(to); -2441: fpu_restore_rounding_direction(old); -2441: } -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline Result -2441: ceil_float(Type& to, const Type from, Rounding_Dir) { -2441: if (To_Policy::fpu_check_nan_result && is_nan(from)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: if (fpu_direct_rounding(ROUND_UP)) { -2441: to = round_to_integer(from); -2441: } -2441: else if (fpu_inverse_rounding(ROUND_UP)) { -2441: to = round_to_integer(-from); -2441: limit_precision(to); -2441: to = -to; -2441: } -2441: else { -2441: fpu_rounding_control_word_type old -2441: = fpu_save_rounding_direction(round_fpu_dir(ROUND_UP)); -2441: limit_precision(from); -2441: to = round_to_integer(from); -2441: limit_precision(to); -2441: fpu_restore_rounding_direction(old); -2441: } -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline Result -2441: trunc_float(Type& to, const Type from, Rounding_Dir dir) { -2441: if (To_Policy::fpu_check_nan_result && is_nan(from)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: if (from >= 0) { -2441: return floor(to, from, dir); -2441: } -2441: else { -2441: return ceil(to, from, dir); -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: neg_float(Type& to, const Type from, Rounding_Dir) { -2441: if (To_Policy::fpu_check_nan_result && is_nan(from)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: to = -from; -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline Result -2441: add_float(Type& to, const Type x, const Type y, Rounding_Dir dir) { -2441: if (To_Policy::check_inf_add_inf -2441: && is_inf_float(x) && x == -y) { -2441: return assign_nan(to, V_INF_ADD_INF); -2441: } -2441: prepare_inexact(dir); -2441: if (fpu_direct_rounding(dir)) { -2441: to = x + y; -2441: } -2441: else if (fpu_inverse_rounding(dir)) { -2441: to = -x - y; -2441: limit_precision(to); -2441: to = -to; -2441: } -2441: else { -2441: fpu_rounding_control_word_type old -2441: = fpu_save_rounding_direction(round_fpu_dir(dir)); -2441: limit_precision(x); -2441: limit_precision(y); -2441: to = x + y; -2441: limit_precision(to); -2441: fpu_restore_rounding_direction(old); -2441: } -2441: if (To_Policy::fpu_check_nan_result && is_nan(to)) { -2441: return V_NAN; -2441: } -2441: return result_relation(dir); -2441: } -2441: -2441: template -2441: inline Result -2441: sub_float(Type& to, const Type x, const Type y, Rounding_Dir dir) { -2441: if (To_Policy::check_inf_sub_inf -2441: && is_inf_float(x) && x == y) { -2441: return assign_nan(to, V_INF_SUB_INF); -2441: } -2441: prepare_inexact(dir); -2441: if (fpu_direct_rounding(dir)) { -2441: to = x - y; -2441: } -2441: else if (fpu_inverse_rounding(dir)) { -2441: to = y - x; -2441: limit_precision(to); -2441: to = -to; -2441: } -2441: else { -2441: fpu_rounding_control_word_type old -2441: = fpu_save_rounding_direction(round_fpu_dir(dir)); -2441: limit_precision(x); -2441: limit_precision(y); -2441: to = x - y; -2441: limit_precision(to); -2441: fpu_restore_rounding_direction(old); -2441: } -2441: if (To_Policy::fpu_check_nan_result && is_nan(to)) { -2441: return V_NAN; -2441: } -2441: return result_relation(dir); -2441: } -2441: -2441: template -2441: inline Result -2441: mul_float(Type& to, const Type x, const Type y, Rounding_Dir dir) { -2441: if (To_Policy::check_inf_mul_zero -2441: && ((x == 0 && is_inf_float(y)) -2441: || -2441: (y == 0 && is_inf_float(x)))) { -2441: return assign_nan(to, V_INF_MUL_ZERO); -2441: } -2441: prepare_inexact(dir); -2441: if (fpu_direct_rounding(dir)) { -2441: to = x * y; -2441: } -2441: else if (fpu_inverse_rounding(dir)) { -2441: to = x * -y; -2441: limit_precision(to); -2441: to = -to; -2441: } -2441: else { -2441: fpu_rounding_control_word_type old -2441: = fpu_save_rounding_direction(round_fpu_dir(dir)); -2441: limit_precision(x); -2441: limit_precision(y); -2441: to = x * y; -2441: limit_precision(to); -2441: fpu_restore_rounding_direction(old); -2441: } -2441: if (To_Policy::fpu_check_nan_result && is_nan(to)) { -2441: return V_NAN; -2441: } -2441: return result_relation(dir); -2441: } -2441: -2441: template -2441: inline Result -2441: div_float(Type& to, const Type x, const Type y, Rounding_Dir dir) { -2441: if (To_Policy::check_inf_div_inf -2441: && is_inf_float(x) && is_inf_float(y)) { -2441: return assign_nan(to, V_INF_DIV_INF); -2441: } -2441: if (To_Policy::check_div_zero && y == 0) { -2441: return assign_nan(to, V_DIV_ZERO); -2441: } -2441: prepare_inexact(dir); -2441: if (fpu_direct_rounding(dir)) { -2441: to = x / y; -2441: } -2441: else if (fpu_inverse_rounding(dir)) { -2441: to = x / -y; -2441: limit_precision(to); -2441: to = -to; -2441: } -2441: else { -2441: fpu_rounding_control_word_type old -2441: = fpu_save_rounding_direction(round_fpu_dir(dir)); -2441: limit_precision(x); -2441: limit_precision(y); -2441: to = x / y; -2441: limit_precision(to); -2441: fpu_restore_rounding_direction(old); -2441: } -2441: if (To_Policy::fpu_check_nan_result && is_nan(to)) { -2441: return V_NAN; -2441: } -2441: return result_relation(dir); -2441: } -2441: -2441: template -2441: inline Result -2441: idiv_float(Type& to, const Type x, const Type y, Rounding_Dir dir) { -2441: Type temp; -2441: -2441: dir = round_dir(dir); -2441: Result r = div(temp, x, y, dir); -2441: if (result_class(r) != VC_NORMAL) { -2441: to = temp; -2441: return r; -2441: } -2441: Result r1 = trunc(to, temp, ROUND_NOT_NEEDED); -2441: ((void) 0); -2441: if (r == V_EQ || to != temp) { -2441: return r1; -2441: } -2441: -2441: return (dir == ROUND_UP) ? V_LE : V_GE; -2441: } -2441: -2441: template -2441: inline Result -2441: rem_float(Type& to, const Type x, const Type y, Rounding_Dir) { -2441: if (To_Policy::check_inf_mod && is_inf_float(x)) { -2441: return assign_nan(to, V_INF_MOD); -2441: } -2441: if (To_Policy::check_div_zero && y == 0) { -2441: return assign_nan(to, V_MOD_ZERO); -2441: } -2441: to = std::fmod(x, y); -2441: if (To_Policy::fpu_check_nan_result && is_nan(to)) { -2441: return V_NAN; -2441: } -2441: return V_EQ; -2441: } -2441: -2441: struct Float_2exp { -2441: enum const_bool_value_has_nan { has_nan = (false) }; -2441: enum const_bool_value_has_infinity { has_infinity = (false) }; -2441: }; -2441: -2441: template -2441: inline Result -2441: add_2exp_float(Type& to, const Type x, unsigned int exp, Rounding_Dir dir) { -2441: if (To_Policy::fpu_check_nan_result && is_nan(x)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: ((void) 0); -2441: return -2441: add(to, -2441: x, -2441: Type(1ULL << exp), -2441: dir); -2441: } -2441: -2441: template -2441: inline Result -2441: sub_2exp_float(Type& to, const Type x, unsigned int exp, Rounding_Dir dir) { -2441: if (To_Policy::fpu_check_nan_result && is_nan(x)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: ((void) 0); -2441: return -2441: sub(to, -2441: x, -2441: Type(1ULL << exp), -2441: dir); -2441: } -2441: -2441: template -2441: inline Result -2441: mul_2exp_float(Type& to, const Type x, unsigned int exp, Rounding_Dir dir) { -2441: if (To_Policy::fpu_check_nan_result && is_nan(x)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: ((void) 0); -2441: return -2441: mul(to, -2441: x, -2441: Type(1ULL << exp), -2441: dir); -2441: } -2441: -2441: template -2441: inline Result -2441: div_2exp_float(Type& to, const Type x, unsigned int exp, Rounding_Dir dir) { -2441: if (To_Policy::fpu_check_nan_result && is_nan(x)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: ((void) 0); -2441: return -2441: div(to, -2441: x, -2441: Type(1ULL << exp), -2441: dir); -2441: } -2441: -2441: template -2441: inline Result -2441: smod_2exp_float(Type& to, const Type x, unsigned int exp, Rounding_Dir dir) { -2441: if (To_Policy::fpu_check_nan_result && is_nan(x)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: if (To_Policy::check_inf_mod && is_inf_float(x)) { -2441: return assign_nan(to, V_INF_MOD); -2441: } -2441: ((void) 0); -2441: Type m = 1ULL << exp; -2441: rem_float(to, x, m, ROUND_IGNORE); -2441: Type m2 = m / 2; -2441: if (to < -m2) { -2441: return add_float(to, to, m, dir); -2441: } -2441: else if (to >= m2) { -2441: return sub_float(to, to, m, dir); -2441: } -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline Result -2441: umod_2exp_float(Type& to, const Type x, unsigned int exp, Rounding_Dir dir) { -2441: if (To_Policy::fpu_check_nan_result && is_nan(x)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: if (To_Policy::check_inf_mod && is_inf_float(x)) { -2441: return assign_nan(to, V_INF_MOD); -2441: } -2441: ((void) 0); -2441: Type m = 1ULL << exp; -2441: rem_float(to, x, m, ROUND_IGNORE); -2441: if (to < 0) { -2441: return add_float(to, to, m, dir); -2441: } -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline Result -2441: abs_float(Type& to, const Type from, Rounding_Dir) { -2441: if (To_Policy::fpu_check_nan_result && is_nan(from)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: to = std::abs(from); -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline Result -2441: sqrt_float(Type& to, const Type from, Rounding_Dir dir) { -2441: if (To_Policy::fpu_check_nan_result && is_nan(from)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: if (To_Policy::check_sqrt_neg && from < 0) { -2441: return assign_nan(to, V_SQRT_NEG); -2441: } -2441: prepare_inexact(dir); -2441: if (fpu_direct_rounding(dir)) { -2441: to = std::sqrt(from); -2441: } -2441: else { -2441: fpu_rounding_control_word_type old -2441: = fpu_save_rounding_direction(round_fpu_dir(dir)); -2441: limit_precision(from); -2441: to = std::sqrt(from); -2441: limit_precision(to); -2441: fpu_restore_rounding_direction(old); -2441: } -2441: return result_relation(dir); -2441: } -2441: -2441: template -2441: inline Result_Relation -2441: sgn_float(const Type x) { -2441: if (x > 0) { -2441: return VR_GT; -2441: } -2441: if (x < 0) { -2441: return VR_LT; -2441: } -2441: if (x == 0) { -2441: return VR_EQ; -2441: } -2441: return VR_EMPTY; -2441: } -2441: -2441: template -2441: inline Result_Relation -2441: cmp_float(const Type x, const Type y) { -2441: if (x > y) { -2441: return VR_GT; -2441: } -2441: if (x < y) { -2441: return VR_LT; -2441: } -2441: if (x == y) { -2441: return VR_EQ; -2441: } -2441: return VR_EMPTY; -2441: } -2441: -2441: template -2441: inline Result -2441: assign_float_int_inexact(To& to, const From from, Rounding_Dir dir) { -2441: prepare_inexact(dir); -2441: if (fpu_direct_rounding(dir)) { -2441: to = from; -2441: } -2441: else { -2441: fpu_rounding_control_word_type old -2441: = fpu_save_rounding_direction(round_fpu_dir(dir)); -2441: to = from; -2441: limit_precision(to); -2441: fpu_restore_rounding_direction(old); -2441: } -2441: return result_relation(dir); -2441: } -2441: -2441: template -2441: inline Result -2441: assign_float_int(To& to, const From from, Rounding_Dir dir) { -2441: if (((sizeof(From)) * static_cast(8)) > Float::Binary::MANTISSA_BITS) { -2441: return assign_float_int_inexact(to, from, dir); -2441: } -2441: else { -2441: return assign_exact(to, from, dir); -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: set_neg_overflow_float(T& to, Rounding_Dir dir) { -2441: switch (round_dir(dir)) { -2441: case ROUND_UP: -2441: { -2441: Float f; -2441: f.u.binary.set_max(true); -2441: to = f.value(); -2441: return V_LT_INF; -2441: } -2441: case ROUND_DOWN: -2441: case ROUND_IGNORE: -2441: to = - -2441: # 836 "../../src/checked_float_inlines.hh" 3 4 -2441: (__builtin_huge_val ()) -2441: # 836 "../../src/checked_float_inlines.hh" -2441: ; -2441: return V_GT_MINUS_INFINITY; -2441: default: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return V_GT_MINUS_INFINITY; -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: set_pos_overflow_float(T& to, Rounding_Dir dir) { -2441: switch (round_dir(dir)) { -2441: case ROUND_DOWN: -2441: { -2441: Float f; -2441: f.u.binary.set_max(false); -2441: to = f.value(); -2441: return V_GT_SUP; -2441: } -2441: case ROUND_UP: -2441: case ROUND_IGNORE: -2441: to = -2441: # 857 "../../src/checked_float_inlines.hh" 3 4 -2441: (__builtin_huge_val ()) -2441: # 857 "../../src/checked_float_inlines.hh" -2441: ; -2441: return V_LT_PLUS_INFINITY; -2441: default: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return V_LT_PLUS_INFINITY; -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: assign_float_mpz(T& to, const mpz_class& from, Rounding_Dir dir) { -2441: int sign = sgn(from); -2441: if (sign == 0) { -2441: to = 0; -2441: return V_EQ; -2441: } -2441: mpz_srcptr from_z = from.get_mpz_t(); -2441: size_t exponent = -2441: # 874 "../../src/checked_float_inlines.hh" 3 4 -2441: __gmpz_sizeinbase -2441: # 874 "../../src/checked_float_inlines.hh" -2441: (from_z, 2) - 1; -2441: if (exponent > size_t(Float::Binary::EXPONENT_MAX)) { -2441: if (sign < 0) { -2441: return set_neg_overflow_float(to, dir); -2441: } -2441: else { -2441: return set_pos_overflow_float(to, dir); -2441: } -2441: } -2441: unsigned long zeroes = -2441: # 883 "../../src/checked_float_inlines.hh" 3 4 -2441: __gmpn_scan1 -2441: # 883 "../../src/checked_float_inlines.hh" -2441: (from_z->_mp_d, 0); -2441: size_t meaningful_bits = exponent - zeroes; -2441: mpz_t mantissa; -2441: -2441: # 886 "../../src/checked_float_inlines.hh" 3 4 -2441: __gmpz_init -2441: # 886 "../../src/checked_float_inlines.hh" -2441: (mantissa); -2441: if (exponent > Float::Binary::MANTISSA_BITS) { -2441: -2441: # 888 "../../src/checked_float_inlines.hh" 3 4 -2441: __gmpz_tdiv_q_2exp -2441: # 888 "../../src/checked_float_inlines.hh" -2441: (mantissa, -2441: from_z, -2441: exponent - Float::Binary::MANTISSA_BITS); -2441: } -2441: else { -2441: -2441: # 893 "../../src/checked_float_inlines.hh" 3 4 -2441: __gmpz_mul_2exp -2441: # 893 "../../src/checked_float_inlines.hh" -2441: (mantissa, from_z, Float::Binary::MANTISSA_BITS - exponent); -2441: } -2441: Float f; -2441: f.u.binary.build(sign < 0, mantissa, static_cast(exponent)); -2441: -2441: # 897 "../../src/checked_float_inlines.hh" 3 4 -2441: __gmpz_clear -2441: # 897 "../../src/checked_float_inlines.hh" -2441: (mantissa); -2441: to = f.value(); -2441: if (meaningful_bits > Float::Binary::MANTISSA_BITS) { -2441: if (sign < 0) { -2441: return round_lt_float(to, dir); -2441: } -2441: else { -2441: return round_gt_float(to, dir); -2441: } -2441: } -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline Result -2441: assign_float_mpq(T& to, const mpq_class& from, Rounding_Dir dir) { -2441: const mpz_class& numer = from.get_num(); -2441: const mpz_class& denom = from.get_den(); -2441: if (denom == 1) { -2441: return assign_float_mpz(to, numer, dir); -2441: } -2441: mpz_srcptr numer_z = numer.get_mpz_t(); -2441: mpz_srcptr denom_z = denom.get_mpz_t(); -2441: int sign = sgn(numer); -2441: long exponent = static_cast( -2441: # 921 "../../src/checked_float_inlines.hh" 3 4 -2441: __gmpz_sizeinbase -2441: # 921 "../../src/checked_float_inlines.hh" -2441: (numer_z, 2)) -2441: - static_cast( -2441: # 922 "../../src/checked_float_inlines.hh" 3 4 -2441: __gmpz_sizeinbase -2441: # 922 "../../src/checked_float_inlines.hh" -2441: (denom_z, 2)); -2441: if (exponent < Float::Binary::EXPONENT_MIN_DENORM) { -2441: to = 0; -2441: inexact: -2441: if (sign < 0) { -2441: return round_lt_float(to, dir); -2441: } -2441: else { -2441: return round_gt_float(to, dir); -2441: } -2441: } -2441: if (exponent > Float::Binary::EXPONENT_MAX + 1) { -2441: overflow: -2441: if (sign < 0) { -2441: return set_neg_overflow_float(to, dir); -2441: } -2441: else { -2441: return set_pos_overflow_float(to, dir); -2441: } -2441: } -2441: unsigned int needed_bits = Float::Binary::MANTISSA_BITS + 1; -2441: if (exponent < Float::Binary::EXPONENT_MIN) { -2441: long diff = Float::Binary::EXPONENT_MIN - exponent; -2441: needed_bits -= static_cast(diff); -2441: } -2441: mpz_t mantissa; -2441: -2441: # 948 "../../src/checked_float_inlines.hh" 3 4 -2441: __gmpz_init -2441: # 948 "../../src/checked_float_inlines.hh" -2441: (mantissa); -2441: { -2441: long shift = static_cast(needed_bits) - exponent; -2441: if (shift > 0) { -2441: -2441: # 952 "../../src/checked_float_inlines.hh" 3 4 -2441: __gmpz_mul_2exp -2441: # 952 "../../src/checked_float_inlines.hh" -2441: (mantissa, numer_z, static_cast(shift)); -2441: numer_z = mantissa; -2441: } -2441: else if (shift < 0) { -2441: shift = -shift; -2441: -2441: # 957 "../../src/checked_float_inlines.hh" 3 4 -2441: __gmpz_mul_2exp -2441: # 957 "../../src/checked_float_inlines.hh" -2441: (mantissa, denom_z, static_cast(shift)); -2441: denom_z = mantissa; -2441: } -2441: } -2441: mpz_t r; -2441: -2441: # 962 "../../src/checked_float_inlines.hh" 3 4 -2441: __gmpz_init -2441: # 962 "../../src/checked_float_inlines.hh" -2441: (r); -2441: -2441: # 963 "../../src/checked_float_inlines.hh" 3 4 -2441: __gmpz_tdiv_qr -2441: # 963 "../../src/checked_float_inlines.hh" -2441: (mantissa, r, numer_z, denom_z); -2441: size_t bits = -2441: # 964 "../../src/checked_float_inlines.hh" 3 4 -2441: __gmpz_sizeinbase -2441: # 964 "../../src/checked_float_inlines.hh" -2441: (mantissa, 2); -2441: bool inexact = ( -2441: # 965 "../../src/checked_float_inlines.hh" 3 4 -2441: (( -2441: # 965 "../../src/checked_float_inlines.hh" -2441: r -2441: # 965 "../../src/checked_float_inlines.hh" 3 4 -2441: )->_mp_size < 0 ? -1 : ( -2441: # 965 "../../src/checked_float_inlines.hh" -2441: r -2441: # 965 "../../src/checked_float_inlines.hh" 3 4 -2441: )->_mp_size > 0) -2441: # 965 "../../src/checked_float_inlines.hh" -2441: != 0); -2441: -2441: # 966 "../../src/checked_float_inlines.hh" 3 4 -2441: __gmpz_clear -2441: # 966 "../../src/checked_float_inlines.hh" -2441: (r); -2441: if (bits == needed_bits + 1) { -2441: inexact = (inexact || -2441: # 968 "../../src/checked_float_inlines.hh" 3 4 -2441: ((( -2441: # 968 "../../src/checked_float_inlines.hh" -2441: mantissa -2441: # 968 "../../src/checked_float_inlines.hh" 3 4 -2441: )->_mp_size != 0) & (static_cast (( -2441: # 968 "../../src/checked_float_inlines.hh" -2441: mantissa -2441: # 968 "../../src/checked_float_inlines.hh" 3 4 -2441: )->_mp_d[0]))) -2441: # 968 "../../src/checked_float_inlines.hh" -2441: ); -2441: -2441: # 969 "../../src/checked_float_inlines.hh" 3 4 -2441: __gmpz_tdiv_q_2exp -2441: # 969 "../../src/checked_float_inlines.hh" -2441: (mantissa, mantissa, 1); -2441: } -2441: else { -2441: --exponent; -2441: } -2441: if (exponent > Float::Binary::EXPONENT_MAX) { -2441: -2441: # 975 "../../src/checked_float_inlines.hh" 3 4 -2441: __gmpz_clear -2441: # 975 "../../src/checked_float_inlines.hh" -2441: (mantissa); -2441: goto overflow; -2441: } -2441: else if (exponent < Float::Binary::EXPONENT_MIN - 1) { -2441: -2441: exponent = Float::Binary::EXPONENT_MIN - 1; -2441: } -2441: Float f; -2441: f.u.binary.build(sign < 0, mantissa, exponent); -2441: -2441: # 984 "../../src/checked_float_inlines.hh" 3 4 -2441: __gmpz_clear -2441: # 984 "../../src/checked_float_inlines.hh" -2441: (mantissa); -2441: to = f.value(); -2441: if (inexact) { -2441: goto inexact; -2441: } -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline Result -2441: add_mul_float(Type& to, const Type x, const Type y, Rounding_Dir dir) { -2441: if (To_Policy::check_inf_mul_zero -2441: && ((x == 0 && is_inf_float(y)) -2441: || -2441: (y == 0 && is_inf_float(x)))) { -2441: return assign_nan(to, V_INF_MUL_ZERO); -2441: } -2441: -2441: prepare_inexact(dir); -2441: if (fpu_direct_rounding(dir)) { -2441: to = multiply_add(x, y, to); -2441: } -2441: else if (fpu_inverse_rounding(dir)) { -2441: to = multiply_add(-x, y, -to); -2441: limit_precision(to); -2441: to = -to; -2441: } -2441: else { -2441: fpu_rounding_control_word_type old -2441: = fpu_save_rounding_direction(round_fpu_dir(dir)); -2441: limit_precision(x); -2441: limit_precision(y); -2441: limit_precision(to); -2441: to = multiply_add(x, y, to); -2441: limit_precision(to); -2441: fpu_restore_rounding_direction(old); -2441: } -2441: if (To_Policy::fpu_check_nan_result && is_nan(to)) { -2441: return V_NAN; -2441: } -2441: return result_relation(dir); -2441: } -2441: -2441: template -2441: inline Result -2441: sub_mul_float(Type& to, const Type x, const Type y, Rounding_Dir dir) { -2441: if (To_Policy::check_inf_mul_zero -2441: && ((x == 0 && is_inf_float(y)) -2441: || -2441: (y == 0 && is_inf_float(x)))) { -2441: return assign_nan(to, V_INF_MUL_ZERO); -2441: } -2441: -2441: prepare_inexact(dir); -2441: if (fpu_direct_rounding(dir)) { -2441: to = multiply_add(x, -y, to); -2441: } -2441: else if (fpu_inverse_rounding(dir)) { -2441: to = multiply_add(x, y, -to); -2441: limit_precision(to); -2441: to = -to; -2441: } -2441: else { -2441: fpu_rounding_control_word_type old -2441: = fpu_save_rounding_direction(round_fpu_dir(dir)); -2441: limit_precision(x); -2441: limit_precision(y); -2441: limit_precision(to); -2441: to = multiply_add(x, -y, to); -2441: limit_precision(to); -2441: fpu_restore_rounding_direction(old); -2441: } -2441: if (To_Policy::fpu_check_nan_result && is_nan(to)) { -2441: return V_NAN; -2441: } -2441: return result_relation(dir); -2441: } -2441: -2441: template -2441: inline void -2441: assign_mpq_numeric_float(mpq_class& to, const From from) { -2441: to = from; -2441: } -2441: -2441: template <> -2441: inline void -2441: assign_mpq_numeric_float(mpq_class& to, const long double from) { -2441: to = 0; -2441: if (from == 0.0L) { -2441: return; -2441: } -2441: mpz_class& num = to.get_num(); -2441: mpz_class& den = to.get_den(); -2441: int exp; -2441: long double n = std::frexp(from, &exp); -2441: bool neg = false; -2441: if (n < 0.0L) { -2441: neg = true; -2441: n = -n; -2441: } -2441: const long double mult = static_cast( -2441: # 1085 "../../src/checked_float_inlines.hh" 3 4 -2441: (0x7fffffffL * 2UL + 1UL) -2441: # 1085 "../../src/checked_float_inlines.hh" -2441: ) + 1.0L; -2441: const unsigned int bits = sizeof(unsigned long) * 8; -2441: while (true) { -2441: n *= mult; -2441: exp -= bits; -2441: const long double intpart = std::floor(n); -2441: num += static_cast(intpart); -2441: n -= intpart; -2441: if (n == 0.0L) { -2441: break; -2441: } -2441: num <<= bits; -2441: } -2441: if (exp < 0) { -2441: den <<= -exp; -2441: } -2441: else { -2441: num <<= exp; -2441: } -2441: if (neg) { -2441: to = -to; -2441: } -2441: to.canonicalize(); -2441: } -2441: -2441: template -2441: inline Result -2441: output_float(std::ostream& os, const Type from, const Numeric_Format&, -2441: Rounding_Dir) { -2441: if (from == 0) { -2441: os << "0"; -2441: } -2441: else if (is_minf(from)) { -2441: os << "-inf"; -2441: } -2441: else if (is_pinf(from)) { -2441: os << "+inf"; -2441: } -2441: else if (is_nan(from)) { -2441: os << "nan"; -2441: } -2441: else { -2441: mpq_class q; -2441: assign_mpq_numeric_float(q, from); -2441: std::string s = float_mpq_to_string(q); -2441: os << s; -2441: } -2441: return V_EQ; -2441: } -2441: -2441: -2441: template struct assign_function_struct { static inline Result function( float& arg1, const float &arg2, Rounding_Dir a1) { return assign_float_float_exact(arg1, arg2, a1); } }; -2441: -2441: template struct assign_function_struct { static inline Result function( float& arg1, const double &arg2, Rounding_Dir a1) { return assign_float_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( double& arg1, const float &arg2, Rounding_Dir a1) { return assign_float_float_exact(arg1, arg2, a1); } }; -2441: -2441: -2441: template struct assign_function_struct { static inline Result function( float& arg1, const long double &arg2, Rounding_Dir a1) { return assign_float_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( long double& arg1, const float &arg2, Rounding_Dir a1) { return assign_float_float_exact(arg1, arg2, a1); } }; -2441: -2441: -2441: -2441: -2441: template struct assign_function_struct { static inline Result function( double& arg1, const double &arg2, Rounding_Dir a1) { return assign_float_float_exact(arg1, arg2, a1); } }; -2441: -2441: template struct assign_function_struct { static inline Result function( double& arg1, const long double &arg2, Rounding_Dir a1) { return assign_float_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( long double& arg1, const double &arg2, Rounding_Dir a1) { return assign_float_float_exact(arg1, arg2, a1); } }; -2441: -2441: -2441: -2441: -2441: template struct assign_function_struct { static inline Result function( long double& arg1, const long double &arg2, Rounding_Dir a1) { return assign_float_float_exact(arg1, arg2, a1); } }; -2441: -2441: -2441: -2441: template struct classify_function_struct { static inline Result function(const float& arg, bool a1, bool a2, bool a3) { return classify_float(arg, a1, a2, a3); } }; -2441: template struct is_nan_function_struct { static inline bool function(const float& arg) { return is_nan_float(arg); } }; -2441: template struct is_minf_function_struct { static inline bool function(const float& arg) { return is_minf_float(arg); } }; -2441: template struct is_pinf_function_struct { static inline bool function(const float& arg) { return is_pinf_float(arg); } }; -2441: template struct assign_special_function_struct { static inline Result function( float& arg, Result_Class a1, Rounding_Dir a2) { return assign_special_float(arg, a1, a2); } }; -2441: template struct assign_function_struct { static inline Result function( float& arg1, const char &arg2, Rounding_Dir a1) { return assign_float_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( float& arg1, const signed char &arg2, Rounding_Dir a1) { return assign_float_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( float& arg1, const signed short &arg2, Rounding_Dir a1) { return assign_float_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( float& arg1, const signed int &arg2, Rounding_Dir a1) { return assign_float_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( float& arg1, const signed long &arg2, Rounding_Dir a1) { return assign_float_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( float& arg1, const signed long long &arg2, Rounding_Dir a1) { return assign_float_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( float& arg1, const unsigned char &arg2, Rounding_Dir a1) { return assign_float_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( float& arg1, const unsigned short &arg2, Rounding_Dir a1) { return assign_float_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( float& arg1, const unsigned int &arg2, Rounding_Dir a1) { return assign_float_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( float& arg1, const unsigned long &arg2, Rounding_Dir a1) { return assign_float_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( float& arg1, const unsigned long long &arg2, Rounding_Dir a1) { return assign_float_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( float& arg1, const mpz_class &arg2, Rounding_Dir a1) { return assign_float_mpz(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( float& arg1, const mpq_class &arg2, Rounding_Dir a1) { return assign_float_mpq(arg1, arg2, a1); } }; -2441: template struct copy_function_struct { static inline void function( float& arg1, const float &arg2) { return copy_generic(arg1, arg2); } }; -2441: template struct is_int_function_struct { static inline bool function(const float& arg) { return is_int_float(arg); } }; -2441: template struct floor_function_struct { static inline Result function( float& arg1, const float &arg2, Rounding_Dir a1) { return floor_float(arg1, arg2, a1); } }; -2441: template struct ceil_function_struct { static inline Result function( float& arg1, const float &arg2, Rounding_Dir a1) { return ceil_float(arg1, arg2, a1); } }; -2441: template struct trunc_function_struct { static inline Result function( float& arg1, const float &arg2, Rounding_Dir a1) { return trunc_float(arg1, arg2, a1); } }; -2441: template struct neg_function_struct { static inline Result function( float& arg1, const float &arg2, Rounding_Dir a1) { return neg_float(arg1, arg2, a1); } }; -2441: template struct abs_function_struct { static inline Result function( float& arg1, const float &arg2, Rounding_Dir a1) { return abs_float(arg1, arg2, a1); } }; -2441: template struct add_function_struct { static inline Result function( float& arg1, const float &arg2, const float &arg3, Rounding_Dir a1) { return add_float(arg1, arg2, arg3, a1); } }; -2441: template struct sub_function_struct { static inline Result function( float& arg1, const float &arg2, const float &arg3, Rounding_Dir a1) { return sub_float(arg1, arg2, arg3, a1); } }; -2441: template struct mul_function_struct { static inline Result function( float& arg1, const float &arg2, const float &arg3, Rounding_Dir a1) { return mul_float(arg1, arg2, arg3, a1); } }; -2441: template struct div_function_struct { static inline Result function( float& arg1, const float &arg2, const float &arg3, Rounding_Dir a1) { return div_float(arg1, arg2, arg3, a1); } }; -2441: template struct rem_function_struct { static inline Result function( float& arg1, const float &arg2, const float &arg3, Rounding_Dir a1) { return rem_float(arg1, arg2, arg3, a1); } }; -2441: template struct add_2exp_function_struct { static inline Result function( float& arg1, const float &arg2, unsigned int a1, Rounding_Dir a2) { return add_2exp_float(arg1, arg2, a1, a2); } }; -2441: template struct sub_2exp_function_struct { static inline Result function( float& arg1, const float &arg2, unsigned int a1, Rounding_Dir a2) { return sub_2exp_float(arg1, arg2, a1, a2); } }; -2441: template struct mul_2exp_function_struct { static inline Result function( float& arg1, const float &arg2, unsigned int a1, Rounding_Dir a2) { return mul_2exp_float(arg1, arg2, a1, a2); } }; -2441: template struct div_2exp_function_struct { static inline Result function( float& arg1, const float &arg2, unsigned int a1, Rounding_Dir a2) { return div_2exp_float(arg1, arg2, a1, a2); } }; -2441: template struct smod_2exp_function_struct { static inline Result function( float& arg1, const float &arg2, unsigned int a1, Rounding_Dir a2) { return smod_2exp_float(arg1, arg2, a1, a2); } }; -2441: template struct umod_2exp_function_struct { static inline Result function( float& arg1, const float &arg2, unsigned int a1, Rounding_Dir a2) { return umod_2exp_float(arg1, arg2, a1, a2); } }; -2441: template struct sqrt_function_struct { static inline Result function( float& arg1, const float &arg2, Rounding_Dir a1) { return sqrt_float(arg1, arg2, a1); } }; -2441: template struct gcd_function_struct { static inline Result function( float& arg1, const float &arg2, const float &arg3, Rounding_Dir a1) { return gcd_exact(arg1, arg2, arg3, a1); } }; -2441: template struct gcdext_function_struct { static inline Result function( float& arg1, float &arg2, float &arg3, const float &arg4, const float &arg5, Rounding_Dir a1) { return gcdext_exact(arg1, arg2, arg3, arg4, arg5, a1); } }; -2441: template struct lcm_function_struct { static inline Result function( float& arg1, const float &arg2, const float &arg3, Rounding_Dir a1) { return lcm_gcd_exact(arg1, arg2, arg3, a1); } }; -2441: template struct sgn_function_struct { static inline Result_Relation function(const float& arg) { return sgn_float(arg); } }; -2441: template struct cmp_function_struct { static inline Result_Relation function(const float& arg1, const float &arg2) { return cmp_float(arg1, arg2); } }; -2441: template struct add_mul_function_struct { static inline Result function( float& arg1, const float &arg2, const float &arg3, Rounding_Dir a1) { return add_mul_float(arg1, arg2, arg3, a1); } }; -2441: template struct sub_mul_function_struct { static inline Result function( float& arg1, const float &arg2, const float &arg3, Rounding_Dir a1) { return sub_mul_float(arg1, arg2, arg3, a1); } }; -2441: template struct input_function_struct { static inline Result function( float& arg, std::istream& a1, Rounding_Dir a2) { return input_generic(arg, a1, a2); } }; -2441: template struct output_function_struct { static inline Result function(std::ostream& b1, const float& arg, const Numeric_Format& a1, Rounding_Dir a2) { return output_float(b1, arg, a1, a2); } }; -2441: -2441: -2441: -2441: template struct classify_function_struct { static inline Result function(const double& arg, bool a1, bool a2, bool a3) { return classify_float(arg, a1, a2, a3); } }; -2441: template struct is_nan_function_struct { static inline bool function(const double& arg) { return is_nan_float(arg); } }; -2441: template struct is_minf_function_struct { static inline bool function(const double& arg) { return is_minf_float(arg); } }; -2441: template struct is_pinf_function_struct { static inline bool function(const double& arg) { return is_pinf_float(arg); } }; -2441: template struct assign_special_function_struct { static inline Result function( double& arg, Result_Class a1, Rounding_Dir a2) { return assign_special_float(arg, a1, a2); } }; -2441: template struct assign_function_struct { static inline Result function( double& arg1, const char &arg2, Rounding_Dir a1) { return assign_float_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( double& arg1, const signed char &arg2, Rounding_Dir a1) { return assign_float_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( double& arg1, const signed short &arg2, Rounding_Dir a1) { return assign_float_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( double& arg1, const signed int &arg2, Rounding_Dir a1) { return assign_float_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( double& arg1, const signed long &arg2, Rounding_Dir a1) { return assign_float_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( double& arg1, const signed long long &arg2, Rounding_Dir a1) { return assign_float_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( double& arg1, const unsigned char &arg2, Rounding_Dir a1) { return assign_float_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( double& arg1, const unsigned short &arg2, Rounding_Dir a1) { return assign_float_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( double& arg1, const unsigned int &arg2, Rounding_Dir a1) { return assign_float_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( double& arg1, const unsigned long &arg2, Rounding_Dir a1) { return assign_float_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( double& arg1, const unsigned long long &arg2, Rounding_Dir a1) { return assign_float_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( double& arg1, const mpz_class &arg2, Rounding_Dir a1) { return assign_float_mpz(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( double& arg1, const mpq_class &arg2, Rounding_Dir a1) { return assign_float_mpq(arg1, arg2, a1); } }; -2441: template struct copy_function_struct { static inline void function( double& arg1, const double &arg2) { return copy_generic(arg1, arg2); } }; -2441: template struct is_int_function_struct { static inline bool function(const double& arg) { return is_int_float(arg); } }; -2441: template struct floor_function_struct { static inline Result function( double& arg1, const double &arg2, Rounding_Dir a1) { return floor_float(arg1, arg2, a1); } }; -2441: template struct ceil_function_struct { static inline Result function( double& arg1, const double &arg2, Rounding_Dir a1) { return ceil_float(arg1, arg2, a1); } }; -2441: template struct trunc_function_struct { static inline Result function( double& arg1, const double &arg2, Rounding_Dir a1) { return trunc_float(arg1, arg2, a1); } }; -2441: template struct neg_function_struct { static inline Result function( double& arg1, const double &arg2, Rounding_Dir a1) { return neg_float(arg1, arg2, a1); } }; -2441: template struct abs_function_struct { static inline Result function( double& arg1, const double &arg2, Rounding_Dir a1) { return abs_float(arg1, arg2, a1); } }; -2441: template struct add_function_struct { static inline Result function( double& arg1, const double &arg2, const double &arg3, Rounding_Dir a1) { return add_float(arg1, arg2, arg3, a1); } }; -2441: template struct sub_function_struct { static inline Result function( double& arg1, const double &arg2, const double &arg3, Rounding_Dir a1) { return sub_float(arg1, arg2, arg3, a1); } }; -2441: template struct mul_function_struct { static inline Result function( double& arg1, const double &arg2, const double &arg3, Rounding_Dir a1) { return mul_float(arg1, arg2, arg3, a1); } }; -2441: template struct div_function_struct { static inline Result function( double& arg1, const double &arg2, const double &arg3, Rounding_Dir a1) { return div_float(arg1, arg2, arg3, a1); } }; -2441: template struct rem_function_struct { static inline Result function( double& arg1, const double &arg2, const double &arg3, Rounding_Dir a1) { return rem_float(arg1, arg2, arg3, a1); } }; -2441: template struct add_2exp_function_struct { static inline Result function( double& arg1, const double &arg2, unsigned int a1, Rounding_Dir a2) { return add_2exp_float(arg1, arg2, a1, a2); } }; -2441: template struct sub_2exp_function_struct { static inline Result function( double& arg1, const double &arg2, unsigned int a1, Rounding_Dir a2) { return sub_2exp_float(arg1, arg2, a1, a2); } }; -2441: template struct mul_2exp_function_struct { static inline Result function( double& arg1, const double &arg2, unsigned int a1, Rounding_Dir a2) { return mul_2exp_float(arg1, arg2, a1, a2); } }; -2441: template struct div_2exp_function_struct { static inline Result function( double& arg1, const double &arg2, unsigned int a1, Rounding_Dir a2) { return div_2exp_float(arg1, arg2, a1, a2); } }; -2441: template struct smod_2exp_function_struct { static inline Result function( double& arg1, const double &arg2, unsigned int a1, Rounding_Dir a2) { return smod_2exp_float(arg1, arg2, a1, a2); } }; -2441: template struct umod_2exp_function_struct { static inline Result function( double& arg1, const double &arg2, unsigned int a1, Rounding_Dir a2) { return umod_2exp_float(arg1, arg2, a1, a2); } }; -2441: template struct sqrt_function_struct { static inline Result function( double& arg1, const double &arg2, Rounding_Dir a1) { return sqrt_float(arg1, arg2, a1); } }; -2441: template struct gcd_function_struct { static inline Result function( double& arg1, const double &arg2, const double &arg3, Rounding_Dir a1) { return gcd_exact(arg1, arg2, arg3, a1); } }; -2441: template struct gcdext_function_struct { static inline Result function( double& arg1, double &arg2, double &arg3, const double &arg4, const double &arg5, Rounding_Dir a1) { return gcdext_exact(arg1, arg2, arg3, arg4, arg5, a1); } }; -2441: template struct lcm_function_struct { static inline Result function( double& arg1, const double &arg2, const double &arg3, Rounding_Dir a1) { return lcm_gcd_exact(arg1, arg2, arg3, a1); } }; -2441: template struct sgn_function_struct { static inline Result_Relation function(const double& arg) { return sgn_float(arg); } }; -2441: template struct cmp_function_struct { static inline Result_Relation function(const double& arg1, const double &arg2) { return cmp_float(arg1, arg2); } }; -2441: template struct add_mul_function_struct { static inline Result function( double& arg1, const double &arg2, const double &arg3, Rounding_Dir a1) { return add_mul_float(arg1, arg2, arg3, a1); } }; -2441: template struct sub_mul_function_struct { static inline Result function( double& arg1, const double &arg2, const double &arg3, Rounding_Dir a1) { return sub_mul_float(arg1, arg2, arg3, a1); } }; -2441: template struct input_function_struct { static inline Result function( double& arg, std::istream& a1, Rounding_Dir a2) { return input_generic(arg, a1, a2); } }; -2441: template struct output_function_struct { static inline Result function(std::ostream& b1, const double& arg, const Numeric_Format& a1, Rounding_Dir a2) { return output_float(b1, arg, a1, a2); } }; -2441: -2441: -2441: -2441: template struct classify_function_struct { static inline Result function(const long double& arg, bool a1, bool a2, bool a3) { return classify_float(arg, a1, a2, a3); } }; -2441: template struct is_nan_function_struct { static inline bool function(const long double& arg) { return is_nan_float(arg); } }; -2441: template struct is_minf_function_struct { static inline bool function(const long double& arg) { return is_minf_float(arg); } }; -2441: template struct is_pinf_function_struct { static inline bool function(const long double& arg) { return is_pinf_float(arg); } }; -2441: template struct assign_special_function_struct { static inline Result function( long double& arg, Result_Class a1, Rounding_Dir a2) { return assign_special_float(arg, a1, a2); } }; -2441: template struct assign_function_struct { static inline Result function( long double& arg1, const char &arg2, Rounding_Dir a1) { return assign_float_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( long double& arg1, const signed char &arg2, Rounding_Dir a1) { return assign_float_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( long double& arg1, const signed short &arg2, Rounding_Dir a1) { return assign_float_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( long double& arg1, const signed int &arg2, Rounding_Dir a1) { return assign_float_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( long double& arg1, const signed long &arg2, Rounding_Dir a1) { return assign_float_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( long double& arg1, const signed long long &arg2, Rounding_Dir a1) { return assign_float_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( long double& arg1, const unsigned char &arg2, Rounding_Dir a1) { return assign_float_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( long double& arg1, const unsigned short &arg2, Rounding_Dir a1) { return assign_float_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( long double& arg1, const unsigned int &arg2, Rounding_Dir a1) { return assign_float_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( long double& arg1, const unsigned long &arg2, Rounding_Dir a1) { return assign_float_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( long double& arg1, const unsigned long long &arg2, Rounding_Dir a1) { return assign_float_int(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( long double& arg1, const mpz_class &arg2, Rounding_Dir a1) { return assign_float_mpz(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( long double& arg1, const mpq_class &arg2, Rounding_Dir a1) { return assign_float_mpq(arg1, arg2, a1); } }; -2441: template struct copy_function_struct { static inline void function( long double& arg1, const long double &arg2) { return copy_generic(arg1, arg2); } }; -2441: template struct is_int_function_struct { static inline bool function(const long double& arg) { return is_int_float(arg); } }; -2441: template struct floor_function_struct { static inline Result function( long double& arg1, const long double &arg2, Rounding_Dir a1) { return floor_float(arg1, arg2, a1); } }; -2441: template struct ceil_function_struct { static inline Result function( long double& arg1, const long double &arg2, Rounding_Dir a1) { return ceil_float(arg1, arg2, a1); } }; -2441: template struct trunc_function_struct { static inline Result function( long double& arg1, const long double &arg2, Rounding_Dir a1) { return trunc_float(arg1, arg2, a1); } }; -2441: template struct neg_function_struct { static inline Result function( long double& arg1, const long double &arg2, Rounding_Dir a1) { return neg_float(arg1, arg2, a1); } }; -2441: template struct abs_function_struct { static inline Result function( long double& arg1, const long double &arg2, Rounding_Dir a1) { return abs_float(arg1, arg2, a1); } }; -2441: template struct add_function_struct { static inline Result function( long double& arg1, const long double &arg2, const long double &arg3, Rounding_Dir a1) { return add_float(arg1, arg2, arg3, a1); } }; -2441: template struct sub_function_struct { static inline Result function( long double& arg1, const long double &arg2, const long double &arg3, Rounding_Dir a1) { return sub_float(arg1, arg2, arg3, a1); } }; -2441: template struct mul_function_struct { static inline Result function( long double& arg1, const long double &arg2, const long double &arg3, Rounding_Dir a1) { return mul_float(arg1, arg2, arg3, a1); } }; -2441: template struct div_function_struct { static inline Result function( long double& arg1, const long double &arg2, const long double &arg3, Rounding_Dir a1) { return div_float(arg1, arg2, arg3, a1); } }; -2441: template struct rem_function_struct { static inline Result function( long double& arg1, const long double &arg2, const long double &arg3, Rounding_Dir a1) { return rem_float(arg1, arg2, arg3, a1); } }; -2441: template struct add_2exp_function_struct { static inline Result function( long double& arg1, const long double &arg2, unsigned int a1, Rounding_Dir a2) { return add_2exp_float(arg1, arg2, a1, a2); } }; -2441: template struct sub_2exp_function_struct { static inline Result function( long double& arg1, const long double &arg2, unsigned int a1, Rounding_Dir a2) { return sub_2exp_float(arg1, arg2, a1, a2); } }; -2441: template struct mul_2exp_function_struct { static inline Result function( long double& arg1, const long double &arg2, unsigned int a1, Rounding_Dir a2) { return mul_2exp_float(arg1, arg2, a1, a2); } }; -2441: template struct div_2exp_function_struct { static inline Result function( long double& arg1, const long double &arg2, unsigned int a1, Rounding_Dir a2) { return div_2exp_float(arg1, arg2, a1, a2); } }; -2441: template struct smod_2exp_function_struct { static inline Result function( long double& arg1, const long double &arg2, unsigned int a1, Rounding_Dir a2) { return smod_2exp_float(arg1, arg2, a1, a2); } }; -2441: template struct umod_2exp_function_struct { static inline Result function( long double& arg1, const long double &arg2, unsigned int a1, Rounding_Dir a2) { return umod_2exp_float(arg1, arg2, a1, a2); } }; -2441: template struct sqrt_function_struct { static inline Result function( long double& arg1, const long double &arg2, Rounding_Dir a1) { return sqrt_float(arg1, arg2, a1); } }; -2441: template struct gcd_function_struct { static inline Result function( long double& arg1, const long double &arg2, const long double &arg3, Rounding_Dir a1) { return gcd_exact(arg1, arg2, arg3, a1); } }; -2441: template struct gcdext_function_struct { static inline Result function( long double& arg1, long double &arg2, long double &arg3, const long double &arg4, const long double &arg5, Rounding_Dir a1) { return gcdext_exact(arg1, arg2, arg3, arg4, arg5, a1); } }; -2441: -2441: template struct lcm_function_struct { static inline Result function( long double& arg1, const long double &arg2, const long double &arg3, Rounding_Dir a1) { return lcm_gcd_exact(arg1, arg2, arg3, a1); } }; -2441: template struct sgn_function_struct { static inline Result_Relation function(const long double& arg) { return sgn_float(arg); } }; -2441: template struct cmp_function_struct { static inline Result_Relation function(const long double& arg1, const long double &arg2) { return cmp_float(arg1, arg2); } }; -2441: template struct add_mul_function_struct { static inline Result function( long double& arg1, const long double &arg2, const long double &arg3, Rounding_Dir a1) { return add_mul_float(arg1, arg2, arg3, a1); } }; -2441: template struct sub_mul_function_struct { static inline Result function( long double& arg1, const long double &arg2, const long double &arg3, Rounding_Dir a1) { return sub_mul_float(arg1, arg2, arg3, a1); } }; -2441: template struct input_function_struct { static inline Result function( long double& arg, std::istream& a1, Rounding_Dir a2) { return input_generic(arg, a1, a2); } }; -2441: template struct output_function_struct { static inline Result function(std::ostream& b1, const long double& arg, const Numeric_Format& a1, Rounding_Dir a2) { return output_float(b1, arg, a1, a2); } }; -2441: -2441: -2441: } -2441: -2441: } -2441: # 703 "../../src/checked_defs.hh" 2 -2441: # 1 "../../src/checked_mpz_inlines.hh" 1 -2441: # 27 "../../src/checked_mpz_inlines.hh" -2441: # 1 "/usr/include/c++/8/sstream" 1 3 -2441: # 36 "/usr/include/c++/8/sstream" 3 -2441: -2441: # 37 "/usr/include/c++/8/sstream" 3 -2441: -2441: -2441: -2441: -2441: -2441: # 41 "/usr/include/c++/8/sstream" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: namespace __cxx11 { -2441: # 64 "/usr/include/c++/8/sstream" 3 -2441: template -2441: class basic_stringbuf : public basic_streambuf<_CharT, _Traits> -2441: { -2441: struct __xfer_bufptrs; -2441: public: -2441: -2441: typedef _CharT char_type; -2441: typedef _Traits traits_type; -2441: -2441: -2441: typedef _Alloc allocator_type; -2441: typedef typename traits_type::int_type int_type; -2441: typedef typename traits_type::pos_type pos_type; -2441: typedef typename traits_type::off_type off_type; -2441: -2441: typedef basic_streambuf __streambuf_type; -2441: typedef basic_string __string_type; -2441: typedef typename __string_type::size_type __size_type; -2441: -2441: protected: -2441: -2441: ios_base::openmode _M_mode; -2441: -2441: -2441: __string_type _M_string; -2441: -2441: public: -2441: # 99 "/usr/include/c++/8/sstream" 3 -2441: explicit -2441: basic_stringbuf(ios_base::openmode __mode = ios_base::in | ios_base::out) -2441: : __streambuf_type(), _M_mode(__mode), _M_string() -2441: { } -2441: # 112 "/usr/include/c++/8/sstream" 3 -2441: explicit -2441: basic_stringbuf(const __string_type& __str, -2441: ios_base::openmode __mode = ios_base::in | ios_base::out) -2441: : __streambuf_type(), _M_mode(), -2441: _M_string(__str.data(), __str.size(), __str.get_allocator()) -2441: { _M_stringbuf_init(__mode); } -2441: -2441: -2441: basic_stringbuf(const basic_stringbuf&) = delete; -2441: -2441: basic_stringbuf(basic_stringbuf&& __rhs) -2441: : basic_stringbuf(std::move(__rhs), __xfer_bufptrs(__rhs, this)) -2441: { __rhs._M_sync(const_cast(__rhs._M_string.data()), 0, 0); } -2441: -2441: -2441: -2441: basic_stringbuf& -2441: operator=(const basic_stringbuf&) = delete; -2441: -2441: basic_stringbuf& -2441: operator=(basic_stringbuf&& __rhs) -2441: { -2441: __xfer_bufptrs __st{__rhs, this}; -2441: const __streambuf_type& __base = __rhs; -2441: __streambuf_type::operator=(__base); -2441: this->pubimbue(__rhs.getloc()); -2441: _M_mode = __rhs._M_mode; -2441: _M_string = std::move(__rhs._M_string); -2441: __rhs._M_sync(const_cast(__rhs._M_string.data()), 0, 0); -2441: return *this; -2441: } -2441: -2441: void -2441: swap(basic_stringbuf& __rhs) -2441: { -2441: __xfer_bufptrs __l_st{*this, std::__addressof(__rhs)}; -2441: __xfer_bufptrs __r_st{__rhs, this}; -2441: __streambuf_type& __base = __rhs; -2441: __streambuf_type::swap(__base); -2441: __rhs.pubimbue(this->pubimbue(__rhs.getloc())); -2441: std::swap(_M_mode, __rhs._M_mode); -2441: std::swap(_M_string, __rhs._M_string); -2441: } -2441: # 166 "/usr/include/c++/8/sstream" 3 -2441: __string_type -2441: str() const -2441: { -2441: __string_type __ret(_M_string.get_allocator()); -2441: if (this->pptr()) -2441: { -2441: -2441: if (this->pptr() > this->egptr()) -2441: __ret.assign(this->pbase(), this->pptr()); -2441: else -2441: __ret.assign(this->pbase(), this->egptr()); -2441: } -2441: else -2441: __ret = _M_string; -2441: return __ret; -2441: } -2441: # 190 "/usr/include/c++/8/sstream" 3 -2441: void -2441: str(const __string_type& __s) -2441: { -2441: -2441: -2441: _M_string.assign(__s.data(), __s.size()); -2441: _M_stringbuf_init(_M_mode); -2441: } -2441: -2441: protected: -2441: -2441: void -2441: _M_stringbuf_init(ios_base::openmode __mode) -2441: { -2441: _M_mode = __mode; -2441: __size_type __len = 0; -2441: if (_M_mode & (ios_base::ate | ios_base::app)) -2441: __len = _M_string.size(); -2441: _M_sync(const_cast(_M_string.data()), 0, __len); -2441: } -2441: -2441: virtual streamsize -2441: showmanyc() -2441: { -2441: streamsize __ret = -1; -2441: if (_M_mode & ios_base::in) -2441: { -2441: _M_update_egptr(); -2441: __ret = this->egptr() - this->gptr(); -2441: } -2441: return __ret; -2441: } -2441: -2441: virtual int_type -2441: underflow(); -2441: -2441: virtual int_type -2441: pbackfail(int_type __c = traits_type::eof()); -2441: -2441: virtual int_type -2441: overflow(int_type __c = traits_type::eof()); -2441: # 243 "/usr/include/c++/8/sstream" 3 -2441: virtual __streambuf_type* -2441: setbuf(char_type* __s, streamsize __n) -2441: { -2441: if (__s && __n >= 0) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: _M_string.clear(); -2441: -2441: -2441: _M_sync(__s, __n, 0); -2441: } -2441: return this; -2441: } -2441: -2441: virtual pos_type -2441: seekoff(off_type __off, ios_base::seekdir __way, -2441: ios_base::openmode __mode = ios_base::in | ios_base::out); -2441: -2441: virtual pos_type -2441: seekpos(pos_type __sp, -2441: ios_base::openmode __mode = ios_base::in | ios_base::out); -2441: -2441: -2441: -2441: -2441: void -2441: _M_sync(char_type* __base, __size_type __i, __size_type __o); -2441: -2441: -2441: -2441: void -2441: _M_update_egptr() -2441: { -2441: const bool __testin = _M_mode & ios_base::in; -2441: if (this->pptr() && this->pptr() > this->egptr()) -2441: { -2441: if (__testin) -2441: this->setg(this->eback(), this->gptr(), this->pptr()); -2441: else -2441: this->setg(this->pptr(), this->pptr(), this->pptr()); -2441: } -2441: } -2441: -2441: -2441: -2441: void -2441: _M_pbump(char_type* __pbeg, char_type* __pend, off_type __off); -2441: -2441: private: -2441: -2441: -2441: -2441: -2441: struct __xfer_bufptrs -2441: { -2441: __xfer_bufptrs(const basic_stringbuf& __from, basic_stringbuf* __to) -2441: : _M_to{__to}, _M_goff{-1, -1, -1}, _M_poff{-1, -1, -1} -2441: { -2441: const _CharT* const __str = __from._M_string.data(); -2441: const _CharT* __end = nullptr; -2441: if (__from.eback()) -2441: { -2441: _M_goff[0] = __from.eback() - __str; -2441: _M_goff[1] = __from.gptr() - __str; -2441: _M_goff[2] = __from.egptr() - __str; -2441: __end = __from.egptr(); -2441: } -2441: if (__from.pbase()) -2441: { -2441: _M_poff[0] = __from.pbase() - __str; -2441: _M_poff[1] = __from.pptr() - __from.pbase(); -2441: _M_poff[2] = __from.epptr() - __str; -2441: if (__from.pptr() > __end) -2441: __end = __from.pptr(); -2441: } -2441: -2441: -2441: if (__end) -2441: { -2441: -2441: -2441: auto& __mut_from = const_cast(__from); -2441: __mut_from._M_string._M_length(__end - __str); -2441: } -2441: } -2441: -2441: ~__xfer_bufptrs() -2441: { -2441: char_type* __str = const_cast(_M_to->_M_string.data()); -2441: if (_M_goff[0] != -1) -2441: _M_to->setg(__str+_M_goff[0], __str+_M_goff[1], __str+_M_goff[2]); -2441: if (_M_poff[0] != -1) -2441: _M_to->_M_pbump(__str+_M_poff[0], __str+_M_poff[2], _M_poff[1]); -2441: } -2441: -2441: basic_stringbuf* _M_to; -2441: off_type _M_goff[3]; -2441: off_type _M_poff[3]; -2441: }; -2441: # 357 "/usr/include/c++/8/sstream" 3 -2441: basic_stringbuf(basic_stringbuf&& __rhs, __xfer_bufptrs&&) -2441: : __streambuf_type(static_cast(__rhs)), -2441: _M_mode(__rhs._M_mode), _M_string(std::move(__rhs._M_string)) -2441: { } -2441: -2441: }; -2441: # 380 "/usr/include/c++/8/sstream" 3 -2441: template -2441: class basic_istringstream : public basic_istream<_CharT, _Traits> -2441: { -2441: public: -2441: -2441: typedef _CharT char_type; -2441: typedef _Traits traits_type; -2441: -2441: -2441: typedef _Alloc allocator_type; -2441: typedef typename traits_type::int_type int_type; -2441: typedef typename traits_type::pos_type pos_type; -2441: typedef typename traits_type::off_type off_type; -2441: -2441: -2441: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; -2441: typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type; -2441: typedef basic_istream __istream_type; -2441: -2441: private: -2441: __stringbuf_type _M_stringbuf; -2441: -2441: public: -2441: # 416 "/usr/include/c++/8/sstream" 3 -2441: explicit -2441: basic_istringstream(ios_base::openmode __mode = ios_base::in) -2441: : __istream_type(), _M_stringbuf(__mode | ios_base::in) -2441: { this->init(&_M_stringbuf); } -2441: # 434 "/usr/include/c++/8/sstream" 3 -2441: explicit -2441: basic_istringstream(const __string_type& __str, -2441: ios_base::openmode __mode = ios_base::in) -2441: : __istream_type(), _M_stringbuf(__str, __mode | ios_base::in) -2441: { this->init(&_M_stringbuf); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: ~basic_istringstream() -2441: { } -2441: -2441: -2441: basic_istringstream(const basic_istringstream&) = delete; -2441: -2441: basic_istringstream(basic_istringstream&& __rhs) -2441: : __istream_type(std::move(__rhs)), -2441: _M_stringbuf(std::move(__rhs._M_stringbuf)) -2441: { __istream_type::set_rdbuf(&_M_stringbuf); } -2441: -2441: -2441: -2441: basic_istringstream& -2441: operator=(const basic_istringstream&) = delete; -2441: -2441: basic_istringstream& -2441: operator=(basic_istringstream&& __rhs) -2441: { -2441: __istream_type::operator=(std::move(__rhs)); -2441: _M_stringbuf = std::move(__rhs._M_stringbuf); -2441: return *this; -2441: } -2441: -2441: void -2441: swap(basic_istringstream& __rhs) -2441: { -2441: __istream_type::swap(__rhs); -2441: _M_stringbuf.swap(__rhs._M_stringbuf); -2441: } -2441: # 485 "/usr/include/c++/8/sstream" 3 -2441: __stringbuf_type* -2441: rdbuf() const -2441: { return const_cast<__stringbuf_type*>(&_M_stringbuf); } -2441: -2441: -2441: -2441: -2441: -2441: __string_type -2441: str() const -2441: { return _M_stringbuf.str(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void -2441: str(const __string_type& __s) -2441: { _M_stringbuf.str(__s); } -2441: }; -2441: # 524 "/usr/include/c++/8/sstream" 3 -2441: template -2441: class basic_ostringstream : public basic_ostream<_CharT, _Traits> -2441: { -2441: public: -2441: -2441: typedef _CharT char_type; -2441: typedef _Traits traits_type; -2441: -2441: -2441: typedef _Alloc allocator_type; -2441: typedef typename traits_type::int_type int_type; -2441: typedef typename traits_type::pos_type pos_type; -2441: typedef typename traits_type::off_type off_type; -2441: -2441: -2441: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; -2441: typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type; -2441: typedef basic_ostream __ostream_type; -2441: -2441: private: -2441: __stringbuf_type _M_stringbuf; -2441: -2441: public: -2441: # 560 "/usr/include/c++/8/sstream" 3 -2441: explicit -2441: basic_ostringstream(ios_base::openmode __mode = ios_base::out) -2441: : __ostream_type(), _M_stringbuf(__mode | ios_base::out) -2441: { this->init(&_M_stringbuf); } -2441: # 578 "/usr/include/c++/8/sstream" 3 -2441: explicit -2441: basic_ostringstream(const __string_type& __str, -2441: ios_base::openmode __mode = ios_base::out) -2441: : __ostream_type(), _M_stringbuf(__str, __mode | ios_base::out) -2441: { this->init(&_M_stringbuf); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: ~basic_ostringstream() -2441: { } -2441: -2441: -2441: basic_ostringstream(const basic_ostringstream&) = delete; -2441: -2441: basic_ostringstream(basic_ostringstream&& __rhs) -2441: : __ostream_type(std::move(__rhs)), -2441: _M_stringbuf(std::move(__rhs._M_stringbuf)) -2441: { __ostream_type::set_rdbuf(&_M_stringbuf); } -2441: -2441: -2441: -2441: basic_ostringstream& -2441: operator=(const basic_ostringstream&) = delete; -2441: -2441: basic_ostringstream& -2441: operator=(basic_ostringstream&& __rhs) -2441: { -2441: __ostream_type::operator=(std::move(__rhs)); -2441: _M_stringbuf = std::move(__rhs._M_stringbuf); -2441: return *this; -2441: } -2441: -2441: void -2441: swap(basic_ostringstream& __rhs) -2441: { -2441: __ostream_type::swap(__rhs); -2441: _M_stringbuf.swap(__rhs._M_stringbuf); -2441: } -2441: # 629 "/usr/include/c++/8/sstream" 3 -2441: __stringbuf_type* -2441: rdbuf() const -2441: { return const_cast<__stringbuf_type*>(&_M_stringbuf); } -2441: -2441: -2441: -2441: -2441: -2441: __string_type -2441: str() const -2441: { return _M_stringbuf.str(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void -2441: str(const __string_type& __s) -2441: { _M_stringbuf.str(__s); } -2441: }; -2441: # 668 "/usr/include/c++/8/sstream" 3 -2441: template -2441: class basic_stringstream : public basic_iostream<_CharT, _Traits> -2441: { -2441: public: -2441: -2441: typedef _CharT char_type; -2441: typedef _Traits traits_type; -2441: -2441: -2441: typedef _Alloc allocator_type; -2441: typedef typename traits_type::int_type int_type; -2441: typedef typename traits_type::pos_type pos_type; -2441: typedef typename traits_type::off_type off_type; -2441: -2441: -2441: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; -2441: typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type; -2441: typedef basic_iostream __iostream_type; -2441: -2441: private: -2441: __stringbuf_type _M_stringbuf; -2441: -2441: public: -2441: # 703 "/usr/include/c++/8/sstream" 3 -2441: explicit -2441: basic_stringstream(ios_base::openmode __m = ios_base::out | ios_base::in) -2441: : __iostream_type(), _M_stringbuf(__m) -2441: { this->init(&_M_stringbuf); } -2441: # 719 "/usr/include/c++/8/sstream" 3 -2441: explicit -2441: basic_stringstream(const __string_type& __str, -2441: ios_base::openmode __m = ios_base::out | ios_base::in) -2441: : __iostream_type(), _M_stringbuf(__str, __m) -2441: { this->init(&_M_stringbuf); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: ~basic_stringstream() -2441: { } -2441: -2441: -2441: basic_stringstream(const basic_stringstream&) = delete; -2441: -2441: basic_stringstream(basic_stringstream&& __rhs) -2441: : __iostream_type(std::move(__rhs)), -2441: _M_stringbuf(std::move(__rhs._M_stringbuf)) -2441: { __iostream_type::set_rdbuf(&_M_stringbuf); } -2441: -2441: -2441: -2441: basic_stringstream& -2441: operator=(const basic_stringstream&) = delete; -2441: -2441: basic_stringstream& -2441: operator=(basic_stringstream&& __rhs) -2441: { -2441: __iostream_type::operator=(std::move(__rhs)); -2441: _M_stringbuf = std::move(__rhs._M_stringbuf); -2441: return *this; -2441: } -2441: -2441: void -2441: swap(basic_stringstream& __rhs) -2441: { -2441: __iostream_type::swap(__rhs); -2441: _M_stringbuf.swap(__rhs._M_stringbuf); -2441: } -2441: # 770 "/usr/include/c++/8/sstream" 3 -2441: __stringbuf_type* -2441: rdbuf() const -2441: { return const_cast<__stringbuf_type*>(&_M_stringbuf); } -2441: -2441: -2441: -2441: -2441: -2441: __string_type -2441: str() const -2441: { return _M_stringbuf.str(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void -2441: str(const __string_type& __s) -2441: { _M_stringbuf.str(__s); } -2441: }; -2441: -2441: -2441: -2441: template -2441: inline void -2441: swap(basic_stringbuf<_CharT, _Traits, _Allocator>& __x, -2441: basic_stringbuf<_CharT, _Traits, _Allocator>& __y) -2441: { __x.swap(__y); } -2441: -2441: -2441: template -2441: inline void -2441: swap(basic_istringstream<_CharT, _Traits, _Allocator>& __x, -2441: basic_istringstream<_CharT, _Traits, _Allocator>& __y) -2441: { __x.swap(__y); } -2441: -2441: -2441: template -2441: inline void -2441: swap(basic_ostringstream<_CharT, _Traits, _Allocator>& __x, -2441: basic_ostringstream<_CharT, _Traits, _Allocator>& __y) -2441: { __x.swap(__y); } -2441: -2441: -2441: template -2441: inline void -2441: swap(basic_stringstream<_CharT, _Traits, _Allocator>& __x, -2441: basic_stringstream<_CharT, _Traits, _Allocator>& __y) -2441: { __x.swap(__y); } -2441: -2441: -2441: } -2441: -2441: } -2441: -2441: # 1 "/usr/include/c++/8/bits/sstream.tcc" 1 3 -2441: # 37 "/usr/include/c++/8/bits/sstream.tcc" 3 -2441: -2441: # 38 "/usr/include/c++/8/bits/sstream.tcc" 3 -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: template -2441: typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type -2441: basic_stringbuf<_CharT, _Traits, _Alloc>:: -2441: pbackfail(int_type __c) -2441: { -2441: int_type __ret = traits_type::eof(); -2441: if (this->eback() < this->gptr()) -2441: { -2441: -2441: -2441: const bool __testeof = traits_type::eq_int_type(__c, __ret); -2441: if (!__testeof) -2441: { -2441: const bool __testeq = traits_type::eq(traits_type:: -2441: to_char_type(__c), -2441: this->gptr()[-1]); -2441: const bool __testout = this->_M_mode & ios_base::out; -2441: if (__testeq || __testout) -2441: { -2441: this->gbump(-1); -2441: if (!__testeq) -2441: *this->gptr() = traits_type::to_char_type(__c); -2441: __ret = __c; -2441: } -2441: } -2441: else -2441: { -2441: this->gbump(-1); -2441: __ret = traits_type::not_eof(__c); -2441: } -2441: } -2441: return __ret; -2441: } -2441: -2441: template -2441: typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type -2441: basic_stringbuf<_CharT, _Traits, _Alloc>:: -2441: overflow(int_type __c) -2441: { -2441: const bool __testout = this->_M_mode & ios_base::out; -2441: if (__builtin_expect(!__testout, false)) -2441: return traits_type::eof(); -2441: -2441: const bool __testeof = traits_type::eq_int_type(__c, traits_type::eof()); -2441: if (__builtin_expect(__testeof, false)) -2441: return traits_type::not_eof(__c); -2441: -2441: const __size_type __capacity = _M_string.capacity(); -2441: -2441: -2441: if ((this->epptr() - this->pbase()) < __capacity) -2441: { -2441: -2441: char_type* __base = const_cast(_M_string.data()); -2441: _M_pbump(__base, __base + __capacity, this->pptr() - this->pbase()); -2441: if (_M_mode & ios_base::in) -2441: { -2441: const __size_type __nget = this->gptr() - this->eback(); -2441: const __size_type __eget = this->egptr() - this->eback(); -2441: this->setg(__base, __base + __nget, __base + __eget + 1); -2441: } -2441: *this->pptr() = traits_type::to_char_type(__c); -2441: this->pbump(1); -2441: return __c; -2441: } -2441: -2441: -2441: const __size_type __max_size = _M_string.max_size(); -2441: const bool __testput = this->pptr() < this->epptr(); -2441: if (__builtin_expect(!__testput && __capacity == __max_size, false)) -2441: return traits_type::eof(); -2441: -2441: -2441: -2441: const char_type __conv = traits_type::to_char_type(__c); -2441: if (!__testput) -2441: { -2441: # 129 "/usr/include/c++/8/bits/sstream.tcc" 3 -2441: const __size_type __opt_len = std::max(__size_type(2 * __capacity), -2441: __size_type(512)); -2441: const __size_type __len = std::min(__opt_len, __max_size); -2441: __string_type __tmp(_M_string.get_allocator()); -2441: __tmp.reserve(__len); -2441: if (this->pbase()) -2441: __tmp.assign(this->pbase(), this->epptr() - this->pbase()); -2441: __tmp.push_back(__conv); -2441: _M_string.swap(__tmp); -2441: _M_sync(const_cast(_M_string.data()), -2441: this->gptr() - this->eback(), this->pptr() - this->pbase()); -2441: } -2441: else -2441: *this->pptr() = __conv; -2441: this->pbump(1); -2441: return __c; -2441: } -2441: -2441: template -2441: typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type -2441: basic_stringbuf<_CharT, _Traits, _Alloc>:: -2441: underflow() -2441: { -2441: int_type __ret = traits_type::eof(); -2441: const bool __testin = this->_M_mode & ios_base::in; -2441: if (__testin) -2441: { -2441: -2441: _M_update_egptr(); -2441: -2441: if (this->gptr() < this->egptr()) -2441: __ret = traits_type::to_int_type(*this->gptr()); -2441: } -2441: return __ret; -2441: } -2441: -2441: template -2441: typename basic_stringbuf<_CharT, _Traits, _Alloc>::pos_type -2441: basic_stringbuf<_CharT, _Traits, _Alloc>:: -2441: seekoff(off_type __off, ios_base::seekdir __way, ios_base::openmode __mode) -2441: { -2441: pos_type __ret = pos_type(off_type(-1)); -2441: bool __testin = (ios_base::in & this->_M_mode & __mode) != 0; -2441: bool __testout = (ios_base::out & this->_M_mode & __mode) != 0; -2441: const bool __testboth = __testin && __testout && __way != ios_base::cur; -2441: __testin &= !(__mode & ios_base::out); -2441: __testout &= !(__mode & ios_base::in); -2441: -2441: -2441: -2441: const char_type* __beg = __testin ? this->eback() : this->pbase(); -2441: if ((__beg || !__off) && (__testin || __testout || __testboth)) -2441: { -2441: _M_update_egptr(); -2441: -2441: off_type __newoffi = __off; -2441: off_type __newoffo = __newoffi; -2441: if (__way == ios_base::cur) -2441: { -2441: __newoffi += this->gptr() - __beg; -2441: __newoffo += this->pptr() - __beg; -2441: } -2441: else if (__way == ios_base::end) -2441: __newoffo = __newoffi += this->egptr() - __beg; -2441: -2441: if ((__testin || __testboth) -2441: && __newoffi >= 0 -2441: && this->egptr() - __beg >= __newoffi) -2441: { -2441: this->setg(this->eback(), this->eback() + __newoffi, -2441: this->egptr()); -2441: __ret = pos_type(__newoffi); -2441: } -2441: if ((__testout || __testboth) -2441: && __newoffo >= 0 -2441: && this->egptr() - __beg >= __newoffo) -2441: { -2441: _M_pbump(this->pbase(), this->epptr(), __newoffo); -2441: __ret = pos_type(__newoffo); -2441: } -2441: } -2441: return __ret; -2441: } -2441: -2441: template -2441: typename basic_stringbuf<_CharT, _Traits, _Alloc>::pos_type -2441: basic_stringbuf<_CharT, _Traits, _Alloc>:: -2441: seekpos(pos_type __sp, ios_base::openmode __mode) -2441: { -2441: pos_type __ret = pos_type(off_type(-1)); -2441: const bool __testin = (ios_base::in & this->_M_mode & __mode) != 0; -2441: const bool __testout = (ios_base::out & this->_M_mode & __mode) != 0; -2441: -2441: const char_type* __beg = __testin ? this->eback() : this->pbase(); -2441: if ((__beg || !off_type(__sp)) && (__testin || __testout)) -2441: { -2441: _M_update_egptr(); -2441: -2441: const off_type __pos(__sp); -2441: const bool __testpos = (0 <= __pos -2441: && __pos <= this->egptr() - __beg); -2441: if (__testpos) -2441: { -2441: if (__testin) -2441: this->setg(this->eback(), this->eback() + __pos, -2441: this->egptr()); -2441: if (__testout) -2441: _M_pbump(this->pbase(), this->epptr(), __pos); -2441: __ret = __sp; -2441: } -2441: } -2441: return __ret; -2441: } -2441: -2441: template -2441: void -2441: basic_stringbuf<_CharT, _Traits, _Alloc>:: -2441: _M_sync(char_type* __base, __size_type __i, __size_type __o) -2441: { -2441: const bool __testin = _M_mode & ios_base::in; -2441: const bool __testout = _M_mode & ios_base::out; -2441: char_type* __endg = __base + _M_string.size(); -2441: char_type* __endp = __base + _M_string.capacity(); -2441: -2441: if (__base != _M_string.data()) -2441: { -2441: -2441: __endg += __i; -2441: __i = 0; -2441: __endp = __endg; -2441: } -2441: -2441: if (__testin) -2441: this->setg(__base, __base + __i, __endg); -2441: if (__testout) -2441: { -2441: _M_pbump(__base, __endp, __o); -2441: -2441: -2441: -2441: if (!__testin) -2441: this->setg(__endg, __endg, __endg); -2441: } -2441: } -2441: -2441: template -2441: void -2441: basic_stringbuf<_CharT, _Traits, _Alloc>:: -2441: _M_pbump(char_type* __pbeg, char_type* __pend, off_type __off) -2441: { -2441: this->setp(__pbeg, __pend); -2441: while (__off > __gnu_cxx::__numeric_traits::__max) -2441: { -2441: this->pbump(__gnu_cxx::__numeric_traits::__max); -2441: __off -= __gnu_cxx::__numeric_traits::__max; -2441: } -2441: this->pbump(__off); -2441: } -2441: -2441: -2441: -2441: -2441: extern template class basic_stringbuf; -2441: extern template class basic_istringstream; -2441: extern template class basic_ostringstream; -2441: extern template class basic_stringstream; -2441: -2441: -2441: extern template class basic_stringbuf; -2441: extern template class basic_istringstream; -2441: extern template class basic_ostringstream; -2441: extern template class basic_stringstream; -2441: -2441: -2441: -2441: -2441: } -2441: # 828 "/usr/include/c++/8/sstream" 2 3 -2441: # 28 "../../src/checked_mpz_inlines.hh" 2 -2441: -2441: -2441: # 29 "../../src/checked_mpz_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: namespace Checked { -2441: -2441: template -2441: inline Result -2441: round_lt_mpz(mpz_class& to, Rounding_Dir dir) { -2441: if (round_down(dir)) { -2441: --to; -2441: return V_GT; -2441: } -2441: return V_LT; -2441: } -2441: -2441: template -2441: inline Result -2441: round_gt_mpz(mpz_class& to, Rounding_Dir dir) { -2441: if (round_up(dir)) { -2441: ++to; -2441: return V_LT; -2441: } -2441: return V_GT; -2441: } -2441: -2441: -2441: -2441: typedef decltype(__mpz_struct()._mp_size) mp_size_field_t; -2441: # 64 "../../src/checked_mpz_inlines.hh" -2441: inline mp_size_field_t -2441: get_mp_size(const mpz_class &v) { -2441: return v.get_mpz_t()->_mp_size; -2441: } -2441: -2441: inline void -2441: set_mp_size(mpz_class &v, mp_size_field_t size) { -2441: v.get_mpz_t()->_mp_size = size; -2441: } -2441: -2441: template -2441: inline Result -2441: classify_mpz(const mpz_class& v, bool nan, bool inf, bool sign) { -2441: if (Policy::has_nan || Policy::has_infinity) { -2441: mp_size_field_t s = get_mp_size(v); -2441: if (Policy::has_nan -2441: && (nan || sign) -2441: && s == C_Integer::min + 1) { -2441: return V_NAN; -2441: } -2441: if (!inf && !sign) { -2441: return V_LGE; -2441: } -2441: if (Policy::has_infinity) { -2441: if (s == C_Integer::min) { -2441: return inf ? V_EQ_MINUS_INFINITY : V_LT; -2441: } -2441: if (s == C_Integer::max) { -2441: return inf ? V_EQ_PLUS_INFINITY : V_GT; -2441: } -2441: } -2441: } -2441: if (sign) { -2441: return static_cast(sgn(v)); -2441: } -2441: return V_LGE; -2441: } -2441: -2441: template struct classify_function_struct { static inline Result function(const mpz_class& arg, bool a1, bool a2, bool a3) { return classify_mpz(arg, a1, a2, a3); } }; -2441: -2441: template -2441: inline bool -2441: is_nan_mpz(const mpz_class& v) { -2441: return Policy::has_nan -2441: && get_mp_size(v) == C_Integer::min + 1; -2441: } -2441: -2441: template struct is_nan_function_struct { static inline bool function(const mpz_class& arg) { return is_nan_mpz(arg); } }; -2441: -2441: template -2441: inline bool -2441: is_minf_mpz(const mpz_class& v) { -2441: return Policy::has_infinity -2441: && get_mp_size(v) == C_Integer::min; -2441: } -2441: -2441: template struct is_minf_function_struct { static inline bool function(const mpz_class& arg) { return is_minf_mpz(arg); } }; -2441: -2441: template -2441: inline bool -2441: is_pinf_mpz(const mpz_class& v) { -2441: return Policy::has_infinity -2441: && get_mp_size(v) == C_Integer::max; -2441: } -2441: -2441: template struct is_pinf_function_struct { static inline bool function(const mpz_class& arg) { return is_pinf_mpz(arg); } }; -2441: -2441: template -2441: inline bool -2441: is_int_mpz(const mpz_class& v) { -2441: return !is_nan(v); -2441: } -2441: -2441: template struct is_int_function_struct { static inline bool function(const mpz_class& arg) { return is_int_mpz(arg); } }; -2441: -2441: template -2441: inline Result -2441: assign_special_mpz(mpz_class& v, Result_Class c, Rounding_Dir) { -2441: switch (c) { -2441: case VC_NAN: -2441: if (Policy::has_nan) { -2441: set_mp_size(v, C_Integer::min + 1); -2441: } -2441: return V_NAN; -2441: case VC_MINUS_INFINITY: -2441: if (Policy::has_infinity) { -2441: set_mp_size(v, C_Integer::min); -2441: return V_EQ_MINUS_INFINITY; -2441: } -2441: return V_EQ_MINUS_INFINITY | V_UNREPRESENTABLE; -2441: case VC_PLUS_INFINITY: -2441: if (Policy::has_infinity) { -2441: set_mp_size(v, C_Integer::max); -2441: return V_EQ_PLUS_INFINITY; -2441: } -2441: return V_EQ_PLUS_INFINITY | V_UNREPRESENTABLE; -2441: default: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return V_NAN; -2441: } -2441: } -2441: -2441: template struct assign_special_function_struct { static inline Result function( mpz_class& arg, Result_Class a1, Rounding_Dir a2) { return assign_special_mpz(arg, a1, a2); } }; -2441: -2441: template -2441: inline void -2441: copy_mpz(mpz_class& to, const mpz_class& from) { -2441: if (is_nan_mpz(from)) { -2441: ((void) 0); -2441: } -2441: else if (is_minf_mpz(from) || is_pinf_mpz(from)) { -2441: ((void) 0); -2441: } -2441: else { -2441: to = from; -2441: return; -2441: } -2441: set_mp_size(to, get_mp_size(from)); -2441: } -2441: -2441: template struct copy_function_struct { static inline void function( mpz_class& arg1, const mpz_class &arg2) { return copy_mpz(arg1, arg2); } }; -2441: -2441: template -2441: inline Result -2441: construct_mpz_base(mpz_class& to, const From from, Rounding_Dir) { -2441: new(&to) mpz_class(from); -2441: return V_EQ; -2441: } -2441: -2441: template struct construct_function_struct { static inline Result function( mpz_class& arg1, const char &arg2, Rounding_Dir a1) { return construct_mpz_base(arg1, arg2, a1); } }; -2441: template struct construct_function_struct { static inline Result function( mpz_class& arg1, const signed char &arg2, Rounding_Dir a1) { return construct_mpz_base(arg1, arg2, a1); } }; -2441: template struct construct_function_struct { static inline Result function( mpz_class& arg1, const signed short &arg2, Rounding_Dir a1) { return construct_mpz_base(arg1, arg2, a1); } }; -2441: template struct construct_function_struct { static inline Result function( mpz_class& arg1, const signed int &arg2, Rounding_Dir a1) { return construct_mpz_base(arg1, arg2, a1); } }; -2441: template struct construct_function_struct { static inline Result function( mpz_class& arg1, const signed long &arg2, Rounding_Dir a1) { return construct_mpz_base(arg1, arg2, a1); } }; -2441: template struct construct_function_struct { static inline Result function( mpz_class& arg1, const unsigned char &arg2, Rounding_Dir a1) { return construct_mpz_base(arg1, arg2, a1); } }; -2441: template struct construct_function_struct { static inline Result function( mpz_class& arg1, const unsigned short &arg2, Rounding_Dir a1) { return construct_mpz_base(arg1, arg2, a1); } }; -2441: template struct construct_function_struct { static inline Result function( mpz_class& arg1, const unsigned int &arg2, Rounding_Dir a1) { return construct_mpz_base(arg1, arg2, a1); } }; -2441: template struct construct_function_struct { static inline Result function( mpz_class& arg1, const unsigned long &arg2, Rounding_Dir a1) { return construct_mpz_base(arg1, arg2, a1); } }; -2441: -2441: template -2441: inline Result -2441: construct_mpz_float(mpz_class& to, const From& from, Rounding_Dir dir) { -2441: if (is_nan(from)) { -2441: return construct_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: else if (is_minf(from)) { -2441: return construct_special(to, VC_MINUS_INFINITY, dir); -2441: } -2441: else if (is_pinf(from)) { -2441: return construct_special(to, VC_PLUS_INFINITY, dir); -2441: } -2441: if (round_not_requested(dir)) { -2441: new(&to) mpz_class(from); -2441: return V_LGE; -2441: } -2441: From n = rint(from); -2441: new(&to) mpz_class(n); -2441: if (from == n) { -2441: return V_EQ; -2441: } -2441: if (from < 0) { -2441: return round_lt_mpz(to, dir); -2441: } -2441: else { -2441: return round_gt_mpz(to, dir); -2441: } -2441: } -2441: -2441: template struct construct_function_struct { static inline Result function( mpz_class& arg1, const float &arg2, Rounding_Dir a1) { return construct_mpz_float(arg1, arg2, a1); } }; -2441: template struct construct_function_struct { static inline Result function( mpz_class& arg1, const double &arg2, Rounding_Dir a1) { return construct_mpz_float(arg1, arg2, a1); } }; -2441: -2441: template struct assign_function_struct { static inline Result function( mpz_class& arg1, const mpz_class &arg2, Rounding_Dir a1) { return assign_exact(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( mpz_class& arg1, const char &arg2, Rounding_Dir a1) { return assign_exact(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( mpz_class& arg1, const signed char &arg2, Rounding_Dir a1) { return assign_exact(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( mpz_class& arg1, const signed short &arg2, Rounding_Dir a1) { return assign_exact(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( mpz_class& arg1, const signed int &arg2, Rounding_Dir a1) { return assign_exact(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( mpz_class& arg1, const signed long &arg2, Rounding_Dir a1) { return assign_exact(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( mpz_class& arg1, const unsigned char &arg2, Rounding_Dir a1) { return assign_exact(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( mpz_class& arg1, const unsigned short &arg2, Rounding_Dir a1) { return assign_exact(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( mpz_class& arg1, const unsigned int &arg2, Rounding_Dir a1) { return assign_exact(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( mpz_class& arg1, const unsigned long &arg2, Rounding_Dir a1) { return assign_exact(arg1, arg2, a1); } }; -2441: -2441: template -2441: inline Result -2441: assign_mpz_signed_int(mpz_class& to, const From from, Rounding_Dir) { -2441: if (sizeof(From) <= sizeof(signed long)) { -2441: to = static_cast(from); -2441: } -2441: else { -2441: mpz_ptr m = to.get_mpz_t(); -2441: if (from >= 0) { -2441: -2441: # 255 "../../src/checked_mpz_inlines.hh" 3 4 -2441: __gmpz_import -2441: # 255 "../../src/checked_mpz_inlines.hh" -2441: (m, 1, 1, sizeof(From), 0, 0, &from); -2441: } -2441: else { -2441: From n = -from; -2441: -2441: # 259 "../../src/checked_mpz_inlines.hh" 3 4 -2441: __gmpz_import -2441: # 259 "../../src/checked_mpz_inlines.hh" -2441: (m, 1, 1, sizeof(From), 0, 0, &n); -2441: -2441: # 260 "../../src/checked_mpz_inlines.hh" 3 4 -2441: __gmpz_neg -2441: # 260 "../../src/checked_mpz_inlines.hh" -2441: (m, m); -2441: } -2441: } -2441: return V_EQ; -2441: } -2441: -2441: template struct assign_function_struct { static inline Result function( mpz_class& arg1, const signed long long &arg2, Rounding_Dir a1) { return assign_mpz_signed_int(arg1, arg2, a1); } }; -2441: -2441: template -2441: inline Result -2441: assign_mpz_unsigned_int(mpz_class& to, const From from, Rounding_Dir) { -2441: if (sizeof(From) <= sizeof(unsigned long)) { -2441: to = static_cast(from); -2441: } -2441: else { -2441: -2441: # 275 "../../src/checked_mpz_inlines.hh" 3 4 -2441: __gmpz_import -2441: # 275 "../../src/checked_mpz_inlines.hh" -2441: (to.get_mpz_t(), 1, 1, sizeof(From), 0, 0, &from); -2441: } -2441: return V_EQ; -2441: } -2441: -2441: template struct assign_function_struct { static inline Result function( mpz_class& arg1, const unsigned long long &arg2, Rounding_Dir a1) { return assign_mpz_unsigned_int(arg1, arg2, a1); } }; -2441: -2441: template -2441: inline Result -2441: assign_mpz_float(mpz_class& to, const From from, Rounding_Dir dir) { -2441: if (is_nan(from)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: else if (is_minf(from)) { -2441: return assign_special(to, VC_MINUS_INFINITY, dir); -2441: } -2441: else if (is_pinf(from)) { -2441: return assign_special(to, VC_PLUS_INFINITY, dir); -2441: } -2441: if (round_not_requested(dir)) { -2441: to = from; -2441: return V_LGE; -2441: } -2441: From i_from = rint(from); -2441: to = i_from; -2441: if (from == i_from) { -2441: return V_EQ; -2441: } -2441: if (round_direct(ROUND_UP)) { -2441: return round_lt_mpz(to, dir); -2441: } -2441: if (round_direct(ROUND_DOWN)) { -2441: return round_gt_mpz(to, dir); -2441: } -2441: if (from < i_from) { -2441: return round_lt_mpz(to, dir); -2441: } -2441: if (from > i_from) { -2441: return round_gt_mpz(to, dir); -2441: } -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return V_NAN; -2441: } -2441: -2441: template struct assign_function_struct { static inline Result function( mpz_class& arg1, const float &arg2, Rounding_Dir a1) { return assign_mpz_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( mpz_class& arg1, const double &arg2, Rounding_Dir a1) { return assign_mpz_float(arg1, arg2, a1); } }; -2441: -2441: template -2441: inline Result -2441: assign_mpz_long_double(mpz_class& to, const From& from, Rounding_Dir dir) { -2441: if (is_nan(from)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: else if (is_minf(from)) { -2441: return assign_special(to, VC_MINUS_INFINITY, dir); -2441: } -2441: else if (is_pinf(from)) { -2441: return assign_special(to, VC_PLUS_INFINITY, dir); -2441: } -2441: -2441: std::stringstream ss; -2441: output(ss, from, Numeric_Format(), dir); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp; mpq_class& tmp = holder_tmp.item(); -2441: -2441: -2441: -2441: input_mpq(tmp, ss); -2441: ((void) 0); -2441: return assign(to, tmp, dir); -2441: } -2441: -2441: template struct assign_function_struct { static inline Result function( mpz_class& arg1, const long double &arg2, Rounding_Dir a1) { return assign_mpz_long_double(arg1, arg2, a1); } }; -2441: -2441: template -2441: inline Result -2441: assign_mpz_mpq(mpz_class& to, const mpq_class& from, Rounding_Dir dir) { -2441: if (round_not_needed(dir)) { -2441: to = from.get_num(); -2441: return V_LGE; -2441: } -2441: if (round_ignore(dir)) { -2441: to = from; -2441: return V_LGE; -2441: } -2441: const mpz_srcptr n = from.get_num().get_mpz_t(); -2441: const mpz_srcptr d = from.get_den().get_mpz_t(); -2441: if (round_down(dir)) { -2441: -2441: # 362 "../../src/checked_mpz_inlines.hh" 3 4 -2441: __gmpz_fdiv_q -2441: # 362 "../../src/checked_mpz_inlines.hh" -2441: (to.get_mpz_t(), n, d); -2441: if (round_strict_relation(dir)) { -2441: return ( -2441: # 364 "../../src/checked_mpz_inlines.hh" 3 4 -2441: __gmpz_divisible_p -2441: # 364 "../../src/checked_mpz_inlines.hh" -2441: (n, d) != 0) ? V_EQ : V_GT; -2441: } -2441: return V_GE; -2441: } -2441: else { -2441: ((void) 0); -2441: -2441: # 370 "../../src/checked_mpz_inlines.hh" 3 4 -2441: __gmpz_cdiv_q -2441: # 370 "../../src/checked_mpz_inlines.hh" -2441: (to.get_mpz_t(), n, d); -2441: if (round_strict_relation(dir)) { -2441: return ( -2441: # 372 "../../src/checked_mpz_inlines.hh" 3 4 -2441: __gmpz_divisible_p -2441: # 372 "../../src/checked_mpz_inlines.hh" -2441: (n, d) != 0) ? V_EQ : V_LT; -2441: } -2441: return V_LE; -2441: } -2441: } -2441: -2441: template struct assign_function_struct { static inline Result function( mpz_class& arg1, const mpq_class &arg2, Rounding_Dir a1) { return assign_mpz_mpq(arg1, arg2, a1); } }; -2441: -2441: template struct floor_function_struct { static inline Result function( mpz_class& arg1, const mpz_class &arg2, Rounding_Dir a1) { return assign_exact(arg1, arg2, a1); } }; -2441: template struct ceil_function_struct { static inline Result function( mpz_class& arg1, const mpz_class &arg2, Rounding_Dir a1) { return assign_exact(arg1, arg2, a1); } }; -2441: template struct trunc_function_struct { static inline Result function( mpz_class& arg1, const mpz_class &arg2, Rounding_Dir a1) { return assign_exact(arg1, arg2, a1); } }; -2441: -2441: template -2441: inline Result -2441: neg_mpz(mpz_class& to, const mpz_class& from, Rounding_Dir) { -2441: -2441: # 387 "../../src/checked_mpz_inlines.hh" 3 4 -2441: __gmpz_neg -2441: # 387 "../../src/checked_mpz_inlines.hh" -2441: (to.get_mpz_t(), from.get_mpz_t()); -2441: return V_EQ; -2441: } -2441: -2441: template struct neg_function_struct { static inline Result function( mpz_class& arg1, const mpz_class &arg2, Rounding_Dir a1) { return neg_mpz(arg1, arg2, a1); } }; -2441: -2441: template -2441: inline Result -2441: add_mpz(mpz_class& to, const mpz_class& x, const mpz_class& y, Rounding_Dir) { -2441: to = x + y; -2441: return V_EQ; -2441: } -2441: -2441: template struct add_function_struct { static inline Result function( mpz_class& arg1, const mpz_class &arg2, const mpz_class &arg3, Rounding_Dir a1) { return add_mpz(arg1, arg2, arg3, a1); } }; -2441: -2441: template -2441: inline Result -2441: sub_mpz(mpz_class& to, const mpz_class& x, const mpz_class& y, Rounding_Dir) { -2441: to = x - y; -2441: return V_EQ; -2441: } -2441: -2441: template struct sub_function_struct { static inline Result function( mpz_class& arg1, const mpz_class &arg2, const mpz_class &arg3, Rounding_Dir a1) { return sub_mpz(arg1, arg2, arg3, a1); } }; -2441: -2441: template -2441: inline Result -2441: mul_mpz(mpz_class& to, const mpz_class& x, const mpz_class& y, Rounding_Dir) { -2441: to = x * y; -2441: return V_EQ; -2441: } -2441: -2441: template struct mul_function_struct { static inline Result function( mpz_class& arg1, const mpz_class &arg2, const mpz_class &arg3, Rounding_Dir a1) { return mul_mpz(arg1, arg2, arg3, a1); } }; -2441: -2441: template -2441: inline Result -2441: div_mpz(mpz_class& to, const mpz_class& x, const mpz_class& y, -2441: Rounding_Dir dir) { -2441: if (((To_Policy::check_div_zero) ? (::sgn(y) == 0) : ( -2441: # 424 "../../src/checked_mpz_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 424 "../../src/checked_mpz_inlines.hh" -2441: , false))) { -2441: return assign_nan(to, V_DIV_ZERO); -2441: } -2441: const mpz_srcptr n = x.get_mpz_t(); -2441: const mpz_srcptr d = y.get_mpz_t(); -2441: if (round_not_needed(dir)) { -2441: -2441: # 430 "../../src/checked_mpz_inlines.hh" 3 4 -2441: __gmpz_divexact -2441: # 430 "../../src/checked_mpz_inlines.hh" -2441: (to.get_mpz_t(), n, d); -2441: return V_LGE; -2441: } -2441: if (round_ignore(dir)) { -2441: -2441: # 434 "../../src/checked_mpz_inlines.hh" 3 4 -2441: __gmpz_cdiv_q -2441: # 434 "../../src/checked_mpz_inlines.hh" -2441: (to.get_mpz_t(), n, d); -2441: return V_LE; -2441: } -2441: if (round_down(dir)) { -2441: -2441: # 438 "../../src/checked_mpz_inlines.hh" 3 4 -2441: __gmpz_fdiv_q -2441: # 438 "../../src/checked_mpz_inlines.hh" -2441: (to.get_mpz_t(), n, d); -2441: if (round_strict_relation(dir)) { -2441: return ( -2441: # 440 "../../src/checked_mpz_inlines.hh" 3 4 -2441: __gmpz_divisible_p -2441: # 440 "../../src/checked_mpz_inlines.hh" -2441: (n, d) != 0) ? V_EQ : V_GT; -2441: } -2441: return V_GE; -2441: } -2441: else { -2441: ((void) 0); -2441: -2441: # 446 "../../src/checked_mpz_inlines.hh" 3 4 -2441: __gmpz_cdiv_q -2441: # 446 "../../src/checked_mpz_inlines.hh" -2441: (to.get_mpz_t(), n, d); -2441: if (round_strict_relation(dir)) { -2441: return ( -2441: # 448 "../../src/checked_mpz_inlines.hh" 3 4 -2441: __gmpz_divisible_p -2441: # 448 "../../src/checked_mpz_inlines.hh" -2441: (n, d) != 0) ? V_EQ : V_LT; -2441: } -2441: return V_LE; -2441: } -2441: } -2441: -2441: template struct div_function_struct { static inline Result function( mpz_class& arg1, const mpz_class &arg2, const mpz_class &arg3, Rounding_Dir a1) { return div_mpz(arg1, arg2, arg3, a1); } }; -2441: -2441: template -2441: inline Result -2441: idiv_mpz(mpz_class& to, const mpz_class& x, const mpz_class& y, -2441: Rounding_Dir) { -2441: if (((To_Policy::check_div_zero) ? (::sgn(y) == 0) : ( -2441: # 460 "../../src/checked_mpz_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 460 "../../src/checked_mpz_inlines.hh" -2441: , false))) { -2441: return assign_nan(to, V_DIV_ZERO); -2441: } -2441: mpz_srcptr n = x.get_mpz_t(); -2441: mpz_srcptr d = y.get_mpz_t(); -2441: -2441: # 465 "../../src/checked_mpz_inlines.hh" 3 4 -2441: __gmpz_tdiv_q -2441: # 465 "../../src/checked_mpz_inlines.hh" -2441: (to.get_mpz_t(), n, d); -2441: return V_EQ; -2441: } -2441: -2441: template struct idiv_function_struct { static inline Result function( mpz_class& arg1, const mpz_class &arg2, const mpz_class &arg3, Rounding_Dir a1) { return idiv_mpz(arg1, arg2, arg3, a1); } }; -2441: -2441: template -2441: inline Result -2441: rem_mpz(mpz_class& to, const mpz_class& x, const mpz_class& y, Rounding_Dir) { -2441: if (((To_Policy::check_div_zero) ? (::sgn(y) == 0) : ( -2441: # 474 "../../src/checked_mpz_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 474 "../../src/checked_mpz_inlines.hh" -2441: , false))) { -2441: return assign_nan(to, V_MOD_ZERO); -2441: } -2441: to = x % y; -2441: return V_EQ; -2441: } -2441: -2441: template struct rem_function_struct { static inline Result function( mpz_class& arg1, const mpz_class &arg2, const mpz_class &arg3, Rounding_Dir a1) { return rem_mpz(arg1, arg2, arg3, a1); } }; -2441: -2441: template -2441: inline Result -2441: add_2exp_mpz(mpz_class& to, const mpz_class& x, unsigned int exp, -2441: Rounding_Dir) { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_v; mpz_class& v = holder_v.item(); -2441: v = 1; -2441: -2441: # 489 "../../src/checked_mpz_inlines.hh" 3 4 -2441: __gmpz_mul_2exp -2441: # 489 "../../src/checked_mpz_inlines.hh" -2441: (v.get_mpz_t(), v.get_mpz_t(), exp); -2441: to = x + v; -2441: return V_EQ; -2441: } -2441: -2441: template struct add_2exp_function_struct { static inline Result function( mpz_class& arg1, const mpz_class &arg2, unsigned int a1, Rounding_Dir a2) { return add_2exp_mpz(arg1, arg2, a1, a2); } }; -2441: -2441: template -2441: inline Result -2441: sub_2exp_mpz(mpz_class& to, const mpz_class& x, unsigned int exp, -2441: Rounding_Dir) { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_v; mpz_class& v = holder_v.item(); -2441: v = 1; -2441: -2441: # 502 "../../src/checked_mpz_inlines.hh" 3 4 -2441: __gmpz_mul_2exp -2441: # 502 "../../src/checked_mpz_inlines.hh" -2441: (v.get_mpz_t(), v.get_mpz_t(), exp); -2441: to = x - v; -2441: return V_EQ; -2441: } -2441: -2441: template struct sub_2exp_function_struct { static inline Result function( mpz_class& arg1, const mpz_class &arg2, unsigned int a1, Rounding_Dir a2) { return sub_2exp_mpz(arg1, arg2, a1, a2); } }; -2441: -2441: template -2441: inline Result -2441: mul_2exp_mpz(mpz_class& to, const mpz_class& x, unsigned int exp, -2441: Rounding_Dir) { -2441: -2441: # 513 "../../src/checked_mpz_inlines.hh" 3 4 -2441: __gmpz_mul_2exp -2441: # 513 "../../src/checked_mpz_inlines.hh" -2441: (to.get_mpz_t(), x.get_mpz_t(), exp); -2441: return V_EQ; -2441: } -2441: -2441: template struct mul_2exp_function_struct { static inline Result function( mpz_class& arg1, const mpz_class &arg2, unsigned int a1, Rounding_Dir a2) { return mul_2exp_mpz(arg1, arg2, a1, a2); } }; -2441: -2441: template -2441: inline Result -2441: div_2exp_mpz(mpz_class& to, const mpz_class& x, unsigned int exp, -2441: Rounding_Dir dir) { -2441: const mpz_srcptr n = x.get_mpz_t(); -2441: if (round_not_requested(dir)) { -2441: -2441: # 525 "../../src/checked_mpz_inlines.hh" 3 4 -2441: __gmpz_tdiv_q_2exp -2441: # 525 "../../src/checked_mpz_inlines.hh" -2441: (to.get_mpz_t(), x.get_mpz_t(), exp); -2441: return V_LGE; -2441: } -2441: if (round_down(dir)) { -2441: -2441: # 529 "../../src/checked_mpz_inlines.hh" 3 4 -2441: __gmpz_fdiv_q_2exp -2441: # 529 "../../src/checked_mpz_inlines.hh" -2441: (to.get_mpz_t(), n, exp); -2441: if (round_strict_relation(dir)) { -2441: return ( -2441: # 531 "../../src/checked_mpz_inlines.hh" 3 4 -2441: __gmpz_divisible_2exp_p -2441: # 531 "../../src/checked_mpz_inlines.hh" -2441: (n, exp) != 0) ? V_EQ : V_GT; -2441: } -2441: return V_GE; -2441: } -2441: else { -2441: ((void) 0); -2441: -2441: # 537 "../../src/checked_mpz_inlines.hh" 3 4 -2441: __gmpz_cdiv_q_2exp -2441: # 537 "../../src/checked_mpz_inlines.hh" -2441: (to.get_mpz_t(), n, exp); -2441: if (round_strict_relation(dir)) { -2441: return ( -2441: # 539 "../../src/checked_mpz_inlines.hh" 3 4 -2441: __gmpz_divisible_2exp_p -2441: # 539 "../../src/checked_mpz_inlines.hh" -2441: (n, exp) != 0) ? V_EQ : V_LT; -2441: } -2441: return V_LE; -2441: } -2441: } -2441: -2441: template struct div_2exp_function_struct { static inline Result function( mpz_class& arg1, const mpz_class &arg2, unsigned int a1, Rounding_Dir a2) { return div_2exp_mpz(arg1, arg2, a1, a2); } }; -2441: -2441: template -2441: inline Result -2441: smod_2exp_mpz(mpz_class& to, const mpz_class& x, unsigned int exp, -2441: Rounding_Dir) { -2441: if ( -2441: # 551 "../../src/checked_mpz_inlines.hh" 3 4 -2441: __gmpz_tstbit -2441: # 551 "../../src/checked_mpz_inlines.hh" -2441: (x.get_mpz_t(), exp - 1) != 0) { -2441: -2441: # 552 "../../src/checked_mpz_inlines.hh" 3 4 -2441: __gmpz_cdiv_r_2exp -2441: # 552 "../../src/checked_mpz_inlines.hh" -2441: (to.get_mpz_t(), x.get_mpz_t(), exp); -2441: } -2441: else { -2441: -2441: # 555 "../../src/checked_mpz_inlines.hh" 3 4 -2441: __gmpz_fdiv_r_2exp -2441: # 555 "../../src/checked_mpz_inlines.hh" -2441: (to.get_mpz_t(), x.get_mpz_t(), exp); -2441: } -2441: return V_EQ; -2441: } -2441: -2441: template struct smod_2exp_function_struct { static inline Result function( mpz_class& arg1, const mpz_class &arg2, unsigned int a1, Rounding_Dir a2) { return smod_2exp_mpz(arg1, arg2, a1, a2); } }; -2441: -2441: template -2441: inline Result -2441: umod_2exp_mpz(mpz_class& to, const mpz_class& x, unsigned int exp, -2441: Rounding_Dir) { -2441: -2441: # 566 "../../src/checked_mpz_inlines.hh" 3 4 -2441: __gmpz_fdiv_r_2exp -2441: # 566 "../../src/checked_mpz_inlines.hh" -2441: (to.get_mpz_t(), x.get_mpz_t(), exp); -2441: return V_EQ; -2441: } -2441: -2441: template struct umod_2exp_function_struct { static inline Result function( mpz_class& arg1, const mpz_class &arg2, unsigned int a1, Rounding_Dir a2) { return umod_2exp_mpz(arg1, arg2, a1, a2); } }; -2441: -2441: template -2441: inline Result -2441: abs_mpz(mpz_class& to, const mpz_class& from, Rounding_Dir) { -2441: to = abs(from); -2441: return V_EQ; -2441: } -2441: -2441: template struct abs_function_struct { static inline Result function( mpz_class& arg1, const mpz_class &arg2, Rounding_Dir a1) { return abs_mpz(arg1, arg2, a1); } }; -2441: -2441: template -2441: inline Result -2441: add_mul_mpz(mpz_class& to, const mpz_class& x, const mpz_class& y, -2441: Rounding_Dir) { -2441: -2441: # 585 "../../src/checked_mpz_inlines.hh" 3 4 -2441: __gmpz_addmul -2441: # 585 "../../src/checked_mpz_inlines.hh" -2441: (to.get_mpz_t(), x.get_mpz_t(), y.get_mpz_t()); -2441: return V_EQ; -2441: } -2441: -2441: template struct add_mul_function_struct { static inline Result function( mpz_class& arg1, const mpz_class &arg2, const mpz_class &arg3, Rounding_Dir a1) { return add_mul_mpz(arg1, arg2, arg3, a1); } }; -2441: -2441: template -2441: inline Result -2441: sub_mul_mpz(mpz_class& to, const mpz_class& x, const mpz_class& y, -2441: Rounding_Dir) { -2441: -2441: # 595 "../../src/checked_mpz_inlines.hh" 3 4 -2441: __gmpz_submul -2441: # 595 "../../src/checked_mpz_inlines.hh" -2441: (to.get_mpz_t(), x.get_mpz_t(), y.get_mpz_t()); -2441: return V_EQ; -2441: } -2441: -2441: template struct sub_mul_function_struct { static inline Result function( mpz_class& arg1, const mpz_class &arg2, const mpz_class &arg3, Rounding_Dir a1) { return sub_mul_mpz(arg1, arg2, arg3, a1); } }; -2441: -2441: template -2441: inline Result -2441: gcd_mpz(mpz_class& to, const mpz_class& x, const mpz_class& y, Rounding_Dir) { -2441: -2441: # 604 "../../src/checked_mpz_inlines.hh" 3 4 -2441: __gmpz_gcd -2441: # 604 "../../src/checked_mpz_inlines.hh" -2441: (to.get_mpz_t(), x.get_mpz_t(), y.get_mpz_t()); -2441: return V_EQ; -2441: } -2441: -2441: template struct gcd_function_struct { static inline Result function( mpz_class& arg1, const mpz_class &arg2, const mpz_class &arg3, Rounding_Dir a1) { return gcd_mpz(arg1, arg2, arg3, a1); } }; -2441: -2441: template -2441: inline Result -2441: gcdext_mpz(mpz_class& to, mpz_class& s, mpz_class& t, -2441: const mpz_class& x, const mpz_class& y, -2441: Rounding_Dir) { -2441: -2441: # 615 "../../src/checked_mpz_inlines.hh" 3 4 -2441: __gmpz_gcdext -2441: # 615 "../../src/checked_mpz_inlines.hh" -2441: (to.get_mpz_t(), s.get_mpz_t(), t.get_mpz_t(), -2441: x.get_mpz_t(), y.get_mpz_t()); -2441: return V_EQ; -2441: } -2441: -2441: template struct gcdext_function_struct { static inline Result function( mpz_class& arg1, mpz_class &arg2, mpz_class &arg3, const mpz_class &arg4, const mpz_class &arg5, Rounding_Dir a1) { return gcdext_mpz(arg1, arg2, arg3, arg4, arg5, a1); } }; -2441: -2441: template -2441: inline Result -2441: lcm_mpz(mpz_class& to, const mpz_class& x, const mpz_class& y, Rounding_Dir) { -2441: -2441: # 625 "../../src/checked_mpz_inlines.hh" 3 4 -2441: __gmpz_lcm -2441: # 625 "../../src/checked_mpz_inlines.hh" -2441: (to.get_mpz_t(), x.get_mpz_t(), y.get_mpz_t()); -2441: return V_EQ; -2441: } -2441: -2441: template struct lcm_function_struct { static inline Result function( mpz_class& arg1, const mpz_class &arg2, const mpz_class &arg3, Rounding_Dir a1) { return lcm_mpz(arg1, arg2, arg3, a1); } }; -2441: -2441: template -2441: inline Result -2441: sqrt_mpz(mpz_class& to, const mpz_class& from, Rounding_Dir dir) { -2441: if (((To_Policy::check_sqrt_neg) ? (from < 0) : ( -2441: # 634 "../../src/checked_mpz_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 634 "../../src/checked_mpz_inlines.hh" -2441: , false))) { -2441: return assign_nan(to, V_SQRT_NEG); -2441: } -2441: if (round_not_requested(dir)) { -2441: to = sqrt(from); -2441: return V_GE; -2441: } -2441: Parma_Polyhedra_Library::Dirty_Temp holder_r; mpz_class& r = holder_r.item(); -2441: -2441: # 642 "../../src/checked_mpz_inlines.hh" 3 4 -2441: __gmpz_sqrtrem -2441: # 642 "../../src/checked_mpz_inlines.hh" -2441: (to.get_mpz_t(), r.get_mpz_t(), from.get_mpz_t()); -2441: if (r == 0) { -2441: return V_EQ; -2441: } -2441: return round_gt_mpz(to, dir); -2441: } -2441: -2441: template struct sqrt_function_struct { static inline Result function( mpz_class& arg1, const mpz_class &arg2, Rounding_Dir a1) { return sqrt_mpz(arg1, arg2, a1); } }; -2441: -2441: template -2441: inline Result_Relation -2441: sgn_mp(const Type& x) { -2441: const int sign = ::sgn(x); -2441: return (sign > 0) ? VR_GT : ((sign < 0) ? VR_LT : VR_EQ); -2441: } -2441: -2441: template struct sgn_function_struct { static inline Result_Relation function(const mpz_class& arg) { return sgn_mp(arg); } }; -2441: template struct sgn_function_struct { static inline Result_Relation function(const mpq_class& arg) { return sgn_mp(arg); } }; -2441: -2441: template -2441: inline Result_Relation -2441: cmp_mp(const Type& x, const Type& y) { -2441: int i = ::cmp(x, y); -2441: return (i > 0) ? VR_GT : ((i < 0) ? VR_LT : VR_EQ); -2441: } -2441: -2441: template struct cmp_function_struct { static inline Result_Relation function(const mpz_class& arg1, const mpz_class &arg2) { return cmp_mp(arg1, arg2); } }; -2441: template struct cmp_function_struct { static inline Result_Relation function(const mpq_class& arg1, const mpq_class &arg2) { return cmp_mp(arg1, arg2); } }; -2441: -2441: template -2441: inline Result -2441: output_mpz(std::ostream& os, const mpz_class& from, const Numeric_Format&, -2441: Rounding_Dir) { -2441: os << from; -2441: return V_EQ; -2441: } -2441: -2441: template struct input_function_struct { static inline Result function( mpz_class& arg, std::istream& a1, Rounding_Dir a2) { return input_generic(arg, a1, a2); } }; -2441: template struct output_function_struct { static inline Result function(std::ostream& b1, const mpz_class& arg, const Numeric_Format& a1, Rounding_Dir a2) { return output_mpz(b1, arg, a1, a2); } }; -2441: -2441: } -2441: -2441: } -2441: # 704 "../../src/checked_defs.hh" 2 -2441: # 1 "../../src/checked_mpq_inlines.hh" 1 -2441: # 28 "../../src/checked_mpq_inlines.hh" -2441: # 1 "/usr/include/c++/8/climits" 1 3 -2441: # 39 "/usr/include/c++/8/climits" 3 -2441: -2441: # 40 "/usr/include/c++/8/climits" 3 -2441: -2441: -2441: # 1 "/usr/lib/gcc/i686-linux-gnu/8/include-fixed/limits.h" 1 3 4 -2441: # 43 "/usr/include/c++/8/climits" 2 3 -2441: # 29 "../../src/checked_mpq_inlines.hh" 2 -2441: -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: namespace Checked { -2441: -2441: template -2441: inline Result -2441: classify_mpq(const mpq_class& v, bool nan, bool inf, bool sign) { -2441: if ((Policy::has_nan || Policy::has_infinity) -2441: && ::sgn(v.get_den()) == 0) { -2441: int s = ::sgn(v.get_num()); -2441: if (Policy::has_nan && (nan || sign) && s == 0) { -2441: return V_NAN; -2441: } -2441: if (!inf && !sign) { -2441: return V_LGE; -2441: } -2441: if (Policy::has_infinity) { -2441: if (s < 0) { -2441: return inf ? V_EQ_MINUS_INFINITY : V_LT; -2441: } -2441: if (s > 0) { -2441: return inf ? V_EQ_PLUS_INFINITY : V_GT; -2441: } -2441: } -2441: } -2441: if (sign) { -2441: return static_cast(sgn(v)); -2441: } -2441: return V_LGE; -2441: } -2441: -2441: template struct classify_function_struct { static inline Result function(const mpq_class& arg, bool a1, bool a2, bool a3) { return classify_mpq(arg, a1, a2, a3); } }; -2441: -2441: template -2441: inline bool -2441: is_nan_mpq(const mpq_class& v) { -2441: return Policy::has_nan -2441: && ::sgn(v.get_den()) == 0 -2441: && ::sgn(v.get_num()) == 0; -2441: } -2441: -2441: template struct is_nan_function_struct { static inline bool function(const mpq_class& arg) { return is_nan_mpq(arg); } }; -2441: -2441: template -2441: inline bool -2441: is_minf_mpq(const mpq_class& v) { -2441: return Policy::has_infinity -2441: && ::sgn(v.get_den()) == 0 -2441: && ::sgn(v.get_num()) < 0; -2441: } -2441: -2441: template struct is_minf_function_struct { static inline bool function(const mpq_class& arg) { return is_minf_mpq(arg); } }; -2441: -2441: template -2441: inline bool -2441: is_pinf_mpq(const mpq_class& v) { -2441: return Policy::has_infinity -2441: && ::sgn(v.get_den()) == 0 -2441: && ::sgn(v.get_num()) > 0; -2441: } -2441: -2441: template struct is_pinf_function_struct { static inline bool function(const mpq_class& arg) { return is_pinf_mpq(arg); } }; -2441: -2441: template -2441: inline bool -2441: is_int_mpq(const mpq_class& v) { -2441: if ((Policy::has_infinity || Policy::has_nan) -2441: && ::sgn(v.get_den()) == 0) { -2441: return !(Policy::has_nan && ::sgn(v.get_num()) == 0); -2441: } -2441: else { -2441: return v.get_den() == 1; -2441: } -2441: } -2441: -2441: template struct is_int_function_struct { static inline bool function(const mpq_class& arg) { return is_int_mpq(arg); } }; -2441: -2441: template -2441: inline Result -2441: assign_special_mpq(mpq_class& v, Result_Class c, Rounding_Dir) { -2441: switch (c) { -2441: case VC_NAN: -2441: if (Policy::has_nan) { -2441: v.get_num() = 0; -2441: v.get_den() = 0; -2441: return V_NAN | V_UNREPRESENTABLE; -2441: } -2441: return V_NAN; -2441: case VC_MINUS_INFINITY: -2441: if (Policy::has_infinity) { -2441: v.get_num() = -1; -2441: v.get_den() = 0; -2441: return V_EQ_MINUS_INFINITY; -2441: } -2441: return V_EQ_MINUS_INFINITY | V_UNREPRESENTABLE; -2441: case VC_PLUS_INFINITY: -2441: if (Policy::has_infinity) { -2441: v.get_num() = 1; -2441: v.get_den() = 0; -2441: return V_EQ_PLUS_INFINITY; -2441: } -2441: return V_EQ_PLUS_INFINITY | V_UNREPRESENTABLE; -2441: default: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return V_NAN | V_UNREPRESENTABLE; -2441: } -2441: } -2441: -2441: template struct assign_special_function_struct { static inline Result function( mpq_class& arg, Result_Class a1, Rounding_Dir a2) { return assign_special_mpq(arg, a1, a2); } }; -2441: -2441: template struct copy_function_struct { static inline void function( mpq_class& arg1, const mpq_class &arg2) { return copy_generic(arg1, arg2); } }; -2441: -2441: template -2441: inline Result -2441: construct_mpq_base(mpq_class& to, const From& from, Rounding_Dir) { -2441: new(&to) mpq_class(from); -2441: return V_EQ; -2441: } -2441: -2441: template struct construct_function_struct { static inline Result function( mpq_class& arg1, const mpz_class &arg2, Rounding_Dir a1) { return construct_mpq_base(arg1, arg2, a1); } }; -2441: template struct construct_function_struct { static inline Result function( mpq_class& arg1, const char &arg2, Rounding_Dir a1) { return construct_mpq_base(arg1, arg2, a1); } }; -2441: template struct construct_function_struct { static inline Result function( mpq_class& arg1, const signed char &arg2, Rounding_Dir a1) { return construct_mpq_base(arg1, arg2, a1); } }; -2441: template struct construct_function_struct { static inline Result function( mpq_class& arg1, const signed short &arg2, Rounding_Dir a1) { return construct_mpq_base(arg1, arg2, a1); } }; -2441: template struct construct_function_struct { static inline Result function( mpq_class& arg1, const signed int &arg2, Rounding_Dir a1) { return construct_mpq_base(arg1, arg2, a1); } }; -2441: template struct construct_function_struct { static inline Result function( mpq_class& arg1, const signed long &arg2, Rounding_Dir a1) { return construct_mpq_base(arg1, arg2, a1); } }; -2441: template struct construct_function_struct { static inline Result function( mpq_class& arg1, const unsigned char &arg2, Rounding_Dir a1) { return construct_mpq_base(arg1, arg2, a1); } }; -2441: template struct construct_function_struct { static inline Result function( mpq_class& arg1, const unsigned short &arg2, Rounding_Dir a1) { return construct_mpq_base(arg1, arg2, a1); } }; -2441: template struct construct_function_struct { static inline Result function( mpq_class& arg1, const unsigned int &arg2, Rounding_Dir a1) { return construct_mpq_base(arg1, arg2, a1); } }; -2441: template struct construct_function_struct { static inline Result function( mpq_class& arg1, const unsigned long &arg2, Rounding_Dir a1) { return construct_mpq_base(arg1, arg2, a1); } }; -2441: -2441: template -2441: inline Result -2441: construct_mpq_float(mpq_class& to, const From& from, Rounding_Dir dir) { -2441: if (is_nan(from)) { -2441: return construct_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: else if (is_minf(from)) { -2441: return construct_special(to, VC_MINUS_INFINITY, dir); -2441: } -2441: else if (is_pinf(from)) { -2441: return construct_special(to, VC_PLUS_INFINITY, dir); -2441: } -2441: new(&to) mpq_class(from); -2441: return V_EQ; -2441: } -2441: -2441: template struct construct_function_struct { static inline Result function( mpq_class& arg1, const float &arg2, Rounding_Dir a1) { return construct_mpq_float(arg1, arg2, a1); } }; -2441: template struct construct_function_struct { static inline Result function( mpq_class& arg1, const double &arg2, Rounding_Dir a1) { return construct_mpq_float(arg1, arg2, a1); } }; -2441: -2441: template struct assign_function_struct { static inline Result function( mpq_class& arg1, const mpq_class &arg2, Rounding_Dir a1) { return assign_exact(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( mpq_class& arg1, const mpz_class &arg2, Rounding_Dir a1) { return assign_exact(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( mpq_class& arg1, const char &arg2, Rounding_Dir a1) { return assign_exact(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( mpq_class& arg1, const signed char &arg2, Rounding_Dir a1) { return assign_exact(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( mpq_class& arg1, const signed short &arg2, Rounding_Dir a1) { return assign_exact(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( mpq_class& arg1, const signed int &arg2, Rounding_Dir a1) { return assign_exact(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( mpq_class& arg1, const signed long &arg2, Rounding_Dir a1) { return assign_exact(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( mpq_class& arg1, const unsigned char &arg2, Rounding_Dir a1) { return assign_exact(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( mpq_class& arg1, const unsigned short &arg2, Rounding_Dir a1) { return assign_exact(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( mpq_class& arg1, const unsigned int &arg2, Rounding_Dir a1) { return assign_exact(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( mpq_class& arg1, const unsigned long &arg2, Rounding_Dir a1) { return assign_exact(arg1, arg2, a1); } }; -2441: -2441: template -2441: inline Result -2441: assign_mpq_float(mpq_class& to, const From& from, Rounding_Dir dir) { -2441: if (is_nan(from)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: else if (is_minf(from)) { -2441: return assign_special(to, VC_MINUS_INFINITY, dir); -2441: } -2441: else if (is_pinf(from)) { -2441: return assign_special(to, VC_PLUS_INFINITY, dir); -2441: } -2441: assign_mpq_numeric_float(to, from); -2441: return V_EQ; -2441: } -2441: -2441: template struct assign_function_struct { static inline Result function( mpq_class& arg1, const float &arg2, Rounding_Dir a1) { return assign_mpq_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( mpq_class& arg1, const double &arg2, Rounding_Dir a1) { return assign_mpq_float(arg1, arg2, a1); } }; -2441: template struct assign_function_struct { static inline Result function( mpq_class& arg1, const long double &arg2, Rounding_Dir a1) { return assign_mpq_float(arg1, arg2, a1); } }; -2441: -2441: template -2441: inline Result -2441: assign_mpq_signed_int(mpq_class& to, const From from, Rounding_Dir) { -2441: if (sizeof(From) <= sizeof(signed long)) { -2441: to = static_cast(from); -2441: } -2441: else { -2441: mpz_ptr m = to.get_num().get_mpz_t(); -2441: if (from >= 0) { -2441: -2441: # 221 "../../src/checked_mpq_inlines.hh" 3 4 -2441: __gmpz_import -2441: # 221 "../../src/checked_mpq_inlines.hh" -2441: (m, 1, 1, sizeof(From), 0, 0, &from); -2441: } -2441: else { -2441: From n = -from; -2441: -2441: # 225 "../../src/checked_mpq_inlines.hh" 3 4 -2441: __gmpz_import -2441: # 225 "../../src/checked_mpq_inlines.hh" -2441: (m, 1, 1, sizeof(From), 0, 0, &n); -2441: -2441: # 226 "../../src/checked_mpq_inlines.hh" 3 4 -2441: __gmpz_neg -2441: # 226 "../../src/checked_mpq_inlines.hh" -2441: (m, m); -2441: } -2441: to.get_den() = 1; -2441: } -2441: return V_EQ; -2441: } -2441: -2441: template struct assign_function_struct { static inline Result function( mpq_class& arg1, const signed long long &arg2, Rounding_Dir a1) { return assign_mpq_signed_int(arg1, arg2, a1); } }; -2441: -2441: template -2441: inline Result -2441: assign_mpq_unsigned_int(mpq_class& to, const From from, Rounding_Dir) { -2441: if (sizeof(From) <= sizeof(unsigned long)) { -2441: to = static_cast(from); -2441: } -2441: else { -2441: -2441: # 242 "../../src/checked_mpq_inlines.hh" 3 4 -2441: __gmpz_import -2441: # 242 "../../src/checked_mpq_inlines.hh" -2441: (to.get_num().get_mpz_t(), 1, 1, sizeof(From), 0, 0, &from); -2441: to.get_den() = 1; -2441: } -2441: return V_EQ; -2441: } -2441: -2441: template struct assign_function_struct { static inline Result function( mpq_class& arg1, const unsigned long long &arg2, Rounding_Dir a1) { return assign_mpq_unsigned_int(arg1, arg2, a1); } }; -2441: -2441: template -2441: inline Result -2441: floor_mpq(mpq_class& to, const mpq_class& from, Rounding_Dir) { -2441: -2441: # 253 "../../src/checked_mpq_inlines.hh" 3 4 -2441: __gmpz_fdiv_q -2441: # 253 "../../src/checked_mpq_inlines.hh" -2441: (to.get_num().get_mpz_t(), -2441: from.get_num().get_mpz_t(), from.get_den().get_mpz_t()); -2441: to.get_den() = 1; -2441: return V_EQ; -2441: } -2441: -2441: template struct floor_function_struct { static inline Result function( mpq_class& arg1, const mpq_class &arg2, Rounding_Dir a1) { return floor_mpq(arg1, arg2, a1); } }; -2441: -2441: template -2441: inline Result -2441: ceil_mpq(mpq_class& to, const mpq_class& from, Rounding_Dir) { -2441: -2441: # 264 "../../src/checked_mpq_inlines.hh" 3 4 -2441: __gmpz_cdiv_q -2441: # 264 "../../src/checked_mpq_inlines.hh" -2441: (to.get_num().get_mpz_t(), -2441: from.get_num().get_mpz_t(), from.get_den().get_mpz_t()); -2441: to.get_den() = 1; -2441: return V_EQ; -2441: } -2441: -2441: template struct ceil_function_struct { static inline Result function( mpq_class& arg1, const mpq_class &arg2, Rounding_Dir a1) { return ceil_mpq(arg1, arg2, a1); } }; -2441: -2441: template -2441: inline Result -2441: trunc_mpq(mpq_class& to, const mpq_class& from, Rounding_Dir) { -2441: -2441: # 275 "../../src/checked_mpq_inlines.hh" 3 4 -2441: __gmpz_tdiv_q -2441: # 275 "../../src/checked_mpq_inlines.hh" -2441: (to.get_num().get_mpz_t(), -2441: from.get_num().get_mpz_t(), from.get_den().get_mpz_t()); -2441: to.get_den() = 1; -2441: return V_EQ; -2441: } -2441: -2441: template struct trunc_function_struct { static inline Result function( mpq_class& arg1, const mpq_class &arg2, Rounding_Dir a1) { return trunc_mpq(arg1, arg2, a1); } }; -2441: -2441: template -2441: inline Result -2441: neg_mpq(mpq_class& to, const mpq_class& from, Rounding_Dir) { -2441: -2441: # 286 "../../src/checked_mpq_inlines.hh" 3 4 -2441: __gmpq_neg -2441: # 286 "../../src/checked_mpq_inlines.hh" -2441: (to.get_mpq_t(), from.get_mpq_t()); -2441: return V_EQ; -2441: } -2441: -2441: template struct neg_function_struct { static inline Result function( mpq_class& arg1, const mpq_class &arg2, Rounding_Dir a1) { return neg_mpq(arg1, arg2, a1); } }; -2441: -2441: template -2441: inline Result -2441: add_mpq(mpq_class& to, const mpq_class& x, const mpq_class& y, Rounding_Dir) { -2441: to = x + y; -2441: return V_EQ; -2441: } -2441: -2441: template struct add_function_struct { static inline Result function( mpq_class& arg1, const mpq_class &arg2, const mpq_class &arg3, Rounding_Dir a1) { return add_mpq(arg1, arg2, arg3, a1); } }; -2441: -2441: template -2441: inline Result -2441: sub_mpq(mpq_class& to, const mpq_class& x, const mpq_class& y, Rounding_Dir) { -2441: to = x - y; -2441: return V_EQ; -2441: } -2441: -2441: template struct sub_function_struct { static inline Result function( mpq_class& arg1, const mpq_class &arg2, const mpq_class &arg3, Rounding_Dir a1) { return sub_mpq(arg1, arg2, arg3, a1); } }; -2441: -2441: template -2441: inline Result -2441: mul_mpq(mpq_class& to, const mpq_class& x, const mpq_class& y, Rounding_Dir) { -2441: to = x * y; -2441: return V_EQ; -2441: } -2441: -2441: template struct mul_function_struct { static inline Result function( mpq_class& arg1, const mpq_class &arg2, const mpq_class &arg3, Rounding_Dir a1) { return mul_mpq(arg1, arg2, arg3, a1); } }; -2441: -2441: template -2441: inline Result -2441: div_mpq(mpq_class& to, const mpq_class& x, const mpq_class& y, Rounding_Dir) { -2441: if (((To_Policy::check_div_zero) ? (sgn(y) == 0) : ( -2441: # 322 "../../src/checked_mpq_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 322 "../../src/checked_mpq_inlines.hh" -2441: , false))) { -2441: return assign_nan(to, V_DIV_ZERO); -2441: } -2441: to = x / y; -2441: return V_EQ; -2441: } -2441: -2441: template struct div_function_struct { static inline Result function( mpq_class& arg1, const mpq_class &arg2, const mpq_class &arg3, Rounding_Dir a1) { return div_mpq(arg1, arg2, arg3, a1); } }; -2441: -2441: template -2441: inline Result -2441: idiv_mpq(mpq_class& to, const mpq_class& x, const mpq_class& y, Rounding_Dir dir) { -2441: if (((To_Policy::check_div_zero) ? (sgn(y) == 0) : ( -2441: # 334 "../../src/checked_mpq_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 334 "../../src/checked_mpq_inlines.hh" -2441: , false))) { -2441: return assign_nan(to, V_DIV_ZERO); -2441: } -2441: to = x / y; -2441: return trunc(to, to, dir); -2441: } -2441: -2441: template struct idiv_function_struct { static inline Result function( mpq_class& arg1, const mpq_class &arg2, const mpq_class &arg3, Rounding_Dir a1) { return idiv_mpq(arg1, arg2, arg3, a1); } }; -2441: -2441: template -2441: inline Result -2441: rem_mpq(mpq_class& to, const mpq_class& x, const mpq_class& y, Rounding_Dir) { -2441: if (((To_Policy::check_div_zero) ? (sgn(y) == 0) : ( -2441: # 346 "../../src/checked_mpq_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 346 "../../src/checked_mpq_inlines.hh" -2441: , false))) { -2441: return assign_nan(to, V_MOD_ZERO); -2441: } -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp; mpq_class& tmp = holder_tmp.item(); -2441: tmp = x / y; -2441: tmp.get_num() %= tmp.get_den(); -2441: to = tmp * y; -2441: return V_EQ; -2441: } -2441: -2441: template struct rem_function_struct { static inline Result function( mpq_class& arg1, const mpq_class &arg2, const mpq_class &arg3, Rounding_Dir a1) { return rem_mpq(arg1, arg2, arg3, a1); } }; -2441: -2441: template -2441: inline Result -2441: add_2exp_mpq(mpq_class& to, const mpq_class& x, unsigned int exp, -2441: Rounding_Dir) { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_v; mpz_class& v = holder_v.item(); -2441: v = 1; -2441: -2441: # 364 "../../src/checked_mpq_inlines.hh" 3 4 -2441: __gmpz_mul_2exp -2441: # 364 "../../src/checked_mpq_inlines.hh" -2441: (v.get_mpz_t(), v.get_mpz_t(), exp); -2441: to = x + v; -2441: return V_EQ; -2441: } -2441: -2441: template struct add_2exp_function_struct { static inline Result function( mpq_class& arg1, const mpq_class &arg2, unsigned int a1, Rounding_Dir a2) { return add_2exp_mpq(arg1, arg2, a1, a2); } }; -2441: -2441: template -2441: inline Result -2441: sub_2exp_mpq(mpq_class& to, const mpq_class& x, unsigned int exp, -2441: Rounding_Dir) { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_v; mpz_class& v = holder_v.item(); -2441: v = 1; -2441: -2441: # 377 "../../src/checked_mpq_inlines.hh" 3 4 -2441: __gmpz_mul_2exp -2441: # 377 "../../src/checked_mpq_inlines.hh" -2441: (v.get_mpz_t(), v.get_mpz_t(), exp); -2441: to = x - v; -2441: return V_EQ; -2441: } -2441: -2441: template struct sub_2exp_function_struct { static inline Result function( mpq_class& arg1, const mpq_class &arg2, unsigned int a1, Rounding_Dir a2) { return sub_2exp_mpq(arg1, arg2, a1, a2); } }; -2441: -2441: template -2441: inline Result -2441: mul_2exp_mpq(mpq_class& to, const mpq_class& x, unsigned int exp, -2441: Rounding_Dir) { -2441: -2441: # 388 "../../src/checked_mpq_inlines.hh" 3 4 -2441: __gmpz_mul_2exp -2441: # 388 "../../src/checked_mpq_inlines.hh" -2441: (to.get_num().get_mpz_t(), x.get_num().get_mpz_t(), exp); -2441: to.get_den() = x.get_den(); -2441: to.canonicalize(); -2441: return V_EQ; -2441: } -2441: -2441: template struct mul_2exp_function_struct { static inline Result function( mpq_class& arg1, const mpq_class &arg2, unsigned int a1, Rounding_Dir a2) { return mul_2exp_mpq(arg1, arg2, a1, a2); } }; -2441: -2441: template -2441: inline Result -2441: div_2exp_mpq(mpq_class& to, const mpq_class& x, unsigned int exp, -2441: Rounding_Dir) { -2441: to.get_num() = x.get_num(); -2441: -2441: # 401 "../../src/checked_mpq_inlines.hh" 3 4 -2441: __gmpz_mul_2exp -2441: # 401 "../../src/checked_mpq_inlines.hh" -2441: (to.get_den().get_mpz_t(), x.get_den().get_mpz_t(), exp); -2441: to.canonicalize(); -2441: return V_EQ; -2441: } -2441: -2441: template struct div_2exp_function_struct { static inline Result function( mpq_class& arg1, const mpq_class &arg2, unsigned int a1, Rounding_Dir a2) { return div_2exp_mpq(arg1, arg2, a1, a2); } }; -2441: -2441: template -2441: inline Result -2441: smod_2exp_mpq(mpq_class& to, const mpq_class& x, unsigned int exp, -2441: Rounding_Dir) { -2441: -2441: # 412 "../../src/checked_mpq_inlines.hh" 3 4 -2441: __gmpz_mul_2exp -2441: # 412 "../../src/checked_mpq_inlines.hh" -2441: (to.get_den().get_mpz_t(), x.get_den().get_mpz_t(), exp); -2441: -2441: # 413 "../../src/checked_mpq_inlines.hh" 3 4 -2441: __gmpz_fdiv_r -2441: # 413 "../../src/checked_mpq_inlines.hh" -2441: (to.get_num().get_mpz_t(), x.get_num().get_mpz_t(), to.get_den().get_mpz_t()); -2441: -2441: # 414 "../../src/checked_mpq_inlines.hh" 3 4 -2441: __gmpz_fdiv_q_2exp -2441: # 414 "../../src/checked_mpq_inlines.hh" -2441: (to.get_den().get_mpz_t(), to.get_den().get_mpz_t(), 1); -2441: bool neg = to.get_num() >= to.get_den(); -2441: -2441: # 416 "../../src/checked_mpq_inlines.hh" 3 4 -2441: __gmpz_mul_2exp -2441: # 416 "../../src/checked_mpq_inlines.hh" -2441: (to.get_den().get_mpz_t(), to.get_den().get_mpz_t(), 1); -2441: if (neg) { -2441: to.get_num() -= to.get_den(); -2441: } -2441: -2441: # 420 "../../src/checked_mpq_inlines.hh" 3 4 -2441: __gmpz_mul_2exp -2441: # 420 "../../src/checked_mpq_inlines.hh" -2441: (to.get_num().get_mpz_t(), to.get_num().get_mpz_t(), exp); -2441: to.canonicalize(); -2441: return V_EQ; -2441: } -2441: -2441: template struct smod_2exp_function_struct { static inline Result function( mpq_class& arg1, const mpq_class &arg2, unsigned int a1, Rounding_Dir a2) { return smod_2exp_mpq(arg1, arg2, a1, a2); } }; -2441: -2441: template -2441: inline Result -2441: umod_2exp_mpq(mpq_class& to, const mpq_class& x, unsigned int exp, -2441: Rounding_Dir) { -2441: -2441: # 431 "../../src/checked_mpq_inlines.hh" 3 4 -2441: __gmpz_mul_2exp -2441: # 431 "../../src/checked_mpq_inlines.hh" -2441: (to.get_den().get_mpz_t(), x.get_den().get_mpz_t(), exp); -2441: -2441: # 432 "../../src/checked_mpq_inlines.hh" 3 4 -2441: __gmpz_fdiv_r -2441: # 432 "../../src/checked_mpq_inlines.hh" -2441: (to.get_num().get_mpz_t(), x.get_num().get_mpz_t(), to.get_den().get_mpz_t()); -2441: -2441: # 433 "../../src/checked_mpq_inlines.hh" 3 4 -2441: __gmpz_mul_2exp -2441: # 433 "../../src/checked_mpq_inlines.hh" -2441: (to.get_num().get_mpz_t(), to.get_num().get_mpz_t(), exp); -2441: to.canonicalize(); -2441: return V_EQ; -2441: } -2441: -2441: template struct umod_2exp_function_struct { static inline Result function( mpq_class& arg1, const mpq_class &arg2, unsigned int a1, Rounding_Dir a2) { return umod_2exp_mpq(arg1, arg2, a1, a2); } }; -2441: -2441: template -2441: inline Result -2441: abs_mpq(mpq_class& to, const mpq_class& from, Rounding_Dir) { -2441: to = abs(from); -2441: return V_EQ; -2441: } -2441: -2441: template struct abs_function_struct { static inline Result function( mpq_class& arg1, const mpq_class &arg2, Rounding_Dir a1) { return abs_mpq(arg1, arg2, a1); } }; -2441: -2441: template -2441: inline Result -2441: add_mul_mpq(mpq_class& to, const mpq_class& x, const mpq_class& y, -2441: Rounding_Dir) { -2441: to += x * y; -2441: return V_EQ; -2441: } -2441: -2441: template struct add_mul_function_struct { static inline Result function( mpq_class& arg1, const mpq_class &arg2, const mpq_class &arg3, Rounding_Dir a1) { return add_mul_mpq(arg1, arg2, arg3, a1); } }; -2441: -2441: template -2441: inline Result -2441: sub_mul_mpq(mpq_class& to, const mpq_class& x, const mpq_class& y, -2441: Rounding_Dir) { -2441: to -= x * y; -2441: return V_EQ; -2441: } -2441: -2441: template struct sub_mul_function_struct { static inline Result function( mpq_class& arg1, const mpq_class &arg2, const mpq_class &arg3, Rounding_Dir a1) { return sub_mul_mpq(arg1, arg2, arg3, a1); } }; -2441: -2441: extern unsigned irrational_precision; -2441: -2441: template -2441: inline Result -2441: sqrt_mpq(mpq_class& to, const mpq_class& from, Rounding_Dir dir) { -2441: if (((To_Policy::check_sqrt_neg) ? (from < 0) : ( -2441: # 474 "../../src/checked_mpq_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 474 "../../src/checked_mpq_inlines.hh" -2441: , false))) { -2441: return assign_nan(to, V_SQRT_NEG); -2441: } -2441: if (from == 0) { -2441: to = 0; -2441: return V_EQ; -2441: } -2441: bool gt1 = from.get_num() > from.get_den(); -2441: const mpz_class& from_a = gt1 ? from.get_num() : from.get_den(); -2441: const mpz_class& from_b = gt1 ? from.get_den() : from.get_num(); -2441: mpz_class& to_a = gt1 ? to.get_num() : to.get_den(); -2441: mpz_class& to_b = gt1 ? to.get_den() : to.get_num(); -2441: Rounding_Dir rdir = gt1 ? dir : inverse(dir); -2441: mul_2exp(to_a, from_a, -2441: 2*irrational_precision, ROUND_IGNORE); -2441: Result r_div -2441: = div(to_a, to_a, from_b, rdir); -2441: Result r_sqrt = sqrt(to_a, to_a, rdir); -2441: to_b = 1; -2441: mul_2exp(to_b, to_b, -2441: irrational_precision, ROUND_IGNORE); -2441: to.canonicalize(); -2441: return (r_div != V_EQ) ? r_div : r_sqrt; -2441: } -2441: -2441: template struct sqrt_function_struct { static inline Result function( mpq_class& arg1, const mpq_class &arg2, Rounding_Dir a1) { return sqrt_mpq(arg1, arg2, a1); } }; -2441: -2441: template -2441: inline Result -2441: input_mpq(mpq_class& to, std::istream& is, Rounding_Dir dir) { -2441: Result r = input_mpq(to, is); -2441: Result_Class c = result_class(r); -2441: switch (c) { -2441: case VC_MINUS_INFINITY: -2441: case VC_PLUS_INFINITY: -2441: return assign_special(to, c, dir); -2441: case VC_NAN: -2441: return assign_nan(to, r); -2441: default: -2441: return r; -2441: } -2441: } -2441: -2441: template struct input_function_struct { static inline Result function( mpq_class& arg, std::istream& a1, Rounding_Dir a2) { return input_mpq(arg, a1, a2); } }; -2441: -2441: template -2441: inline Result -2441: output_mpq(std::ostream& os, -2441: const mpq_class& from, -2441: const Numeric_Format&, -2441: Rounding_Dir) { -2441: os << from; -2441: return V_EQ; -2441: } -2441: -2441: template struct output_function_struct { static inline Result function(std::ostream& b1, const mpq_class& arg, const Numeric_Format& a1, Rounding_Dir a2) { return output_mpq(b1, arg, a1, a2); } }; -2441: -2441: } -2441: -2441: -2441: inline unsigned -2441: irrational_precision() { -2441: return Checked::irrational_precision; -2441: } -2441: # 548 "../../src/checked_mpq_inlines.hh" -2441: inline void -2441: set_irrational_precision(const unsigned p) { -2441: if (p <= 0x7fffffff) { -2441: Checked::irrational_precision = p; -2441: } -2441: else { -2441: throw std::invalid_argument("PPL::set_irrational_precision(p)" -2441: " with p > INT_MAX"); -2441: } -2441: } -2441: -2441: } -2441: # 705 "../../src/checked_defs.hh" 2 -2441: # 1 "../../src/checked_ext_inlines.hh" 1 -2441: # 27 "../../src/checked_ext_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template struct FPU_Related : public False {}; -2441: template <> struct FPU_Related : public True {}; -2441: template <> struct FPU_Related : public True {}; -2441: template <> struct FPU_Related : public True {}; -2441: -2441: namespace Checked { -2441: -2441: template -2441: inline bool -2441: handle_ext_natively(const T&) { -2441: return FPU_Related::value; -2441: } -2441: -2441: template -2441: inline bool -2441: ext_to_handle(const Type& x) { -2441: return !handle_ext_natively(x) -2441: && (Policy::has_infinity || Policy::has_nan); -2441: } -2441: -2441: template -2441: inline Result_Relation -2441: sgn_ext(const Type& x) { -2441: if (!ext_to_handle(x)) { -2441: goto native; -2441: } -2441: if (is_nan(x)) { -2441: return VR_EMPTY; -2441: } -2441: else if (is_minf(x)) { -2441: return VR_LT; -2441: } -2441: else if (is_pinf(x)) { -2441: return VR_GT; -2441: } -2441: else { -2441: native: -2441: return sgn(x); -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: construct_ext(To& to, const From& x, Rounding_Dir dir) { -2441: if (!ext_to_handle(x)) { -2441: goto native; -2441: } -2441: if (is_nan(x)) { -2441: return construct_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: else if (is_minf(x)) { -2441: return construct_special(to, VC_MINUS_INFINITY, dir); -2441: } -2441: else if (is_pinf(x)) { -2441: return construct_special(to, VC_PLUS_INFINITY, dir); -2441: } -2441: else { -2441: native: -2441: return construct(to, x, dir); -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: assign_ext(To& to, const From& x, Rounding_Dir dir) { -2441: if (!ext_to_handle(x)) { -2441: goto native; -2441: } -2441: if (is_nan(x)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: else if (is_minf(x)) { -2441: return assign_special(to, VC_MINUS_INFINITY, dir); -2441: } -2441: else if (is_pinf(x)) { -2441: return assign_special(to, VC_PLUS_INFINITY, dir); -2441: } -2441: else { -2441: native: -2441: return assign(to, x, dir); -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: neg_ext(To& to, const From& x, Rounding_Dir dir) { -2441: if (!ext_to_handle(x)) { -2441: goto native; -2441: } -2441: if (is_nan(x)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: else if (is_minf(x)) { -2441: return assign_special(to, VC_PLUS_INFINITY, dir); -2441: } -2441: else if (is_pinf(x)) { -2441: return assign_special(to, VC_MINUS_INFINITY, dir); -2441: } -2441: else { -2441: native: -2441: return neg(to, x, dir); -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: floor_ext(To& to, const From& x, Rounding_Dir dir) { -2441: if (!ext_to_handle(x)) { -2441: goto native; -2441: } -2441: if (is_nan(x)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: else if (is_minf(x)) { -2441: return assign_special(to, VC_MINUS_INFINITY, dir); -2441: } -2441: else if (is_pinf(x)) { -2441: return assign_special(to, VC_PLUS_INFINITY, dir); -2441: } -2441: else { -2441: native: -2441: return floor(to, x, dir); -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: ceil_ext(To& to, const From& x, Rounding_Dir dir) { -2441: if (!ext_to_handle(x)) { -2441: goto native; -2441: } -2441: if (is_nan(x)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: else if (is_minf(x)) { -2441: return assign_special(to, VC_MINUS_INFINITY, dir); -2441: } -2441: else if (is_pinf(x)) { -2441: return assign_special(to, VC_PLUS_INFINITY, dir); -2441: } -2441: else { -2441: native: -2441: return ceil(to, x, dir); -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: trunc_ext(To& to, const From& x, Rounding_Dir dir) { -2441: if (!ext_to_handle(x)) { -2441: goto native; -2441: } -2441: if (is_nan(x)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: else if (is_minf(x)) { -2441: return assign_special(to, VC_MINUS_INFINITY, dir); -2441: } -2441: else if (is_pinf(x)) { -2441: return assign_special(to, VC_PLUS_INFINITY, dir); -2441: } -2441: else { -2441: native: -2441: return trunc(to, x, dir); -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: abs_ext(To& to, const From& x, Rounding_Dir dir) { -2441: if (!ext_to_handle(x)) { -2441: goto native; -2441: } -2441: if (is_nan(x)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: else if (is_minf(x) || is_pinf(x)) { -2441: return assign_special(to, VC_PLUS_INFINITY, dir); -2441: } -2441: else { -2441: native: -2441: return abs(to, x, dir); -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: add_ext(To& to, const From1& x, const From2& y, Rounding_Dir dir) { -2441: if (!ext_to_handle(x) && !ext_to_handle(y)) { -2441: goto native; -2441: } -2441: if (is_nan(x) || is_nan(y)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: else if (is_minf(x)) { -2441: if (((To_Policy::check_inf_add_inf) ? (is_pinf(y)) : ( -2441: # 232 "../../src/checked_ext_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 232 "../../src/checked_ext_inlines.hh" -2441: , false))) { -2441: goto inf_add_inf; -2441: } -2441: else { -2441: goto minf; -2441: } -2441: } -2441: else if (is_pinf(x)) { -2441: if (((To_Policy::check_inf_add_inf) ? (is_minf(y)) : ( -2441: # 240 "../../src/checked_ext_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 240 "../../src/checked_ext_inlines.hh" -2441: , false))) { -2441: inf_add_inf: -2441: return assign_nan(to, V_INF_ADD_INF); -2441: } -2441: else { -2441: goto pinf; -2441: } -2441: } -2441: else { -2441: if (is_minf(y)) { -2441: minf: -2441: return assign_special(to, VC_MINUS_INFINITY, dir); -2441: } -2441: else if (is_pinf(y)) { -2441: pinf: -2441: return assign_special(to, VC_PLUS_INFINITY, dir); -2441: } -2441: else { -2441: native: -2441: return add(to, x, y, dir); -2441: } -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: sub_ext(To& to, const From1& x, const From2& y, Rounding_Dir dir) { -2441: if (!ext_to_handle(x) && !ext_to_handle(y)) { -2441: goto native; -2441: } -2441: if (is_nan(x) || is_nan(y)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: else if (is_minf(x)) { -2441: if (((To_Policy::check_inf_sub_inf) ? (is_minf(y)) : ( -2441: # 275 "../../src/checked_ext_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 275 "../../src/checked_ext_inlines.hh" -2441: , false))) { -2441: goto inf_sub_inf; -2441: } -2441: else { -2441: goto minf; -2441: } -2441: } -2441: else if (is_pinf(x)) { -2441: if (((To_Policy::check_inf_sub_inf) ? (is_pinf(y)) : ( -2441: # 283 "../../src/checked_ext_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 283 "../../src/checked_ext_inlines.hh" -2441: , false))) { -2441: inf_sub_inf: -2441: return assign_nan(to, V_INF_SUB_INF); -2441: } -2441: else { -2441: goto pinf; -2441: } -2441: } -2441: else { -2441: if (is_pinf(y)) { -2441: minf: -2441: return assign_special(to, VC_MINUS_INFINITY, dir); -2441: } -2441: else if (is_minf(y)) { -2441: pinf: -2441: return assign_special(to, VC_PLUS_INFINITY, dir); -2441: } -2441: else { -2441: native: -2441: return sub(to, x, y, dir); -2441: } -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: mul_ext(To& to, const From1& x, const From2& y, Rounding_Dir dir) { -2441: if (!ext_to_handle(x) && !ext_to_handle(y)) { -2441: goto native; -2441: } -2441: if (is_nan(x) || is_nan(y)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: if (is_minf(x)) { -2441: switch (sgn_ext(y)) { -2441: case VR_LT: -2441: goto pinf; -2441: case VR_GT: -2441: goto minf; -2441: default: -2441: goto inf_mul_zero; -2441: } -2441: } -2441: else if (is_pinf(x)) { -2441: switch (sgn_ext(y)) { -2441: case VR_LT: -2441: goto minf; -2441: case VR_GT: -2441: goto pinf; -2441: default: -2441: goto inf_mul_zero; -2441: } -2441: } -2441: else { -2441: if (is_minf(y)) { -2441: switch (sgn(x)) { -2441: case VR_LT: -2441: goto pinf; -2441: case VR_GT: -2441: goto minf; -2441: default: -2441: goto inf_mul_zero; -2441: } -2441: } -2441: else if (is_pinf(y)) { -2441: switch (sgn(x)) { -2441: case VR_LT: -2441: minf: -2441: return assign_special(to, VC_MINUS_INFINITY, dir); -2441: case VR_GT: -2441: pinf: -2441: return assign_special(to, VC_PLUS_INFINITY, dir); -2441: default: -2441: inf_mul_zero: -2441: ((void) 0); -2441: return assign_nan(to, V_INF_MUL_ZERO); -2441: } -2441: } -2441: else { -2441: native: -2441: return mul(to, x, y, dir); -2441: } -2441: } -2441: } -2441: -2441: -2441: template -2441: inline Result -2441: add_mul_ext(To& to, const From1& x, const From2& y, Rounding_Dir dir) { -2441: if (!ext_to_handle(to) -2441: && !ext_to_handle(x) && !ext_to_handle(y)) { -2441: goto native; -2441: } -2441: if (is_nan(to) -2441: || is_nan(x) || is_nan(y)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: if (is_minf(x)) { -2441: switch (sgn_ext(y)) { -2441: case VR_LT: -2441: goto a_pinf; -2441: case VR_GT: -2441: goto a_minf; -2441: default: -2441: goto inf_mul_zero; -2441: } -2441: } -2441: else if (is_pinf(x)) { -2441: switch (sgn_ext(y)) { -2441: case VR_LT: -2441: goto a_minf; -2441: case VR_GT: -2441: goto a_pinf; -2441: default: -2441: goto inf_mul_zero; -2441: } -2441: } -2441: else { -2441: if (is_minf(y)) { -2441: switch (sgn(x)) { -2441: case VR_LT: -2441: goto a_pinf; -2441: case VR_GT: -2441: goto a_minf; -2441: default: -2441: goto inf_mul_zero; -2441: } -2441: } -2441: else if (is_pinf(y)) { -2441: switch (sgn(x)) { -2441: case VR_LT: -2441: a_minf: -2441: if (((To_Policy::check_inf_add_inf) ? (is_pinf(to)) : ( -2441: # 417 "../../src/checked_ext_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 417 "../../src/checked_ext_inlines.hh" -2441: , false))) { -2441: goto inf_add_inf; -2441: } -2441: else { -2441: goto minf; -2441: } -2441: case VR_GT: -2441: a_pinf: -2441: if (((To_Policy::check_inf_add_inf) ? (is_minf(to)) : ( -2441: # 425 "../../src/checked_ext_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 425 "../../src/checked_ext_inlines.hh" -2441: , false))) { -2441: inf_add_inf: -2441: return assign_nan(to, V_INF_ADD_INF); -2441: } -2441: else { -2441: goto pinf; -2441: } -2441: default: -2441: inf_mul_zero: -2441: ((void) 0); -2441: return assign_nan(to, V_INF_MUL_ZERO); -2441: } -2441: } -2441: else { -2441: if (is_minf(to)) { -2441: minf: -2441: return assign_special(to, VC_MINUS_INFINITY, dir); -2441: } -2441: if (is_pinf(to)) { -2441: pinf: -2441: return assign_special(to, VC_PLUS_INFINITY, dir); -2441: } -2441: native: -2441: return add_mul(to, x, y, dir); -2441: } -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: sub_mul_ext(To& to, const From1& x, const From2& y, Rounding_Dir dir) { -2441: if (!ext_to_handle(to) -2441: && !ext_to_handle(x) && !ext_to_handle(y)) { -2441: goto native; -2441: } -2441: if (is_nan(to) -2441: || is_nan(x) || is_nan(y)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: if (is_minf(x)) { -2441: switch (sgn_ext(y)) { -2441: case VR_LT: -2441: goto a_pinf; -2441: case VR_GT: -2441: goto a_minf; -2441: default: -2441: goto inf_mul_zero; -2441: } -2441: } -2441: else if (is_pinf(x)) { -2441: switch (sgn_ext(y)) { -2441: case VR_LT: -2441: goto a_minf; -2441: case VR_GT: -2441: goto a_pinf; -2441: default: -2441: goto inf_mul_zero; -2441: } -2441: } -2441: else { -2441: if (is_minf(y)) { -2441: switch (sgn(x)) { -2441: case VR_LT: -2441: goto a_pinf; -2441: case VR_GT: -2441: goto a_minf; -2441: default: -2441: goto inf_mul_zero; -2441: } -2441: } -2441: else if (is_pinf(y)) { -2441: switch (sgn(x)) { -2441: case VR_LT: -2441: a_minf: -2441: if (((To_Policy::check_inf_sub_inf) ? (is_minf(to)) : ( -2441: # 500 "../../src/checked_ext_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 500 "../../src/checked_ext_inlines.hh" -2441: , false))) { -2441: goto inf_sub_inf; -2441: } -2441: else { -2441: goto pinf; -2441: } -2441: case VR_GT: -2441: a_pinf: -2441: if (((To_Policy::check_inf_sub_inf) ? (is_pinf(to)) : ( -2441: # 508 "../../src/checked_ext_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 508 "../../src/checked_ext_inlines.hh" -2441: , false))) { -2441: inf_sub_inf: -2441: return assign_nan(to, V_INF_SUB_INF); -2441: } -2441: else { -2441: goto minf; -2441: } -2441: default: -2441: inf_mul_zero: -2441: ((void) 0); -2441: return assign_nan(to, V_INF_MUL_ZERO); -2441: } -2441: } -2441: else { -2441: if (is_minf(to)) { -2441: minf: -2441: return assign_special(to, VC_MINUS_INFINITY, dir); -2441: } -2441: if (is_pinf(to)) { -2441: pinf: -2441: return assign_special(to, VC_PLUS_INFINITY, dir); -2441: } -2441: native: -2441: return sub_mul(to, x, y, dir); -2441: } -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: div_ext(To& to, const From1& x, const From2& y, Rounding_Dir dir) { -2441: if (!ext_to_handle(x) && !ext_to_handle(y)) { -2441: goto native; -2441: } -2441: if (is_nan(x) || is_nan(y)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: if (is_minf(x)) { -2441: if (((To_Policy::check_inf_div_inf) ? (is_minf(y) || is_pinf(y)) : ( -2441: # 547 "../../src/checked_ext_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 547 "../../src/checked_ext_inlines.hh" -2441: , false)) -2441: ) { -2441: goto inf_div_inf; -2441: } -2441: else { -2441: switch (sgn(y)) { -2441: case VR_LT: -2441: goto pinf; -2441: case VR_GT: -2441: goto minf; -2441: default: -2441: goto div_zero; -2441: } -2441: } -2441: } -2441: else if (is_pinf(x)) { -2441: if (((To_Policy::check_inf_div_inf) ? (is_minf(y) || is_pinf(y)) : ( -2441: # 563 "../../src/checked_ext_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 563 "../../src/checked_ext_inlines.hh" -2441: , false)) -2441: ) { -2441: inf_div_inf: -2441: return assign_nan(to, V_INF_DIV_INF); -2441: } -2441: else { -2441: switch (sgn(y)) { -2441: case VR_LT: -2441: minf: -2441: return assign_special(to, VC_MINUS_INFINITY, dir); -2441: case VR_GT: -2441: pinf: -2441: return assign_special(to, VC_PLUS_INFINITY, dir); -2441: default: -2441: div_zero: -2441: ((void) 0); -2441: return assign_nan(to, V_DIV_ZERO); -2441: } -2441: } -2441: } -2441: else { -2441: if (is_minf(y) || is_pinf(y)) { -2441: to = 0; -2441: return V_EQ; -2441: } -2441: else { -2441: native: -2441: return div(to, x, y, dir); -2441: } -2441: } -2441: } -2441: -2441: -2441: template -2441: inline Result -2441: idiv_ext(To& to, const From1& x, const From2& y, Rounding_Dir dir) { -2441: if (!ext_to_handle(x) && !ext_to_handle(y)) { -2441: goto native; -2441: } -2441: if (is_nan(x) || is_nan(y)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: if (is_minf(x)) { -2441: if (((To_Policy::check_inf_div_inf) ? (is_minf(y) || is_pinf(y)) : ( -2441: # 607 "../../src/checked_ext_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 607 "../../src/checked_ext_inlines.hh" -2441: , false)) -2441: ) { -2441: goto inf_div_inf; -2441: } -2441: else { -2441: switch (sgn(y)) { -2441: case VR_LT: -2441: goto pinf; -2441: case VR_GT: -2441: goto minf; -2441: default: -2441: goto div_zero; -2441: } -2441: } -2441: } -2441: else if (is_pinf(x)) { -2441: if (((To_Policy::check_inf_div_inf) ? (is_minf(y) || is_pinf(y)) : ( -2441: # 623 "../../src/checked_ext_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 623 "../../src/checked_ext_inlines.hh" -2441: , false)) -2441: ) { -2441: inf_div_inf: -2441: return assign_nan(to, V_INF_DIV_INF); -2441: } -2441: else { -2441: switch (sgn(y)) { -2441: case VR_LT: -2441: minf: -2441: return assign_special(to, VC_MINUS_INFINITY, dir); -2441: case VR_GT: -2441: pinf: -2441: return assign_special(to, VC_PLUS_INFINITY, dir); -2441: default: -2441: div_zero: -2441: ((void) 0); -2441: return assign_nan(to, V_DIV_ZERO); -2441: } -2441: } -2441: } -2441: else { -2441: if (is_minf(y) || is_pinf(y)) { -2441: to = 0; -2441: return V_EQ; -2441: } -2441: else { -2441: native: -2441: return idiv(to, x, y, dir); -2441: } -2441: } -2441: } -2441: -2441: -2441: template -2441: inline Result -2441: rem_ext(To& to, const From1& x, const From2& y, Rounding_Dir dir) { -2441: if (!ext_to_handle(x) && !ext_to_handle(y)) { -2441: goto native; -2441: } -2441: if (is_nan(x) || is_nan(y)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: else if (((To_Policy::check_inf_mod) ? (is_minf(x) || is_pinf(x)) : ( -2441: # 666 "../../src/checked_ext_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 666 "../../src/checked_ext_inlines.hh" -2441: , false)) -2441: ) { -2441: return assign_nan(to, V_INF_MOD); -2441: } -2441: else { -2441: if (is_minf(y) || is_pinf(y)) { -2441: to = x; -2441: return V_EQ; -2441: } -2441: else { -2441: native: -2441: return rem(to, x, y, dir); -2441: } -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: add_2exp_ext(To& to, const From& x, unsigned int exp, Rounding_Dir dir) { -2441: if (!ext_to_handle(x)) { -2441: goto native; -2441: } -2441: if (is_nan(x)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: else if (is_minf(x)) { -2441: return assign_special(to, VC_MINUS_INFINITY, dir); -2441: } -2441: else if (is_pinf(x)) { -2441: return assign_special(to, VC_PLUS_INFINITY, dir); -2441: } -2441: else { -2441: native: -2441: return add_2exp(to, x, exp, dir); -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: sub_2exp_ext(To& to, const From& x, unsigned int exp, Rounding_Dir dir) { -2441: if (!ext_to_handle(x)) { -2441: goto native; -2441: } -2441: if (is_nan(x)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: else if (is_minf(x)) { -2441: return assign_special(to, VC_MINUS_INFINITY, dir); -2441: } -2441: else if (is_pinf(x)) { -2441: return assign_special(to, VC_PLUS_INFINITY, dir); -2441: } -2441: else { -2441: native: -2441: return sub_2exp(to, x, exp, dir); -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: mul_2exp_ext(To& to, const From& x, unsigned int exp, Rounding_Dir dir) { -2441: if (!ext_to_handle(x)) { -2441: goto native; -2441: } -2441: if (is_nan(x)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: else if (is_minf(x)) { -2441: return assign_special(to, VC_MINUS_INFINITY, dir); -2441: } -2441: else if (is_pinf(x)) { -2441: return assign_special(to, VC_PLUS_INFINITY, dir); -2441: } -2441: else { -2441: native: -2441: return mul_2exp(to, x, exp, dir); -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: div_2exp_ext(To& to, const From& x, unsigned int exp, Rounding_Dir dir) { -2441: if (!ext_to_handle(x)) { -2441: goto native; -2441: } -2441: if (is_nan(x)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: else if (is_minf(x)) { -2441: return assign_special(to, VC_MINUS_INFINITY, dir); -2441: } -2441: else if (is_pinf(x)) { -2441: return assign_special(to, VC_PLUS_INFINITY, dir); -2441: } -2441: else { -2441: native: -2441: return div_2exp(to, x, exp, dir); -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: smod_2exp_ext(To& to, const From& x, unsigned int exp, Rounding_Dir dir) { -2441: if (!ext_to_handle(x)) { -2441: goto native; -2441: } -2441: if (is_nan(x)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: else if (((To_Policy::check_inf_mod) ? (is_minf(x) || is_pinf(x)) : ( -2441: # 780 "../../src/checked_ext_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 780 "../../src/checked_ext_inlines.hh" -2441: , false)) -2441: ) { -2441: return assign_nan(to, V_INF_MOD); -2441: } -2441: else { -2441: native: -2441: return smod_2exp(to, x, exp, dir); -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: umod_2exp_ext(To& to, const From& x, unsigned int exp, Rounding_Dir dir) { -2441: if (!ext_to_handle(x)) { -2441: goto native; -2441: } -2441: if (is_nan(x)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: else if (((To_Policy::check_inf_mod) ? (is_minf(x) || is_pinf(x)) : ( -2441: # 800 "../../src/checked_ext_inlines.hh" 3 4 -2441: (static_cast (0)) -2441: # 800 "../../src/checked_ext_inlines.hh" -2441: , false)) -2441: ) { -2441: return assign_nan(to, V_INF_MOD); -2441: } -2441: else { -2441: native: -2441: return umod_2exp(to, x, exp, dir); -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: sqrt_ext(To& to, const From& x, Rounding_Dir dir) { -2441: if (!ext_to_handle(x)) { -2441: goto native; -2441: } -2441: if (is_nan(x)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: else if (is_minf(x)) { -2441: return assign_nan(to, V_SQRT_NEG); -2441: } -2441: else if (is_pinf(x)) { -2441: return assign_special(to, VC_PLUS_INFINITY, dir); -2441: } -2441: else { -2441: native: -2441: return sqrt(to, x, dir); -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: gcd_ext(To& to, const From1& x, const From2& y, Rounding_Dir dir) { -2441: if (is_nan(x) || is_nan(y)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: else if (is_minf(x) || is_pinf(x)) { -2441: return abs_ext(to, y, dir); -2441: } -2441: else if (is_minf(y) || is_pinf(y)) { -2441: return abs_ext(to, x, dir); -2441: } -2441: else { -2441: return gcd(to, x, y, dir); -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: gcdext_ext(To1& to, To2& s, To3& t, const From1& x, const From2& y, -2441: Rounding_Dir dir) { -2441: if (is_nan(x) || is_nan(y)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: else if (is_minf(x) || is_pinf(x)) { -2441: s = 0; -2441: t = y > 0 ? -1 : 1; -2441: return abs_ext(to, y, dir); -2441: } -2441: else if (is_minf(y) || is_pinf(y)) { -2441: s = x > 0 ? -1 : 1; -2441: t = 0; -2441: return abs_ext(to, x, dir); -2441: } -2441: else { -2441: return gcdext(to, s, t, x, y, dir); -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: lcm_ext(To& to, const From1& x, const From2& y, Rounding_Dir dir) { -2441: if (is_nan(x) || is_nan(y)) { -2441: return assign_special(to, VC_NAN, ROUND_IGNORE); -2441: } -2441: else if (is_minf(x) || is_pinf(x) -2441: || is_minf(y) || is_pinf(y)) { -2441: return assign_special(to, VC_PLUS_INFINITY, dir); -2441: } -2441: else { -2441: return lcm(to, x, y, dir); -2441: } -2441: } -2441: -2441: template -2441: inline Result_Relation -2441: cmp_ext(const Type1& x, const Type2& y) { -2441: if (!ext_to_handle(x) && !ext_to_handle(y)) { -2441: goto native; -2441: } -2441: if (is_nan(x) || is_nan(y)) { -2441: return VR_EMPTY; -2441: } -2441: else if (is_minf(x)) { -2441: return is_minf(y) ? VR_EQ : VR_LT; -2441: } -2441: else if (is_pinf(x)) { -2441: return is_pinf(y) ? VR_EQ : VR_GT; -2441: } -2441: else { -2441: if (is_minf(y)) { -2441: return VR_GT; -2441: } -2441: if (is_pinf(y)) { -2441: return VR_LT; -2441: } -2441: native: -2441: return cmp(x, y); -2441: } -2441: } -2441: -2441: template -2441: inline bool -2441: lt_ext(const Type1& x, const Type2& y) { -2441: if (!ext_to_handle(x) && !ext_to_handle(y)) { -2441: goto native; -2441: } -2441: if (is_nan(x) || is_nan(y)) { -2441: return false; -2441: } -2441: if (is_pinf(x) || is_minf(y)) { -2441: return false; -2441: } -2441: if (is_minf(x) || is_pinf(y)) { -2441: return true; -2441: } -2441: native: -2441: return lt_p(x, y); -2441: } -2441: -2441: template -2441: inline bool -2441: gt_ext(const Type1& x, const Type2& y) { -2441: return lt_ext(y, x); -2441: } -2441: -2441: template -2441: inline bool -2441: le_ext(const Type1& x, const Type2& y) { -2441: if (!ext_to_handle(x) && !ext_to_handle(y)) { -2441: goto native; -2441: } -2441: if (is_nan(x) || is_nan(y)) { -2441: return false; -2441: } -2441: if (is_minf(x) || is_pinf(y)) { -2441: return true; -2441: } -2441: if (is_pinf(x) || is_minf(y)) { -2441: return false; -2441: } -2441: native: -2441: return le_p(x, y); -2441: } -2441: -2441: template -2441: inline bool -2441: ge_ext(const Type1& x, const Type2& y) { -2441: return le_ext(y, x); -2441: } -2441: -2441: template -2441: inline bool -2441: eq_ext(const Type1& x, const Type2& y) { -2441: if (!ext_to_handle(x) && !ext_to_handle(y)) { -2441: goto native; -2441: } -2441: if (is_nan(x) || is_nan(y)) { -2441: return false; -2441: } -2441: if (is_minf(x)) { -2441: return is_minf(y); -2441: } -2441: if (is_pinf(x)) { -2441: return is_pinf(y); -2441: } -2441: else if (is_minf(y) || is_pinf(y)) { -2441: return false; -2441: } -2441: native: -2441: return eq_p(x, y); -2441: } -2441: -2441: template -2441: inline bool -2441: ne_ext(const Type1& x, const Type2& y) { -2441: return !eq_ext(x, y); -2441: } -2441: -2441: template -2441: inline Result -2441: output_ext(std::ostream& os, const Type& x, -2441: const Numeric_Format& format, Rounding_Dir dir) { -2441: if (!ext_to_handle(x)) { -2441: goto native; -2441: } -2441: if (is_nan(x)) { -2441: os << "nan"; -2441: return V_NAN; -2441: } -2441: if (is_minf(x)) { -2441: os << "-inf"; -2441: return V_EQ; -2441: } -2441: if (is_pinf(x)) { -2441: os << "+inf"; -2441: return V_EQ; -2441: } -2441: native: -2441: return output(os, x, format, dir); -2441: } -2441: -2441: template -2441: inline Result -2441: input_ext(To& to, std::istream& is, Rounding_Dir dir) { -2441: return input(to, is, dir); -2441: } -2441: -2441: } -2441: -2441: } -2441: # 706 "../../src/checked_defs.hh" 2 -2441: # 29 "../../src/Checked_Number_defs.hh" 2 -2441: -2441: -2441: -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: -2441: struct Extended_Number_Policy { -2441: enum const_bool_value_check_overflow { check_overflow = (true) }; -2441: enum const_bool_value_check_inf_add_inf { check_inf_add_inf = (false) }; -2441: enum const_bool_value_check_inf_sub_inf { check_inf_sub_inf = (false) }; -2441: enum const_bool_value_check_inf_mul_zero { check_inf_mul_zero = (false) }; -2441: enum const_bool_value_check_div_zero { check_div_zero = (false) }; -2441: enum const_bool_value_check_inf_div_inf { check_inf_div_inf = (false) }; -2441: enum const_bool_value_check_inf_mod { check_inf_mod = (false) }; -2441: enum const_bool_value_check_sqrt_neg { check_sqrt_neg = (false) }; -2441: enum const_bool_value_has_nan { has_nan = (true) }; -2441: enum const_bool_value_has_infinity { has_infinity = (true) }; -2441: -2441: -2441: -2441: -2441: enum const_bool_value_fpu_check_inexact { fpu_check_inexact = (true) }; -2441: enum const_bool_value_fpu_check_nan_result { fpu_check_nan_result = (true) }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: static void handle_result(Result r); -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct Check_Overflow_Policy { -2441: enum const_bool_value_check_overflow { check_overflow = (true) }; -2441: enum const_bool_value_check_inf_add_inf { check_inf_add_inf = (false) }; -2441: enum const_bool_value_check_inf_sub_inf { check_inf_sub_inf = (false) }; -2441: enum const_bool_value_check_inf_mul_zero { check_inf_mul_zero = (false) }; -2441: enum const_bool_value_check_div_zero { check_div_zero = (false) }; -2441: enum const_bool_value_check_inf_div_inf { check_inf_div_inf = (false) }; -2441: enum const_bool_value_check_inf_mod { check_inf_mod = (false) }; -2441: enum const_bool_value_check_sqrt_neg { check_sqrt_neg = (false) }; -2441: enum const_bool_value_has_nan { has_nan = (std::numeric_limits::has_quiet_NaN) }; -2441: enum const_bool_value_has_infinity { has_infinity = (std::numeric_limits::has_infinity) }; -2441: enum const_bool_value_convertible { convertible = (true) }; -2441: enum const_bool_value_fpu_check_inexact { fpu_check_inexact = (true) }; -2441: enum const_bool_value_fpu_check_nan_result { fpu_check_nan_result = (true) }; -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: struct Native_Checked_From_Wrapper; -2441: -2441: -2441: -2441: -2441: template -2441: struct Native_Checked_From_Wrapper::value>::type> { -2441: typedef Checked_Number_Transparent_Policy Policy; -2441: static const T& raw_value(const T& v) { -2441: return v; -2441: } -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: struct Native_Checked_From_Wrapper > { -2441: typedef P Policy; -2441: static const T& raw_value(const Checked_Number& v) { -2441: return v.raw_value(); -2441: } -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: struct Native_Checked_To_Wrapper; -2441: -2441: -2441: -2441: -2441: template -2441: struct Native_Checked_To_Wrapper::value>::type> { -2441: typedef Check_Overflow_Policy Policy; -2441: static T& raw_value(T& v) { -2441: return v; -2441: } -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: struct Native_Checked_To_Wrapper > { -2441: typedef P Policy; -2441: static T& raw_value(Checked_Number& v) { -2441: return v.raw_value(); -2441: } -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: struct Is_Checked : public False { }; -2441: -2441: -2441: -2441: -2441: template -2441: struct Is_Checked > : public True { }; -2441: -2441: -2441: -2441: -2441: template -2441: struct Is_Native_Or_Checked -2441: : public Bool::value || Is_Checked::value> { }; -2441: # 169 "../../src/Checked_Number_defs.hh" -2441: template -2441: class Checked_Number { -2441: public: -2441: -2441: -2441: -2441: -2441: -2441: Checked_Number(); -2441: -2441: -2441: Checked_Number(const Checked_Number& y); -2441: -2441: -2441: template -2441: Checked_Number(const Checked_Number& y, Rounding_Dir dir); -2441: -2441: -2441: Checked_Number(char y, Rounding_Dir dir); -2441: -2441: -2441: Checked_Number(signed char y, Rounding_Dir dir); -2441: -2441: -2441: Checked_Number(signed short y, Rounding_Dir dir); -2441: -2441: -2441: Checked_Number(signed int y, Rounding_Dir dir); -2441: -2441: -2441: Checked_Number(signed long y, Rounding_Dir dir); -2441: -2441: -2441: Checked_Number(signed long long y, Rounding_Dir dir); -2441: -2441: -2441: Checked_Number(unsigned char y, Rounding_Dir dir); -2441: -2441: -2441: Checked_Number(unsigned short y, Rounding_Dir dir); -2441: -2441: -2441: Checked_Number(unsigned int y, Rounding_Dir dir); -2441: -2441: -2441: Checked_Number(unsigned long y, Rounding_Dir dir); -2441: -2441: -2441: Checked_Number(unsigned long long y, Rounding_Dir dir); -2441: -2441: -2441: -2441: Checked_Number(float y, Rounding_Dir dir); -2441: -2441: -2441: -2441: -2441: Checked_Number(double y, Rounding_Dir dir); -2441: -2441: -2441: -2441: -2441: Checked_Number(long double y, Rounding_Dir dir); -2441: -2441: -2441: -2441: Checked_Number(const mpq_class& y, Rounding_Dir dir); -2441: -2441: -2441: Checked_Number(const mpz_class& y, Rounding_Dir dir); -2441: -2441: -2441: Checked_Number(const char* y, Rounding_Dir dir); -2441: -2441: -2441: template -2441: Checked_Number(const From&, Rounding_Dir dir, -2441: typename Enable_If::value, bool>::type -2441: ignored = false); -2441: -2441: -2441: template -2441: explicit Checked_Number(const Checked_Number& y); -2441: -2441: -2441: Checked_Number(char y); -2441: -2441: -2441: Checked_Number(signed char y); -2441: -2441: -2441: Checked_Number(signed short y); -2441: -2441: -2441: Checked_Number(signed int y); -2441: -2441: -2441: Checked_Number(signed long y); -2441: -2441: -2441: Checked_Number(signed long long y); -2441: -2441: -2441: Checked_Number(unsigned char y); -2441: -2441: -2441: Checked_Number(unsigned short y); -2441: -2441: -2441: Checked_Number(unsigned int y); -2441: -2441: -2441: Checked_Number(unsigned long y); -2441: -2441: -2441: Checked_Number(unsigned long long y); -2441: -2441: -2441: Checked_Number(float y); -2441: -2441: -2441: Checked_Number(double y); -2441: -2441: -2441: Checked_Number(long double y); -2441: -2441: -2441: Checked_Number(const mpq_class& y); -2441: -2441: -2441: Checked_Number(const mpz_class& y); -2441: -2441: -2441: Checked_Number(const char* y); -2441: -2441: -2441: template -2441: Checked_Number(const From&, typename Enable_If::value, bool>::type ignored = false); -2441: # 315 "../../src/Checked_Number_defs.hh" -2441: operator T() const; -2441: -2441: -2441: T& raw_value(); -2441: -2441: -2441: const T& raw_value() const; -2441: -2441: -2441: -2441: -2441: bool OK() const; -2441: # 338 "../../src/Checked_Number_defs.hh" -2441: Result classify(bool nan = true, bool inf = true, bool sign = true) const; -2441: -2441: -2441: -2441: -2441: -2441: Checked_Number& operator=(const Checked_Number& y); -2441: -2441: -2441: template -2441: Checked_Number& operator=(const From& y); -2441: -2441: -2441: template -2441: Checked_Number& operator+=(const Checked_Number& y); -2441: -2441: -2441: Checked_Number& operator+=(const T& y); -2441: -2441: -2441: template -2441: typename Enable_If::value, -2441: Checked_Number&>::type -2441: operator+=(const From& y); -2441: -2441: -2441: template -2441: Checked_Number& operator-=(const Checked_Number& y); -2441: -2441: -2441: Checked_Number& operator-=(const T& y); -2441: -2441: -2441: template -2441: typename Enable_If::value, -2441: Checked_Number&>::type -2441: operator-=(const From& y); -2441: -2441: -2441: template -2441: Checked_Number& operator*=(const Checked_Number& y); -2441: -2441: -2441: Checked_Number& operator*=(const T& y); -2441: -2441: -2441: template -2441: typename Enable_If::value, -2441: Checked_Number&>::type -2441: operator*=(const From& y); -2441: -2441: -2441: template -2441: Checked_Number& operator/=(const Checked_Number& y); -2441: -2441: -2441: Checked_Number& operator/=(const T& y); -2441: -2441: -2441: template -2441: typename Enable_If::value, -2441: Checked_Number&>::type -2441: operator/=(const From& y); -2441: -2441: -2441: template -2441: Checked_Number& operator%=(const Checked_Number& y); -2441: -2441: -2441: Checked_Number& operator%=(const T& y); -2441: -2441: -2441: template -2441: typename Enable_If::value, -2441: Checked_Number& >::type -2441: operator%=(const From& y); -2441: # 422 "../../src/Checked_Number_defs.hh" -2441: Checked_Number& operator++(); -2441: -2441: -2441: Checked_Number operator++(int); -2441: -2441: -2441: Checked_Number& operator--(); -2441: -2441: -2441: Checked_Number operator--(int); -2441: -2441: -2441: -2441: private: -2441: -2441: T v; -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: struct Slow_Copy > : public Bool::value> {}; -2441: -2441: -2441: template -2441: typename Enable_If::value, bool>::type -2441: is_not_a_number(const T& x); -2441: -2441: -2441: template -2441: typename Enable_If::value, bool>::type -2441: is_minus_infinity(const T& x); -2441: -2441: -2441: template -2441: typename Enable_If::value, bool>::type -2441: is_plus_infinity(const T& x); -2441: -2441: -2441: template -2441: typename Enable_If::value, int>::type -2441: infinity_sign(const T& x); -2441: -2441: -2441: template -2441: typename Enable_If::value, bool>::type -2441: is_integer(const T& x); -2441: -2441: -2441: template -2441: typename Enable_If::value && Is_Special::value, Result>::type -2441: construct(To& to, const From& x, Rounding_Dir dir); -2441: -2441: -2441: template -2441: typename Enable_If::value && Is_Special::value, Result>::type -2441: assign_r(To& to, const From& x, Rounding_Dir dir); -2441: -2441: -2441: template -2441: typename Enable_If::value, Result>::type -2441: assign_r(To& to, const char* x, Rounding_Dir dir); -2441: -2441: -2441: template -2441: typename Enable_If::value, Result>::type -2441: assign_r(To& to, char* x, Rounding_Dir dir); -2441: # 498 "../../src/Checked_Number_defs.hh" -2441: template typename Enable_If::value && Is_Native_Or_Checked::value, Result>::type assign_r(To& to, const From& x, Rounding_Dir dir); -2441: template typename Enable_If::value && Is_Native_Or_Checked::value, Result>::type floor_assign_r(To& to, const From& x, Rounding_Dir dir); -2441: template typename Enable_If::value && Is_Native_Or_Checked::value, Result>::type ceil_assign_r(To& to, const From& x, Rounding_Dir dir); -2441: template typename Enable_If::value && Is_Native_Or_Checked::value, Result>::type trunc_assign_r(To& to, const From& x, Rounding_Dir dir); -2441: template typename Enable_If::value && Is_Native_Or_Checked::value, Result>::type neg_assign_r(To& to, const From& x, Rounding_Dir dir); -2441: template typename Enable_If::value && Is_Native_Or_Checked::value, Result>::type abs_assign_r(To& to, const From& x, Rounding_Dir dir); -2441: template typename Enable_If::value && Is_Native_Or_Checked::value, Result>::type sqrt_assign_r(To& to, const From& x, Rounding_Dir dir); -2441: # 515 "../../src/Checked_Number_defs.hh" -2441: template typename Enable_If::value && Is_Native_Or_Checked::value, Result>::type add_2exp_assign_r(To& to, const From& x, unsigned int exp, Rounding_Dir dir); -2441: template typename Enable_If::value && Is_Native_Or_Checked::value, Result>::type sub_2exp_assign_r(To& to, const From& x, unsigned int exp, Rounding_Dir dir); -2441: template typename Enable_If::value && Is_Native_Or_Checked::value, Result>::type mul_2exp_assign_r(To& to, const From& x, unsigned int exp, Rounding_Dir dir); -2441: template typename Enable_If::value && Is_Native_Or_Checked::value, Result>::type div_2exp_assign_r(To& to, const From& x, unsigned int exp, Rounding_Dir dir); -2441: template typename Enable_If::value && Is_Native_Or_Checked::value, Result>::type smod_2exp_assign_r(To& to, const From& x, unsigned int exp, Rounding_Dir dir); -2441: template typename Enable_If::value && Is_Native_Or_Checked::value, Result>::type umod_2exp_assign_r(To& to, const From& x, unsigned int exp, Rounding_Dir dir); -2441: # 532 "../../src/Checked_Number_defs.hh" -2441: template typename Enable_If::value && Is_Native_Or_Checked::value && Is_Native_Or_Checked::value, Result>::type add_assign_r(To& to, const From1& x, const From2& y, Rounding_Dir dir); -2441: template typename Enable_If::value && Is_Native_Or_Checked::value && Is_Native_Or_Checked::value, Result>::type sub_assign_r(To& to, const From1& x, const From2& y, Rounding_Dir dir); -2441: template typename Enable_If::value && Is_Native_Or_Checked::value && Is_Native_Or_Checked::value, Result>::type mul_assign_r(To& to, const From1& x, const From2& y, Rounding_Dir dir); -2441: template typename Enable_If::value && Is_Native_Or_Checked::value && Is_Native_Or_Checked::value, Result>::type div_assign_r(To& to, const From1& x, const From2& y, Rounding_Dir dir); -2441: template typename Enable_If::value && Is_Native_Or_Checked::value && Is_Native_Or_Checked::value, Result>::type idiv_assign_r(To& to, const From1& x, const From2& y, Rounding_Dir dir); -2441: template typename Enable_If::value && Is_Native_Or_Checked::value && Is_Native_Or_Checked::value, Result>::type rem_assign_r(To& to, const From1& x, const From2& y, Rounding_Dir dir); -2441: template typename Enable_If::value && Is_Native_Or_Checked::value && Is_Native_Or_Checked::value, Result>::type gcd_assign_r(To& to, const From1& x, const From2& y, Rounding_Dir dir); -2441: template typename Enable_If::value && Is_Native_Or_Checked::value && Is_Native_Or_Checked::value, Result>::type lcm_assign_r(To& to, const From1& x, const From2& y, Rounding_Dir dir); -2441: template typename Enable_If::value && Is_Native_Or_Checked::value && Is_Native_Or_Checked::value, Result>::type add_mul_assign_r(To& to, const From1& x, const From2& y, Rounding_Dir dir); -2441: template typename Enable_If::value && Is_Native_Or_Checked::value && Is_Native_Or_Checked::value, Result>::type sub_mul_assign_r(To& to, const From1& x, const From2& y, Rounding_Dir dir); -2441: # 558 "../../src/Checked_Number_defs.hh" -2441: template typename Enable_If::value && Is_Native_Or_Checked::value && Is_Native_Or_Checked::value && Is_Native_Or_Checked::value && Is_Native_Or_Checked::value, Result>::type gcdext_assign_r(To1& to, To2& s, To3& t, const From1& x, const From2& y, Rounding_Dir dir); -2441: # 572 "../../src/Checked_Number_defs.hh" -2441: template -2441: memory_size_type -2441: total_memory_in_bytes(const Checked_Number& x); -2441: -2441: -2441: -2441: template -2441: memory_size_type -2441: external_memory_in_bytes(const Checked_Number& x); -2441: # 589 "../../src/Checked_Number_defs.hh" -2441: template -2441: Checked_Number -2441: operator+(const Checked_Number& x); -2441: -2441: -2441: -2441: template -2441: Checked_Number -2441: operator-(const Checked_Number& x); -2441: -2441: -2441: -2441: template -2441: void -2441: floor_assign(Checked_Number& x); -2441: -2441: -2441: -2441: template -2441: void -2441: floor_assign(Checked_Number& x, const Checked_Number& y); -2441: -2441: -2441: -2441: template -2441: void -2441: ceil_assign(Checked_Number& x); -2441: -2441: -2441: -2441: template -2441: void -2441: ceil_assign(Checked_Number& x, const Checked_Number& y); -2441: -2441: -2441: -2441: template -2441: void -2441: trunc_assign(Checked_Number& x); -2441: -2441: -2441: -2441: template -2441: void -2441: trunc_assign(Checked_Number& x, const Checked_Number& y); -2441: -2441: -2441: -2441: template -2441: void -2441: neg_assign(Checked_Number& x); -2441: -2441: -2441: -2441: template -2441: void -2441: neg_assign(Checked_Number& x, const Checked_Number& y); -2441: -2441: -2441: -2441: template -2441: void -2441: abs_assign(Checked_Number& x); -2441: -2441: -2441: -2441: template -2441: void -2441: abs_assign(Checked_Number& x, const Checked_Number& y); -2441: -2441: -2441: -2441: template -2441: void -2441: add_mul_assign(Checked_Number& x, -2441: const Checked_Number& y, -2441: const Checked_Number& z); -2441: -2441: -2441: -2441: template -2441: void -2441: sub_mul_assign(Checked_Number& x, -2441: const Checked_Number& y, -2441: const Checked_Number& z); -2441: -2441: -2441: -2441: template -2441: void -2441: gcd_assign(Checked_Number& x, -2441: const Checked_Number& y, -2441: const Checked_Number& z); -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: void -2441: gcdext_assign(Checked_Number& x, -2441: Checked_Number& s, -2441: Checked_Number& t, -2441: const Checked_Number& y, -2441: const Checked_Number& z); -2441: -2441: -2441: -2441: template -2441: void -2441: lcm_assign(Checked_Number& x, -2441: const Checked_Number& y, -2441: const Checked_Number& z); -2441: -2441: -2441: -2441: template -2441: void -2441: mul_2exp_assign(Checked_Number& x, -2441: const Checked_Number& y, -2441: unsigned int exp); -2441: -2441: -2441: -2441: template -2441: void -2441: div_2exp_assign(Checked_Number& x, -2441: const Checked_Number& y, -2441: unsigned int exp); -2441: # 727 "../../src/Checked_Number_defs.hh" -2441: template -2441: void -2441: exact_div_assign(Checked_Number& x, -2441: const Checked_Number& y, -2441: const Checked_Number& z); -2441: -2441: -2441: -2441: template -2441: void sqrt_assign(Checked_Number& x, -2441: const Checked_Number& y); -2441: # 747 "../../src/Checked_Number_defs.hh" -2441: template -2441: inline -2441: typename Enable_If::value -2441: && Is_Native_Or_Checked::value -2441: && (Is_Checked::value || Is_Checked::value), -2441: bool>::type -2441: operator==(const T1& x, const T2& y); -2441: -2441: -2441: template -2441: inline typename Enable_If::value -2441: && Is_Native_Or_Checked::value, -2441: bool>::type -2441: equal(const T1& x, const T2& y); -2441: -2441: -2441: -2441: template -2441: inline -2441: typename Enable_If::value -2441: && Is_Native_Or_Checked::value -2441: && (Is_Checked::value || Is_Checked::value), -2441: bool>::type -2441: operator!=(const T1& x, const T2& y); -2441: -2441: -2441: template -2441: inline typename Enable_If::value -2441: && Is_Native_Or_Checked::value, -2441: bool>::type -2441: not_equal(const T1& x, const T2& y); -2441: -2441: -2441: -2441: template -2441: inline -2441: typename Enable_If::value -2441: && Is_Native_Or_Checked::value -2441: && (Is_Checked::value || Is_Checked::value), -2441: bool>::type -2441: operator>=(const T1& x, const T2& y); -2441: -2441: -2441: template -2441: inline typename Enable_If::value -2441: && Is_Native_Or_Checked::value, -2441: bool>::type -2441: greater_or_equal(const T1& x, const T2& y); -2441: -2441: -2441: -2441: template -2441: inline -2441: typename Enable_If::value -2441: && Is_Native_Or_Checked::value -2441: && (Is_Checked::value || Is_Checked::value), -2441: bool>::type -2441: operator>(const T1& x, const T2& y); -2441: -2441: -2441: template -2441: inline typename Enable_If::value -2441: && Is_Native_Or_Checked::value, -2441: bool>::type -2441: greater_than(const T1& x, const T2& y); -2441: -2441: -2441: -2441: template -2441: inline -2441: typename Enable_If::value -2441: && Is_Native_Or_Checked::value -2441: && (Is_Checked::value || Is_Checked::value), -2441: bool>::type -2441: operator<=(const T1& x, const T2& y); -2441: -2441: -2441: template -2441: inline typename Enable_If::value -2441: && Is_Native_Or_Checked::value, -2441: bool>::type -2441: less_or_equal(const T1& x, const T2& y); -2441: -2441: -2441: -2441: template -2441: inline -2441: typename Enable_If::value -2441: && Is_Native_Or_Checked::value -2441: && (Is_Checked::value || Is_Checked::value), -2441: bool>::type -2441: operator<(const T1& x, const T2& y); -2441: -2441: -2441: template -2441: inline typename Enable_If::value -2441: && Is_Native_Or_Checked::value, -2441: bool>::type -2441: less_than(const T1& x, const T2& y); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline typename Enable_If::value, int>::type -2441: sgn(const From& x); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline typename Enable_If::value -2441: && Is_Native_Or_Checked::value, -2441: int>::type -2441: cmp(const From1& x, const From2& y); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: typename Enable_If::value, Result>::type -2441: output(std::ostream& os, -2441: const T& x, -2441: const Numeric_Format& format, -2441: Rounding_Dir dir); -2441: -2441: -2441: -2441: template -2441: std::ostream& -2441: operator<<(std::ostream& os, const Checked_Number& x); -2441: -2441: -2441: -2441: template -2441: typename Enable_If::value, void>::type -2441: ascii_dump(std::ostream& s, const T& t); -2441: # 1019 "../../src/Checked_Number_defs.hh" -2441: template -2441: typename Enable_If::value, Result>::type -2441: input(T& x, std::istream& is, Rounding_Dir dir); -2441: -2441: -2441: -2441: template -2441: std::istream& -2441: operator>>(std::istream& is, Checked_Number& x); -2441: -2441: -2441: -2441: template -2441: typename Enable_If::value, bool>::type -2441: ascii_load(std::ostream& s, T& t); -2441: -2441: -2441: -2441: void throw_result_exception(Result r); -2441: -2441: template -2441: T -2441: plus_infinity(); -2441: -2441: template -2441: T -2441: minus_infinity(); -2441: -2441: template -2441: T -2441: not_a_number(); -2441: -2441: -2441: -2441: template -2441: void swap(Checked_Number& x, Checked_Number& y); -2441: -2441: template -2441: struct FPU_Related > : public FPU_Related {}; -2441: -2441: template -2441: void maybe_reset_fpu_inexact(); -2441: -2441: template -2441: int maybe_check_fpu_inexact(); -2441: -2441: } -2441: -2441: # 1 "../../src/Checked_Number_inlines.hh" 1 -2441: # 31 "../../src/Checked_Number_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: -2441: -2441: inline Rounding_Dir -2441: rounding_dir(Rounding_Dir dir) { -2441: if (dir == ROUND_NOT_NEEDED) { -2441: -2441: -2441: -2441: } -2441: return dir; -2441: } -2441: -2441: inline Result -2441: check_result(Result r, Rounding_Dir dir) { -2441: if (dir == ROUND_NOT_NEEDED) { -2441: -2441: -2441: -2441: return r; -2441: } -2441: return r; -2441: } -2441: -2441: -2441: template -2441: inline void -2441: Checked_Number_Transparent_Policy::handle_result(Result) { -2441: } -2441: -2441: inline void -2441: Extended_Number_Policy::handle_result(Result r) { -2441: if (result_class(r) == VC_NAN) { -2441: throw_result_exception(r); -2441: } -2441: } -2441: -2441: template -2441: inline -2441: Checked_Number::Checked_Number() -2441: : v(0) { -2441: } -2441: -2441: template -2441: inline -2441: Checked_Number::Checked_Number(const Checked_Number& y) { -2441: -2441: Checked::copy(v, y.raw_value()); -2441: } -2441: -2441: template -2441: template -2441: inline -2441: Checked_Number -2441: ::Checked_Number(const Checked_Number& y, -2441: Rounding_Dir dir) { -2441: -2441: Policy::handle_result(check_result(Checked::assign_ext -2441: (v, -2441: y.raw_value(), -2441: rounding_dir(dir)), -2441: dir) -2441: ); -2441: } -2441: -2441: template -2441: template -2441: inline -2441: Checked_Number -2441: ::Checked_Number(const Checked_Number& y) { -2441: -2441: Rounding_Dir dir = Policy::ROUND_DEFAULT_CONSTRUCTOR; -2441: Policy::handle_result(check_result(Checked::assign_ext -2441: (v, -2441: y.raw_value(), -2441: rounding_dir(dir)), -2441: dir)); -2441: } -2441: # 133 "../../src/Checked_Number_inlines.hh" -2441: template inline Checked_Number::Checked_Number(const char y, Rounding_Dir dir) { Policy::handle_result(check_result(Checked::assign_ext > (v, y, rounding_dir(dir)), dir)); } template inline Checked_Number::Checked_Number(const char y) { Rounding_Dir dir = Policy::ROUND_DEFAULT_CONSTRUCTOR; Policy::handle_result(check_result(Checked::assign_ext > (v, y, rounding_dir(dir)), dir)); } -2441: template inline Checked_Number::Checked_Number(const signed char y, Rounding_Dir dir) { Policy::handle_result(check_result(Checked::assign_ext > (v, y, rounding_dir(dir)), dir)); } template inline Checked_Number::Checked_Number(const signed char y) { Rounding_Dir dir = Policy::ROUND_DEFAULT_CONSTRUCTOR; Policy::handle_result(check_result(Checked::assign_ext > (v, y, rounding_dir(dir)), dir)); } -2441: template inline Checked_Number::Checked_Number(const signed short y, Rounding_Dir dir) { Policy::handle_result(check_result(Checked::assign_ext > (v, y, rounding_dir(dir)), dir)); } template inline Checked_Number::Checked_Number(const signed short y) { Rounding_Dir dir = Policy::ROUND_DEFAULT_CONSTRUCTOR; Policy::handle_result(check_result(Checked::assign_ext > (v, y, rounding_dir(dir)), dir)); } -2441: template inline Checked_Number::Checked_Number(const signed int y, Rounding_Dir dir) { Policy::handle_result(check_result(Checked::assign_ext > (v, y, rounding_dir(dir)), dir)); } template inline Checked_Number::Checked_Number(const signed int y) { Rounding_Dir dir = Policy::ROUND_DEFAULT_CONSTRUCTOR; Policy::handle_result(check_result(Checked::assign_ext > (v, y, rounding_dir(dir)), dir)); } -2441: template inline Checked_Number::Checked_Number(const signed long y, Rounding_Dir dir) { Policy::handle_result(check_result(Checked::assign_ext > (v, y, rounding_dir(dir)), dir)); } template inline Checked_Number::Checked_Number(const signed long y) { Rounding_Dir dir = Policy::ROUND_DEFAULT_CONSTRUCTOR; Policy::handle_result(check_result(Checked::assign_ext > (v, y, rounding_dir(dir)), dir)); } -2441: template inline Checked_Number::Checked_Number(const signed long long y, Rounding_Dir dir) { Policy::handle_result(check_result(Checked::assign_ext > (v, y, rounding_dir(dir)), dir)); } template inline Checked_Number::Checked_Number(const signed long long y) { Rounding_Dir dir = Policy::ROUND_DEFAULT_CONSTRUCTOR; Policy::handle_result(check_result(Checked::assign_ext > (v, y, rounding_dir(dir)), dir)); } -2441: template inline Checked_Number::Checked_Number(const unsigned char y, Rounding_Dir dir) { Policy::handle_result(check_result(Checked::assign_ext > (v, y, rounding_dir(dir)), dir)); } template inline Checked_Number::Checked_Number(const unsigned char y) { Rounding_Dir dir = Policy::ROUND_DEFAULT_CONSTRUCTOR; Policy::handle_result(check_result(Checked::assign_ext > (v, y, rounding_dir(dir)), dir)); } -2441: template inline Checked_Number::Checked_Number(const unsigned short y, Rounding_Dir dir) { Policy::handle_result(check_result(Checked::assign_ext > (v, y, rounding_dir(dir)), dir)); } template inline Checked_Number::Checked_Number(const unsigned short y) { Rounding_Dir dir = Policy::ROUND_DEFAULT_CONSTRUCTOR; Policy::handle_result(check_result(Checked::assign_ext > (v, y, rounding_dir(dir)), dir)); } -2441: template inline Checked_Number::Checked_Number(const unsigned int y, Rounding_Dir dir) { Policy::handle_result(check_result(Checked::assign_ext > (v, y, rounding_dir(dir)), dir)); } template inline Checked_Number::Checked_Number(const unsigned int y) { Rounding_Dir dir = Policy::ROUND_DEFAULT_CONSTRUCTOR; Policy::handle_result(check_result(Checked::assign_ext > (v, y, rounding_dir(dir)), dir)); } -2441: template inline Checked_Number::Checked_Number(const unsigned long y, Rounding_Dir dir) { Policy::handle_result(check_result(Checked::assign_ext > (v, y, rounding_dir(dir)), dir)); } template inline Checked_Number::Checked_Number(const unsigned long y) { Rounding_Dir dir = Policy::ROUND_DEFAULT_CONSTRUCTOR; Policy::handle_result(check_result(Checked::assign_ext > (v, y, rounding_dir(dir)), dir)); } -2441: template inline Checked_Number::Checked_Number(const unsigned long long y, Rounding_Dir dir) { Policy::handle_result(check_result(Checked::assign_ext > (v, y, rounding_dir(dir)), dir)); } template inline Checked_Number::Checked_Number(const unsigned long long y) { Rounding_Dir dir = Policy::ROUND_DEFAULT_CONSTRUCTOR; Policy::handle_result(check_result(Checked::assign_ext > (v, y, rounding_dir(dir)), dir)); } -2441: -2441: template inline Checked_Number::Checked_Number(const float y, Rounding_Dir dir) { Policy::handle_result(check_result(Checked::assign_ext > (v, y, rounding_dir(dir)), dir)); } template inline Checked_Number::Checked_Number(const float y) { Rounding_Dir dir = Policy::ROUND_DEFAULT_CONSTRUCTOR; Policy::handle_result(check_result(Checked::assign_ext > (v, y, rounding_dir(dir)), dir)); } -2441: -2441: -2441: template inline Checked_Number::Checked_Number(const double y, Rounding_Dir dir) { Policy::handle_result(check_result(Checked::assign_ext > (v, y, rounding_dir(dir)), dir)); } template inline Checked_Number::Checked_Number(const double y) { Rounding_Dir dir = Policy::ROUND_DEFAULT_CONSTRUCTOR; Policy::handle_result(check_result(Checked::assign_ext > (v, y, rounding_dir(dir)), dir)); } -2441: -2441: -2441: template inline Checked_Number::Checked_Number(const long double y, Rounding_Dir dir) { Policy::handle_result(check_result(Checked::assign_ext > (v, y, rounding_dir(dir)), dir)); } template inline Checked_Number::Checked_Number(const long double y) { Rounding_Dir dir = Policy::ROUND_DEFAULT_CONSTRUCTOR; Policy::handle_result(check_result(Checked::assign_ext > (v, y, rounding_dir(dir)), dir)); } -2441: -2441: template inline Checked_Number::Checked_Number(const mpq_class& y, Rounding_Dir dir) { Policy::handle_result(check_result(Checked::assign_ext > (v, y, rounding_dir(dir)), dir)); } template inline Checked_Number::Checked_Number(const mpq_class& y) { Rounding_Dir dir = Policy::ROUND_DEFAULT_CONSTRUCTOR; Policy::handle_result(check_result(Checked::assign_ext > (v, y, rounding_dir(dir)), dir)); } -2441: template inline Checked_Number::Checked_Number(const mpz_class& y, Rounding_Dir dir) { Policy::handle_result(check_result(Checked::assign_ext > (v, y, rounding_dir(dir)), dir)); } template inline Checked_Number::Checked_Number(const mpz_class& y) { Rounding_Dir dir = Policy::ROUND_DEFAULT_CONSTRUCTOR; Policy::handle_result(check_result(Checked::assign_ext > (v, y, rounding_dir(dir)), dir)); } -2441: -2441: -2441: -2441: -2441: template -2441: inline -2441: Checked_Number::Checked_Number(const char* y, Rounding_Dir dir) { -2441: std::istringstream s(y); -2441: Policy::handle_result(check_result(Checked::input(v, -2441: s, -2441: rounding_dir(dir)), -2441: dir)); -2441: } -2441: -2441: template -2441: inline -2441: Checked_Number::Checked_Number(const char* y) { -2441: std::istringstream s(y); -2441: Rounding_Dir dir = Policy::ROUND_DEFAULT_CONSTRUCTOR; -2441: Policy::handle_result(check_result(Checked::input(v, -2441: s, -2441: rounding_dir(dir)), -2441: dir)); -2441: } -2441: -2441: template -2441: template -2441: inline -2441: Checked_Number -2441: ::Checked_Number(const From&, -2441: Rounding_Dir dir, -2441: typename Enable_If::value, bool>::type) { -2441: Policy::handle_result(check_result(Checked::assign_special(v, -2441: From::vclass, -2441: rounding_dir(dir)), -2441: dir)); -2441: } -2441: -2441: template -2441: template -2441: inline -2441: Checked_Number::Checked_Number(const From&, typename Enable_If::value, bool>::type) { -2441: Rounding_Dir dir = Policy::ROUND_DEFAULT_CONSTRUCTOR; -2441: Policy::handle_result(check_result(Checked::assign_special(v, -2441: From::vclass, -2441: rounding_dir(dir)), -2441: dir)); -2441: } -2441: -2441: template -2441: inline typename Enable_If::value -2441: && Is_Special::value, Result>::type -2441: assign_r(To& to, const From&, Rounding_Dir dir) { -2441: return check_result(Checked::assign_special -2441: ::Policy>(Native_Checked_To_Wrapper::raw_value(to), -2441: From::vclass, -2441: rounding_dir(dir)), -2441: dir); -2441: } -2441: -2441: template -2441: inline typename Enable_If::value && Is_Special::value, Result>::type -2441: construct(To& to, const From&, Rounding_Dir dir) { -2441: return check_result(Checked::construct_special -2441: ::Policy>(Native_Checked_To_Wrapper::raw_value(to), -2441: From::vclass, -2441: rounding_dir(dir)), -2441: dir); -2441: } -2441: -2441: template -2441: inline typename Enable_If::value, bool>::type -2441: is_minus_infinity(const T& x) { -2441: return Checked::is_minf -2441: ::Policy>(Native_Checked_From_Wrapper::raw_value(x)); -2441: } -2441: -2441: template -2441: inline typename Enable_If::value, bool>::type -2441: is_plus_infinity(const T& x) { -2441: return Checked::is_pinf -2441: ::Policy>(Native_Checked_From_Wrapper::raw_value(x)); -2441: } -2441: -2441: template -2441: inline typename Enable_If::value, int>::type -2441: infinity_sign(const T& x) { -2441: return is_minus_infinity(x) ? -1 : (is_plus_infinity(x) ? 1 : 0); -2441: } -2441: -2441: template -2441: inline typename Enable_If::value, bool>::type -2441: is_not_a_number(const T& x) { -2441: return Checked::is_nan -2441: ::Policy>(Native_Checked_From_Wrapper::raw_value(x)); -2441: } -2441: -2441: template -2441: inline typename Enable_If::value, bool>::type -2441: is_integer(const T& x) { -2441: return Checked::is_int -2441: ::Policy>(Native_Checked_From_Wrapper::raw_value(x)); -2441: } -2441: -2441: template -2441: inline -2441: Checked_Number::operator T() const { -2441: if (Policy::convertible) { -2441: return v; -2441: } -2441: } -2441: -2441: template -2441: inline T& -2441: Checked_Number::raw_value() { -2441: return v; -2441: } -2441: -2441: template -2441: inline const T& -2441: Checked_Number::raw_value() const { -2441: return v; -2441: } -2441: -2441: -2441: template -2441: inline const T& -2441: raw_value(const Checked_Number& x) { -2441: return x.raw_value(); -2441: } -2441: -2441: -2441: template -2441: inline T& -2441: raw_value(Checked_Number& x) { -2441: return x.raw_value(); -2441: } -2441: -2441: template -2441: inline bool -2441: Checked_Number::OK() const { -2441: return true; -2441: } -2441: -2441: template -2441: inline Result -2441: Checked_Number::classify(bool nan, bool inf, bool sign) const { -2441: return Checked::classify(v, nan, inf, sign); -2441: } -2441: -2441: template -2441: inline bool -2441: is_not_a_number(const Checked_Number& x) { -2441: return Checked::is_nan(x.raw_value()); -2441: } -2441: -2441: template -2441: inline bool -2441: is_minus_infinity(const Checked_Number& x) { -2441: return Checked::is_minf(x.raw_value()); -2441: } -2441: -2441: template -2441: inline bool -2441: is_plus_infinity(const Checked_Number& x) { -2441: return Checked::is_pinf(x.raw_value()); -2441: } -2441: -2441: -2441: template -2441: inline memory_size_type -2441: total_memory_in_bytes(const Checked_Number& x) { -2441: return total_memory_in_bytes(x.raw_value()); -2441: } -2441: -2441: -2441: template -2441: inline memory_size_type -2441: external_memory_in_bytes(const Checked_Number& x) { -2441: return external_memory_in_bytes(x.raw_value()); -2441: } -2441: -2441: -2441: -2441: template -2441: inline typename Enable_If::value, Result>::type -2441: assign_r(To& to, const char* x, Rounding_Dir dir) { -2441: std::istringstream s(x); -2441: return check_result(Checked::input -2441: ::Policy>(Native_Checked_To_Wrapper::raw_value(to), -2441: s, -2441: rounding_dir(dir)), -2441: dir); -2441: } -2441: # 365 "../../src/Checked_Number_inlines.hh" -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value, Result>::type construct(To& to, const From& x, Rounding_Dir dir) { return check_result(Checked::construct_ext ::Policy, typename Native_Checked_From_Wrapper ::Policy>(Native_Checked_To_Wrapper::raw_value(to), Native_Checked_From_Wrapper::raw_value(x), rounding_dir(dir)), dir); } -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value, Result>::type assign_r(To& to, const From& x, Rounding_Dir dir) { return check_result(Checked::assign_ext ::Policy, typename Native_Checked_From_Wrapper ::Policy>(Native_Checked_To_Wrapper::raw_value(to), Native_Checked_From_Wrapper::raw_value(x), rounding_dir(dir)), dir); } -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value, Result>::type floor_assign_r(To& to, const From& x, Rounding_Dir dir) { return check_result(Checked::floor_ext ::Policy, typename Native_Checked_From_Wrapper ::Policy>(Native_Checked_To_Wrapper::raw_value(to), Native_Checked_From_Wrapper::raw_value(x), rounding_dir(dir)), dir); } -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value, Result>::type ceil_assign_r(To& to, const From& x, Rounding_Dir dir) { return check_result(Checked::ceil_ext ::Policy, typename Native_Checked_From_Wrapper ::Policy>(Native_Checked_To_Wrapper::raw_value(to), Native_Checked_From_Wrapper::raw_value(x), rounding_dir(dir)), dir); } -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value, Result>::type trunc_assign_r(To& to, const From& x, Rounding_Dir dir) { return check_result(Checked::trunc_ext ::Policy, typename Native_Checked_From_Wrapper ::Policy>(Native_Checked_To_Wrapper::raw_value(to), Native_Checked_From_Wrapper::raw_value(x), rounding_dir(dir)), dir); } -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value, Result>::type neg_assign_r(To& to, const From& x, Rounding_Dir dir) { return check_result(Checked::neg_ext ::Policy, typename Native_Checked_From_Wrapper ::Policy>(Native_Checked_To_Wrapper::raw_value(to), Native_Checked_From_Wrapper::raw_value(x), rounding_dir(dir)), dir); } -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value, Result>::type abs_assign_r(To& to, const From& x, Rounding_Dir dir) { return check_result(Checked::abs_ext ::Policy, typename Native_Checked_From_Wrapper ::Policy>(Native_Checked_To_Wrapper::raw_value(to), Native_Checked_From_Wrapper::raw_value(x), rounding_dir(dir)), dir); } -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value, Result>::type sqrt_assign_r(To& to, const From& x, Rounding_Dir dir) { return check_result(Checked::sqrt_ext ::Policy, typename Native_Checked_From_Wrapper ::Policy>(Native_Checked_To_Wrapper::raw_value(to), Native_Checked_From_Wrapper::raw_value(x), rounding_dir(dir)), dir); } -2441: # 393 "../../src/Checked_Number_inlines.hh" -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value, Result>::type add_2exp_assign_r(To& to, const From& x, unsigned int exp, Rounding_Dir dir) { return check_result(Checked::add_2exp_ext ::Policy, typename Native_Checked_From_Wrapper ::Policy>(Native_Checked_To_Wrapper::raw_value(to), Native_Checked_From_Wrapper::raw_value(x), exp, rounding_dir(dir)), dir); } -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value, Result>::type sub_2exp_assign_r(To& to, const From& x, unsigned int exp, Rounding_Dir dir) { return check_result(Checked::sub_2exp_ext ::Policy, typename Native_Checked_From_Wrapper ::Policy>(Native_Checked_To_Wrapper::raw_value(to), Native_Checked_From_Wrapper::raw_value(x), exp, rounding_dir(dir)), dir); } -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value, Result>::type mul_2exp_assign_r(To& to, const From& x, unsigned int exp, Rounding_Dir dir) { return check_result(Checked::mul_2exp_ext ::Policy, typename Native_Checked_From_Wrapper ::Policy>(Native_Checked_To_Wrapper::raw_value(to), Native_Checked_From_Wrapper::raw_value(x), exp, rounding_dir(dir)), dir); } -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value, Result>::type div_2exp_assign_r(To& to, const From& x, unsigned int exp, Rounding_Dir dir) { return check_result(Checked::div_2exp_ext ::Policy, typename Native_Checked_From_Wrapper ::Policy>(Native_Checked_To_Wrapper::raw_value(to), Native_Checked_From_Wrapper::raw_value(x), exp, rounding_dir(dir)), dir); } -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value, Result>::type smod_2exp_assign_r(To& to, const From& x, unsigned int exp, Rounding_Dir dir) { return check_result(Checked::smod_2exp_ext ::Policy, typename Native_Checked_From_Wrapper ::Policy>(Native_Checked_To_Wrapper::raw_value(to), Native_Checked_From_Wrapper::raw_value(x), exp, rounding_dir(dir)), dir); } -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value, Result>::type umod_2exp_assign_r(To& to, const From& x, unsigned int exp, Rounding_Dir dir) { return check_result(Checked::umod_2exp_ext ::Policy, typename Native_Checked_From_Wrapper ::Policy>(Native_Checked_To_Wrapper::raw_value(to), Native_Checked_From_Wrapper::raw_value(x), exp, rounding_dir(dir)), dir); } -2441: # 422 "../../src/Checked_Number_inlines.hh" -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value && Is_Native_Or_Checked::value, Result>::type add_assign_r(To& to, const From1& x, const From2& y, Rounding_Dir dir) { return check_result(Checked::add_ext ::Policy, typename Native_Checked_From_Wrapper ::Policy, typename Native_Checked_From_Wrapper ::Policy>(Native_Checked_To_Wrapper::raw_value(to), Native_Checked_From_Wrapper::raw_value(x), Native_Checked_From_Wrapper::raw_value(y), rounding_dir(dir)), dir); } -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value && Is_Native_Or_Checked::value, Result>::type sub_assign_r(To& to, const From1& x, const From2& y, Rounding_Dir dir) { return check_result(Checked::sub_ext ::Policy, typename Native_Checked_From_Wrapper ::Policy, typename Native_Checked_From_Wrapper ::Policy>(Native_Checked_To_Wrapper::raw_value(to), Native_Checked_From_Wrapper::raw_value(x), Native_Checked_From_Wrapper::raw_value(y), rounding_dir(dir)), dir); } -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value && Is_Native_Or_Checked::value, Result>::type mul_assign_r(To& to, const From1& x, const From2& y, Rounding_Dir dir) { return check_result(Checked::mul_ext ::Policy, typename Native_Checked_From_Wrapper ::Policy, typename Native_Checked_From_Wrapper ::Policy>(Native_Checked_To_Wrapper::raw_value(to), Native_Checked_From_Wrapper::raw_value(x), Native_Checked_From_Wrapper::raw_value(y), rounding_dir(dir)), dir); } -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value && Is_Native_Or_Checked::value, Result>::type div_assign_r(To& to, const From1& x, const From2& y, Rounding_Dir dir) { return check_result(Checked::div_ext ::Policy, typename Native_Checked_From_Wrapper ::Policy, typename Native_Checked_From_Wrapper ::Policy>(Native_Checked_To_Wrapper::raw_value(to), Native_Checked_From_Wrapper::raw_value(x), Native_Checked_From_Wrapper::raw_value(y), rounding_dir(dir)), dir); } -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value && Is_Native_Or_Checked::value, Result>::type idiv_assign_r(To& to, const From1& x, const From2& y, Rounding_Dir dir) { return check_result(Checked::idiv_ext ::Policy, typename Native_Checked_From_Wrapper ::Policy, typename Native_Checked_From_Wrapper ::Policy>(Native_Checked_To_Wrapper::raw_value(to), Native_Checked_From_Wrapper::raw_value(x), Native_Checked_From_Wrapper::raw_value(y), rounding_dir(dir)), dir); } -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value && Is_Native_Or_Checked::value, Result>::type rem_assign_r(To& to, const From1& x, const From2& y, Rounding_Dir dir) { return check_result(Checked::rem_ext ::Policy, typename Native_Checked_From_Wrapper ::Policy, typename Native_Checked_From_Wrapper ::Policy>(Native_Checked_To_Wrapper::raw_value(to), Native_Checked_From_Wrapper::raw_value(x), Native_Checked_From_Wrapper::raw_value(y), rounding_dir(dir)), dir); } -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value && Is_Native_Or_Checked::value, Result>::type gcd_assign_r(To& to, const From1& x, const From2& y, Rounding_Dir dir) { return check_result(Checked::gcd_ext ::Policy, typename Native_Checked_From_Wrapper ::Policy, typename Native_Checked_From_Wrapper ::Policy>(Native_Checked_To_Wrapper::raw_value(to), Native_Checked_From_Wrapper::raw_value(x), Native_Checked_From_Wrapper::raw_value(y), rounding_dir(dir)), dir); } -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value && Is_Native_Or_Checked::value, Result>::type lcm_assign_r(To& to, const From1& x, const From2& y, Rounding_Dir dir) { return check_result(Checked::lcm_ext ::Policy, typename Native_Checked_From_Wrapper ::Policy, typename Native_Checked_From_Wrapper ::Policy>(Native_Checked_To_Wrapper::raw_value(to), Native_Checked_From_Wrapper::raw_value(x), Native_Checked_From_Wrapper::raw_value(y), rounding_dir(dir)), dir); } -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value && Is_Native_Or_Checked::value, Result>::type add_mul_assign_r(To& to, const From1& x, const From2& y, Rounding_Dir dir) { return check_result(Checked::add_mul_ext ::Policy, typename Native_Checked_From_Wrapper ::Policy, typename Native_Checked_From_Wrapper ::Policy>(Native_Checked_To_Wrapper::raw_value(to), Native_Checked_From_Wrapper::raw_value(x), Native_Checked_From_Wrapper::raw_value(y), rounding_dir(dir)), dir); } -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value && Is_Native_Or_Checked::value, Result>::type sub_mul_assign_r(To& to, const From1& x, const From2& y, Rounding_Dir dir) { return check_result(Checked::sub_mul_ext ::Policy, typename Native_Checked_From_Wrapper ::Policy, typename Native_Checked_From_Wrapper ::Policy>(Native_Checked_To_Wrapper::raw_value(to), Native_Checked_From_Wrapper::raw_value(x), Native_Checked_From_Wrapper::raw_value(y), rounding_dir(dir)), dir); } -2441: # 464 "../../src/Checked_Number_inlines.hh" -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value && Is_Native_Or_Checked::value && Is_Native_Or_Checked::value && Is_Native_Or_Checked::value, Result>::type gcdext_assign_r(To1& to, To2& s, To3& t, const From1& x, const From2& y, Rounding_Dir dir) { return check_result(Checked::gcdext_ext::Policy, typename Native_Checked_To_Wrapper::Policy, typename Native_Checked_To_Wrapper::Policy, typename Native_Checked_From_Wrapper::Policy, typename Native_Checked_From_Wrapper::Policy> (Native_Checked_To_Wrapper::raw_value(to), Native_Checked_To_Wrapper::raw_value(s), Native_Checked_To_Wrapper::raw_value(t), Native_Checked_From_Wrapper::raw_value(x), Native_Checked_From_Wrapper::raw_value(y), rounding_dir(dir)), dir); } -2441: # 485 "../../src/Checked_Number_inlines.hh" -2441: template inline Checked_Number& Checked_Number::operator ++() { Policy::handle_result((add_assign_r)(*this, *this, T(1), Policy::ROUND_DEFAULT_OPERATOR)); return *this; } template inline Checked_Number Checked_Number::operator ++(int) { T r = v; Policy::handle_result((add_assign_r)(*this, *this, T(1), Policy::ROUND_DEFAULT_OPERATOR)); return r;} -2441: template inline Checked_Number& Checked_Number::operator --() { Policy::handle_result((sub_assign_r)(*this, *this, T(1), Policy::ROUND_DEFAULT_OPERATOR)); return *this; } template inline Checked_Number Checked_Number::operator --(int) { T r = v; Policy::handle_result((sub_assign_r)(*this, *this, T(1), Policy::ROUND_DEFAULT_OPERATOR)); return r;} -2441: -2441: -2441: -2441: template -2441: inline Checked_Number& -2441: Checked_Number::operator=(const Checked_Number& y) { -2441: Checked::copy(v, y.raw_value()); -2441: return *this; -2441: } -2441: template -2441: template -2441: inline Checked_Number& -2441: Checked_Number::operator=(const From& y) { -2441: Policy::handle_result(assign_r(*this, y, Policy::ROUND_DEFAULT_OPERATOR)); -2441: return *this; -2441: } -2441: # 531 "../../src/Checked_Number_inlines.hh" -2441: template template inline Checked_Number& Checked_Number::operator +=(const Checked_Number& y) { Policy::handle_result((add_assign_r)(*this, *this, y, Policy::ROUND_DEFAULT_OPERATOR)); return *this; } template inline Checked_Number& Checked_Number::operator +=(const T& y) { Policy::handle_result((add_assign_r)(*this, *this, y, Policy::ROUND_DEFAULT_OPERATOR)); return *this; } template template inline typename Enable_If::value, Checked_Number& >::type Checked_Number::operator +=(const From& y) { Checked_Number cy(y); Policy::handle_result((add_assign_r)(*this, *this, cy, Policy::ROUND_DEFAULT_OPERATOR)); return *this; } -2441: template template inline Checked_Number& Checked_Number::operator -=(const Checked_Number& y) { Policy::handle_result((sub_assign_r)(*this, *this, y, Policy::ROUND_DEFAULT_OPERATOR)); return *this; } template inline Checked_Number& Checked_Number::operator -=(const T& y) { Policy::handle_result((sub_assign_r)(*this, *this, y, Policy::ROUND_DEFAULT_OPERATOR)); return *this; } template template inline typename Enable_If::value, Checked_Number& >::type Checked_Number::operator -=(const From& y) { Checked_Number cy(y); Policy::handle_result((sub_assign_r)(*this, *this, cy, Policy::ROUND_DEFAULT_OPERATOR)); return *this; } -2441: template template inline Checked_Number& Checked_Number::operator *=(const Checked_Number& y) { Policy::handle_result((mul_assign_r)(*this, *this, y, Policy::ROUND_DEFAULT_OPERATOR)); return *this; } template inline Checked_Number& Checked_Number::operator *=(const T& y) { Policy::handle_result((mul_assign_r)(*this, *this, y, Policy::ROUND_DEFAULT_OPERATOR)); return *this; } template template inline typename Enable_If::value, Checked_Number& >::type Checked_Number::operator *=(const From& y) { Checked_Number cy(y); Policy::handle_result((mul_assign_r)(*this, *this, cy, Policy::ROUND_DEFAULT_OPERATOR)); return *this; } -2441: template template inline Checked_Number& Checked_Number::operator /=(const Checked_Number& y) { Policy::handle_result((div_assign_r)(*this, *this, y, Policy::ROUND_DEFAULT_OPERATOR)); return *this; } template inline Checked_Number& Checked_Number::operator /=(const T& y) { Policy::handle_result((div_assign_r)(*this, *this, y, Policy::ROUND_DEFAULT_OPERATOR)); return *this; } template template inline typename Enable_If::value, Checked_Number& >::type Checked_Number::operator /=(const From& y) { Checked_Number cy(y); Policy::handle_result((div_assign_r)(*this, *this, cy, Policy::ROUND_DEFAULT_OPERATOR)); return *this; } -2441: template template inline Checked_Number& Checked_Number::operator %=(const Checked_Number& y) { Policy::handle_result((rem_assign_r)(*this, *this, y, Policy::ROUND_DEFAULT_OPERATOR)); return *this; } template inline Checked_Number& Checked_Number::operator %=(const T& y) { Policy::handle_result((rem_assign_r)(*this, *this, y, Policy::ROUND_DEFAULT_OPERATOR)); return *this; } template template inline typename Enable_If::value, Checked_Number& >::type Checked_Number::operator %=(const From& y) { Checked_Number cy(y); Policy::handle_result((rem_assign_r)(*this, *this, cy, Policy::ROUND_DEFAULT_OPERATOR)); return *this; } -2441: # 565 "../../src/Checked_Number_inlines.hh" -2441: template inline Checked_Number operator +(const Checked_Number& x, const Checked_Number& y) { Checked_Number r; Policy::handle_result((add_assign_r)(r, x, y, Policy::ROUND_DEFAULT_OPERATOR)); return r; } template inline typename Enable_If::value, Checked_Number >::type operator +(const Type& x, const Checked_Number& y) { Checked_Number r(x); Policy::handle_result((add_assign_r)(r, r, y, Policy::ROUND_DEFAULT_OPERATOR)); return r; } template inline typename Enable_If::value, Checked_Number >::type operator +(const Checked_Number& x, const Type& y) { Checked_Number r(y); Policy::handle_result((add_assign_r)(r, x, r, Policy::ROUND_DEFAULT_OPERATOR)); return r; } -2441: template inline Checked_Number operator -(const Checked_Number& x, const Checked_Number& y) { Checked_Number r; Policy::handle_result((sub_assign_r)(r, x, y, Policy::ROUND_DEFAULT_OPERATOR)); return r; } template inline typename Enable_If::value, Checked_Number >::type operator -(const Type& x, const Checked_Number& y) { Checked_Number r(x); Policy::handle_result((sub_assign_r)(r, r, y, Policy::ROUND_DEFAULT_OPERATOR)); return r; } template inline typename Enable_If::value, Checked_Number >::type operator -(const Checked_Number& x, const Type& y) { Checked_Number r(y); Policy::handle_result((sub_assign_r)(r, x, r, Policy::ROUND_DEFAULT_OPERATOR)); return r; } -2441: template inline Checked_Number operator *(const Checked_Number& x, const Checked_Number& y) { Checked_Number r; Policy::handle_result((mul_assign_r)(r, x, y, Policy::ROUND_DEFAULT_OPERATOR)); return r; } template inline typename Enable_If::value, Checked_Number >::type operator *(const Type& x, const Checked_Number& y) { Checked_Number r(x); Policy::handle_result((mul_assign_r)(r, r, y, Policy::ROUND_DEFAULT_OPERATOR)); return r; } template inline typename Enable_If::value, Checked_Number >::type operator *(const Checked_Number& x, const Type& y) { Checked_Number r(y); Policy::handle_result((mul_assign_r)(r, x, r, Policy::ROUND_DEFAULT_OPERATOR)); return r; } -2441: template inline Checked_Number operator /(const Checked_Number& x, const Checked_Number& y) { Checked_Number r; Policy::handle_result((div_assign_r)(r, x, y, Policy::ROUND_DEFAULT_OPERATOR)); return r; } template inline typename Enable_If::value, Checked_Number >::type operator /(const Type& x, const Checked_Number& y) { Checked_Number r(x); Policy::handle_result((div_assign_r)(r, r, y, Policy::ROUND_DEFAULT_OPERATOR)); return r; } template inline typename Enable_If::value, Checked_Number >::type operator /(const Checked_Number& x, const Type& y) { Checked_Number r(y); Policy::handle_result((div_assign_r)(r, x, r, Policy::ROUND_DEFAULT_OPERATOR)); return r; } -2441: template inline Checked_Number operator %(const Checked_Number& x, const Checked_Number& y) { Checked_Number r; Policy::handle_result((rem_assign_r)(r, x, y, Policy::ROUND_DEFAULT_OPERATOR)); return r; } template inline typename Enable_If::value, Checked_Number >::type operator %(const Type& x, const Checked_Number& y) { Checked_Number r(x); Policy::handle_result((rem_assign_r)(r, r, y, Policy::ROUND_DEFAULT_OPERATOR)); return r; } template inline typename Enable_If::value, Checked_Number >::type operator %(const Checked_Number& x, const Type& y) { Checked_Number r(y); Policy::handle_result((rem_assign_r)(r, x, r, Policy::ROUND_DEFAULT_OPERATOR)); return r; } -2441: # 587 "../../src/Checked_Number_inlines.hh" -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value && (Is_Checked::value || Is_Checked::value), bool>::type operator ==(const T1& x, const T2& y) { return Checked::eq_ext::Policy, typename Native_Checked_From_Wrapper::Policy> (Native_Checked_From_Wrapper::raw_value(x), Native_Checked_From_Wrapper::raw_value(y)); } -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value && (Is_Checked::value || Is_Checked::value), bool>::type operator !=(const T1& x, const T2& y) { return Checked::ne_ext::Policy, typename Native_Checked_From_Wrapper::Policy> (Native_Checked_From_Wrapper::raw_value(x), Native_Checked_From_Wrapper::raw_value(y)); } -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value && (Is_Checked::value || Is_Checked::value), bool>::type operator >=(const T1& x, const T2& y) { return Checked::ge_ext::Policy, typename Native_Checked_From_Wrapper::Policy> (Native_Checked_From_Wrapper::raw_value(x), Native_Checked_From_Wrapper::raw_value(y)); } -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value && (Is_Checked::value || Is_Checked::value), bool>::type operator >(const T1& x, const T2& y) { return Checked::gt_ext::Policy, typename Native_Checked_From_Wrapper::Policy> (Native_Checked_From_Wrapper::raw_value(x), Native_Checked_From_Wrapper::raw_value(y)); } -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value && (Is_Checked::value || Is_Checked::value), bool>::type operator <=(const T1& x, const T2& y) { return Checked::le_ext::Policy, typename Native_Checked_From_Wrapper::Policy> (Native_Checked_From_Wrapper::raw_value(x), Native_Checked_From_Wrapper::raw_value(y)); } -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value && (Is_Checked::value || Is_Checked::value), bool>::type operator <(const T1& x, const T2& y) { return Checked::lt_ext::Policy, typename Native_Checked_From_Wrapper::Policy> (Native_Checked_From_Wrapper::raw_value(x), Native_Checked_From_Wrapper::raw_value(y)); } -2441: # 608 "../../src/Checked_Number_inlines.hh" -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value, bool>::type equal(const T1& x, const T2& y) { return Checked::eq_ext::Policy, typename Native_Checked_From_Wrapper::Policy> (Native_Checked_From_Wrapper::raw_value(x), Native_Checked_From_Wrapper::raw_value(y)); } -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value, bool>::type not_equal(const T1& x, const T2& y) { return Checked::ne_ext::Policy, typename Native_Checked_From_Wrapper::Policy> (Native_Checked_From_Wrapper::raw_value(x), Native_Checked_From_Wrapper::raw_value(y)); } -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value, bool>::type greater_or_equal(const T1& x, const T2& y) { return Checked::ge_ext::Policy, typename Native_Checked_From_Wrapper::Policy> (Native_Checked_From_Wrapper::raw_value(x), Native_Checked_From_Wrapper::raw_value(y)); } -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value, bool>::type greater_than(const T1& x, const T2& y) { return Checked::gt_ext::Policy, typename Native_Checked_From_Wrapper::Policy> (Native_Checked_From_Wrapper::raw_value(x), Native_Checked_From_Wrapper::raw_value(y)); } -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value, bool>::type less_or_equal(const T1& x, const T2& y) { return Checked::le_ext::Policy, typename Native_Checked_From_Wrapper::Policy> (Native_Checked_From_Wrapper::raw_value(x), Native_Checked_From_Wrapper::raw_value(y)); } -2441: template inline typename Enable_If::value && Is_Native_Or_Checked::value, bool>::type less_than(const T1& x, const T2& y) { return Checked::lt_ext::Policy, typename Native_Checked_From_Wrapper::Policy> (Native_Checked_From_Wrapper::raw_value(x), Native_Checked_From_Wrapper::raw_value(y)); } -2441: -2441: -2441: -2441: -2441: template -2441: inline Checked_Number -2441: operator+(const Checked_Number& x) { -2441: return x; -2441: } -2441: -2441: -2441: template -2441: inline Checked_Number -2441: operator-(const Checked_Number& x) { -2441: Checked_Number r; -2441: Policy::handle_result(neg_assign_r(r, x, Policy::ROUND_DEFAULT_OPERATOR)); -2441: return r; -2441: } -2441: # 665 "../../src/Checked_Number_inlines.hh" -2441: template inline void sqrt_assign(Checked_Number& x, const Checked_Number& y) { Policy::handle_result((sqrt_assign_r)(x, y, Policy::ROUND_DEFAULT_FUNCTION)); } -2441: -2441: template inline void floor_assign(Checked_Number& x) { Policy::handle_result((floor_assign_r)(x, x, Policy::ROUND_DEFAULT_FUNCTION)); } -2441: template inline void floor_assign(Checked_Number& x, const Checked_Number& y) { Policy::handle_result((floor_assign_r)(x, y, Policy::ROUND_DEFAULT_FUNCTION)); } -2441: -2441: template inline void ceil_assign(Checked_Number& x) { Policy::handle_result((ceil_assign_r)(x, x, Policy::ROUND_DEFAULT_FUNCTION)); } -2441: template inline void ceil_assign(Checked_Number& x, const Checked_Number& y) { Policy::handle_result((ceil_assign_r)(x, y, Policy::ROUND_DEFAULT_FUNCTION)); } -2441: -2441: template inline void trunc_assign(Checked_Number& x) { Policy::handle_result((trunc_assign_r)(x, x, Policy::ROUND_DEFAULT_FUNCTION)); } -2441: template inline void trunc_assign(Checked_Number& x, const Checked_Number& y) { Policy::handle_result((trunc_assign_r)(x, y, Policy::ROUND_DEFAULT_FUNCTION)); } -2441: -2441: template inline void neg_assign(Checked_Number& x) { Policy::handle_result((neg_assign_r)(x, x, Policy::ROUND_DEFAULT_FUNCTION)); } -2441: template inline void neg_assign(Checked_Number& x, const Checked_Number& y) { Policy::handle_result((neg_assign_r)(x, y, Policy::ROUND_DEFAULT_FUNCTION)); } -2441: -2441: template inline void abs_assign(Checked_Number& x) { Policy::handle_result((abs_assign_r)(x, x, Policy::ROUND_DEFAULT_FUNCTION)); } -2441: template inline void abs_assign(Checked_Number& x, const Checked_Number& y) { Policy::handle_result((abs_assign_r)(x, y, Policy::ROUND_DEFAULT_FUNCTION)); } -2441: -2441: template inline void add_mul_assign(Checked_Number& x, const Checked_Number& y, const Checked_Number& z) { Policy::handle_result((add_mul_assign_r)(x, y, z, Policy::ROUND_DEFAULT_FUNCTION)); } -2441: -2441: template inline void sub_mul_assign(Checked_Number& x, const Checked_Number& y, const Checked_Number& z) { Policy::handle_result((sub_mul_assign_r)(x, y, z, Policy::ROUND_DEFAULT_FUNCTION)); } -2441: -2441: template inline void rem_assign(Checked_Number& x, const Checked_Number& y, const Checked_Number& z) { Policy::handle_result((rem_assign_r)(x, y, z, Policy::ROUND_DEFAULT_FUNCTION)); } -2441: -2441: template inline void gcd_assign(Checked_Number& x, const Checked_Number& y, const Checked_Number& z) { Policy::handle_result((gcd_assign_r)(x, y, z, Policy::ROUND_DEFAULT_FUNCTION)); } -2441: -2441: template inline void gcdext_assign(Checked_Number& x, Checked_Number& s, Checked_Number& t, const Checked_Number& y, const Checked_Number& z) { Policy::handle_result((gcdext_assign_r)(x, s, t, y, z, Policy::ROUND_DEFAULT_FUNCTION)); } -2441: -2441: template inline void lcm_assign(Checked_Number& x, const Checked_Number& y, const Checked_Number& z) { Policy::handle_result((lcm_assign_r)(x, y, z, Policy::ROUND_DEFAULT_FUNCTION)); } -2441: # 708 "../../src/Checked_Number_inlines.hh" -2441: template inline void mul_2exp_assign(Checked_Number& x, const Checked_Number& y, unsigned int exp) { Policy::handle_result((mul_2exp_assign_r)(x, y, exp, Policy::ROUND_DEFAULT_FUNCTION)); } -2441: template inline void div_2exp_assign(Checked_Number& x, const Checked_Number& y, unsigned int exp) { Policy::handle_result((div_2exp_assign_r)(x, y, exp, Policy::ROUND_DEFAULT_FUNCTION)); } -2441: -2441: template -2441: inline void -2441: exact_div_assign(Checked_Number& x, -2441: const Checked_Number& y, -2441: const Checked_Number& z) { -2441: Policy::handle_result(div_assign_r(x, y, z, ROUND_NOT_NEEDED)); -2441: } -2441: -2441: -2441: template -2441: inline typename Enable_If::value, int>::type -2441: sgn(const From& x) { -2441: Result_Relation r -2441: = Checked::sgn_ext::Policy> -2441: (Native_Checked_From_Wrapper::raw_value(x)); -2441: switch (r) { -2441: case VR_LT: -2441: return -1; -2441: case VR_EQ: -2441: return 0; -2441: case VR_GT: -2441: return 1; -2441: default: -2441: throw(0); -2441: } -2441: } -2441: -2441: -2441: template -2441: inline typename Enable_If::value -2441: && Is_Native_Or_Checked::value, -2441: int>::type -2441: cmp(const From1& x, const From2& y) { -2441: Result_Relation r -2441: = Checked::cmp_ext::Policy, -2441: typename Native_Checked_From_Wrapper::Policy> -2441: (Native_Checked_From_Wrapper::raw_value(x), -2441: Native_Checked_From_Wrapper::raw_value(y)); -2441: switch (r) { -2441: case VR_LT: -2441: return -1; -2441: case VR_EQ: -2441: return 0; -2441: case VR_GT: -2441: return 1; -2441: default: -2441: throw(0); -2441: } -2441: } -2441: -2441: -2441: template -2441: typename Enable_If::value, Result>::type -2441: output(std::ostream& os, const T& x, -2441: const Numeric_Format& format, Rounding_Dir dir) { -2441: return check_result(Checked::output_ext::Policy> -2441: (os, -2441: Native_Checked_From_Wrapper::raw_value(x), -2441: format, -2441: rounding_dir(dir)), -2441: dir); -2441: } -2441: -2441: -2441: template -2441: inline std::ostream& -2441: operator<<(std::ostream& os, const Checked_Number& x) { -2441: Policy::handle_result(output(os, x, Numeric_Format(), ROUND_IGNORE)); -2441: return os; -2441: } -2441: -2441: -2441: template -2441: typename Enable_If::value, Result>::type -2441: input(T& x, std::istream& is, Rounding_Dir dir) { -2441: return check_result(Checked::input_ext::Policy> -2441: (Native_Checked_To_Wrapper::raw_value(x), -2441: is, -2441: rounding_dir(dir)), -2441: dir); -2441: } -2441: -2441: -2441: template -2441: inline std::istream& operator>>(std::istream& is, -2441: Checked_Number& x) { -2441: Result r = input(x, is, Policy::ROUND_DEFAULT_INPUT); -2441: if (r == V_CVT_STR_UNK) { -2441: is.setstate(std::ios::failbit); -2441: } -2441: else { -2441: Policy::handle_result(r); -2441: } -2441: return is; -2441: } -2441: -2441: template -2441: inline T -2441: plus_infinity() { -2441: return PLUS_INFINITY; -2441: } -2441: -2441: template -2441: inline T -2441: minus_infinity() { -2441: return MINUS_INFINITY; -2441: } -2441: -2441: template -2441: inline T -2441: not_a_number() { -2441: return NOT_A_NUMBER; -2441: } -2441: -2441: -2441: template -2441: inline void -2441: swap(Checked_Number& x, Checked_Number& y) { -2441: using std::swap; -2441: swap(x.raw_value(), y.raw_value()); -2441: } -2441: -2441: template -2441: inline void -2441: maybe_reset_fpu_inexact() { -2441: if (FPU_Related::value) { -2441: return fpu_reset_inexact(); -2441: } -2441: } -2441: -2441: template -2441: inline int -2441: maybe_check_fpu_inexact() { -2441: if (FPU_Related::value) { -2441: return fpu_check_inexact(); -2441: } -2441: else { -2441: return 0; -2441: } -2441: } -2441: -2441: } -2441: # 1068 "../../src/Checked_Number_defs.hh" 2 -2441: # 1 "../../src/Checked_Number_templates.hh" 1 -2441: # 28 "../../src/Checked_Number_templates.hh" -2441: # 1 "/usr/include/c++/8/iomanip" 1 3 -2441: # 36 "/usr/include/c++/8/iomanip" 3 -2441: -2441: # 37 "/usr/include/c++/8/iomanip" 3 -2441: -2441: -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/c++/8/locale" 1 3 -2441: # 36 "/usr/include/c++/8/locale" 3 -2441: -2441: # 37 "/usr/include/c++/8/locale" 3 -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/c++/8/bits/locale_facets_nonio.h" 1 3 -2441: # 37 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: -2441: # 38 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: -2441: # 1 "/usr/include/c++/8/ctime" 1 3 -2441: # 39 "/usr/include/c++/8/ctime" 3 -2441: -2441: # 40 "/usr/include/c++/8/ctime" 3 -2441: # 58 "/usr/include/c++/8/ctime" 3 -2441: -2441: # 58 "/usr/include/c++/8/ctime" 3 -2441: namespace std -2441: { -2441: using ::clock_t; -2441: using ::time_t; -2441: using ::tm; -2441: -2441: using ::clock; -2441: using ::difftime; -2441: using ::mktime; -2441: using ::time; -2441: using ::asctime; -2441: using ::ctime; -2441: using ::gmtime; -2441: using ::localtime; -2441: using ::strftime; -2441: } -2441: # 40 "/usr/include/c++/8/bits/locale_facets_nonio.h" 2 3 -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: # 52 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: class time_base -2441: { -2441: public: -2441: enum dateorder { no_order, dmy, mdy, ymd, ydm }; -2441: }; -2441: -2441: template -2441: struct __timepunct_cache : public locale::facet -2441: { -2441: -2441: static const _CharT* _S_timezones[14]; -2441: -2441: const _CharT* _M_date_format; -2441: const _CharT* _M_date_era_format; -2441: const _CharT* _M_time_format; -2441: const _CharT* _M_time_era_format; -2441: const _CharT* _M_date_time_format; -2441: const _CharT* _M_date_time_era_format; -2441: const _CharT* _M_am; -2441: const _CharT* _M_pm; -2441: const _CharT* _M_am_pm_format; -2441: -2441: -2441: const _CharT* _M_day1; -2441: const _CharT* _M_day2; -2441: const _CharT* _M_day3; -2441: const _CharT* _M_day4; -2441: const _CharT* _M_day5; -2441: const _CharT* _M_day6; -2441: const _CharT* _M_day7; -2441: -2441: -2441: const _CharT* _M_aday1; -2441: const _CharT* _M_aday2; -2441: const _CharT* _M_aday3; -2441: const _CharT* _M_aday4; -2441: const _CharT* _M_aday5; -2441: const _CharT* _M_aday6; -2441: const _CharT* _M_aday7; -2441: -2441: -2441: const _CharT* _M_month01; -2441: const _CharT* _M_month02; -2441: const _CharT* _M_month03; -2441: const _CharT* _M_month04; -2441: const _CharT* _M_month05; -2441: const _CharT* _M_month06; -2441: const _CharT* _M_month07; -2441: const _CharT* _M_month08; -2441: const _CharT* _M_month09; -2441: const _CharT* _M_month10; -2441: const _CharT* _M_month11; -2441: const _CharT* _M_month12; -2441: -2441: -2441: const _CharT* _M_amonth01; -2441: const _CharT* _M_amonth02; -2441: const _CharT* _M_amonth03; -2441: const _CharT* _M_amonth04; -2441: const _CharT* _M_amonth05; -2441: const _CharT* _M_amonth06; -2441: const _CharT* _M_amonth07; -2441: const _CharT* _M_amonth08; -2441: const _CharT* _M_amonth09; -2441: const _CharT* _M_amonth10; -2441: const _CharT* _M_amonth11; -2441: const _CharT* _M_amonth12; -2441: -2441: bool _M_allocated; -2441: -2441: __timepunct_cache(size_t __refs = 0) : facet(__refs), -2441: _M_date_format(0), _M_date_era_format(0), _M_time_format(0), -2441: _M_time_era_format(0), _M_date_time_format(0), -2441: _M_date_time_era_format(0), _M_am(0), _M_pm(0), -2441: _M_am_pm_format(0), _M_day1(0), _M_day2(0), _M_day3(0), -2441: _M_day4(0), _M_day5(0), _M_day6(0), _M_day7(0), -2441: _M_aday1(0), _M_aday2(0), _M_aday3(0), _M_aday4(0), -2441: _M_aday5(0), _M_aday6(0), _M_aday7(0), _M_month01(0), -2441: _M_month02(0), _M_month03(0), _M_month04(0), _M_month05(0), -2441: _M_month06(0), _M_month07(0), _M_month08(0), _M_month09(0), -2441: _M_month10(0), _M_month11(0), _M_month12(0), _M_amonth01(0), -2441: _M_amonth02(0), _M_amonth03(0), _M_amonth04(0), -2441: _M_amonth05(0), _M_amonth06(0), _M_amonth07(0), -2441: _M_amonth08(0), _M_amonth09(0), _M_amonth10(0), -2441: _M_amonth11(0), _M_amonth12(0), _M_allocated(false) -2441: { } -2441: -2441: ~__timepunct_cache(); -2441: -2441: private: -2441: __timepunct_cache& -2441: operator=(const __timepunct_cache&); -2441: -2441: explicit -2441: __timepunct_cache(const __timepunct_cache&); -2441: }; -2441: -2441: template -2441: __timepunct_cache<_CharT>::~__timepunct_cache() -2441: { -2441: if (_M_allocated) -2441: { -2441: -2441: } -2441: } -2441: -2441: -2441: template<> -2441: const char* -2441: __timepunct_cache::_S_timezones[14]; -2441: -2441: -2441: template<> -2441: const wchar_t* -2441: __timepunct_cache::_S_timezones[14]; -2441: -2441: -2441: -2441: template -2441: const _CharT* __timepunct_cache<_CharT>::_S_timezones[14]; -2441: -2441: template -2441: class __timepunct : public locale::facet -2441: { -2441: public: -2441: -2441: typedef _CharT __char_type; -2441: typedef __timepunct_cache<_CharT> __cache_type; -2441: -2441: protected: -2441: __cache_type* _M_data; -2441: __c_locale _M_c_locale_timepunct; -2441: const char* _M_name_timepunct; -2441: -2441: public: -2441: -2441: static locale::id id; -2441: -2441: explicit -2441: __timepunct(size_t __refs = 0); -2441: -2441: explicit -2441: __timepunct(__cache_type* __cache, size_t __refs = 0); -2441: # 206 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: explicit -2441: __timepunct(__c_locale __cloc, const char* __s, size_t __refs = 0); -2441: -2441: -2441: -2441: void -2441: _M_put(_CharT* __s, size_t __maxlen, const _CharT* __format, -2441: const tm* __tm) const throw (); -2441: -2441: void -2441: _M_date_formats(const _CharT** __date) const -2441: { -2441: -2441: __date[0] = _M_data->_M_date_format; -2441: __date[1] = _M_data->_M_date_era_format; -2441: } -2441: -2441: void -2441: _M_time_formats(const _CharT** __time) const -2441: { -2441: -2441: __time[0] = _M_data->_M_time_format; -2441: __time[1] = _M_data->_M_time_era_format; -2441: } -2441: -2441: void -2441: _M_date_time_formats(const _CharT** __dt) const -2441: { -2441: -2441: __dt[0] = _M_data->_M_date_time_format; -2441: __dt[1] = _M_data->_M_date_time_era_format; -2441: } -2441: -2441: -2441: void -2441: _M_am_pm_format(const _CharT*) const -2441: { } -2441: -2441: -2441: void -2441: _M_am_pm(const _CharT** __ampm) const -2441: { -2441: __ampm[0] = _M_data->_M_am; -2441: __ampm[1] = _M_data->_M_pm; -2441: } -2441: -2441: void -2441: _M_days(const _CharT** __days) const -2441: { -2441: __days[0] = _M_data->_M_day1; -2441: __days[1] = _M_data->_M_day2; -2441: __days[2] = _M_data->_M_day3; -2441: __days[3] = _M_data->_M_day4; -2441: __days[4] = _M_data->_M_day5; -2441: __days[5] = _M_data->_M_day6; -2441: __days[6] = _M_data->_M_day7; -2441: } -2441: -2441: void -2441: _M_days_abbreviated(const _CharT** __days) const -2441: { -2441: __days[0] = _M_data->_M_aday1; -2441: __days[1] = _M_data->_M_aday2; -2441: __days[2] = _M_data->_M_aday3; -2441: __days[3] = _M_data->_M_aday4; -2441: __days[4] = _M_data->_M_aday5; -2441: __days[5] = _M_data->_M_aday6; -2441: __days[6] = _M_data->_M_aday7; -2441: } -2441: -2441: void -2441: _M_months(const _CharT** __months) const -2441: { -2441: __months[0] = _M_data->_M_month01; -2441: __months[1] = _M_data->_M_month02; -2441: __months[2] = _M_data->_M_month03; -2441: __months[3] = _M_data->_M_month04; -2441: __months[4] = _M_data->_M_month05; -2441: __months[5] = _M_data->_M_month06; -2441: __months[6] = _M_data->_M_month07; -2441: __months[7] = _M_data->_M_month08; -2441: __months[8] = _M_data->_M_month09; -2441: __months[9] = _M_data->_M_month10; -2441: __months[10] = _M_data->_M_month11; -2441: __months[11] = _M_data->_M_month12; -2441: } -2441: -2441: void -2441: _M_months_abbreviated(const _CharT** __months) const -2441: { -2441: __months[0] = _M_data->_M_amonth01; -2441: __months[1] = _M_data->_M_amonth02; -2441: __months[2] = _M_data->_M_amonth03; -2441: __months[3] = _M_data->_M_amonth04; -2441: __months[4] = _M_data->_M_amonth05; -2441: __months[5] = _M_data->_M_amonth06; -2441: __months[6] = _M_data->_M_amonth07; -2441: __months[7] = _M_data->_M_amonth08; -2441: __months[8] = _M_data->_M_amonth09; -2441: __months[9] = _M_data->_M_amonth10; -2441: __months[10] = _M_data->_M_amonth11; -2441: __months[11] = _M_data->_M_amonth12; -2441: } -2441: -2441: protected: -2441: virtual -2441: ~__timepunct(); -2441: -2441: -2441: void -2441: _M_initialize_timepunct(__c_locale __cloc = 0); -2441: }; -2441: -2441: template -2441: locale::id __timepunct<_CharT>::id; -2441: -2441: -2441: template<> -2441: void -2441: __timepunct::_M_initialize_timepunct(__c_locale __cloc); -2441: -2441: template<> -2441: void -2441: __timepunct::_M_put(char*, size_t, const char*, const tm*) const throw (); -2441: -2441: -2441: template<> -2441: void -2441: __timepunct::_M_initialize_timepunct(__c_locale __cloc); -2441: -2441: template<> -2441: void -2441: __timepunct::_M_put(wchar_t*, size_t, const wchar_t*, -2441: const tm*) const throw (); -2441: -2441: -2441: -2441: } -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/c++/8/bits/time_members.h" 1 3 -2441: # 37 "/usr/include/i386-linux-gnu/c++/8/bits/time_members.h" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: template -2441: __timepunct<_CharT>::__timepunct(size_t __refs) -2441: : facet(__refs), _M_data(0), _M_c_locale_timepunct(0), -2441: _M_name_timepunct(_S_get_c_name()) -2441: { _M_initialize_timepunct(); } -2441: -2441: template -2441: __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) -2441: : facet(__refs), _M_data(__cache), _M_c_locale_timepunct(0), -2441: _M_name_timepunct(_S_get_c_name()) -2441: { _M_initialize_timepunct(); } -2441: -2441: template -2441: __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, -2441: size_t __refs) -2441: : facet(__refs), _M_data(0), _M_c_locale_timepunct(0), -2441: _M_name_timepunct(0) -2441: { -2441: if (__builtin_strcmp(__s, _S_get_c_name()) != 0) -2441: { -2441: const size_t __len = __builtin_strlen(__s) + 1; -2441: char* __tmp = new char[__len]; -2441: __builtin_memcpy(__tmp, __s, __len); -2441: _M_name_timepunct = __tmp; -2441: } -2441: else -2441: _M_name_timepunct = _S_get_c_name(); -2441: -2441: try -2441: { _M_initialize_timepunct(__cloc); } -2441: catch(...) -2441: { -2441: if (_M_name_timepunct != _S_get_c_name()) -2441: delete [] _M_name_timepunct; -2441: throw; -2441: } -2441: } -2441: -2441: template -2441: __timepunct<_CharT>::~__timepunct() -2441: { -2441: if (_M_name_timepunct != _S_get_c_name()) -2441: delete [] _M_name_timepunct; -2441: delete _M_data; -2441: _S_destroy_c_locale(_M_c_locale_timepunct); -2441: } -2441: -2441: -2441: } -2441: # 347 "/usr/include/c++/8/bits/locale_facets_nonio.h" 2 3 -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: namespace __cxx11 { -2441: # 367 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: template -2441: class time_get : public locale::facet, public time_base -2441: { -2441: public: -2441: -2441: -2441: -2441: typedef _CharT char_type; -2441: typedef _InIter iter_type; -2441: -2441: -2441: -2441: static locale::id id; -2441: # 388 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: explicit -2441: time_get(size_t __refs = 0) -2441: : facet (__refs) { } -2441: # 405 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: dateorder -2441: date_order() const -2441: { return this->do_date_order(); } -2441: # 429 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: iter_type -2441: get_time(iter_type __beg, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, tm* __tm) const -2441: { return this->do_get_time(__beg, __end, __io, __err, __tm); } -2441: # 454 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: iter_type -2441: get_date(iter_type __beg, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, tm* __tm) const -2441: { return this->do_get_date(__beg, __end, __io, __err, __tm); } -2441: # 482 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: iter_type -2441: get_weekday(iter_type __beg, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, tm* __tm) const -2441: { return this->do_get_weekday(__beg, __end, __io, __err, __tm); } -2441: # 511 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: iter_type -2441: get_monthname(iter_type __beg, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, tm* __tm) const -2441: { return this->do_get_monthname(__beg, __end, __io, __err, __tm); } -2441: # 537 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: iter_type -2441: get_year(iter_type __beg, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, tm* __tm) const -2441: { return this->do_get_year(__beg, __end, __io, __err, __tm); } -2441: # 558 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: inline -2441: iter_type get(iter_type __s, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, tm* __tm, char __format, -2441: char __modifier = 0) const -2441: { -2441: return this->do_get(__s, __end, __io, __err, __tm, __format, -2441: __modifier); -2441: } -2441: # 585 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: iter_type get(iter_type __s, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, tm* __tm, const char_type* __fmt, -2441: const char_type* __fmtend) const; -2441: -2441: -2441: protected: -2441: -2441: virtual -2441: ~time_get() { } -2441: # 605 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: virtual dateorder -2441: do_date_order() const; -2441: # 623 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: virtual iter_type -2441: do_get_time(iter_type __beg, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, tm* __tm) const; -2441: # 642 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: virtual iter_type -2441: do_get_date(iter_type __beg, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, tm* __tm) const; -2441: # 661 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: virtual iter_type -2441: do_get_weekday(iter_type __beg, iter_type __end, ios_base&, -2441: ios_base::iostate& __err, tm* __tm) const; -2441: # 680 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: virtual iter_type -2441: do_get_monthname(iter_type __beg, iter_type __end, ios_base&, -2441: ios_base::iostate& __err, tm* __tm) const; -2441: # 699 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: virtual iter_type -2441: do_get_year(iter_type __beg, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, tm* __tm) const; -2441: # 722 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: virtual -2441: -2441: iter_type -2441: do_get(iter_type __s, iter_type __end, ios_base& __f, -2441: ios_base::iostate& __err, tm* __tm, -2441: char __format, char __modifier) const; -2441: -2441: -2441: -2441: iter_type -2441: _M_extract_num(iter_type __beg, iter_type __end, int& __member, -2441: int __min, int __max, size_t __len, -2441: ios_base& __io, ios_base::iostate& __err) const; -2441: -2441: -2441: iter_type -2441: _M_extract_name(iter_type __beg, iter_type __end, int& __member, -2441: const _CharT** __names, size_t __indexlen, -2441: ios_base& __io, ios_base::iostate& __err) const; -2441: -2441: -2441: iter_type -2441: _M_extract_wday_or_month(iter_type __beg, iter_type __end, int& __member, -2441: const _CharT** __names, size_t __indexlen, -2441: ios_base& __io, ios_base::iostate& __err) const; -2441: -2441: -2441: iter_type -2441: _M_extract_via_format(iter_type __beg, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, tm* __tm, -2441: const _CharT* __format) const; -2441: }; -2441: -2441: template -2441: locale::id time_get<_CharT, _InIter>::id; -2441: -2441: -2441: template -2441: class time_get_byname : public time_get<_CharT, _InIter> -2441: { -2441: public: -2441: -2441: typedef _CharT char_type; -2441: typedef _InIter iter_type; -2441: -2441: explicit -2441: time_get_byname(const char*, size_t __refs = 0) -2441: : time_get<_CharT, _InIter>(__refs) { } -2441: -2441: -2441: explicit -2441: time_get_byname(const string& __s, size_t __refs = 0) -2441: : time_get_byname(__s.c_str(), __refs) { } -2441: -2441: -2441: protected: -2441: virtual -2441: ~time_get_byname() { } -2441: }; -2441: -2441: } -2441: # 796 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: template -2441: class time_put : public locale::facet -2441: { -2441: public: -2441: -2441: -2441: -2441: typedef _CharT char_type; -2441: typedef _OutIter iter_type; -2441: -2441: -2441: -2441: static locale::id id; -2441: # 817 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: explicit -2441: time_put(size_t __refs = 0) -2441: : facet(__refs) { } -2441: # 836 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: iter_type -2441: put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm, -2441: const _CharT* __beg, const _CharT* __end) const; -2441: # 856 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: iter_type -2441: put(iter_type __s, ios_base& __io, char_type __fill, -2441: const tm* __tm, char __format, char __mod = 0) const -2441: { return this->do_put(__s, __io, __fill, __tm, __format, __mod); } -2441: -2441: protected: -2441: -2441: virtual -2441: ~time_put() -2441: { } -2441: # 883 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: virtual iter_type -2441: do_put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm, -2441: char __format, char __mod) const; -2441: }; -2441: -2441: template -2441: locale::id time_put<_CharT, _OutIter>::id; -2441: -2441: -2441: template -2441: class time_put_byname : public time_put<_CharT, _OutIter> -2441: { -2441: public: -2441: -2441: typedef _CharT char_type; -2441: typedef _OutIter iter_type; -2441: -2441: explicit -2441: time_put_byname(const char*, size_t __refs = 0) -2441: : time_put<_CharT, _OutIter>(__refs) -2441: { } -2441: -2441: -2441: explicit -2441: time_put_byname(const string& __s, size_t __refs = 0) -2441: : time_put_byname(__s.c_str(), __refs) { } -2441: -2441: -2441: protected: -2441: virtual -2441: ~time_put_byname() { } -2441: }; -2441: # 928 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: class money_base -2441: { -2441: public: -2441: enum part { none, space, symbol, sign, value }; -2441: struct pattern { char field[4]; }; -2441: -2441: static const pattern _S_default_pattern; -2441: -2441: enum -2441: { -2441: _S_minus, -2441: _S_zero, -2441: _S_end = 11 -2441: }; -2441: -2441: -2441: -2441: static const char* _S_atoms; -2441: -2441: -2441: -2441: __attribute__ ((__const__)) static pattern -2441: _S_construct_pattern(char __precedes, char __space, char __posn) throw (); -2441: }; -2441: -2441: template -2441: struct __moneypunct_cache : public locale::facet -2441: { -2441: const char* _M_grouping; -2441: size_t _M_grouping_size; -2441: bool _M_use_grouping; -2441: _CharT _M_decimal_point; -2441: _CharT _M_thousands_sep; -2441: const _CharT* _M_curr_symbol; -2441: size_t _M_curr_symbol_size; -2441: const _CharT* _M_positive_sign; -2441: size_t _M_positive_sign_size; -2441: const _CharT* _M_negative_sign; -2441: size_t _M_negative_sign_size; -2441: int _M_frac_digits; -2441: money_base::pattern _M_pos_format; -2441: money_base::pattern _M_neg_format; -2441: -2441: -2441: -2441: -2441: _CharT _M_atoms[money_base::_S_end]; -2441: -2441: bool _M_allocated; -2441: -2441: __moneypunct_cache(size_t __refs = 0) : facet(__refs), -2441: _M_grouping(0), _M_grouping_size(0), _M_use_grouping(false), -2441: _M_decimal_point(_CharT()), _M_thousands_sep(_CharT()), -2441: _M_curr_symbol(0), _M_curr_symbol_size(0), -2441: _M_positive_sign(0), _M_positive_sign_size(0), -2441: _M_negative_sign(0), _M_negative_sign_size(0), -2441: _M_frac_digits(0), -2441: _M_pos_format(money_base::pattern()), -2441: _M_neg_format(money_base::pattern()), _M_allocated(false) -2441: { } -2441: -2441: ~__moneypunct_cache(); -2441: -2441: void -2441: _M_cache(const locale& __loc); -2441: -2441: private: -2441: __moneypunct_cache& -2441: operator=(const __moneypunct_cache&); -2441: -2441: explicit -2441: __moneypunct_cache(const __moneypunct_cache&); -2441: }; -2441: -2441: template -2441: __moneypunct_cache<_CharT, _Intl>::~__moneypunct_cache() -2441: { -2441: if (_M_allocated) -2441: { -2441: delete [] _M_grouping; -2441: delete [] _M_curr_symbol; -2441: delete [] _M_positive_sign; -2441: delete [] _M_negative_sign; -2441: } -2441: } -2441: -2441: namespace __cxx11 { -2441: # 1023 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: template -2441: class moneypunct : public locale::facet, public money_base -2441: { -2441: public: -2441: -2441: -2441: -2441: typedef _CharT char_type; -2441: typedef basic_string<_CharT> string_type; -2441: -2441: typedef __moneypunct_cache<_CharT, _Intl> __cache_type; -2441: -2441: private: -2441: __cache_type* _M_data; -2441: -2441: public: -2441: -2441: -2441: static const bool intl = _Intl; -2441: -2441: static locale::id id; -2441: # 1052 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: explicit -2441: moneypunct(size_t __refs = 0) -2441: : facet(__refs), _M_data(0) -2441: { _M_initialize_moneypunct(); } -2441: # 1065 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: explicit -2441: moneypunct(__cache_type* __cache, size_t __refs = 0) -2441: : facet(__refs), _M_data(__cache) -2441: { _M_initialize_moneypunct(); } -2441: # 1080 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: explicit -2441: moneypunct(__c_locale __cloc, const char* __s, size_t __refs = 0) -2441: : facet(__refs), _M_data(0) -2441: { _M_initialize_moneypunct(__cloc, __s); } -2441: # 1094 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: char_type -2441: decimal_point() const -2441: { return this->do_decimal_point(); } -2441: # 1107 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: char_type -2441: thousands_sep() const -2441: { return this->do_thousands_sep(); } -2441: # 1137 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: string -2441: grouping() const -2441: { return this->do_grouping(); } -2441: # 1150 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: string_type -2441: curr_symbol() const -2441: { return this->do_curr_symbol(); } -2441: # 1167 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: string_type -2441: positive_sign() const -2441: { return this->do_positive_sign(); } -2441: # 1184 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: string_type -2441: negative_sign() const -2441: { return this->do_negative_sign(); } -2441: # 1200 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: int -2441: frac_digits() const -2441: { return this->do_frac_digits(); } -2441: # 1236 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: pattern -2441: pos_format() const -2441: { return this->do_pos_format(); } -2441: -2441: pattern -2441: neg_format() const -2441: { return this->do_neg_format(); } -2441: -2441: -2441: protected: -2441: -2441: virtual -2441: ~moneypunct(); -2441: # 1258 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: virtual char_type -2441: do_decimal_point() const -2441: { return _M_data->_M_decimal_point; } -2441: # 1270 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: virtual char_type -2441: do_thousands_sep() const -2441: { return _M_data->_M_thousands_sep; } -2441: # 1283 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: virtual string -2441: do_grouping() const -2441: { return _M_data->_M_grouping; } -2441: # 1296 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: virtual string_type -2441: do_curr_symbol() const -2441: { return _M_data->_M_curr_symbol; } -2441: # 1309 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: virtual string_type -2441: do_positive_sign() const -2441: { return _M_data->_M_positive_sign; } -2441: # 1322 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: virtual string_type -2441: do_negative_sign() const -2441: { return _M_data->_M_negative_sign; } -2441: # 1336 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: virtual int -2441: do_frac_digits() const -2441: { return _M_data->_M_frac_digits; } -2441: # 1350 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: virtual pattern -2441: do_pos_format() const -2441: { return _M_data->_M_pos_format; } -2441: # 1364 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: virtual pattern -2441: do_neg_format() const -2441: { return _M_data->_M_neg_format; } -2441: -2441: -2441: void -2441: _M_initialize_moneypunct(__c_locale __cloc = 0, -2441: const char* __name = 0); -2441: }; -2441: -2441: template -2441: locale::id moneypunct<_CharT, _Intl>::id; -2441: -2441: template -2441: const bool moneypunct<_CharT, _Intl>::intl; -2441: -2441: template<> -2441: moneypunct::~moneypunct(); -2441: -2441: template<> -2441: moneypunct::~moneypunct(); -2441: -2441: template<> -2441: void -2441: moneypunct::_M_initialize_moneypunct(__c_locale, const char*); -2441: -2441: template<> -2441: void -2441: moneypunct::_M_initialize_moneypunct(__c_locale, const char*); -2441: -2441: -2441: template<> -2441: moneypunct::~moneypunct(); -2441: -2441: template<> -2441: moneypunct::~moneypunct(); -2441: -2441: template<> -2441: void -2441: moneypunct::_M_initialize_moneypunct(__c_locale, -2441: const char*); -2441: -2441: template<> -2441: void -2441: moneypunct::_M_initialize_moneypunct(__c_locale, -2441: const char*); -2441: -2441: -2441: -2441: template -2441: class moneypunct_byname : public moneypunct<_CharT, _Intl> -2441: { -2441: public: -2441: typedef _CharT char_type; -2441: typedef basic_string<_CharT> string_type; -2441: -2441: static const bool intl = _Intl; -2441: -2441: explicit -2441: moneypunct_byname(const char* __s, size_t __refs = 0) -2441: : moneypunct<_CharT, _Intl>(__refs) -2441: { -2441: if (__builtin_strcmp(__s, "C") != 0 -2441: && __builtin_strcmp(__s, "POSIX") != 0) -2441: { -2441: __c_locale __tmp; -2441: this->_S_create_c_locale(__tmp, __s); -2441: this->_M_initialize_moneypunct(__tmp); -2441: this->_S_destroy_c_locale(__tmp); -2441: } -2441: } -2441: -2441: -2441: explicit -2441: moneypunct_byname(const string& __s, size_t __refs = 0) -2441: : moneypunct_byname(__s.c_str(), __refs) { } -2441: -2441: -2441: protected: -2441: virtual -2441: ~moneypunct_byname() { } -2441: }; -2441: -2441: template -2441: const bool moneypunct_byname<_CharT, _Intl>::intl; -2441: -2441: } -2441: -2441: namespace __cxx11 { -2441: # 1467 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: template -2441: class money_get : public locale::facet -2441: { -2441: public: -2441: -2441: -2441: -2441: typedef _CharT char_type; -2441: typedef _InIter iter_type; -2441: typedef basic_string<_CharT> string_type; -2441: -2441: -2441: -2441: static locale::id id; -2441: # 1489 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: explicit -2441: money_get(size_t __refs = 0) : facet(__refs) { } -2441: # 1519 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: iter_type -2441: get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, -2441: ios_base::iostate& __err, long double& __units) const -2441: { return this->do_get(__s, __end, __intl, __io, __err, __units); } -2441: # 1550 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: iter_type -2441: get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, -2441: ios_base::iostate& __err, string_type& __digits) const -2441: { return this->do_get(__s, __end, __intl, __io, __err, __digits); } -2441: -2441: protected: -2441: -2441: virtual -2441: ~money_get() { } -2441: # 1574 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: virtual iter_type -2441: do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, -2441: ios_base::iostate& __err, long double& __units) const; -2441: # 1586 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: virtual iter_type -2441: do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, -2441: ios_base::iostate& __err, string_type& __digits) const; -2441: # 1598 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: template -2441: iter_type -2441: _M_extract(iter_type __s, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, string& __digits) const; -2441: }; -2441: -2441: template -2441: locale::id money_get<_CharT, _InIter>::id; -2441: # 1620 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: template -2441: class money_put : public locale::facet -2441: { -2441: public: -2441: -2441: -2441: typedef _CharT char_type; -2441: typedef _OutIter iter_type; -2441: typedef basic_string<_CharT> string_type; -2441: -2441: -2441: -2441: static locale::id id; -2441: # 1641 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: explicit -2441: money_put(size_t __refs = 0) : facet(__refs) { } -2441: # 1661 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: iter_type -2441: put(iter_type __s, bool __intl, ios_base& __io, -2441: char_type __fill, long double __units) const -2441: { return this->do_put(__s, __intl, __io, __fill, __units); } -2441: # 1684 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: iter_type -2441: put(iter_type __s, bool __intl, ios_base& __io, -2441: char_type __fill, const string_type& __digits) const -2441: { return this->do_put(__s, __intl, __io, __fill, __digits); } -2441: -2441: protected: -2441: -2441: virtual -2441: ~money_put() { } -2441: # 1719 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: virtual iter_type -2441: do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, -2441: long double __units) const; -2441: # 1743 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: virtual iter_type -2441: do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, -2441: const string_type& __digits) const; -2441: # 1755 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: template -2441: iter_type -2441: _M_insert(iter_type __s, ios_base& __io, char_type __fill, -2441: const string_type& __digits) const; -2441: }; -2441: -2441: template -2441: locale::id money_put<_CharT, _OutIter>::id; -2441: -2441: } -2441: -2441: -2441: -2441: -2441: -2441: struct messages_base -2441: { -2441: typedef int catalog; -2441: }; -2441: -2441: namespace __cxx11 { -2441: # 1798 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: template -2441: class messages : public locale::facet, public messages_base -2441: { -2441: public: -2441: -2441: -2441: -2441: typedef _CharT char_type; -2441: typedef basic_string<_CharT> string_type; -2441: -2441: -2441: protected: -2441: -2441: -2441: __c_locale _M_c_locale_messages; -2441: const char* _M_name_messages; -2441: -2441: public: -2441: -2441: static locale::id id; -2441: # 1826 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: explicit -2441: messages(size_t __refs = 0); -2441: # 1840 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: explicit -2441: messages(__c_locale __cloc, const char* __s, size_t __refs = 0); -2441: # 1853 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: catalog -2441: open(const basic_string& __s, const locale& __loc) const -2441: { return this->do_open(__s, __loc); } -2441: # 1871 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: catalog -2441: open(const basic_string&, const locale&, const char*) const; -2441: # 1889 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: string_type -2441: get(catalog __c, int __set, int __msgid, const string_type& __s) const -2441: { return this->do_get(__c, __set, __msgid, __s); } -2441: # 1900 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: void -2441: close(catalog __c) const -2441: { return this->do_close(__c); } -2441: -2441: protected: -2441: -2441: virtual -2441: ~messages(); -2441: # 1920 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: virtual catalog -2441: do_open(const basic_string&, const locale&) const; -2441: # 1939 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 -2441: virtual string_type -2441: do_get(catalog, int, int, const string_type& __dfault) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual void -2441: do_close(catalog) const; -2441: -2441: -2441: char* -2441: _M_convert_to_char(const string_type& __msg) const -2441: { -2441: -2441: return reinterpret_cast(const_cast<_CharT*>(__msg.c_str())); -2441: } -2441: -2441: -2441: string_type -2441: _M_convert_from_char(char*) const -2441: { -2441: -2441: return string_type(); -2441: } -2441: }; -2441: -2441: template -2441: locale::id messages<_CharT>::id; -2441: -2441: -2441: template<> -2441: string -2441: messages::do_get(catalog, int, int, const string&) const; -2441: -2441: -2441: template<> -2441: wstring -2441: messages::do_get(catalog, int, int, const wstring&) const; -2441: -2441: -2441: -2441: template -2441: class messages_byname : public messages<_CharT> -2441: { -2441: public: -2441: typedef _CharT char_type; -2441: typedef basic_string<_CharT> string_type; -2441: -2441: explicit -2441: messages_byname(const char* __s, size_t __refs = 0); -2441: -2441: -2441: explicit -2441: messages_byname(const string& __s, size_t __refs = 0) -2441: : messages_byname(__s.c_str(), __refs) { } -2441: -2441: -2441: protected: -2441: virtual -2441: ~messages_byname() -2441: { } -2441: }; -2441: -2441: } -2441: -2441: -2441: } -2441: -2441: -2441: # 1 "/usr/include/i386-linux-gnu/c++/8/bits/messages_members.h" 1 3 -2441: # 36 "/usr/include/i386-linux-gnu/c++/8/bits/messages_members.h" 3 -2441: # 1 "/usr/include/libintl.h" 1 3 4 -2441: # 34 "/usr/include/libintl.h" 3 4 -2441: extern "C" { -2441: -2441: -2441: -2441: -2441: extern char *gettext (const char *__msgid) -2441: throw () __attribute__ ((__format_arg__ (1))); -2441: -2441: -2441: -2441: extern char *dgettext (const char *__domainname, const char *__msgid) -2441: throw () __attribute__ ((__format_arg__ (2))); -2441: extern char *__dgettext (const char *__domainname, const char *__msgid) -2441: throw () __attribute__ ((__format_arg__ (2))); -2441: -2441: -2441: -2441: extern char *dcgettext (const char *__domainname, -2441: const char *__msgid, int __category) -2441: throw () __attribute__ ((__format_arg__ (2))); -2441: extern char *__dcgettext (const char *__domainname, -2441: const char *__msgid, int __category) -2441: throw () __attribute__ ((__format_arg__ (2))); -2441: -2441: -2441: -2441: -2441: extern char *ngettext (const char *__msgid1, const char *__msgid2, -2441: unsigned long int __n) -2441: throw () __attribute__ ((__format_arg__ (1))) __attribute__ ((__format_arg__ (2))); -2441: -2441: -2441: -2441: extern char *dngettext (const char *__domainname, const char *__msgid1, -2441: const char *__msgid2, unsigned long int __n) -2441: throw () __attribute__ ((__format_arg__ (2))) __attribute__ ((__format_arg__ (3))); -2441: -2441: -2441: -2441: extern char *dcngettext (const char *__domainname, const char *__msgid1, -2441: const char *__msgid2, unsigned long int __n, -2441: int __category) -2441: throw () __attribute__ ((__format_arg__ (2))) __attribute__ ((__format_arg__ (3))); -2441: -2441: -2441: -2441: -2441: -2441: extern char *textdomain (const char *__domainname) throw (); -2441: -2441: -2441: -2441: extern char *bindtextdomain (const char *__domainname, -2441: const char *__dirname) throw (); -2441: -2441: -2441: -2441: extern char *bind_textdomain_codeset (const char *__domainname, -2441: const char *__codeset) throw (); -2441: # 121 "/usr/include/libintl.h" 3 4 -2441: } -2441: # 37 "/usr/include/i386-linux-gnu/c++/8/bits/messages_members.h" 2 3 -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: template -2441: messages<_CharT>::messages(size_t __refs) -2441: : facet(__refs), _M_c_locale_messages(_S_get_c_locale()), -2441: _M_name_messages(_S_get_c_name()) -2441: { } -2441: -2441: template -2441: messages<_CharT>::messages(__c_locale __cloc, const char* __s, -2441: size_t __refs) -2441: : facet(__refs), _M_c_locale_messages(0), _M_name_messages(0) -2441: { -2441: if (__builtin_strcmp(__s, _S_get_c_name()) != 0) -2441: { -2441: const size_t __len = __builtin_strlen(__s) + 1; -2441: char* __tmp = new char[__len]; -2441: __builtin_memcpy(__tmp, __s, __len); -2441: _M_name_messages = __tmp; -2441: } -2441: else -2441: _M_name_messages = _S_get_c_name(); -2441: -2441: -2441: _M_c_locale_messages = _S_clone_c_locale(__cloc); -2441: } -2441: -2441: template -2441: typename messages<_CharT>::catalog -2441: messages<_CharT>::open(const basic_string& __s, const locale& __loc, -2441: const char* __dir) const -2441: { -2441: bindtextdomain(__s.c_str(), __dir); -2441: return this->do_open(__s, __loc); -2441: } -2441: -2441: -2441: template -2441: messages<_CharT>::~messages() -2441: { -2441: if (_M_name_messages != _S_get_c_name()) -2441: delete [] _M_name_messages; -2441: _S_destroy_c_locale(_M_c_locale_messages); -2441: } -2441: -2441: template -2441: typename messages<_CharT>::catalog -2441: messages<_CharT>::do_open(const basic_string& __s, -2441: const locale&) const -2441: { -2441: -2441: -2441: textdomain(__s.c_str()); -2441: return 0; -2441: } -2441: -2441: template -2441: void -2441: messages<_CharT>::do_close(catalog) const -2441: { } -2441: -2441: -2441: template -2441: messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) -2441: : messages<_CharT>(__refs) -2441: { -2441: if (this->_M_name_messages != locale::facet::_S_get_c_name()) -2441: { -2441: delete [] this->_M_name_messages; -2441: if (__builtin_strcmp(__s, locale::facet::_S_get_c_name()) != 0) -2441: { -2441: const size_t __len = __builtin_strlen(__s) + 1; -2441: char* __tmp = new char[__len]; -2441: __builtin_memcpy(__tmp, __s, __len); -2441: this->_M_name_messages = __tmp; -2441: } -2441: else -2441: this->_M_name_messages = locale::facet::_S_get_c_name(); -2441: } -2441: -2441: if (__builtin_strcmp(__s, "C") != 0 -2441: && __builtin_strcmp(__s, "POSIX") != 0) -2441: { -2441: this->_S_destroy_c_locale(this->_M_c_locale_messages); -2441: this->_S_create_c_locale(this->_M_c_locale_messages, __s); -2441: } -2441: } -2441: -2441: -2441: template<> -2441: typename messages::catalog -2441: messages::do_open(const basic_string&, -2441: const locale&) const; -2441: -2441: template<> -2441: void -2441: messages::do_close(catalog) const; -2441: -2441: -2441: template<> -2441: typename messages::catalog -2441: messages::do_open(const basic_string&, -2441: const locale&) const; -2441: -2441: template<> -2441: void -2441: messages::do_close(catalog) const; -2441: -2441: -2441: -2441: } -2441: # 2011 "/usr/include/c++/8/bits/locale_facets_nonio.h" 2 3 -2441: -2441: -2441: # 1 "/usr/include/c++/8/bits/codecvt.h" 1 3 -2441: # 39 "/usr/include/c++/8/bits/codecvt.h" 3 -2441: -2441: # 40 "/usr/include/c++/8/bits/codecvt.h" 3 -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: class codecvt_base -2441: { -2441: public: -2441: enum result -2441: { -2441: ok, -2441: partial, -2441: error, -2441: noconv -2441: }; -2441: }; -2441: # 67 "/usr/include/c++/8/bits/codecvt.h" 3 -2441: template -2441: class __codecvt_abstract_base -2441: : public locale::facet, public codecvt_base -2441: { -2441: public: -2441: -2441: typedef codecvt_base::result result; -2441: typedef _InternT intern_type; -2441: typedef _ExternT extern_type; -2441: typedef _StateT state_type; -2441: # 115 "/usr/include/c++/8/bits/codecvt.h" 3 -2441: result -2441: out(state_type& __state, const intern_type* __from, -2441: const intern_type* __from_end, const intern_type*& __from_next, -2441: extern_type* __to, extern_type* __to_end, -2441: extern_type*& __to_next) const -2441: { -2441: return this->do_out(__state, __from, __from_end, __from_next, -2441: __to, __to_end, __to_next); -2441: } -2441: # 154 "/usr/include/c++/8/bits/codecvt.h" 3 -2441: result -2441: unshift(state_type& __state, extern_type* __to, extern_type* __to_end, -2441: extern_type*& __to_next) const -2441: { return this->do_unshift(__state, __to,__to_end,__to_next); } -2441: # 195 "/usr/include/c++/8/bits/codecvt.h" 3 -2441: result -2441: in(state_type& __state, const extern_type* __from, -2441: const extern_type* __from_end, const extern_type*& __from_next, -2441: intern_type* __to, intern_type* __to_end, -2441: intern_type*& __to_next) const -2441: { -2441: return this->do_in(__state, __from, __from_end, __from_next, -2441: __to, __to_end, __to_next); -2441: } -2441: -2441: int -2441: encoding() const throw() -2441: { return this->do_encoding(); } -2441: -2441: bool -2441: always_noconv() const throw() -2441: { return this->do_always_noconv(); } -2441: -2441: int -2441: length(state_type& __state, const extern_type* __from, -2441: const extern_type* __end, size_t __max) const -2441: { return this->do_length(__state, __from, __end, __max); } -2441: -2441: int -2441: max_length() const throw() -2441: { return this->do_max_length(); } -2441: -2441: protected: -2441: explicit -2441: __codecvt_abstract_base(size_t __refs = 0) : locale::facet(__refs) { } -2441: -2441: virtual -2441: ~__codecvt_abstract_base() { } -2441: # 236 "/usr/include/c++/8/bits/codecvt.h" 3 -2441: virtual result -2441: do_out(state_type& __state, const intern_type* __from, -2441: const intern_type* __from_end, const intern_type*& __from_next, -2441: extern_type* __to, extern_type* __to_end, -2441: extern_type*& __to_next) const = 0; -2441: -2441: virtual result -2441: do_unshift(state_type& __state, extern_type* __to, -2441: extern_type* __to_end, extern_type*& __to_next) const = 0; -2441: -2441: virtual result -2441: do_in(state_type& __state, const extern_type* __from, -2441: const extern_type* __from_end, const extern_type*& __from_next, -2441: intern_type* __to, intern_type* __to_end, -2441: intern_type*& __to_next) const = 0; -2441: -2441: virtual int -2441: do_encoding() const throw() = 0; -2441: -2441: virtual bool -2441: do_always_noconv() const throw() = 0; -2441: -2441: virtual int -2441: do_length(state_type&, const extern_type* __from, -2441: const extern_type* __end, size_t __max) const = 0; -2441: -2441: virtual int -2441: do_max_length() const throw() = 0; -2441: }; -2441: # 273 "/usr/include/c++/8/bits/codecvt.h" 3 -2441: template -2441: class codecvt -2441: : public __codecvt_abstract_base<_InternT, _ExternT, _StateT> -2441: { -2441: public: -2441: -2441: typedef codecvt_base::result result; -2441: typedef _InternT intern_type; -2441: typedef _ExternT extern_type; -2441: typedef _StateT state_type; -2441: -2441: protected: -2441: __c_locale _M_c_locale_codecvt; -2441: -2441: public: -2441: static locale::id id; -2441: -2441: explicit -2441: codecvt(size_t __refs = 0) -2441: : __codecvt_abstract_base<_InternT, _ExternT, _StateT> (__refs), -2441: _M_c_locale_codecvt(0) -2441: { } -2441: -2441: explicit -2441: codecvt(__c_locale __cloc, size_t __refs = 0); -2441: -2441: protected: -2441: virtual -2441: ~codecvt() { } -2441: -2441: virtual result -2441: do_out(state_type& __state, const intern_type* __from, -2441: const intern_type* __from_end, const intern_type*& __from_next, -2441: extern_type* __to, extern_type* __to_end, -2441: extern_type*& __to_next) const; -2441: -2441: virtual result -2441: do_unshift(state_type& __state, extern_type* __to, -2441: extern_type* __to_end, extern_type*& __to_next) const; -2441: -2441: virtual result -2441: do_in(state_type& __state, const extern_type* __from, -2441: const extern_type* __from_end, const extern_type*& __from_next, -2441: intern_type* __to, intern_type* __to_end, -2441: intern_type*& __to_next) const; -2441: -2441: virtual int -2441: do_encoding() const throw(); -2441: -2441: virtual bool -2441: do_always_noconv() const throw(); -2441: -2441: virtual int -2441: do_length(state_type&, const extern_type* __from, -2441: const extern_type* __end, size_t __max) const; -2441: -2441: virtual int -2441: do_max_length() const throw(); -2441: }; -2441: -2441: template -2441: locale::id codecvt<_InternT, _ExternT, _StateT>::id; -2441: -2441: -2441: template<> -2441: class codecvt -2441: : public __codecvt_abstract_base -2441: { -2441: friend class messages; -2441: -2441: public: -2441: -2441: typedef char intern_type; -2441: typedef char extern_type; -2441: typedef mbstate_t state_type; -2441: -2441: protected: -2441: __c_locale _M_c_locale_codecvt; -2441: -2441: public: -2441: static locale::id id; -2441: -2441: explicit -2441: codecvt(size_t __refs = 0); -2441: -2441: explicit -2441: codecvt(__c_locale __cloc, size_t __refs = 0); -2441: -2441: protected: -2441: virtual -2441: ~codecvt(); -2441: -2441: virtual result -2441: do_out(state_type& __state, const intern_type* __from, -2441: const intern_type* __from_end, const intern_type*& __from_next, -2441: extern_type* __to, extern_type* __to_end, -2441: extern_type*& __to_next) const; -2441: -2441: virtual result -2441: do_unshift(state_type& __state, extern_type* __to, -2441: extern_type* __to_end, extern_type*& __to_next) const; -2441: -2441: virtual result -2441: do_in(state_type& __state, const extern_type* __from, -2441: const extern_type* __from_end, const extern_type*& __from_next, -2441: intern_type* __to, intern_type* __to_end, -2441: intern_type*& __to_next) const; -2441: -2441: virtual int -2441: do_encoding() const throw(); -2441: -2441: virtual bool -2441: do_always_noconv() const throw(); -2441: -2441: virtual int -2441: do_length(state_type&, const extern_type* __from, -2441: const extern_type* __end, size_t __max) const; -2441: -2441: virtual int -2441: do_max_length() const throw(); -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: template<> -2441: class codecvt -2441: : public __codecvt_abstract_base -2441: { -2441: friend class messages; -2441: -2441: public: -2441: -2441: typedef wchar_t intern_type; -2441: typedef char extern_type; -2441: typedef mbstate_t state_type; -2441: -2441: protected: -2441: __c_locale _M_c_locale_codecvt; -2441: -2441: public: -2441: static locale::id id; -2441: -2441: explicit -2441: codecvt(size_t __refs = 0); -2441: -2441: explicit -2441: codecvt(__c_locale __cloc, size_t __refs = 0); -2441: -2441: protected: -2441: virtual -2441: ~codecvt(); -2441: -2441: virtual result -2441: do_out(state_type& __state, const intern_type* __from, -2441: const intern_type* __from_end, const intern_type*& __from_next, -2441: extern_type* __to, extern_type* __to_end, -2441: extern_type*& __to_next) const; -2441: -2441: virtual result -2441: do_unshift(state_type& __state, -2441: extern_type* __to, extern_type* __to_end, -2441: extern_type*& __to_next) const; -2441: -2441: virtual result -2441: do_in(state_type& __state, -2441: const extern_type* __from, const extern_type* __from_end, -2441: const extern_type*& __from_next, -2441: intern_type* __to, intern_type* __to_end, -2441: intern_type*& __to_next) const; -2441: -2441: virtual -2441: int do_encoding() const throw(); -2441: -2441: virtual -2441: bool do_always_noconv() const throw(); -2441: -2441: virtual -2441: int do_length(state_type&, const extern_type* __from, -2441: const extern_type* __end, size_t __max) const; -2441: -2441: virtual int -2441: do_max_length() const throw(); -2441: }; -2441: # 467 "/usr/include/c++/8/bits/codecvt.h" 3 -2441: template<> -2441: class codecvt -2441: : public __codecvt_abstract_base -2441: { -2441: public: -2441: -2441: typedef char16_t intern_type; -2441: typedef char extern_type; -2441: typedef mbstate_t state_type; -2441: -2441: public: -2441: static locale::id id; -2441: -2441: explicit -2441: codecvt(size_t __refs = 0) -2441: : __codecvt_abstract_base(__refs) { } -2441: -2441: protected: -2441: virtual -2441: ~codecvt(); -2441: -2441: virtual result -2441: do_out(state_type& __state, const intern_type* __from, -2441: const intern_type* __from_end, const intern_type*& __from_next, -2441: extern_type* __to, extern_type* __to_end, -2441: extern_type*& __to_next) const; -2441: -2441: virtual result -2441: do_unshift(state_type& __state, -2441: extern_type* __to, extern_type* __to_end, -2441: extern_type*& __to_next) const; -2441: -2441: virtual result -2441: do_in(state_type& __state, -2441: const extern_type* __from, const extern_type* __from_end, -2441: const extern_type*& __from_next, -2441: intern_type* __to, intern_type* __to_end, -2441: intern_type*& __to_next) const; -2441: -2441: virtual -2441: int do_encoding() const throw(); -2441: -2441: virtual -2441: bool do_always_noconv() const throw(); -2441: -2441: virtual -2441: int do_length(state_type&, const extern_type* __from, -2441: const extern_type* __end, size_t __max) const; -2441: -2441: virtual int -2441: do_max_length() const throw(); -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: template<> -2441: class codecvt -2441: : public __codecvt_abstract_base -2441: { -2441: public: -2441: -2441: typedef char32_t intern_type; -2441: typedef char extern_type; -2441: typedef mbstate_t state_type; -2441: -2441: public: -2441: static locale::id id; -2441: -2441: explicit -2441: codecvt(size_t __refs = 0) -2441: : __codecvt_abstract_base(__refs) { } -2441: -2441: protected: -2441: virtual -2441: ~codecvt(); -2441: -2441: virtual result -2441: do_out(state_type& __state, const intern_type* __from, -2441: const intern_type* __from_end, const intern_type*& __from_next, -2441: extern_type* __to, extern_type* __to_end, -2441: extern_type*& __to_next) const; -2441: -2441: virtual result -2441: do_unshift(state_type& __state, -2441: extern_type* __to, extern_type* __to_end, -2441: extern_type*& __to_next) const; -2441: -2441: virtual result -2441: do_in(state_type& __state, -2441: const extern_type* __from, const extern_type* __from_end, -2441: const extern_type*& __from_next, -2441: intern_type* __to, intern_type* __to_end, -2441: intern_type*& __to_next) const; -2441: -2441: virtual -2441: int do_encoding() const throw(); -2441: -2441: virtual -2441: bool do_always_noconv() const throw(); -2441: -2441: virtual -2441: int do_length(state_type&, const extern_type* __from, -2441: const extern_type* __end, size_t __max) const; -2441: -2441: virtual int -2441: do_max_length() const throw(); -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: template -2441: class codecvt_byname : public codecvt<_InternT, _ExternT, _StateT> -2441: { -2441: public: -2441: explicit -2441: codecvt_byname(const char* __s, size_t __refs = 0) -2441: : codecvt<_InternT, _ExternT, _StateT>(__refs) -2441: { -2441: if (__builtin_strcmp(__s, "C") != 0 -2441: && __builtin_strcmp(__s, "POSIX") != 0) -2441: { -2441: this->_S_destroy_c_locale(this->_M_c_locale_codecvt); -2441: this->_S_create_c_locale(this->_M_c_locale_codecvt, __s); -2441: } -2441: } -2441: -2441: -2441: explicit -2441: codecvt_byname(const string& __s, size_t __refs = 0) -2441: : codecvt_byname(__s.c_str(), __refs) { } -2441: -2441: -2441: protected: -2441: virtual -2441: ~codecvt_byname() { } -2441: }; -2441: -2441: -2441: template<> -2441: class codecvt_byname -2441: : public codecvt -2441: { -2441: public: -2441: explicit -2441: codecvt_byname(const char*, size_t __refs = 0) -2441: : codecvt(__refs) { } -2441: -2441: explicit -2441: codecvt_byname(const string& __s, size_t __refs = 0) -2441: : codecvt_byname(__s.c_str(), __refs) { } -2441: -2441: protected: -2441: virtual -2441: ~codecvt_byname() { } -2441: }; -2441: -2441: template<> -2441: class codecvt_byname -2441: : public codecvt -2441: { -2441: public: -2441: explicit -2441: codecvt_byname(const char*, size_t __refs = 0) -2441: : codecvt(__refs) { } -2441: -2441: explicit -2441: codecvt_byname(const string& __s, size_t __refs = 0) -2441: : codecvt_byname(__s.c_str(), __refs) { } -2441: -2441: protected: -2441: virtual -2441: ~codecvt_byname() { } -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: extern template class codecvt_byname; -2441: -2441: extern template -2441: const codecvt& -2441: use_facet >(const locale&); -2441: -2441: extern template -2441: bool -2441: has_facet >(const locale&); -2441: -2441: -2441: extern template class codecvt_byname; -2441: -2441: extern template -2441: const codecvt& -2441: use_facet >(const locale&); -2441: -2441: extern template -2441: bool -2441: has_facet >(const locale&); -2441: -2441: -2441: -2441: extern template class codecvt_byname; -2441: extern template class codecvt_byname; -2441: -2441: -2441: -2441: -2441: -2441: } -2441: # 2014 "/usr/include/c++/8/bits/locale_facets_nonio.h" 2 3 -2441: -2441: # 1 "/usr/include/c++/8/bits/locale_facets_nonio.tcc" 1 3 -2441: # 33 "/usr/include/c++/8/bits/locale_facets_nonio.tcc" 3 -2441: -2441: # 34 "/usr/include/c++/8/bits/locale_facets_nonio.tcc" 3 -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: template -2441: struct __use_cache<__moneypunct_cache<_CharT, _Intl> > -2441: { -2441: const __moneypunct_cache<_CharT, _Intl>* -2441: operator() (const locale& __loc) const -2441: { -2441: const size_t __i = moneypunct<_CharT, _Intl>::id._M_id(); -2441: const locale::facet** __caches = __loc._M_impl->_M_caches; -2441: if (!__caches[__i]) -2441: { -2441: __moneypunct_cache<_CharT, _Intl>* __tmp = 0; -2441: try -2441: { -2441: __tmp = new __moneypunct_cache<_CharT, _Intl>; -2441: __tmp->_M_cache(__loc); -2441: } -2441: catch(...) -2441: { -2441: delete __tmp; -2441: throw; -2441: } -2441: __loc._M_impl->_M_install_cache(__tmp, __i); -2441: } -2441: return static_cast< -2441: const __moneypunct_cache<_CharT, _Intl>*>(__caches[__i]); -2441: } -2441: }; -2441: -2441: template -2441: void -2441: __moneypunct_cache<_CharT, _Intl>::_M_cache(const locale& __loc) -2441: { -2441: const moneypunct<_CharT, _Intl>& __mp = -2441: use_facet >(__loc); -2441: -2441: _M_decimal_point = __mp.decimal_point(); -2441: _M_thousands_sep = __mp.thousands_sep(); -2441: _M_frac_digits = __mp.frac_digits(); -2441: -2441: char* __grouping = 0; -2441: _CharT* __curr_symbol = 0; -2441: _CharT* __positive_sign = 0; -2441: _CharT* __negative_sign = 0; -2441: try -2441: { -2441: const string& __g = __mp.grouping(); -2441: _M_grouping_size = __g.size(); -2441: __grouping = new char[_M_grouping_size]; -2441: __g.copy(__grouping, _M_grouping_size); -2441: _M_use_grouping = (_M_grouping_size -2441: && static_cast(__grouping[0]) > 0 -2441: && (__grouping[0] -2441: != __gnu_cxx::__numeric_traits::__max)); -2441: -2441: const basic_string<_CharT>& __cs = __mp.curr_symbol(); -2441: _M_curr_symbol_size = __cs.size(); -2441: __curr_symbol = new _CharT[_M_curr_symbol_size]; -2441: __cs.copy(__curr_symbol, _M_curr_symbol_size); -2441: -2441: const basic_string<_CharT>& __ps = __mp.positive_sign(); -2441: _M_positive_sign_size = __ps.size(); -2441: __positive_sign = new _CharT[_M_positive_sign_size]; -2441: __ps.copy(__positive_sign, _M_positive_sign_size); -2441: -2441: const basic_string<_CharT>& __ns = __mp.negative_sign(); -2441: _M_negative_sign_size = __ns.size(); -2441: __negative_sign = new _CharT[_M_negative_sign_size]; -2441: __ns.copy(__negative_sign, _M_negative_sign_size); -2441: -2441: _M_pos_format = __mp.pos_format(); -2441: _M_neg_format = __mp.neg_format(); -2441: -2441: const ctype<_CharT>& __ct = use_facet >(__loc); -2441: __ct.widen(money_base::_S_atoms, -2441: money_base::_S_atoms + money_base::_S_end, _M_atoms); -2441: -2441: _M_grouping = __grouping; -2441: _M_curr_symbol = __curr_symbol; -2441: _M_positive_sign = __positive_sign; -2441: _M_negative_sign = __negative_sign; -2441: _M_allocated = true; -2441: } -2441: catch(...) -2441: { -2441: delete [] __grouping; -2441: delete [] __curr_symbol; -2441: delete [] __positive_sign; -2441: delete [] __negative_sign; -2441: throw; -2441: } -2441: } -2441: -2441: namespace __cxx11 { -2441: -2441: template -2441: template -2441: _InIter -2441: money_get<_CharT, _InIter>:: -2441: _M_extract(iter_type __beg, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, string& __units) const -2441: { -2441: typedef char_traits<_CharT> __traits_type; -2441: typedef typename string_type::size_type size_type; -2441: typedef money_base::part part; -2441: typedef __moneypunct_cache<_CharT, _Intl> __cache_type; -2441: -2441: const locale& __loc = __io._M_getloc(); -2441: const ctype<_CharT>& __ctype = use_facet >(__loc); -2441: -2441: __use_cache<__cache_type> __uc; -2441: const __cache_type* __lc = __uc(__loc); -2441: const char_type* __lit = __lc->_M_atoms; -2441: -2441: -2441: bool __negative = false; -2441: -2441: size_type __sign_size = 0; -2441: -2441: const bool __mandatory_sign = (__lc->_M_positive_sign_size -2441: && __lc->_M_negative_sign_size); -2441: -2441: string __grouping_tmp; -2441: if (__lc->_M_use_grouping) -2441: __grouping_tmp.reserve(32); -2441: -2441: int __last_pos = 0; -2441: -2441: int __n = 0; -2441: -2441: bool __testvalid = true; -2441: -2441: bool __testdecfound = false; -2441: -2441: -2441: string __res; -2441: __res.reserve(32); -2441: -2441: const char_type* __lit_zero = __lit + money_base::_S_zero; -2441: const money_base::pattern __p = __lc->_M_neg_format; -2441: for (int __i = 0; __i < 4 && __testvalid; ++__i) -2441: { -2441: const part __which = static_cast(__p.field[__i]); -2441: switch (__which) -2441: { -2441: case money_base::symbol: -2441: -2441: -2441: -2441: -2441: if (__io.flags() & ios_base::showbase || __sign_size > 1 -2441: || __i == 0 -2441: || (__i == 1 && (__mandatory_sign -2441: || (static_cast(__p.field[0]) -2441: == money_base::sign) -2441: || (static_cast(__p.field[2]) -2441: == money_base::space))) -2441: || (__i == 2 && ((static_cast(__p.field[3]) -2441: == money_base::value) -2441: || (__mandatory_sign -2441: && (static_cast(__p.field[3]) -2441: == money_base::sign))))) -2441: { -2441: const size_type __len = __lc->_M_curr_symbol_size; -2441: size_type __j = 0; -2441: for (; __beg != __end && __j < __len -2441: && *__beg == __lc->_M_curr_symbol[__j]; -2441: ++__beg, (void)++__j); -2441: if (__j != __len -2441: && (__j || __io.flags() & ios_base::showbase)) -2441: __testvalid = false; -2441: } -2441: break; -2441: case money_base::sign: -2441: -2441: if (__lc->_M_positive_sign_size && __beg != __end -2441: && *__beg == __lc->_M_positive_sign[0]) -2441: { -2441: __sign_size = __lc->_M_positive_sign_size; -2441: ++__beg; -2441: } -2441: else if (__lc->_M_negative_sign_size && __beg != __end -2441: && *__beg == __lc->_M_negative_sign[0]) -2441: { -2441: __negative = true; -2441: __sign_size = __lc->_M_negative_sign_size; -2441: ++__beg; -2441: } -2441: else if (__lc->_M_positive_sign_size -2441: && !__lc->_M_negative_sign_size) -2441: -2441: -2441: __negative = true; -2441: else if (__mandatory_sign) -2441: __testvalid = false; -2441: break; -2441: case money_base::value: -2441: -2441: -2441: for (; __beg != __end; ++__beg) -2441: { -2441: const char_type __c = *__beg; -2441: const char_type* __q = __traits_type::find(__lit_zero, -2441: 10, __c); -2441: if (__q != 0) -2441: { -2441: __res += money_base::_S_atoms[__q - __lit]; -2441: ++__n; -2441: } -2441: else if (__c == __lc->_M_decimal_point -2441: && !__testdecfound) -2441: { -2441: if (__lc->_M_frac_digits <= 0) -2441: break; -2441: -2441: __last_pos = __n; -2441: __n = 0; -2441: __testdecfound = true; -2441: } -2441: else if (__lc->_M_use_grouping -2441: && __c == __lc->_M_thousands_sep -2441: && !__testdecfound) -2441: { -2441: if (__n) -2441: { -2441: -2441: __grouping_tmp += static_cast(__n); -2441: __n = 0; -2441: } -2441: else -2441: { -2441: __testvalid = false; -2441: break; -2441: } -2441: } -2441: else -2441: break; -2441: } -2441: if (__res.empty()) -2441: __testvalid = false; -2441: break; -2441: case money_base::space: -2441: -2441: if (__beg != __end && __ctype.is(ctype_base::space, *__beg)) -2441: ++__beg; -2441: else -2441: __testvalid = false; -2441: -2441: case money_base::none: -2441: -2441: if (__i != 3) -2441: for (; __beg != __end -2441: && __ctype.is(ctype_base::space, *__beg); ++__beg); -2441: break; -2441: } -2441: } -2441: -2441: -2441: if (__sign_size > 1 && __testvalid) -2441: { -2441: const char_type* __sign = __negative ? __lc->_M_negative_sign -2441: : __lc->_M_positive_sign; -2441: size_type __i = 1; -2441: for (; __beg != __end && __i < __sign_size -2441: && *__beg == __sign[__i]; ++__beg, (void)++__i); -2441: -2441: if (__i != __sign_size) -2441: __testvalid = false; -2441: } -2441: -2441: if (__testvalid) -2441: { -2441: -2441: if (__res.size() > 1) -2441: { -2441: const size_type __first = __res.find_first_not_of('0'); -2441: const bool __only_zeros = __first == string::npos; -2441: if (__first) -2441: __res.erase(0, __only_zeros ? __res.size() - 1 : __first); -2441: } -2441: -2441: -2441: if (__negative && __res[0] != '0') -2441: __res.insert(__res.begin(), '-'); -2441: -2441: -2441: if (__grouping_tmp.size()) -2441: { -2441: -2441: __grouping_tmp += static_cast(__testdecfound ? __last_pos -2441: : __n); -2441: if (!std::__verify_grouping(__lc->_M_grouping, -2441: __lc->_M_grouping_size, -2441: __grouping_tmp)) -2441: __err |= ios_base::failbit; -2441: } -2441: -2441: -2441: if (__testdecfound && __n != __lc->_M_frac_digits) -2441: __testvalid = false; -2441: } -2441: -2441: -2441: if (!__testvalid) -2441: __err |= ios_base::failbit; -2441: else -2441: __units.swap(__res); -2441: -2441: -2441: if (__beg == __end) -2441: __err |= ios_base::eofbit; -2441: return __beg; -2441: } -2441: # 368 "/usr/include/c++/8/bits/locale_facets_nonio.tcc" 3 -2441: template -2441: _InIter -2441: money_get<_CharT, _InIter>:: -2441: do_get(iter_type __beg, iter_type __end, bool __intl, ios_base& __io, -2441: ios_base::iostate& __err, long double& __units) const -2441: { -2441: string __str; -2441: __beg = __intl ? _M_extract(__beg, __end, __io, __err, __str) -2441: : _M_extract(__beg, __end, __io, __err, __str); -2441: std::__convert_to_v(__str.c_str(), __units, __err, _S_get_c_locale()); -2441: return __beg; -2441: } -2441: -2441: template -2441: _InIter -2441: money_get<_CharT, _InIter>:: -2441: do_get(iter_type __beg, iter_type __end, bool __intl, ios_base& __io, -2441: ios_base::iostate& __err, string_type& __digits) const -2441: { -2441: typedef typename string::size_type size_type; -2441: -2441: const locale& __loc = __io._M_getloc(); -2441: const ctype<_CharT>& __ctype = use_facet >(__loc); -2441: -2441: string __str; -2441: __beg = __intl ? _M_extract(__beg, __end, __io, __err, __str) -2441: : _M_extract(__beg, __end, __io, __err, __str); -2441: const size_type __len = __str.size(); -2441: if (__len) -2441: { -2441: __digits.resize(__len); -2441: __ctype.widen(__str.data(), __str.data() + __len, &__digits[0]); -2441: } -2441: return __beg; -2441: } -2441: -2441: template -2441: template -2441: _OutIter -2441: money_put<_CharT, _OutIter>:: -2441: _M_insert(iter_type __s, ios_base& __io, char_type __fill, -2441: const string_type& __digits) const -2441: { -2441: typedef typename string_type::size_type size_type; -2441: typedef money_base::part part; -2441: typedef __moneypunct_cache<_CharT, _Intl> __cache_type; -2441: -2441: const locale& __loc = __io._M_getloc(); -2441: const ctype<_CharT>& __ctype = use_facet >(__loc); -2441: -2441: __use_cache<__cache_type> __uc; -2441: const __cache_type* __lc = __uc(__loc); -2441: const char_type* __lit = __lc->_M_atoms; -2441: -2441: -2441: -2441: const char_type* __beg = __digits.data(); -2441: -2441: money_base::pattern __p; -2441: const char_type* __sign; -2441: size_type __sign_size; -2441: if (!(*__beg == __lit[money_base::_S_minus])) -2441: { -2441: __p = __lc->_M_pos_format; -2441: __sign = __lc->_M_positive_sign; -2441: __sign_size = __lc->_M_positive_sign_size; -2441: } -2441: else -2441: { -2441: __p = __lc->_M_neg_format; -2441: __sign = __lc->_M_negative_sign; -2441: __sign_size = __lc->_M_negative_sign_size; -2441: if (__digits.size()) -2441: ++__beg; -2441: } -2441: -2441: -2441: size_type __len = __ctype.scan_not(ctype_base::digit, __beg, -2441: __beg + __digits.size()) - __beg; -2441: if (__len) -2441: { -2441: -2441: -2441: -2441: string_type __value; -2441: __value.reserve(2 * __len); -2441: -2441: -2441: -2441: long __paddec = __len - __lc->_M_frac_digits; -2441: if (__paddec > 0) -2441: { -2441: if (__lc->_M_frac_digits < 0) -2441: __paddec = __len; -2441: if (__lc->_M_grouping_size) -2441: { -2441: __value.assign(2 * __paddec, char_type()); -2441: _CharT* __vend = -2441: std::__add_grouping(&__value[0], __lc->_M_thousands_sep, -2441: __lc->_M_grouping, -2441: __lc->_M_grouping_size, -2441: __beg, __beg + __paddec); -2441: __value.erase(__vend - &__value[0]); -2441: } -2441: else -2441: __value.assign(__beg, __paddec); -2441: } -2441: -2441: -2441: if (__lc->_M_frac_digits > 0) -2441: { -2441: __value += __lc->_M_decimal_point; -2441: if (__paddec >= 0) -2441: __value.append(__beg + __paddec, __lc->_M_frac_digits); -2441: else -2441: { -2441: -2441: __value.append(-__paddec, __lit[money_base::_S_zero]); -2441: __value.append(__beg, __len); -2441: } -2441: } -2441: -2441: -2441: const ios_base::fmtflags __f = __io.flags() -2441: & ios_base::adjustfield; -2441: __len = __value.size() + __sign_size; -2441: __len += ((__io.flags() & ios_base::showbase) -2441: ? __lc->_M_curr_symbol_size : 0); -2441: -2441: string_type __res; -2441: __res.reserve(2 * __len); -2441: -2441: const size_type __width = static_cast(__io.width()); -2441: const bool __testipad = (__f == ios_base::internal -2441: && __len < __width); -2441: -2441: for (int __i = 0; __i < 4; ++__i) -2441: { -2441: const part __which = static_cast(__p.field[__i]); -2441: switch (__which) -2441: { -2441: case money_base::symbol: -2441: if (__io.flags() & ios_base::showbase) -2441: __res.append(__lc->_M_curr_symbol, -2441: __lc->_M_curr_symbol_size); -2441: break; -2441: case money_base::sign: -2441: -2441: -2441: -2441: if (__sign_size) -2441: __res += __sign[0]; -2441: break; -2441: case money_base::value: -2441: __res += __value; -2441: break; -2441: case money_base::space: -2441: -2441: -2441: -2441: if (__testipad) -2441: __res.append(__width - __len, __fill); -2441: else -2441: __res += __fill; -2441: break; -2441: case money_base::none: -2441: if (__testipad) -2441: __res.append(__width - __len, __fill); -2441: break; -2441: } -2441: } -2441: -2441: -2441: if (__sign_size > 1) -2441: __res.append(__sign + 1, __sign_size - 1); -2441: -2441: -2441: __len = __res.size(); -2441: if (__width > __len) -2441: { -2441: if (__f == ios_base::left) -2441: -2441: __res.append(__width - __len, __fill); -2441: else -2441: -2441: __res.insert(0, __width - __len, __fill); -2441: __len = __width; -2441: } -2441: -2441: -2441: __s = std::__write(__s, __res.data(), __len); -2441: } -2441: __io.width(0); -2441: return __s; -2441: } -2441: # 574 "/usr/include/c++/8/bits/locale_facets_nonio.tcc" 3 -2441: template -2441: _OutIter -2441: money_put<_CharT, _OutIter>:: -2441: do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, -2441: long double __units) const -2441: { -2441: const locale __loc = __io.getloc(); -2441: const ctype<_CharT>& __ctype = use_facet >(__loc); -2441: -2441: -2441: int __cs_size = 64; -2441: char* __cs = static_cast(__builtin_alloca(__cs_size)); -2441: -2441: -2441: int __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, -2441: "%.*Lf", 0, __units); -2441: -2441: if (__len >= __cs_size) -2441: { -2441: __cs_size = __len + 1; -2441: __cs = static_cast(__builtin_alloca(__cs_size)); -2441: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, -2441: "%.*Lf", 0, __units); -2441: } -2441: # 606 "/usr/include/c++/8/bits/locale_facets_nonio.tcc" 3 -2441: string_type __digits(__len, char_type()); -2441: __ctype.widen(__cs, __cs + __len, &__digits[0]); -2441: return __intl ? _M_insert(__s, __io, __fill, __digits) -2441: : _M_insert(__s, __io, __fill, __digits); -2441: } -2441: -2441: template -2441: _OutIter -2441: money_put<_CharT, _OutIter>:: -2441: do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, -2441: const string_type& __digits) const -2441: { return __intl ? _M_insert(__s, __io, __fill, __digits) -2441: : _M_insert(__s, __io, __fill, __digits); } -2441: -2441: } -2441: -2441: -2441: -2441: -2441: template -2441: time_base::dateorder -2441: time_get<_CharT, _InIter>::do_date_order() const -2441: { return time_base::no_order; } -2441: -2441: -2441: -2441: template -2441: _InIter -2441: time_get<_CharT, _InIter>:: -2441: _M_extract_via_format(iter_type __beg, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, tm* __tm, -2441: const _CharT* __format) const -2441: { -2441: const locale& __loc = __io._M_getloc(); -2441: const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc); -2441: const ctype<_CharT>& __ctype = use_facet >(__loc); -2441: const size_t __len = char_traits<_CharT>::length(__format); -2441: -2441: ios_base::iostate __tmperr = ios_base::goodbit; -2441: size_t __i = 0; -2441: for (; __beg != __end && __i < __len && !__tmperr; ++__i) -2441: { -2441: if (__ctype.narrow(__format[__i], 0) == '%') -2441: { -2441: -2441: char __c = __ctype.narrow(__format[++__i], 0); -2441: int __mem = 0; -2441: if (__c == 'E' || __c == 'O') -2441: __c = __ctype.narrow(__format[++__i], 0); -2441: switch (__c) -2441: { -2441: const char* __cs; -2441: _CharT __wcs[10]; -2441: case 'a': -2441: -2441: const char_type* __days1[7]; -2441: __tp._M_days_abbreviated(__days1); -2441: __beg = _M_extract_name(__beg, __end, __mem, __days1, -2441: 7, __io, __tmperr); -2441: if (!__tmperr) -2441: __tm->tm_wday = __mem; -2441: break; -2441: case 'A': -2441: -2441: const char_type* __days2[7]; -2441: __tp._M_days(__days2); -2441: __beg = _M_extract_name(__beg, __end, __mem, __days2, -2441: 7, __io, __tmperr); -2441: if (!__tmperr) -2441: __tm->tm_wday = __mem; -2441: break; -2441: case 'h': -2441: case 'b': -2441: -2441: const char_type* __months1[12]; -2441: __tp._M_months_abbreviated(__months1); -2441: __beg = _M_extract_name(__beg, __end, __mem, -2441: __months1, 12, __io, __tmperr); -2441: if (!__tmperr) -2441: __tm->tm_mon = __mem; -2441: break; -2441: case 'B': -2441: -2441: const char_type* __months2[12]; -2441: __tp._M_months(__months2); -2441: __beg = _M_extract_name(__beg, __end, __mem, -2441: __months2, 12, __io, __tmperr); -2441: if (!__tmperr) -2441: __tm->tm_mon = __mem; -2441: break; -2441: case 'c': -2441: -2441: const char_type* __dt[2]; -2441: __tp._M_date_time_formats(__dt); -2441: __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, -2441: __tm, __dt[0]); -2441: break; -2441: case 'd': -2441: -2441: __beg = _M_extract_num(__beg, __end, __mem, 1, 31, 2, -2441: __io, __tmperr); -2441: if (!__tmperr) -2441: __tm->tm_mday = __mem; -2441: break; -2441: case 'e': -2441: -2441: -2441: if (__ctype.is(ctype_base::space, *__beg)) -2441: __beg = _M_extract_num(++__beg, __end, __mem, 1, 9, -2441: 1, __io, __tmperr); -2441: else -2441: __beg = _M_extract_num(__beg, __end, __mem, 10, 31, -2441: 2, __io, __tmperr); -2441: if (!__tmperr) -2441: __tm->tm_mday = __mem; -2441: break; -2441: case 'D': -2441: -2441: __cs = "%m/%d/%y"; -2441: __ctype.widen(__cs, __cs + 9, __wcs); -2441: __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, -2441: __tm, __wcs); -2441: break; -2441: case 'H': -2441: -2441: __beg = _M_extract_num(__beg, __end, __mem, 0, 23, 2, -2441: __io, __tmperr); -2441: if (!__tmperr) -2441: __tm->tm_hour = __mem; -2441: break; -2441: case 'I': -2441: -2441: __beg = _M_extract_num(__beg, __end, __mem, 1, 12, 2, -2441: __io, __tmperr); -2441: if (!__tmperr) -2441: __tm->tm_hour = __mem; -2441: break; -2441: case 'm': -2441: -2441: __beg = _M_extract_num(__beg, __end, __mem, 1, 12, 2, -2441: __io, __tmperr); -2441: if (!__tmperr) -2441: __tm->tm_mon = __mem - 1; -2441: break; -2441: case 'M': -2441: -2441: __beg = _M_extract_num(__beg, __end, __mem, 0, 59, 2, -2441: __io, __tmperr); -2441: if (!__tmperr) -2441: __tm->tm_min = __mem; -2441: break; -2441: case 'n': -2441: if (__ctype.narrow(*__beg, 0) == '\n') -2441: ++__beg; -2441: else -2441: __tmperr |= ios_base::failbit; -2441: break; -2441: case 'R': -2441: -2441: __cs = "%H:%M"; -2441: __ctype.widen(__cs, __cs + 6, __wcs); -2441: __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, -2441: __tm, __wcs); -2441: break; -2441: case 'S': -2441: -2441: -2441: -2441: __beg = _M_extract_num(__beg, __end, __mem, 0, 60, 2, -2441: -2441: -2441: -2441: __io, __tmperr); -2441: if (!__tmperr) -2441: __tm->tm_sec = __mem; -2441: break; -2441: case 't': -2441: if (__ctype.narrow(*__beg, 0) == '\t') -2441: ++__beg; -2441: else -2441: __tmperr |= ios_base::failbit; -2441: break; -2441: case 'T': -2441: -2441: __cs = "%H:%M:%S"; -2441: __ctype.widen(__cs, __cs + 9, __wcs); -2441: __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, -2441: __tm, __wcs); -2441: break; -2441: case 'x': -2441: -2441: const char_type* __dates[2]; -2441: __tp._M_date_formats(__dates); -2441: __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, -2441: __tm, __dates[0]); -2441: break; -2441: case 'X': -2441: -2441: const char_type* __times[2]; -2441: __tp._M_time_formats(__times); -2441: __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, -2441: __tm, __times[0]); -2441: break; -2441: case 'y': -2441: case 'C': -2441: -2441: case 'Y': -2441: -2441: -2441: -2441: -2441: __beg = _M_extract_num(__beg, __end, __mem, 0, 9999, 4, -2441: __io, __tmperr); -2441: if (!__tmperr) -2441: __tm->tm_year = __mem < 0 ? __mem + 100 : __mem - 1900; -2441: break; -2441: case 'Z': -2441: -2441: if (__ctype.is(ctype_base::upper, *__beg)) -2441: { -2441: int __tmp; -2441: __beg = _M_extract_name(__beg, __end, __tmp, -2441: __timepunct_cache<_CharT>::_S_timezones, -2441: 14, __io, __tmperr); -2441: -2441: -2441: if (__beg != __end && !__tmperr && __tmp == 0 -2441: && (*__beg == __ctype.widen('-') -2441: || *__beg == __ctype.widen('+'))) -2441: { -2441: __beg = _M_extract_num(__beg, __end, __tmp, 0, 23, 2, -2441: __io, __tmperr); -2441: __beg = _M_extract_num(__beg, __end, __tmp, 0, 59, 2, -2441: __io, __tmperr); -2441: } -2441: } -2441: else -2441: __tmperr |= ios_base::failbit; -2441: break; -2441: default: -2441: -2441: __tmperr |= ios_base::failbit; -2441: } -2441: } -2441: else -2441: { -2441: -2441: if (__format[__i] == *__beg) -2441: ++__beg; -2441: else -2441: __tmperr |= ios_base::failbit; -2441: } -2441: } -2441: -2441: if (__tmperr || __i != __len) -2441: __err |= ios_base::failbit; -2441: -2441: return __beg; -2441: } -2441: -2441: template -2441: _InIter -2441: time_get<_CharT, _InIter>:: -2441: _M_extract_num(iter_type __beg, iter_type __end, int& __member, -2441: int __min, int __max, size_t __len, -2441: ios_base& __io, ios_base::iostate& __err) const -2441: { -2441: const locale& __loc = __io._M_getloc(); -2441: const ctype<_CharT>& __ctype = use_facet >(__loc); -2441: -2441: -2441: int __mult = __len == 2 ? 10 : (__len == 4 ? 1000 : 1); -2441: -2441: ++__min; -2441: size_t __i = 0; -2441: int __value = 0; -2441: for (; __beg != __end && __i < __len; ++__beg, (void)++__i) -2441: { -2441: const char __c = __ctype.narrow(*__beg, '*'); -2441: if (__c >= '0' && __c <= '9') -2441: { -2441: __value = __value * 10 + (__c - '0'); -2441: const int __valuec = __value * __mult; -2441: if (__valuec > __max || __valuec + __mult < __min) -2441: break; -2441: __mult /= 10; -2441: } -2441: else -2441: break; -2441: } -2441: if (__i == __len) -2441: __member = __value; -2441: -2441: else if (__len == 4 && __i == 2) -2441: __member = __value - 100; -2441: else -2441: __err |= ios_base::failbit; -2441: -2441: return __beg; -2441: } -2441: -2441: -2441: -2441: template -2441: _InIter -2441: time_get<_CharT, _InIter>:: -2441: _M_extract_name(iter_type __beg, iter_type __end, int& __member, -2441: const _CharT** __names, size_t __indexlen, -2441: ios_base& __io, ios_base::iostate& __err) const -2441: { -2441: typedef char_traits<_CharT> __traits_type; -2441: const locale& __loc = __io._M_getloc(); -2441: const ctype<_CharT>& __ctype = use_facet >(__loc); -2441: -2441: int* __matches = static_cast(__builtin_alloca(sizeof(int) -2441: * __indexlen)); -2441: size_t __nmatches = 0; -2441: size_t __pos = 0; -2441: bool __testvalid = true; -2441: const char_type* __name; -2441: -2441: -2441: -2441: -2441: -2441: if (__beg != __end) -2441: { -2441: const char_type __c = *__beg; -2441: for (size_t __i1 = 0; __i1 < __indexlen; ++__i1) -2441: if (__c == __names[__i1][0] -2441: || __c == __ctype.toupper(__names[__i1][0])) -2441: __matches[__nmatches++] = __i1; -2441: } -2441: -2441: while (__nmatches > 1) -2441: { -2441: -2441: size_t __minlen = __traits_type::length(__names[__matches[0]]); -2441: for (size_t __i2 = 1; __i2 < __nmatches; ++__i2) -2441: __minlen = std::min(__minlen, -2441: __traits_type::length(__names[__matches[__i2]])); -2441: ++__beg; -2441: ++__pos; -2441: if (__pos < __minlen && __beg != __end) -2441: for (size_t __i3 = 0; __i3 < __nmatches;) -2441: { -2441: __name = __names[__matches[__i3]]; -2441: if (!(__name[__pos] == *__beg)) -2441: __matches[__i3] = __matches[--__nmatches]; -2441: else -2441: ++__i3; -2441: } -2441: else -2441: break; -2441: } -2441: -2441: if (__nmatches == 1) -2441: { -2441: -2441: ++__beg; -2441: ++__pos; -2441: __name = __names[__matches[0]]; -2441: const size_t __len = __traits_type::length(__name); -2441: while (__pos < __len && __beg != __end && __name[__pos] == *__beg) -2441: ++__beg, (void)++__pos; -2441: -2441: if (__len == __pos) -2441: __member = __matches[0]; -2441: else -2441: __testvalid = false; -2441: } -2441: else -2441: __testvalid = false; -2441: if (!__testvalid) -2441: __err |= ios_base::failbit; -2441: -2441: return __beg; -2441: } -2441: -2441: template -2441: _InIter -2441: time_get<_CharT, _InIter>:: -2441: _M_extract_wday_or_month(iter_type __beg, iter_type __end, int& __member, -2441: const _CharT** __names, size_t __indexlen, -2441: ios_base& __io, ios_base::iostate& __err) const -2441: { -2441: typedef char_traits<_CharT> __traits_type; -2441: const locale& __loc = __io._M_getloc(); -2441: const ctype<_CharT>& __ctype = use_facet >(__loc); -2441: -2441: int* __matches = static_cast(__builtin_alloca(2 * sizeof(int) -2441: * __indexlen)); -2441: size_t __nmatches = 0; -2441: size_t* __matches_lengths = 0; -2441: size_t __pos = 0; -2441: -2441: if (__beg != __end) -2441: { -2441: const char_type __c = *__beg; -2441: for (size_t __i = 0; __i < 2 * __indexlen; ++__i) -2441: if (__c == __names[__i][0] -2441: || __c == __ctype.toupper(__names[__i][0])) -2441: __matches[__nmatches++] = __i; -2441: } -2441: -2441: if (__nmatches) -2441: { -2441: ++__beg; -2441: ++__pos; -2441: -2441: __matches_lengths -2441: = static_cast(__builtin_alloca(sizeof(size_t) -2441: * __nmatches)); -2441: for (size_t __i = 0; __i < __nmatches; ++__i) -2441: __matches_lengths[__i] -2441: = __traits_type::length(__names[__matches[__i]]); -2441: } -2441: -2441: for (; __beg != __end; ++__beg, (void)++__pos) -2441: { -2441: size_t __nskipped = 0; -2441: const char_type __c = *__beg; -2441: for (size_t __i = 0; __i < __nmatches;) -2441: { -2441: const char_type* __name = __names[__matches[__i]]; -2441: if (__pos >= __matches_lengths[__i]) -2441: ++__nskipped, ++__i; -2441: else if (!(__name[__pos] == __c)) -2441: { -2441: --__nmatches; -2441: __matches[__i] = __matches[__nmatches]; -2441: __matches_lengths[__i] = __matches_lengths[__nmatches]; -2441: } -2441: else -2441: ++__i; -2441: } -2441: if (__nskipped == __nmatches) -2441: break; -2441: } -2441: -2441: if ((__nmatches == 1 && __matches_lengths[0] == __pos) -2441: || (__nmatches == 2 && (__matches_lengths[0] == __pos -2441: || __matches_lengths[1] == __pos))) -2441: __member = (__matches[0] >= __indexlen -2441: ? __matches[0] - __indexlen : __matches[0]); -2441: else -2441: __err |= ios_base::failbit; -2441: -2441: return __beg; -2441: } -2441: -2441: template -2441: _InIter -2441: time_get<_CharT, _InIter>:: -2441: do_get_time(iter_type __beg, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, tm* __tm) const -2441: { -2441: const locale& __loc = __io._M_getloc(); -2441: const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc); -2441: const char_type* __times[2]; -2441: __tp._M_time_formats(__times); -2441: __beg = _M_extract_via_format(__beg, __end, __io, __err, -2441: __tm, __times[0]); -2441: if (__beg == __end) -2441: __err |= ios_base::eofbit; -2441: return __beg; -2441: } -2441: -2441: template -2441: _InIter -2441: time_get<_CharT, _InIter>:: -2441: do_get_date(iter_type __beg, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, tm* __tm) const -2441: { -2441: const locale& __loc = __io._M_getloc(); -2441: const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc); -2441: const char_type* __dates[2]; -2441: __tp._M_date_formats(__dates); -2441: __beg = _M_extract_via_format(__beg, __end, __io, __err, -2441: __tm, __dates[0]); -2441: if (__beg == __end) -2441: __err |= ios_base::eofbit; -2441: return __beg; -2441: } -2441: -2441: template -2441: _InIter -2441: time_get<_CharT, _InIter>:: -2441: do_get_weekday(iter_type __beg, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, tm* __tm) const -2441: { -2441: const locale& __loc = __io._M_getloc(); -2441: const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc); -2441: const char_type* __days[14]; -2441: __tp._M_days_abbreviated(__days); -2441: __tp._M_days(__days + 7); -2441: int __tmpwday; -2441: ios_base::iostate __tmperr = ios_base::goodbit; -2441: -2441: __beg = _M_extract_wday_or_month(__beg, __end, __tmpwday, __days, 7, -2441: __io, __tmperr); -2441: if (!__tmperr) -2441: __tm->tm_wday = __tmpwday; -2441: else -2441: __err |= ios_base::failbit; -2441: -2441: if (__beg == __end) -2441: __err |= ios_base::eofbit; -2441: return __beg; -2441: } -2441: -2441: template -2441: _InIter -2441: time_get<_CharT, _InIter>:: -2441: do_get_monthname(iter_type __beg, iter_type __end, -2441: ios_base& __io, ios_base::iostate& __err, tm* __tm) const -2441: { -2441: const locale& __loc = __io._M_getloc(); -2441: const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc); -2441: const char_type* __months[24]; -2441: __tp._M_months_abbreviated(__months); -2441: __tp._M_months(__months + 12); -2441: int __tmpmon; -2441: ios_base::iostate __tmperr = ios_base::goodbit; -2441: -2441: __beg = _M_extract_wday_or_month(__beg, __end, __tmpmon, __months, 12, -2441: __io, __tmperr); -2441: if (!__tmperr) -2441: __tm->tm_mon = __tmpmon; -2441: else -2441: __err |= ios_base::failbit; -2441: -2441: if (__beg == __end) -2441: __err |= ios_base::eofbit; -2441: return __beg; -2441: } -2441: -2441: template -2441: _InIter -2441: time_get<_CharT, _InIter>:: -2441: do_get_year(iter_type __beg, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, tm* __tm) const -2441: { -2441: int __tmpyear; -2441: ios_base::iostate __tmperr = ios_base::goodbit; -2441: -2441: __beg = _M_extract_num(__beg, __end, __tmpyear, 0, 9999, 4, -2441: __io, __tmperr); -2441: if (!__tmperr) -2441: __tm->tm_year = __tmpyear < 0 ? __tmpyear + 100 : __tmpyear - 1900; -2441: else -2441: __err |= ios_base::failbit; -2441: -2441: if (__beg == __end) -2441: __err |= ios_base::eofbit; -2441: return __beg; -2441: } -2441: -2441: -2441: template -2441: inline -2441: _InIter -2441: time_get<_CharT, _InIter>:: -2441: get(iter_type __s, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, tm* __tm, const char_type* __fmt, -2441: const char_type* __fmtend) const -2441: { -2441: const locale& __loc = __io._M_getloc(); -2441: ctype<_CharT> const& __ctype = use_facet >(__loc); -2441: __err = ios_base::goodbit; -2441: while (__fmt != __fmtend && -2441: __err == ios_base::goodbit) -2441: { -2441: if (__s == __end) -2441: { -2441: __err = ios_base::eofbit | ios_base::failbit; -2441: break; -2441: } -2441: else if (__ctype.narrow(*__fmt, 0) == '%') -2441: { -2441: char __format; -2441: char __mod = 0; -2441: if (++__fmt == __fmtend) -2441: { -2441: __err = ios_base::failbit; -2441: break; -2441: } -2441: const char __c = __ctype.narrow(*__fmt, 0); -2441: if (__c != 'E' && __c != 'O') -2441: __format = __c; -2441: else if (++__fmt != __fmtend) -2441: { -2441: __mod = __c; -2441: __format = __ctype.narrow(*__fmt, 0); -2441: } -2441: else -2441: { -2441: __err = ios_base::failbit; -2441: break; -2441: } -2441: __s = this->do_get(__s, __end, __io, __err, __tm, __format, -2441: __mod); -2441: ++__fmt; -2441: } -2441: else if (__ctype.is(ctype_base::space, *__fmt)) -2441: { -2441: ++__fmt; -2441: while (__fmt != __fmtend && -2441: __ctype.is(ctype_base::space, *__fmt)) -2441: ++__fmt; -2441: -2441: while (__s != __end && -2441: __ctype.is(ctype_base::space, *__s)) -2441: ++__s; -2441: } -2441: -2441: else if (__ctype.tolower(*__s) == __ctype.tolower(*__fmt) || -2441: __ctype.toupper(*__s) == __ctype.toupper(*__fmt)) -2441: { -2441: ++__s; -2441: ++__fmt; -2441: } -2441: else -2441: { -2441: __err = ios_base::failbit; -2441: break; -2441: } -2441: } -2441: return __s; -2441: } -2441: -2441: template -2441: inline -2441: _InIter -2441: time_get<_CharT, _InIter>:: -2441: do_get(iter_type __beg, iter_type __end, ios_base& __io, -2441: ios_base::iostate& __err, tm* __tm, -2441: char __format, char __mod) const -2441: { -2441: const locale& __loc = __io._M_getloc(); -2441: ctype<_CharT> const& __ctype = use_facet >(__loc); -2441: __err = ios_base::goodbit; -2441: -2441: char_type __fmt[4]; -2441: __fmt[0] = __ctype.widen('%'); -2441: if (!__mod) -2441: { -2441: __fmt[1] = __format; -2441: __fmt[2] = char_type(); -2441: } -2441: else -2441: { -2441: __fmt[1] = __mod; -2441: __fmt[2] = __format; -2441: __fmt[3] = char_type(); -2441: } -2441: -2441: __beg = _M_extract_via_format(__beg, __end, __io, __err, __tm, __fmt); -2441: if (__beg == __end) -2441: __err |= ios_base::eofbit; -2441: return __beg; -2441: } -2441: -2441: -2441: -2441: template -2441: _OutIter -2441: time_put<_CharT, _OutIter>:: -2441: put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm, -2441: const _CharT* __beg, const _CharT* __end) const -2441: { -2441: const locale& __loc = __io._M_getloc(); -2441: ctype<_CharT> const& __ctype = use_facet >(__loc); -2441: for (; __beg != __end; ++__beg) -2441: if (__ctype.narrow(*__beg, 0) != '%') -2441: { -2441: *__s = *__beg; -2441: ++__s; -2441: } -2441: else if (++__beg != __end) -2441: { -2441: char __format; -2441: char __mod = 0; -2441: const char __c = __ctype.narrow(*__beg, 0); -2441: if (__c != 'E' && __c != 'O') -2441: __format = __c; -2441: else if (++__beg != __end) -2441: { -2441: __mod = __c; -2441: __format = __ctype.narrow(*__beg, 0); -2441: } -2441: else -2441: break; -2441: __s = this->do_put(__s, __io, __fill, __tm, __format, __mod); -2441: } -2441: else -2441: break; -2441: return __s; -2441: } -2441: -2441: template -2441: _OutIter -2441: time_put<_CharT, _OutIter>:: -2441: do_put(iter_type __s, ios_base& __io, char_type, const tm* __tm, -2441: char __format, char __mod) const -2441: { -2441: const locale& __loc = __io._M_getloc(); -2441: ctype<_CharT> const& __ctype = use_facet >(__loc); -2441: __timepunct<_CharT> const& __tp = use_facet<__timepunct<_CharT> >(__loc); -2441: -2441: -2441: -2441: const size_t __maxlen = 128; -2441: char_type __res[__maxlen]; -2441: -2441: -2441: -2441: -2441: -2441: -2441: char_type __fmt[4]; -2441: __fmt[0] = __ctype.widen('%'); -2441: if (!__mod) -2441: { -2441: __fmt[1] = __format; -2441: __fmt[2] = char_type(); -2441: } -2441: else -2441: { -2441: __fmt[1] = __mod; -2441: __fmt[2] = __format; -2441: __fmt[3] = char_type(); -2441: } -2441: -2441: __tp._M_put(__res, __maxlen, __fmt, __tm); -2441: -2441: -2441: return std::__write(__s, __res, char_traits::length(__res)); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: extern template class moneypunct; -2441: extern template class moneypunct; -2441: extern template class moneypunct_byname; -2441: extern template class moneypunct_byname; -2441: extern template class __cxx11:: money_get; -2441: extern template class __cxx11:: money_put; -2441: extern template class __timepunct; -2441: extern template class time_put; -2441: extern template class time_put_byname; -2441: extern template class time_get; -2441: extern template class time_get_byname; -2441: extern template class messages; -2441: extern template class messages_byname; -2441: -2441: extern template -2441: const moneypunct& -2441: use_facet >(const locale&); -2441: -2441: extern template -2441: const moneypunct& -2441: use_facet >(const locale&); -2441: -2441: extern template -2441: const money_put& -2441: use_facet >(const locale&); -2441: -2441: extern template -2441: const money_get& -2441: use_facet >(const locale&); -2441: -2441: extern template -2441: const __timepunct& -2441: use_facet<__timepunct >(const locale&); -2441: -2441: extern template -2441: const time_put& -2441: use_facet >(const locale&); -2441: -2441: extern template -2441: const time_get& -2441: use_facet >(const locale&); -2441: -2441: extern template -2441: const messages& -2441: use_facet >(const locale&); -2441: -2441: extern template -2441: bool -2441: has_facet >(const locale&); -2441: -2441: extern template -2441: bool -2441: has_facet >(const locale&); -2441: -2441: extern template -2441: bool -2441: has_facet >(const locale&); -2441: -2441: extern template -2441: bool -2441: has_facet<__timepunct >(const locale&); -2441: -2441: extern template -2441: bool -2441: has_facet >(const locale&); -2441: -2441: extern template -2441: bool -2441: has_facet >(const locale&); -2441: -2441: extern template -2441: bool -2441: has_facet >(const locale&); -2441: -2441: -2441: extern template class moneypunct; -2441: extern template class moneypunct; -2441: extern template class moneypunct_byname; -2441: extern template class moneypunct_byname; -2441: extern template class __cxx11:: money_get; -2441: extern template class __cxx11:: money_put; -2441: extern template class __timepunct; -2441: extern template class time_put; -2441: extern template class time_put_byname; -2441: extern template class time_get; -2441: extern template class time_get_byname; -2441: extern template class messages; -2441: extern template class messages_byname; -2441: -2441: extern template -2441: const moneypunct& -2441: use_facet >(const locale&); -2441: -2441: extern template -2441: const moneypunct& -2441: use_facet >(const locale&); -2441: -2441: extern template -2441: const money_put& -2441: use_facet >(const locale&); -2441: -2441: extern template -2441: const money_get& -2441: use_facet >(const locale&); -2441: -2441: extern template -2441: const __timepunct& -2441: use_facet<__timepunct >(const locale&); -2441: -2441: extern template -2441: const time_put& -2441: use_facet >(const locale&); -2441: -2441: extern template -2441: const time_get& -2441: use_facet >(const locale&); -2441: -2441: extern template -2441: const messages& -2441: use_facet >(const locale&); -2441: -2441: extern template -2441: bool -2441: has_facet >(const locale&); -2441: -2441: extern template -2441: bool -2441: has_facet >(const locale&); -2441: -2441: extern template -2441: bool -2441: has_facet >(const locale&); -2441: -2441: extern template -2441: bool -2441: has_facet<__timepunct >(const locale&); -2441: -2441: extern template -2441: bool -2441: has_facet >(const locale&); -2441: -2441: extern template -2441: bool -2441: has_facet >(const locale&); -2441: -2441: extern template -2441: bool -2441: has_facet >(const locale&); -2441: -2441: -2441: -2441: -2441: } -2441: # 2016 "/usr/include/c++/8/bits/locale_facets_nonio.h" 2 3 -2441: # 42 "/usr/include/c++/8/locale" 2 3 -2441: -2441: # 1 "/usr/include/c++/8/bits/locale_conv.h" 1 3 -2441: # 41 "/usr/include/c++/8/bits/locale_conv.h" 3 -2441: # 1 "/usr/include/c++/8/bits/unique_ptr.h" 1 3 -2441: # 41 "/usr/include/c++/8/bits/unique_ptr.h" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: #pragma GCC diagnostic push -2441: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" -2441: template class auto_ptr; -2441: #pragma GCC diagnostic pop -2441: -2441: -2441: -2441: template -2441: struct default_delete -2441: { -2441: -2441: constexpr default_delete() noexcept = default; -2441: -2441: -2441: -2441: -2441: -2441: -2441: template::value>::type> -2441: default_delete(const default_delete<_Up>&) noexcept { } -2441: -2441: -2441: void -2441: operator()(_Tp* __ptr) const -2441: { -2441: static_assert(!is_void<_Tp>::value, -2441: "can't delete pointer to incomplete type"); -2441: static_assert(sizeof(_Tp)>0, -2441: "can't delete pointer to incomplete type"); -2441: delete __ptr; -2441: } -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: struct default_delete<_Tp[]> -2441: { -2441: public: -2441: -2441: constexpr default_delete() noexcept = default; -2441: # 104 "/usr/include/c++/8/bits/unique_ptr.h" 3 -2441: template::value>::type> -2441: default_delete(const default_delete<_Up[]>&) noexcept { } -2441: -2441: -2441: template -2441: typename enable_if::value>::type -2441: operator()(_Up* __ptr) const -2441: { -2441: static_assert(sizeof(_Tp)>0, -2441: "can't delete pointer to incomplete type"); -2441: delete [] __ptr; -2441: } -2441: }; -2441: -2441: template -2441: class __uniq_ptr_impl -2441: { -2441: template -2441: struct _Ptr -2441: { -2441: using type = _Up*; -2441: }; -2441: -2441: template -2441: struct -2441: _Ptr<_Up, _Ep, __void_t::type::pointer>> -2441: { -2441: using type = typename remove_reference<_Ep>::type::pointer; -2441: }; -2441: -2441: public: -2441: using _DeleterConstraint = enable_if< -2441: __and_<__not_>, -2441: is_default_constructible<_Dp>>::value>; -2441: -2441: using pointer = typename _Ptr<_Tp, _Dp>::type; -2441: -2441: __uniq_ptr_impl() = default; -2441: __uniq_ptr_impl(pointer __p) : _M_t() { _M_ptr() = __p; } -2441: -2441: template -2441: __uniq_ptr_impl(pointer __p, _Del&& __d) -2441: : _M_t(__p, std::forward<_Del>(__d)) { } -2441: -2441: pointer& _M_ptr() { return std::get<0>(_M_t); } -2441: pointer _M_ptr() const { return std::get<0>(_M_t); } -2441: _Dp& _M_deleter() { return std::get<1>(_M_t); } -2441: const _Dp& _M_deleter() const { return std::get<1>(_M_t); } -2441: -2441: private: -2441: tuple _M_t; -2441: }; -2441: -2441: -2441: template > -2441: class unique_ptr -2441: { -2441: template -2441: using _DeleterConstraint = -2441: typename __uniq_ptr_impl<_Tp, _Up>::_DeleterConstraint::type; -2441: -2441: __uniq_ptr_impl<_Tp, _Dp> _M_t; -2441: -2441: public: -2441: using pointer = typename __uniq_ptr_impl<_Tp, _Dp>::pointer; -2441: using element_type = _Tp; -2441: using deleter_type = _Dp; -2441: -2441: -2441: -2441: template -2441: using __safe_conversion_up = __and_< -2441: is_convertible::pointer, pointer>, -2441: __not_>, -2441: __or_<__and_, -2441: is_same>, -2441: __and_<__not_>, -2441: is_convertible<_Ep, deleter_type>> -2441: > -2441: >; -2441: -2441: -2441: -2441: -2441: template > -2441: constexpr unique_ptr() noexcept -2441: : _M_t() -2441: { } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template > -2441: explicit -2441: unique_ptr(pointer __p) noexcept -2441: : _M_t(__p) -2441: { } -2441: # 215 "/usr/include/c++/8/bits/unique_ptr.h" 3 -2441: unique_ptr(pointer __p, -2441: typename conditional::value, -2441: deleter_type, const deleter_type&>::type __d) noexcept -2441: : _M_t(__p, __d) { } -2441: # 227 "/usr/include/c++/8/bits/unique_ptr.h" 3 -2441: unique_ptr(pointer __p, -2441: typename remove_reference::type&& __d) noexcept -2441: : _M_t(std::move(__p), std::move(__d)) -2441: { static_assert(!std::is_reference::value, -2441: "rvalue deleter bound to reference"); } -2441: -2441: -2441: template > -2441: constexpr unique_ptr(nullptr_t) noexcept : _M_t() { } -2441: -2441: -2441: -2441: -2441: unique_ptr(unique_ptr&& __u) noexcept -2441: : _M_t(__u.release(), std::forward(__u.get_deleter())) { } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template, -2441: typename conditional::value, -2441: is_same<_Ep, _Dp>, -2441: is_convertible<_Ep, _Dp>>::type>> -2441: unique_ptr(unique_ptr<_Up, _Ep>&& __u) noexcept -2441: : _M_t(__u.release(), std::forward<_Ep>(__u.get_deleter())) -2441: { } -2441: -2441: -2441: #pragma GCC diagnostic push -2441: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" -2441: -2441: template, is_same<_Dp, default_delete<_Tp>>>> -2441: unique_ptr(auto_ptr<_Up>&& __u) noexcept; -2441: #pragma GCC diagnostic pop -2441: -2441: -2441: -2441: ~unique_ptr() noexcept -2441: { -2441: auto& __ptr = _M_t._M_ptr(); -2441: if (__ptr != nullptr) -2441: get_deleter()(__ptr); -2441: __ptr = pointer(); -2441: } -2441: # 286 "/usr/include/c++/8/bits/unique_ptr.h" 3 -2441: unique_ptr& -2441: operator=(unique_ptr&& __u) noexcept -2441: { -2441: reset(__u.release()); -2441: get_deleter() = std::forward(__u.get_deleter()); -2441: return *this; -2441: } -2441: # 301 "/usr/include/c++/8/bits/unique_ptr.h" 3 -2441: template -2441: typename enable_if< __and_< -2441: __safe_conversion_up<_Up, _Ep>, -2441: is_assignable -2441: >::value, -2441: unique_ptr&>::type -2441: operator=(unique_ptr<_Up, _Ep>&& __u) noexcept -2441: { -2441: reset(__u.release()); -2441: get_deleter() = std::forward<_Ep>(__u.get_deleter()); -2441: return *this; -2441: } -2441: -2441: -2441: unique_ptr& -2441: operator=(nullptr_t) noexcept -2441: { -2441: reset(); -2441: return *this; -2441: } -2441: -2441: -2441: -2441: -2441: typename add_lvalue_reference::type -2441: operator*() const -2441: { -2441: ; -2441: return *get(); -2441: } -2441: -2441: -2441: pointer -2441: operator->() const noexcept -2441: { -2441: ; -2441: return get(); -2441: } -2441: -2441: -2441: pointer -2441: get() const noexcept -2441: { return _M_t._M_ptr(); } -2441: -2441: -2441: deleter_type& -2441: get_deleter() noexcept -2441: { return _M_t._M_deleter(); } -2441: -2441: -2441: const deleter_type& -2441: get_deleter() const noexcept -2441: { return _M_t._M_deleter(); } -2441: -2441: -2441: explicit operator bool() const noexcept -2441: { return get() == pointer() ? false : true; } -2441: -2441: -2441: -2441: -2441: pointer -2441: release() noexcept -2441: { -2441: pointer __p = get(); -2441: _M_t._M_ptr() = pointer(); -2441: return __p; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void -2441: reset(pointer __p = pointer()) noexcept -2441: { -2441: using std::swap; -2441: swap(_M_t._M_ptr(), __p); -2441: if (__p != pointer()) -2441: get_deleter()(__p); -2441: } -2441: -2441: -2441: void -2441: swap(unique_ptr& __u) noexcept -2441: { -2441: using std::swap; -2441: swap(_M_t, __u._M_t); -2441: } -2441: -2441: -2441: unique_ptr(const unique_ptr&) = delete; -2441: unique_ptr& operator=(const unique_ptr&) = delete; -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: template -2441: class unique_ptr<_Tp[], _Dp> -2441: { -2441: template -2441: using _DeleterConstraint = -2441: typename __uniq_ptr_impl<_Tp, _Up>::_DeleterConstraint::type; -2441: -2441: __uniq_ptr_impl<_Tp, _Dp> _M_t; -2441: -2441: template -2441: using __remove_cv = typename remove_cv<_Up>::type; -2441: -2441: -2441: template -2441: using __is_derived_Tp -2441: = __and_< is_base_of<_Tp, _Up>, -2441: __not_, __remove_cv<_Up>>> >; -2441: -2441: public: -2441: using pointer = typename __uniq_ptr_impl<_Tp, _Dp>::pointer; -2441: using element_type = _Tp; -2441: using deleter_type = _Dp; -2441: -2441: -2441: -2441: template, -2441: typename _Up_element_type = typename _Up_up::element_type> -2441: using __safe_conversion_up = __and_< -2441: is_array<_Up>, -2441: is_same, -2441: is_same, -2441: is_convertible<_Up_element_type(*)[], element_type(*)[]>, -2441: __or_<__and_, is_same>, -2441: __and_<__not_>, -2441: is_convertible<_Ep, deleter_type>>> -2441: >; -2441: -2441: -2441: template -2441: using __safe_conversion_raw = __and_< -2441: __or_<__or_, -2441: is_same<_Up, nullptr_t>>, -2441: __and_, -2441: is_same, -2441: is_convertible< -2441: typename remove_pointer<_Up>::type(*)[], -2441: element_type(*)[]> -2441: > -2441: > -2441: >; -2441: -2441: -2441: -2441: -2441: template > -2441: constexpr unique_ptr() noexcept -2441: : _M_t() -2441: { } -2441: # 470 "/usr/include/c++/8/bits/unique_ptr.h" 3 -2441: template, -2441: typename = typename enable_if< -2441: __safe_conversion_raw<_Up>::value, bool>::type> -2441: explicit -2441: unique_ptr(_Up __p) noexcept -2441: : _M_t(__p) -2441: { } -2441: # 488 "/usr/include/c++/8/bits/unique_ptr.h" 3 -2441: template::value, bool>::type> -2441: unique_ptr(_Up __p, -2441: typename conditional::value, -2441: deleter_type, const deleter_type&>::type __d) noexcept -2441: : _M_t(__p, __d) { } -2441: # 504 "/usr/include/c++/8/bits/unique_ptr.h" 3 -2441: template::value, bool>::type> -2441: unique_ptr(_Up __p, typename -2441: remove_reference::type&& __d) noexcept -2441: : _M_t(std::move(__p), std::move(__d)) -2441: { static_assert(!is_reference::value, -2441: "rvalue deleter bound to reference"); } -2441: -2441: -2441: unique_ptr(unique_ptr&& __u) noexcept -2441: : _M_t(__u.release(), std::forward(__u.get_deleter())) { } -2441: -2441: -2441: template > -2441: constexpr unique_ptr(nullptr_t) noexcept : _M_t() { } -2441: -2441: template>> -2441: unique_ptr(unique_ptr<_Up, _Ep>&& __u) noexcept -2441: : _M_t(__u.release(), std::forward<_Ep>(__u.get_deleter())) -2441: { } -2441: -2441: -2441: ~unique_ptr() -2441: { -2441: auto& __ptr = _M_t._M_ptr(); -2441: if (__ptr != nullptr) -2441: get_deleter()(__ptr); -2441: __ptr = pointer(); -2441: } -2441: # 545 "/usr/include/c++/8/bits/unique_ptr.h" 3 -2441: unique_ptr& -2441: operator=(unique_ptr&& __u) noexcept -2441: { -2441: reset(__u.release()); -2441: get_deleter() = std::forward(__u.get_deleter()); -2441: return *this; -2441: } -2441: # 560 "/usr/include/c++/8/bits/unique_ptr.h" 3 -2441: template -2441: typename -2441: enable_if<__and_<__safe_conversion_up<_Up, _Ep>, -2441: is_assignable -2441: >::value, -2441: unique_ptr&>::type -2441: operator=(unique_ptr<_Up, _Ep>&& __u) noexcept -2441: { -2441: reset(__u.release()); -2441: get_deleter() = std::forward<_Ep>(__u.get_deleter()); -2441: return *this; -2441: } -2441: -2441: -2441: unique_ptr& -2441: operator=(nullptr_t) noexcept -2441: { -2441: reset(); -2441: return *this; -2441: } -2441: -2441: -2441: -2441: -2441: typename std::add_lvalue_reference::type -2441: operator[](size_t __i) const -2441: { -2441: ; -2441: return get()[__i]; -2441: } -2441: -2441: -2441: pointer -2441: get() const noexcept -2441: { return _M_t._M_ptr(); } -2441: -2441: -2441: deleter_type& -2441: get_deleter() noexcept -2441: { return _M_t._M_deleter(); } -2441: -2441: -2441: const deleter_type& -2441: get_deleter() const noexcept -2441: { return _M_t._M_deleter(); } -2441: -2441: -2441: explicit operator bool() const noexcept -2441: { return get() == pointer() ? false : true; } -2441: -2441: -2441: -2441: -2441: pointer -2441: release() noexcept -2441: { -2441: pointer __p = get(); -2441: _M_t._M_ptr() = pointer(); -2441: return __p; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template , -2441: __and_, -2441: is_pointer<_Up>, -2441: is_convertible< -2441: typename remove_pointer<_Up>::type(*)[], -2441: element_type(*)[] -2441: > -2441: > -2441: > -2441: >> -2441: void -2441: reset(_Up __p) noexcept -2441: { -2441: pointer __ptr = __p; -2441: using std::swap; -2441: swap(_M_t._M_ptr(), __ptr); -2441: if (__ptr != nullptr) -2441: get_deleter()(__ptr); -2441: } -2441: -2441: void reset(nullptr_t = nullptr) noexcept -2441: { -2441: reset(pointer()); -2441: } -2441: -2441: -2441: void -2441: swap(unique_ptr& __u) noexcept -2441: { -2441: using std::swap; -2441: swap(_M_t, __u._M_t); -2441: } -2441: -2441: -2441: unique_ptr(const unique_ptr&) = delete; -2441: unique_ptr& operator=(const unique_ptr&) = delete; -2441: }; -2441: -2441: template -2441: inline -2441: -2441: -2441: typename enable_if<__is_swappable<_Dp>::value>::type -2441: -2441: -2441: -2441: swap(unique_ptr<_Tp, _Dp>& __x, -2441: unique_ptr<_Tp, _Dp>& __y) noexcept -2441: { __x.swap(__y); } -2441: -2441: -2441: template -2441: typename enable_if::value>::type -2441: swap(unique_ptr<_Tp, _Dp>&, -2441: unique_ptr<_Tp, _Dp>&) = delete; -2441: -2441: -2441: template -2441: inline bool -2441: operator==(const unique_ptr<_Tp, _Dp>& __x, -2441: const unique_ptr<_Up, _Ep>& __y) -2441: { return __x.get() == __y.get(); } -2441: -2441: template -2441: inline bool -2441: operator==(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) noexcept -2441: { return !__x; } -2441: -2441: template -2441: inline bool -2441: operator==(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) noexcept -2441: { return !__x; } -2441: -2441: template -2441: inline bool -2441: operator!=(const unique_ptr<_Tp, _Dp>& __x, -2441: const unique_ptr<_Up, _Ep>& __y) -2441: { return __x.get() != __y.get(); } -2441: -2441: template -2441: inline bool -2441: operator!=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) noexcept -2441: { return (bool)__x; } -2441: -2441: template -2441: inline bool -2441: operator!=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) noexcept -2441: { return (bool)__x; } -2441: -2441: template -2441: inline bool -2441: operator<(const unique_ptr<_Tp, _Dp>& __x, -2441: const unique_ptr<_Up, _Ep>& __y) -2441: { -2441: typedef typename -2441: std::common_type::pointer, -2441: typename unique_ptr<_Up, _Ep>::pointer>::type _CT; -2441: return std::less<_CT>()(__x.get(), __y.get()); -2441: } -2441: -2441: template -2441: inline bool -2441: operator<(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) -2441: { return std::less::pointer>()(__x.get(), -2441: nullptr); } -2441: -2441: template -2441: inline bool -2441: operator<(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) -2441: { return std::less::pointer>()(nullptr, -2441: __x.get()); } -2441: -2441: template -2441: inline bool -2441: operator<=(const unique_ptr<_Tp, _Dp>& __x, -2441: const unique_ptr<_Up, _Ep>& __y) -2441: { return !(__y < __x); } -2441: -2441: template -2441: inline bool -2441: operator<=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) -2441: { return !(nullptr < __x); } -2441: -2441: template -2441: inline bool -2441: operator<=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) -2441: { return !(__x < nullptr); } -2441: -2441: template -2441: inline bool -2441: operator>(const unique_ptr<_Tp, _Dp>& __x, -2441: const unique_ptr<_Up, _Ep>& __y) -2441: { return (__y < __x); } -2441: -2441: template -2441: inline bool -2441: operator>(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) -2441: { return std::less::pointer>()(nullptr, -2441: __x.get()); } -2441: -2441: template -2441: inline bool -2441: operator>(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) -2441: { return std::less::pointer>()(__x.get(), -2441: nullptr); } -2441: -2441: template -2441: inline bool -2441: operator>=(const unique_ptr<_Tp, _Dp>& __x, -2441: const unique_ptr<_Up, _Ep>& __y) -2441: { return !(__x < __y); } -2441: -2441: template -2441: inline bool -2441: operator>=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) -2441: { return !(__x < nullptr); } -2441: -2441: template -2441: inline bool -2441: operator>=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) -2441: { return !(nullptr < __x); } -2441: -2441: -2441: template -2441: struct hash> -2441: : public __hash_base>, -2441: private __poison_hash::pointer> -2441: { -2441: size_t -2441: operator()(const unique_ptr<_Tp, _Dp>& __u) const noexcept -2441: { -2441: typedef unique_ptr<_Tp, _Dp> _UP; -2441: return std::hash()(__u.get()); -2441: } -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct _MakeUniq -2441: { typedef unique_ptr<_Tp> __single_object; }; -2441: -2441: template -2441: struct _MakeUniq<_Tp[]> -2441: { typedef unique_ptr<_Tp[]> __array; }; -2441: -2441: template -2441: struct _MakeUniq<_Tp[_Bound]> -2441: { struct __invalid_type { }; }; -2441: -2441: -2441: template -2441: inline typename _MakeUniq<_Tp>::__single_object -2441: make_unique(_Args&&... __args) -2441: { return unique_ptr<_Tp>(new _Tp(std::forward<_Args>(__args)...)); } -2441: -2441: -2441: template -2441: inline typename _MakeUniq<_Tp>::__array -2441: make_unique(size_t __num) -2441: { return unique_ptr<_Tp>(new remove_extent_t<_Tp>[__num]()); } -2441: -2441: -2441: template -2441: inline typename _MakeUniq<_Tp>::__invalid_type -2441: make_unique(_Args&&...) = delete; -2441: -2441: -2441: -2441: -2441: -2441: } -2441: # 42 "/usr/include/c++/8/bits/locale_conv.h" 2 3 -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: bool -2441: __do_str_codecvt(const _InChar* __first, const _InChar* __last, -2441: _OutStr& __outstr, const _Codecvt& __cvt, _State& __state, -2441: size_t& __count, _Fn __fn) -2441: { -2441: if (__first == __last) -2441: { -2441: __outstr.clear(); -2441: __count = 0; -2441: return true; -2441: } -2441: -2441: size_t __outchars = 0; -2441: auto __next = __first; -2441: const auto __maxlen = __cvt.max_length() + 1; -2441: -2441: codecvt_base::result __result; -2441: do -2441: { -2441: __outstr.resize(__outstr.size() + (__last - __next) * __maxlen); -2441: auto __outnext = &__outstr.front() + __outchars; -2441: auto const __outlast = &__outstr.back() + 1; -2441: __result = (__cvt.*__fn)(__state, __next, __last, __next, -2441: __outnext, __outlast, __outnext); -2441: __outchars = __outnext - &__outstr.front(); -2441: } -2441: while (__result == codecvt_base::partial && __next != __last -2441: && (__outstr.size() - __outchars) < __maxlen); -2441: -2441: if (__result == codecvt_base::error) -2441: { -2441: __count = __next - __first; -2441: return false; -2441: } -2441: -2441: if (__result == codecvt_base::noconv) -2441: { -2441: __outstr.assign(__first, __last); -2441: __count = __last - __first; -2441: } -2441: else -2441: { -2441: __outstr.resize(__outchars); -2441: __count = __next - __first; -2441: } -2441: -2441: return true; -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: __str_codecvt_in(const char* __first, const char* __last, -2441: basic_string<_CharT, _Traits, _Alloc>& __outstr, -2441: const codecvt<_CharT, char, _State>& __cvt, -2441: _State& __state, size_t& __count) -2441: { -2441: using _Codecvt = codecvt<_CharT, char, _State>; -2441: using _ConvFn -2441: = codecvt_base::result -2441: (_Codecvt::*)(_State&, const char*, const char*, const char*&, -2441: _CharT*, _CharT*, _CharT*&) const; -2441: _ConvFn __fn = &codecvt<_CharT, char, _State>::in; -2441: return __do_str_codecvt(__first, __last, __outstr, __cvt, __state, -2441: __count, __fn); -2441: } -2441: -2441: template -2441: inline bool -2441: __str_codecvt_in(const char* __first, const char* __last, -2441: basic_string<_CharT, _Traits, _Alloc>& __outstr, -2441: const codecvt<_CharT, char, _State>& __cvt) -2441: { -2441: _State __state = {}; -2441: size_t __n; -2441: return __str_codecvt_in(__first, __last, __outstr, __cvt, __state, __n); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: __str_codecvt_out(const _CharT* __first, const _CharT* __last, -2441: basic_string& __outstr, -2441: const codecvt<_CharT, char, _State>& __cvt, -2441: _State& __state, size_t& __count) -2441: { -2441: using _Codecvt = codecvt<_CharT, char, _State>; -2441: using _ConvFn -2441: = codecvt_base::result -2441: (_Codecvt::*)(_State&, const _CharT*, const _CharT*, const _CharT*&, -2441: char*, char*, char*&) const; -2441: _ConvFn __fn = &codecvt<_CharT, char, _State>::out; -2441: return __do_str_codecvt(__first, __last, __outstr, __cvt, __state, -2441: __count, __fn); -2441: } -2441: -2441: template -2441: inline bool -2441: __str_codecvt_out(const _CharT* __first, const _CharT* __last, -2441: basic_string& __outstr, -2441: const codecvt<_CharT, char, _State>& __cvt) -2441: { -2441: _State __state = {}; -2441: size_t __n; -2441: return __str_codecvt_out(__first, __last, __outstr, __cvt, __state, __n); -2441: } -2441: -2441: -2441: -2441: namespace __cxx11 { -2441: -2441: -2441: template, -2441: typename _Byte_alloc = allocator> -2441: class wstring_convert -2441: { -2441: public: -2441: typedef basic_string, _Byte_alloc> byte_string; -2441: typedef basic_string<_Elem, char_traits<_Elem>, _Wide_alloc> wide_string; -2441: typedef typename _Codecvt::state_type state_type; -2441: typedef typename wide_string::traits_type::int_type int_type; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: explicit -2441: wstring_convert(_Codecvt* __pcvt = new _Codecvt()) : _M_cvt(__pcvt) -2441: { -2441: if (!_M_cvt) -2441: __throw_logic_error("wstring_convert"); -2441: } -2441: # 198 "/usr/include/c++/8/bits/locale_conv.h" 3 -2441: wstring_convert(_Codecvt* __pcvt, state_type __state) -2441: : _M_cvt(__pcvt), _M_state(__state), _M_with_cvtstate(true) -2441: { -2441: if (!_M_cvt) -2441: __throw_logic_error("wstring_convert"); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: explicit -2441: wstring_convert(const byte_string& __byte_err, -2441: const wide_string& __wide_err = wide_string()) -2441: : _M_cvt(new _Codecvt), -2441: _M_byte_err_string(__byte_err), _M_wide_err_string(__wide_err), -2441: _M_with_strings(true) -2441: { -2441: if (!_M_cvt) -2441: __throw_logic_error("wstring_convert"); -2441: } -2441: -2441: ~wstring_convert() = default; -2441: -2441: -2441: -2441: wstring_convert(const wstring_convert&) = delete; -2441: wstring_convert& operator=(const wstring_convert&) = delete; -2441: -2441: -2441: wide_string -2441: from_bytes(char __byte) -2441: { -2441: char __bytes[2] = { __byte }; -2441: return from_bytes(__bytes, __bytes+1); -2441: } -2441: -2441: wide_string -2441: from_bytes(const char* __ptr) -2441: { return from_bytes(__ptr, __ptr+char_traits::length(__ptr)); } -2441: -2441: wide_string -2441: from_bytes(const byte_string& __str) -2441: { -2441: auto __ptr = __str.data(); -2441: return from_bytes(__ptr, __ptr + __str.size()); -2441: } -2441: -2441: wide_string -2441: from_bytes(const char* __first, const char* __last) -2441: { -2441: if (!_M_with_cvtstate) -2441: _M_state = state_type(); -2441: wide_string __out{ _M_wide_err_string.get_allocator() }; -2441: if (__str_codecvt_in(__first, __last, __out, *_M_cvt, _M_state, -2441: _M_count)) -2441: return __out; -2441: if (_M_with_strings) -2441: return _M_wide_err_string; -2441: __throw_range_error("wstring_convert::from_bytes"); -2441: } -2441: -2441: -2441: -2441: byte_string -2441: to_bytes(_Elem __wchar) -2441: { -2441: _Elem __wchars[2] = { __wchar }; -2441: return to_bytes(__wchars, __wchars+1); -2441: } -2441: -2441: byte_string -2441: to_bytes(const _Elem* __ptr) -2441: { -2441: return to_bytes(__ptr, __ptr+wide_string::traits_type::length(__ptr)); -2441: } -2441: -2441: byte_string -2441: to_bytes(const wide_string& __wstr) -2441: { -2441: auto __ptr = __wstr.data(); -2441: return to_bytes(__ptr, __ptr + __wstr.size()); -2441: } -2441: -2441: byte_string -2441: to_bytes(const _Elem* __first, const _Elem* __last) -2441: { -2441: if (!_M_with_cvtstate) -2441: _M_state = state_type(); -2441: byte_string __out{ _M_byte_err_string.get_allocator() }; -2441: if (__str_codecvt_out(__first, __last, __out, *_M_cvt, _M_state, -2441: _M_count)) -2441: return __out; -2441: if (_M_with_strings) -2441: return _M_byte_err_string; -2441: __throw_range_error("wstring_convert::to_bytes"); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: size_t converted() const noexcept { return _M_count; } -2441: -2441: -2441: state_type state() const { return _M_state; } -2441: -2441: private: -2441: unique_ptr<_Codecvt> _M_cvt; -2441: byte_string _M_byte_err_string; -2441: wide_string _M_wide_err_string; -2441: state_type _M_state = state_type(); -2441: size_t _M_count = 0; -2441: bool _M_with_cvtstate = false; -2441: bool _M_with_strings = false; -2441: }; -2441: -2441: } -2441: -2441: -2441: template> -2441: class wbuffer_convert : public basic_streambuf<_Elem, _Tr> -2441: { -2441: typedef basic_streambuf<_Elem, _Tr> _Wide_streambuf; -2441: -2441: public: -2441: typedef typename _Codecvt::state_type state_type; -2441: # 336 "/usr/include/c++/8/bits/locale_conv.h" 3 -2441: explicit -2441: wbuffer_convert(streambuf* __bytebuf = 0, _Codecvt* __pcvt = new _Codecvt, -2441: state_type __state = state_type()) -2441: : _M_buf(__bytebuf), _M_cvt(__pcvt), _M_state(__state) -2441: { -2441: if (!_M_cvt) -2441: __throw_logic_error("wbuffer_convert"); -2441: -2441: _M_always_noconv = _M_cvt->always_noconv(); -2441: -2441: if (_M_buf) -2441: { -2441: this->setp(_M_put_area, _M_put_area + _S_buffer_length); -2441: this->setg(_M_get_area + _S_putback_length, -2441: _M_get_area + _S_putback_length, -2441: _M_get_area + _S_putback_length); -2441: } -2441: } -2441: -2441: ~wbuffer_convert() = default; -2441: -2441: -2441: -2441: wbuffer_convert(const wbuffer_convert&) = delete; -2441: wbuffer_convert& operator=(const wbuffer_convert&) = delete; -2441: -2441: streambuf* rdbuf() const noexcept { return _M_buf; } -2441: -2441: streambuf* -2441: rdbuf(streambuf *__bytebuf) noexcept -2441: { -2441: auto __prev = _M_buf; -2441: _M_buf = __bytebuf; -2441: return __prev; -2441: } -2441: -2441: -2441: state_type state() const noexcept { return _M_state; } -2441: -2441: protected: -2441: int -2441: sync() -2441: { return _M_buf && _M_conv_put() && !_M_buf->pubsync() ? 0 : -1; } -2441: -2441: typename _Wide_streambuf::int_type -2441: overflow(typename _Wide_streambuf::int_type __out) -2441: { -2441: if (!_M_buf || !_M_conv_put()) -2441: return _Tr::eof(); -2441: else if (!_Tr::eq_int_type(__out, _Tr::eof())) -2441: return this->sputc(__out); -2441: return _Tr::not_eof(__out); -2441: } -2441: -2441: typename _Wide_streambuf::int_type -2441: underflow() -2441: { -2441: if (!_M_buf) -2441: return _Tr::eof(); -2441: -2441: if (this->gptr() < this->egptr() || (_M_buf && _M_conv_get())) -2441: return _Tr::to_int_type(*this->gptr()); -2441: else -2441: return _Tr::eof(); -2441: } -2441: -2441: streamsize -2441: xsputn(const typename _Wide_streambuf::char_type* __s, streamsize __n) -2441: { -2441: if (!_M_buf || __n == 0) -2441: return 0; -2441: streamsize __done = 0; -2441: do -2441: { -2441: auto __nn = std::min(this->epptr() - this->pptr(), -2441: __n - __done); -2441: _Tr::copy(this->pptr(), __s + __done, __nn); -2441: this->pbump(__nn); -2441: __done += __nn; -2441: } while (__done < __n && _M_conv_put()); -2441: return __done; -2441: } -2441: -2441: private: -2441: -2441: bool -2441: _M_conv_get() -2441: { -2441: const streamsize __pb1 = this->gptr() - this->eback(); -2441: const streamsize __pb2 = _S_putback_length; -2441: const streamsize __npb = std::min(__pb1, __pb2); -2441: -2441: _Tr::move(_M_get_area + _S_putback_length - __npb, -2441: this->gptr() - __npb, __npb); -2441: -2441: streamsize __nbytes = sizeof(_M_get_buf) - _M_unconv; -2441: __nbytes = std::min(__nbytes, _M_buf->in_avail()); -2441: if (__nbytes < 1) -2441: __nbytes = 1; -2441: __nbytes = _M_buf->sgetn(_M_get_buf + _M_unconv, __nbytes); -2441: if (__nbytes < 1) -2441: return false; -2441: __nbytes += _M_unconv; -2441: -2441: -2441: -2441: _Elem* __outbuf = _M_get_area + _S_putback_length; -2441: _Elem* __outnext = __outbuf; -2441: const char* __bnext = _M_get_buf; -2441: -2441: codecvt_base::result __result; -2441: if (_M_always_noconv) -2441: __result = codecvt_base::noconv; -2441: else -2441: { -2441: _Elem* __outend = _M_get_area + _S_buffer_length; -2441: -2441: __result = _M_cvt->in(_M_state, -2441: __bnext, __bnext + __nbytes, __bnext, -2441: __outbuf, __outend, __outnext); -2441: } -2441: -2441: if (__result == codecvt_base::noconv) -2441: { -2441: -2441: auto __get_buf = reinterpret_cast(_M_get_buf); -2441: _Tr::copy(__outbuf, __get_buf, __nbytes); -2441: _M_unconv = 0; -2441: return true; -2441: } -2441: -2441: if ((_M_unconv = _M_get_buf + __nbytes - __bnext)) -2441: char_traits::move(_M_get_buf, __bnext, _M_unconv); -2441: -2441: this->setg(__outbuf, __outbuf, __outnext); -2441: -2441: return __result != codecvt_base::error; -2441: } -2441: -2441: -2441: bool -2441: _M_put(...) -2441: { return false; } -2441: -2441: bool -2441: _M_put(const char* __p, streamsize __n) -2441: { -2441: if (_M_buf->sputn(__p, __n) < __n) -2441: return false; -2441: return true; -2441: } -2441: -2441: -2441: bool -2441: _M_conv_put() -2441: { -2441: _Elem* const __first = this->pbase(); -2441: const _Elem* const __last = this->pptr(); -2441: const streamsize __pending = __last - __first; -2441: -2441: if (_M_always_noconv) -2441: return _M_put(__first, __pending); -2441: -2441: char __outbuf[2 * _S_buffer_length]; -2441: -2441: const _Elem* __next = __first; -2441: const _Elem* __start; -2441: do -2441: { -2441: __start = __next; -2441: char* __outnext = __outbuf; -2441: char* const __outlast = __outbuf + sizeof(__outbuf); -2441: auto __result = _M_cvt->out(_M_state, __next, __last, __next, -2441: __outnext, __outlast, __outnext); -2441: if (__result == codecvt_base::error) -2441: return false; -2441: else if (__result == codecvt_base::noconv) -2441: return _M_put(__next, __pending); -2441: -2441: if (!_M_put(__outbuf, __outnext - __outbuf)) -2441: return false; -2441: } -2441: while (__next != __last && __next != __start); -2441: -2441: if (__next != __last) -2441: _Tr::move(__first, __next, __last - __next); -2441: -2441: this->pbump(__first - __next); -2441: return __next != __first; -2441: } -2441: -2441: streambuf* _M_buf; -2441: unique_ptr<_Codecvt> _M_cvt; -2441: state_type _M_state; -2441: -2441: static const streamsize _S_buffer_length = 32; -2441: static const streamsize _S_putback_length = 3; -2441: _Elem _M_put_area[_S_buffer_length]; -2441: _Elem _M_get_area[_S_buffer_length]; -2441: streamsize _M_unconv = 0; -2441: char _M_get_buf[_S_buffer_length-_S_putback_length]; -2441: bool _M_always_noconv; -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: } -2441: # 44 "/usr/include/c++/8/locale" 2 3 -2441: # 44 "/usr/include/c++/8/iomanip" 2 3 -2441: -2441: # 1 "/usr/include/c++/8/bits/quoted_string.h" 1 3 -2441: # 33 "/usr/include/c++/8/bits/quoted_string.h" 3 -2441: -2441: # 34 "/usr/include/c++/8/bits/quoted_string.h" 3 -2441: -2441: -2441: -2441: -2441: -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: namespace __detail { -2441: -2441: -2441: -2441: template -2441: struct _Quoted_string -2441: { -2441: static_assert(is_reference<_String>::value -2441: || is_pointer<_String>::value, -2441: "String type must be pointer or reference"); -2441: -2441: _Quoted_string(_String __str, _CharT __del, _CharT __esc) -2441: : _M_string(__str), _M_delim{__del}, _M_escape{__esc} -2441: { } -2441: -2441: _Quoted_string& -2441: operator=(_Quoted_string&) = delete; -2441: -2441: _String _M_string; -2441: _CharT _M_delim; -2441: _CharT _M_escape; -2441: }; -2441: # 91 "/usr/include/c++/8/bits/quoted_string.h" 3 -2441: template -2441: std::basic_ostream<_CharT, _Traits>& -2441: operator<<(std::basic_ostream<_CharT, _Traits>& __os, -2441: const _Quoted_string& __str) -2441: { -2441: std::basic_ostringstream<_CharT, _Traits> __ostr; -2441: __ostr << __str._M_delim; -2441: for (const _CharT* __c = __str._M_string; *__c; ++__c) -2441: { -2441: if (*__c == __str._M_delim || *__c == __str._M_escape) -2441: __ostr << __str._M_escape; -2441: __ostr << *__c; -2441: } -2441: __ostr << __str._M_delim; -2441: -2441: return __os << __ostr.str(); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: std::basic_ostream<_CharT, _Traits>& -2441: operator<<(std::basic_ostream<_CharT, _Traits>& __os, -2441: const _Quoted_string<_String, _CharT>& __str) -2441: { -2441: std::basic_ostringstream<_CharT, _Traits> __ostr; -2441: __ostr << __str._M_delim; -2441: for (auto __c : __str._M_string) -2441: { -2441: if (__c == __str._M_delim || __c == __str._M_escape) -2441: __ostr << __str._M_escape; -2441: __ostr << __c; -2441: } -2441: __ostr << __str._M_delim; -2441: -2441: return __os << __ostr.str(); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: template -2441: std::basic_istream<_CharT, _Traits>& -2441: operator>>(std::basic_istream<_CharT, _Traits>& __is, -2441: const _Quoted_string&, -2441: _CharT>& __str) -2441: { -2441: _CharT __c; -2441: __is >> __c; -2441: if (!__is.good()) -2441: return __is; -2441: if (__c != __str._M_delim) -2441: { -2441: __is.unget(); -2441: __is >> __str._M_string; -2441: return __is; -2441: } -2441: __str._M_string.clear(); -2441: std::ios_base::fmtflags __flags -2441: = __is.flags(__is.flags() & ~std::ios_base::skipws); -2441: do -2441: { -2441: __is >> __c; -2441: if (!__is.good()) -2441: break; -2441: if (__c == __str._M_escape) -2441: { -2441: __is >> __c; -2441: if (!__is.good()) -2441: break; -2441: } -2441: else if (__c == __str._M_delim) -2441: break; -2441: __str._M_string += __c; -2441: } -2441: while (true); -2441: __is.setf(__flags); -2441: -2441: return __is; -2441: } -2441: } -2441: -2441: -2441: } -2441: # 46 "/usr/include/c++/8/iomanip" 2 3 -2441: -2441: -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: struct _Resetiosflags { ios_base::fmtflags _M_mask; }; -2441: # 65 "/usr/include/c++/8/iomanip" 3 -2441: inline _Resetiosflags -2441: resetiosflags(ios_base::fmtflags __mask) -2441: { return { __mask }; } -2441: -2441: template -2441: inline basic_istream<_CharT, _Traits>& -2441: operator>>(basic_istream<_CharT, _Traits>& __is, _Resetiosflags __f) -2441: { -2441: __is.setf(ios_base::fmtflags(0), __f._M_mask); -2441: return __is; -2441: } -2441: -2441: template -2441: inline basic_ostream<_CharT, _Traits>& -2441: operator<<(basic_ostream<_CharT, _Traits>& __os, _Resetiosflags __f) -2441: { -2441: __os.setf(ios_base::fmtflags(0), __f._M_mask); -2441: return __os; -2441: } -2441: -2441: -2441: struct _Setiosflags { ios_base::fmtflags _M_mask; }; -2441: # 95 "/usr/include/c++/8/iomanip" 3 -2441: inline _Setiosflags -2441: setiosflags(ios_base::fmtflags __mask) -2441: { return { __mask }; } -2441: -2441: template -2441: inline basic_istream<_CharT, _Traits>& -2441: operator>>(basic_istream<_CharT, _Traits>& __is, _Setiosflags __f) -2441: { -2441: __is.setf(__f._M_mask); -2441: return __is; -2441: } -2441: -2441: template -2441: inline basic_ostream<_CharT, _Traits>& -2441: operator<<(basic_ostream<_CharT, _Traits>& __os, _Setiosflags __f) -2441: { -2441: __os.setf(__f._M_mask); -2441: return __os; -2441: } -2441: -2441: -2441: struct _Setbase { int _M_base; }; -2441: # 126 "/usr/include/c++/8/iomanip" 3 -2441: inline _Setbase -2441: setbase(int __base) -2441: { return { __base }; } -2441: -2441: template -2441: inline basic_istream<_CharT, _Traits>& -2441: operator>>(basic_istream<_CharT, _Traits>& __is, _Setbase __f) -2441: { -2441: __is.setf(__f._M_base == 8 ? ios_base::oct : -2441: __f._M_base == 10 ? ios_base::dec : -2441: __f._M_base == 16 ? ios_base::hex : -2441: ios_base::fmtflags(0), ios_base::basefield); -2441: return __is; -2441: } -2441: -2441: template -2441: inline basic_ostream<_CharT, _Traits>& -2441: operator<<(basic_ostream<_CharT, _Traits>& __os, _Setbase __f) -2441: { -2441: __os.setf(__f._M_base == 8 ? ios_base::oct : -2441: __f._M_base == 10 ? ios_base::dec : -2441: __f._M_base == 16 ? ios_base::hex : -2441: ios_base::fmtflags(0), ios_base::basefield); -2441: return __os; -2441: } -2441: -2441: -2441: template -2441: struct _Setfill { _CharT _M_c; }; -2441: # 163 "/usr/include/c++/8/iomanip" 3 -2441: template -2441: inline _Setfill<_CharT> -2441: setfill(_CharT __c) -2441: { return { __c }; } -2441: -2441: template -2441: inline basic_istream<_CharT, _Traits>& -2441: operator>>(basic_istream<_CharT, _Traits>& __is, _Setfill<_CharT> __f) -2441: { -2441: __is.fill(__f._M_c); -2441: return __is; -2441: } -2441: -2441: template -2441: inline basic_ostream<_CharT, _Traits>& -2441: operator<<(basic_ostream<_CharT, _Traits>& __os, _Setfill<_CharT> __f) -2441: { -2441: __os.fill(__f._M_c); -2441: return __os; -2441: } -2441: -2441: -2441: struct _Setprecision { int _M_n; }; -2441: # 194 "/usr/include/c++/8/iomanip" 3 -2441: inline _Setprecision -2441: setprecision(int __n) -2441: { return { __n }; } -2441: -2441: template -2441: inline basic_istream<_CharT, _Traits>& -2441: operator>>(basic_istream<_CharT, _Traits>& __is, _Setprecision __f) -2441: { -2441: __is.precision(__f._M_n); -2441: return __is; -2441: } -2441: -2441: template -2441: inline basic_ostream<_CharT, _Traits>& -2441: operator<<(basic_ostream<_CharT, _Traits>& __os, _Setprecision __f) -2441: { -2441: __os.precision(__f._M_n); -2441: return __os; -2441: } -2441: -2441: -2441: struct _Setw { int _M_n; }; -2441: # 224 "/usr/include/c++/8/iomanip" 3 -2441: inline _Setw -2441: setw(int __n) -2441: { return { __n }; } -2441: -2441: template -2441: inline basic_istream<_CharT, _Traits>& -2441: operator>>(basic_istream<_CharT, _Traits>& __is, _Setw __f) -2441: { -2441: __is.width(__f._M_n); -2441: return __is; -2441: } -2441: -2441: template -2441: inline basic_ostream<_CharT, _Traits>& -2441: operator<<(basic_ostream<_CharT, _Traits>& __os, _Setw __f) -2441: { -2441: __os.width(__f._M_n); -2441: return __os; -2441: } -2441: -2441: -2441: -2441: template -2441: struct _Get_money { _MoneyT& _M_mon; bool _M_intl; }; -2441: # 257 "/usr/include/c++/8/iomanip" 3 -2441: template -2441: inline _Get_money<_MoneyT> -2441: get_money(_MoneyT& __mon, bool __intl = false) -2441: { return { __mon, __intl }; } -2441: -2441: template -2441: basic_istream<_CharT, _Traits>& -2441: operator>>(basic_istream<_CharT, _Traits>& __is, _Get_money<_MoneyT> __f) -2441: { -2441: typename basic_istream<_CharT, _Traits>::sentry __cerb(__is, false); -2441: if (__cerb) -2441: { -2441: ios_base::iostate __err = ios_base::goodbit; -2441: try -2441: { -2441: typedef istreambuf_iterator<_CharT, _Traits> _Iter; -2441: typedef money_get<_CharT, _Iter> _MoneyGet; -2441: -2441: const _MoneyGet& __mg = use_facet<_MoneyGet>(__is.getloc()); -2441: __mg.get(_Iter(__is.rdbuf()), _Iter(), __f._M_intl, -2441: __is, __err, __f._M_mon); -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: __is._M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { __is._M_setstate(ios_base::badbit); } -2441: if (__err) -2441: __is.setstate(__err); -2441: } -2441: return __is; -2441: } -2441: -2441: -2441: template -2441: struct _Put_money { const _MoneyT& _M_mon; bool _M_intl; }; -2441: # 304 "/usr/include/c++/8/iomanip" 3 -2441: template -2441: inline _Put_money<_MoneyT> -2441: put_money(const _MoneyT& __mon, bool __intl = false) -2441: { return { __mon, __intl }; } -2441: -2441: template -2441: basic_ostream<_CharT, _Traits>& -2441: operator<<(basic_ostream<_CharT, _Traits>& __os, _Put_money<_MoneyT> __f) -2441: { -2441: typename basic_ostream<_CharT, _Traits>::sentry __cerb(__os); -2441: if (__cerb) -2441: { -2441: ios_base::iostate __err = ios_base::goodbit; -2441: try -2441: { -2441: typedef ostreambuf_iterator<_CharT, _Traits> _Iter; -2441: typedef money_put<_CharT, _Iter> _MoneyPut; -2441: -2441: const _MoneyPut& __mp = use_facet<_MoneyPut>(__os.getloc()); -2441: if (__mp.put(_Iter(__os.rdbuf()), __f._M_intl, __os, -2441: __os.fill(), __f._M_mon).failed()) -2441: __err |= ios_base::badbit; -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: __os._M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { __os._M_setstate(ios_base::badbit); } -2441: if (__err) -2441: __os.setstate(__err); -2441: } -2441: return __os; -2441: } -2441: -2441: template -2441: struct _Put_time -2441: { -2441: const std::tm* _M_tmb; -2441: const _CharT* _M_fmt; -2441: }; -2441: # 356 "/usr/include/c++/8/iomanip" 3 -2441: template -2441: inline _Put_time<_CharT> -2441: put_time(const std::tm* __tmb, const _CharT* __fmt) -2441: { return { __tmb, __fmt }; } -2441: -2441: template -2441: basic_ostream<_CharT, _Traits>& -2441: operator<<(basic_ostream<_CharT, _Traits>& __os, _Put_time<_CharT> __f) -2441: { -2441: typename basic_ostream<_CharT, _Traits>::sentry __cerb(__os); -2441: if (__cerb) -2441: { -2441: ios_base::iostate __err = ios_base::goodbit; -2441: try -2441: { -2441: typedef ostreambuf_iterator<_CharT, _Traits> _Iter; -2441: typedef time_put<_CharT, _Iter> _TimePut; -2441: -2441: const _CharT* const __fmt_end = __f._M_fmt + -2441: _Traits::length(__f._M_fmt); -2441: -2441: const _TimePut& __mp = use_facet<_TimePut>(__os.getloc()); -2441: if (__mp.put(_Iter(__os.rdbuf()), __os, __os.fill(), -2441: __f._M_tmb, __f._M_fmt, __fmt_end).failed()) -2441: __err |= ios_base::badbit; -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: __os._M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { __os._M_setstate(ios_base::badbit); } -2441: if (__err) -2441: __os.setstate(__err); -2441: } -2441: return __os; -2441: } -2441: -2441: template -2441: struct _Get_time -2441: { -2441: std::tm* _M_tmb; -2441: const _CharT* _M_fmt; -2441: }; -2441: # 411 "/usr/include/c++/8/iomanip" 3 -2441: template -2441: inline _Get_time<_CharT> -2441: get_time(std::tm* __tmb, const _CharT* __fmt) -2441: { return { __tmb, __fmt }; } -2441: -2441: template -2441: basic_istream<_CharT, _Traits>& -2441: operator>>(basic_istream<_CharT, _Traits>& __is, _Get_time<_CharT> __f) -2441: { -2441: typename basic_istream<_CharT, _Traits>::sentry __cerb(__is, false); -2441: if (__cerb) -2441: { -2441: ios_base::iostate __err = ios_base::goodbit; -2441: try -2441: { -2441: typedef istreambuf_iterator<_CharT, _Traits> _Iter; -2441: typedef time_get<_CharT, _Iter> _TimeGet; -2441: -2441: const _CharT* const __fmt_end = __f._M_fmt + -2441: _Traits::length(__f._M_fmt); -2441: -2441: const _TimeGet& __mg = use_facet<_TimeGet>(__is.getloc()); -2441: __mg.get(_Iter(__is.rdbuf()), _Iter(), __is, -2441: __err, __f._M_tmb, __f._M_fmt, __fmt_end); -2441: } -2441: catch(__cxxabiv1::__forced_unwind&) -2441: { -2441: __is._M_setstate(ios_base::badbit); -2441: throw; -2441: } -2441: catch(...) -2441: { __is._M_setstate(ios_base::badbit); } -2441: if (__err) -2441: __is.setstate(__err); -2441: } -2441: return __is; -2441: } -2441: # 459 "/usr/include/c++/8/iomanip" 3 -2441: template -2441: inline auto -2441: quoted(const _CharT* __string, -2441: _CharT __delim = _CharT('"'), _CharT __escape = _CharT('\\')) -2441: { -2441: return __detail::_Quoted_string(__string, __delim, -2441: __escape); -2441: } -2441: -2441: template -2441: inline auto -2441: quoted(const basic_string<_CharT, _Traits, _Alloc>& __string, -2441: _CharT __delim = _CharT('"'), _CharT __escape = _CharT('\\')) -2441: { -2441: return __detail::_Quoted_string< -2441: const basic_string<_CharT, _Traits, _Alloc>&, _CharT>( -2441: __string, __delim, __escape); -2441: } -2441: -2441: template -2441: inline auto -2441: quoted(basic_string<_CharT, _Traits, _Alloc>& __string, -2441: _CharT __delim = _CharT('"'), _CharT __escape = _CharT('\\')) -2441: { -2441: return __detail::_Quoted_string< -2441: basic_string<_CharT, _Traits, _Alloc>&, _CharT>( -2441: __string, __delim, __escape); -2441: } -2441: # 508 "/usr/include/c++/8/iomanip" 3 -2441: extern template ostream& operator<<(ostream&, _Setfill); -2441: extern template ostream& operator<<(ostream&, _Setiosflags); -2441: extern template ostream& operator<<(ostream&, _Resetiosflags); -2441: extern template ostream& operator<<(ostream&, _Setbase); -2441: extern template ostream& operator<<(ostream&, _Setprecision); -2441: extern template ostream& operator<<(ostream&, _Setw); -2441: extern template istream& operator>>(istream&, _Setfill); -2441: extern template istream& operator>>(istream&, _Setiosflags); -2441: extern template istream& operator>>(istream&, _Resetiosflags); -2441: extern template istream& operator>>(istream&, _Setbase); -2441: extern template istream& operator>>(istream&, _Setprecision); -2441: extern template istream& operator>>(istream&, _Setw); -2441: -2441: -2441: extern template wostream& operator<<(wostream&, _Setfill); -2441: extern template wostream& operator<<(wostream&, _Setiosflags); -2441: extern template wostream& operator<<(wostream&, _Resetiosflags); -2441: extern template wostream& operator<<(wostream&, _Setbase); -2441: extern template wostream& operator<<(wostream&, _Setprecision); -2441: extern template wostream& operator<<(wostream&, _Setw); -2441: extern template wistream& operator>>(wistream&, _Setfill); -2441: extern template wistream& operator>>(wistream&, _Setiosflags); -2441: extern template wistream& operator>>(wistream&, _Resetiosflags); -2441: extern template wistream& operator>>(wistream&, _Setbase); -2441: extern template wistream& operator>>(wistream&, _Setprecision); -2441: extern template wistream& operator>>(wistream&, _Setw); -2441: -2441: -2441: -2441: -2441: } -2441: # 29 "../../src/Checked_Number_templates.hh" 2 -2441: -2441: -2441: -2441: # 31 "../../src/Checked_Number_templates.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: typename Enable_If::value, void>::type -2441: ascii_dump(std::ostream& s, const T& t) { -2441: if (std::numeric_limits::is_exact) { -2441: -2441: s << t; -2441: } -2441: else { -2441: -2441: -2441: const std::ios::fmtflags old_flags = s.setf(std::ios::hex, -2441: std::ios::basefield); -2441: const unsigned char* p = reinterpret_cast(&t); -2441: for (unsigned i = 0; i < sizeof(T); ++i) { -2441: s << std::setw(2) << std::setfill('0') << static_cast(p[i]); -2441: } -2441: s.flags(old_flags); -2441: -2441: s << " (" << t << ")"; -2441: } -2441: } -2441: -2441: template -2441: typename Enable_If::value, bool>::type -2441: ascii_load(std::istream& s, T& t) { -2441: if (std::numeric_limits::is_exact) { -2441: -2441: s >> t; -2441: return !s.fail(); -2441: } -2441: else { -2441: -2441: -2441: std::string str; -2441: if (!(s >> str) || str.size() != 2*sizeof(T)) { -2441: return false; -2441: } -2441: unsigned char* p = reinterpret_cast(&t); -2441: -2441: for (unsigned i = 0; i < sizeof(T); ++i) { -2441: unsigned byte_value = 0; -2441: for (unsigned j = 0; j < 2; ++j) { -2441: byte_value <<= 4; -2441: unsigned half_byte_value; -2441: -2441: switch (str[2*i + j]) { -2441: case '0': -2441: half_byte_value = 0; -2441: break; -2441: case '1': -2441: half_byte_value = 1; -2441: break; -2441: case '2': -2441: half_byte_value = 2; -2441: break; -2441: case '3': -2441: half_byte_value = 3; -2441: break; -2441: case '4': -2441: half_byte_value = 4; -2441: break; -2441: case '5': -2441: half_byte_value = 5; -2441: break; -2441: case '6': -2441: half_byte_value = 6; -2441: break; -2441: case '7': -2441: half_byte_value = 7; -2441: break; -2441: case '8': -2441: half_byte_value = 8; -2441: break; -2441: case '9': -2441: half_byte_value = 9; -2441: break; -2441: case 'A': -2441: case 'a': -2441: half_byte_value = 10; -2441: break; -2441: case 'B': -2441: case 'b': -2441: half_byte_value = 11; -2441: break; -2441: case 'C': -2441: case 'c': -2441: half_byte_value = 12; -2441: break; -2441: case 'D': -2441: case 'd': -2441: half_byte_value = 13; -2441: break; -2441: case 'E': -2441: case 'e': -2441: half_byte_value = 14; -2441: break; -2441: case 'F': -2441: case 'f': -2441: half_byte_value = 15; -2441: break; -2441: default: -2441: return false; -2441: } -2441: byte_value += half_byte_value; -2441: } -2441: ((void) 0); -2441: p[i] = static_cast(byte_value); -2441: } -2441: -2441: if (!(s >> str)) { -2441: return false; -2441: } -2441: const std::string::size_type sz = str.size(); -2441: return sz > 2 && str[0] == '(' && str[sz-1] == ')'; -2441: } -2441: } -2441: -2441: } -2441: # 1069 "../../src/Checked_Number_defs.hh" 2 -2441: # 28 "../../src/checked_numeric_limits.hh" 2 -2441: -2441: -2441: -2441: namespace std { -2441: -2441: using namespace Parma_Polyhedra_Library; -2441: # 74 "../../src/checked_numeric_limits.hh" -2441: template class numeric_limits > : public numeric_limits { private: typedef Checked_Number Type; public: static const bool has_infinity = Policy::has_infinity; static const bool has_quiet_NaN = Policy::has_nan; static Type min() { Type v; v.raw_value() = Checked::Extended_Int::min; return v; } static Type max() { Type v; v.raw_value() = Checked::Extended_Int::max; return v; } static Type infinity() { Type v; Checked::assign_special(v.raw_value(), VC_PLUS_INFINITY, ROUND_IGNORE); return v; } static Type quiet_NaN() { Type v; Checked::assign_special(v.raw_value(), VC_NAN, ROUND_IGNORE); return v; } }; -2441: -2441: template class numeric_limits > : public numeric_limits { private: typedef Checked_Number Type; public: static const bool has_infinity = Policy::has_infinity; static const bool has_quiet_NaN = Policy::has_nan; static Type min() { Type v; v.raw_value() = Checked::Extended_Int::min; return v; } static Type max() { Type v; v.raw_value() = Checked::Extended_Int::max; return v; } static Type infinity() { Type v; Checked::assign_special(v.raw_value(), VC_PLUS_INFINITY, ROUND_IGNORE); return v; } static Type quiet_NaN() { Type v; Checked::assign_special(v.raw_value(), VC_NAN, ROUND_IGNORE); return v; } }; -2441: template class numeric_limits > : public numeric_limits { private: typedef Checked_Number Type; public: static const bool has_infinity = Policy::has_infinity; static const bool has_quiet_NaN = Policy::has_nan; static Type min() { Type v; v.raw_value() = Checked::Extended_Int::min; return v; } static Type max() { Type v; v.raw_value() = Checked::Extended_Int::max; return v; } static Type infinity() { Type v; Checked::assign_special(v.raw_value(), VC_PLUS_INFINITY, ROUND_IGNORE); return v; } static Type quiet_NaN() { Type v; Checked::assign_special(v.raw_value(), VC_NAN, ROUND_IGNORE); return v; } }; -2441: template class numeric_limits > : public numeric_limits { private: typedef Checked_Number Type; public: static const bool has_infinity = Policy::has_infinity; static const bool has_quiet_NaN = Policy::has_nan; static Type min() { Type v; v.raw_value() = Checked::Extended_Int::min; return v; } static Type max() { Type v; v.raw_value() = Checked::Extended_Int::max; return v; } static Type infinity() { Type v; Checked::assign_special(v.raw_value(), VC_PLUS_INFINITY, ROUND_IGNORE); return v; } static Type quiet_NaN() { Type v; Checked::assign_special(v.raw_value(), VC_NAN, ROUND_IGNORE); return v; } }; -2441: template class numeric_limits > : public numeric_limits { private: typedef Checked_Number Type; public: static const bool has_infinity = Policy::has_infinity; static const bool has_quiet_NaN = Policy::has_nan; static Type min() { Type v; v.raw_value() = Checked::Extended_Int::min; return v; } static Type max() { Type v; v.raw_value() = Checked::Extended_Int::max; return v; } static Type infinity() { Type v; Checked::assign_special(v.raw_value(), VC_PLUS_INFINITY, ROUND_IGNORE); return v; } static Type quiet_NaN() { Type v; Checked::assign_special(v.raw_value(), VC_NAN, ROUND_IGNORE); return v; } }; -2441: template class numeric_limits > : public numeric_limits { private: typedef Checked_Number Type; public: static const bool has_infinity = Policy::has_infinity; static const bool has_quiet_NaN = Policy::has_nan; static Type min() { Type v; v.raw_value() = Checked::Extended_Int::min; return v; } static Type max() { Type v; v.raw_value() = Checked::Extended_Int::max; return v; } static Type infinity() { Type v; Checked::assign_special(v.raw_value(), VC_PLUS_INFINITY, ROUND_IGNORE); return v; } static Type quiet_NaN() { Type v; Checked::assign_special(v.raw_value(), VC_NAN, ROUND_IGNORE); return v; } }; -2441: -2441: template class numeric_limits > : public numeric_limits { private: typedef Checked_Number Type; public: static const bool has_infinity = Policy::has_infinity; static const bool has_quiet_NaN = Policy::has_nan; static Type min() { Type v; v.raw_value() = Checked::Extended_Int::min; return v; } static Type max() { Type v; v.raw_value() = Checked::Extended_Int::max; return v; } static Type infinity() { Type v; Checked::assign_special(v.raw_value(), VC_PLUS_INFINITY, ROUND_IGNORE); return v; } static Type quiet_NaN() { Type v; Checked::assign_special(v.raw_value(), VC_NAN, ROUND_IGNORE); return v; } }; -2441: template class numeric_limits > : public numeric_limits { private: typedef Checked_Number Type; public: static const bool has_infinity = Policy::has_infinity; static const bool has_quiet_NaN = Policy::has_nan; static Type min() { Type v; v.raw_value() = Checked::Extended_Int::min; return v; } static Type max() { Type v; v.raw_value() = Checked::Extended_Int::max; return v; } static Type infinity() { Type v; Checked::assign_special(v.raw_value(), VC_PLUS_INFINITY, ROUND_IGNORE); return v; } static Type quiet_NaN() { Type v; Checked::assign_special(v.raw_value(), VC_NAN, ROUND_IGNORE); return v; } }; -2441: template class numeric_limits > : public numeric_limits { private: typedef Checked_Number Type; public: static const bool has_infinity = Policy::has_infinity; static const bool has_quiet_NaN = Policy::has_nan; static Type min() { Type v; v.raw_value() = Checked::Extended_Int::min; return v; } static Type max() { Type v; v.raw_value() = Checked::Extended_Int::max; return v; } static Type infinity() { Type v; Checked::assign_special(v.raw_value(), VC_PLUS_INFINITY, ROUND_IGNORE); return v; } static Type quiet_NaN() { Type v; Checked::assign_special(v.raw_value(), VC_NAN, ROUND_IGNORE); return v; } }; -2441: template class numeric_limits > : public numeric_limits { private: typedef Checked_Number Type; public: static const bool has_infinity = Policy::has_infinity; static const bool has_quiet_NaN = Policy::has_nan; static Type min() { Type v; v.raw_value() = Checked::Extended_Int::min; return v; } static Type max() { Type v; v.raw_value() = Checked::Extended_Int::max; return v; } static Type infinity() { Type v; Checked::assign_special(v.raw_value(), VC_PLUS_INFINITY, ROUND_IGNORE); return v; } static Type quiet_NaN() { Type v; Checked::assign_special(v.raw_value(), VC_NAN, ROUND_IGNORE); return v; } }; -2441: template class numeric_limits > : public numeric_limits { private: typedef Checked_Number Type; public: static const bool has_infinity = Policy::has_infinity; static const bool has_quiet_NaN = Policy::has_nan; static Type min() { Type v; v.raw_value() = Checked::Extended_Int::min; return v; } static Type max() { Type v; v.raw_value() = Checked::Extended_Int::max; return v; } static Type infinity() { Type v; Checked::assign_special(v.raw_value(), VC_PLUS_INFINITY, ROUND_IGNORE); return v; } static Type quiet_NaN() { Type v; Checked::assign_special(v.raw_value(), VC_NAN, ROUND_IGNORE); return v; } }; -2441: # 98 "../../src/checked_numeric_limits.hh" -2441: template struct numeric_limits > : public numeric_limits { }; -2441: -2441: -2441: template struct numeric_limits > : public numeric_limits { }; -2441: -2441: -2441: template struct numeric_limits > : public numeric_limits { }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: class -2441: numeric_limits > -2441: : public numeric_limits { -2441: private: -2441: typedef Checked_Number Type; -2441: -2441: public: -2441: static const bool has_infinity = Policy::has_infinity; -2441: static const bool has_quiet_NaN = Policy::has_nan; -2441: -2441: static Type infinity() { -2441: Type v; -2441: Checked::assign_special(v.raw_value(), VC_PLUS_INFINITY, -2441: ROUND_IGNORE); -2441: return v; -2441: } -2441: -2441: static Type quiet_NaN() { -2441: Type v; -2441: Checked::assign_special(v.raw_value(), VC_NAN, ROUND_IGNORE); -2441: return v; -2441: } -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: class -2441: numeric_limits > -2441: : public numeric_limits { -2441: private: -2441: typedef Checked_Number Type; -2441: -2441: public: -2441: static const bool has_infinity = Policy::has_infinity; -2441: static const bool has_quiet_NaN = Policy::has_nan; -2441: -2441: static Type infinity() { -2441: Type v; -2441: Checked::assign_special(v.raw_value(), VC_PLUS_INFINITY, -2441: ROUND_IGNORE); -2441: return v; -2441: } -2441: -2441: static Type quiet_NaN() { -2441: Type v; -2441: Checked::assign_special(v.raw_value(), VC_NAN, ROUND_IGNORE); -2441: return v; -2441: } -2441: }; -2441: -2441: } -2441: # 4 "../../src/ppl_include_files.hh" 2 -2441: # 1 "../../src/stdiobuf_defs.hh" 1 -2441: # 27 "../../src/stdiobuf_defs.hh" -2441: # 1 "../../src/stdiobuf_types.hh" 1 -2441: # 16 "../../src/stdiobuf_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: class stdiobuf; -2441: -2441: } -2441: # 28 "../../src/stdiobuf_defs.hh" 2 -2441: # 1 "/usr/include/c++/8/cstdio" 1 3 -2441: # 39 "/usr/include/c++/8/cstdio" 3 -2441: -2441: # 40 "/usr/include/c++/8/cstdio" 3 -2441: # 29 "../../src/stdiobuf_defs.hh" 2 -2441: -2441: -2441: class Parma_Polyhedra_Library::stdiobuf -2441: : public std::basic_streambuf > { -2441: public: -2441: -2441: stdiobuf(FILE* file); -2441: -2441: protected: -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual int_type underflow(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual int_type uflow(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual std::streamsize xsgetn(char_type* s, std::streamsize n); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual int_type pbackfail(int_type c = traits_type::eof()); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual std::streamsize xsputn(const char_type* s, std::streamsize n); -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual int_type overflow(int_type c); -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual int sync(); -2441: -2441: private: -2441: -2441: typedef char char_type; -2441: -2441: -2441: typedef std::char_traits traits_type; -2441: -2441: -2441: typedef traits_type::int_type int_type; -2441: -2441: -2441: FILE* fp; -2441: -2441: -2441: int_type unget_char_buf; -2441: }; -2441: -2441: # 1 "../../src/stdiobuf_inlines.hh" 1 -2441: # 27 "../../src/stdiobuf_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: inline -2441: stdiobuf::stdiobuf(FILE* file) -2441: : fp(file), unget_char_buf(traits_type::eof()) { -2441: } -2441: -2441: } -2441: # 110 "../../src/stdiobuf_defs.hh" 2 -2441: # 5 "../../src/ppl_include_files.hh" 2 -2441: # 1 "../../src/c_streambuf_defs.hh" 1 -2441: # 27 "../../src/c_streambuf_defs.hh" -2441: # 1 "../../src/c_streambuf_types.hh" 1 -2441: # 16 "../../src/c_streambuf_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: class c_streambuf; -2441: -2441: } -2441: # 28 "../../src/c_streambuf_defs.hh" 2 -2441: -2441: -2441: -2441: class Parma_Polyhedra_Library::c_streambuf -2441: : public std::basic_streambuf > { -2441: public: -2441: -2441: c_streambuf(); -2441: -2441: -2441: virtual ~c_streambuf(); -2441: -2441: protected: -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual int_type underflow(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual int_type uflow(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual std::streamsize xsgetn(char_type* s, std::streamsize n); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual int_type pbackfail(int_type c = traits_type::eof()); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual std::streamsize xsputn(const char_type* s, std::streamsize n); -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual int_type overflow(int_type c); -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual int sync(); -2441: -2441: private: -2441: -2441: typedef char char_type; -2441: -2441: -2441: typedef std::char_traits traits_type; -2441: -2441: -2441: typedef traits_type::int_type int_type; -2441: -2441: -2441: int_type unget_char_buf; -2441: -2441: -2441: int_type next_char_buf; -2441: -2441: virtual size_t cb_read(char *, size_t) { -2441: return 0; -2441: } -2441: virtual size_t cb_write(const char *, size_t) { -2441: return 0; -2441: } -2441: virtual int cb_sync() { -2441: return 0; -2441: } -2441: virtual int cb_flush() { -2441: return 0; -2441: } -2441: }; -2441: -2441: # 1 "../../src/c_streambuf_inlines.hh" 1 -2441: # 27 "../../src/c_streambuf_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: inline -2441: c_streambuf::c_streambuf() -2441: : unget_char_buf(traits_type::eof()), next_char_buf(traits_type::eof()) { -2441: } -2441: -2441: } -2441: # 126 "../../src/c_streambuf_defs.hh" 2 -2441: # 6 "../../src/ppl_include_files.hh" 2 -2441: # 1 "../../src/Integer_Interval.hh" 1 -2441: # 27 "../../src/Integer_Interval.hh" -2441: # 1 "../../src/Interval_defs.hh" 1 -2441: # 27 "../../src/Interval_defs.hh" -2441: # 1 "../../src/Interval_types.hh" 1 -2441: # 16 "../../src/Interval_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: class Interval; -2441: -2441: } -2441: # 28 "../../src/Interval_defs.hh" 2 -2441: -2441: -2441: # 1 "../../src/assign_or_swap.hh" 1 -2441: # 28 "../../src/assign_or_swap.hh" -2441: # 1 "../../src/Has_Assign_Or_Swap.hh" 1 -2441: # 29 "../../src/Has_Assign_Or_Swap.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct Has_Assign_Or_Swap : public False { -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct Has_Assign_Or_Swap::type> -2441: : public True { -2441: }; -2441: -2441: } -2441: # 29 "../../src/assign_or_swap.hh" 2 -2441: -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline typename Enable_If::value, void>::type -2441: assign_or_swap(T& to, T& from) { -2441: to.assign_or_swap(from); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline typename Enable_If::value -2441: && !Slow_Copy::value, void>::type -2441: assign_or_swap(T& to, T& from) { -2441: to = from; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline typename Enable_If::value -2441: && Slow_Copy::value, void>::type -2441: assign_or_swap(T& to, T& from) { -2441: using std::swap; -2441: swap(to, from); -2441: } -2441: -2441: } -2441: # 31 "../../src/Interval_defs.hh" 2 -2441: # 1 "../../src/intervals_defs.hh" 1 -2441: # 29 "../../src/intervals_defs.hh" -2441: # 1 "/usr/include/c++/8/cstdlib" 1 3 -2441: # 39 "/usr/include/c++/8/cstdlib" 3 -2441: -2441: # 40 "/usr/include/c++/8/cstdlib" 3 -2441: # 30 "../../src/intervals_defs.hh" 2 -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: -2441: -2441: enum I_Result { -2441: -2441: -2441: -2441: I_EMPTY = 1U, -2441: -2441: -2441: -2441: I_SINGLETON = 2U, -2441: -2441: -2441: -2441: -2441: -2441: I_SOME = 4U, -2441: -2441: -2441: -2441: I_UNIVERSE = 8U, -2441: -2441: -2441: -2441: I_NOT_EMPTY = I_SINGLETON | I_SOME | I_UNIVERSE, -2441: -2441: -2441: -2441: I_ANY = I_EMPTY | I_NOT_EMPTY, -2441: -2441: -2441: -2441: I_NOT_UNIVERSE = I_EMPTY | I_SINGLETON | I_SOME, -2441: -2441: -2441: -2441: I_NOT_DEGENERATE = I_SINGLETON | I_SOME, -2441: -2441: -2441: -2441: I_EXACT = 16, -2441: -2441: -2441: -2441: I_INEXACT = 32, -2441: -2441: -2441: -2441: I_CHANGED = 64, -2441: -2441: -2441: -2441: I_UNCHANGED = 128, -2441: -2441: -2441: -2441: I_SINGULARITIES = 256 -2441: }; -2441: -2441: inline I_Result -2441: operator|(I_Result a, I_Result b) { -2441: return static_cast(static_cast(a) -2441: | static_cast(b)); -2441: } -2441: -2441: inline I_Result -2441: operator&(I_Result a, I_Result b) { -2441: return static_cast(static_cast(a) -2441: & static_cast(b)); -2441: } -2441: -2441: inline I_Result -2441: operator-(I_Result a, I_Result b) { -2441: return static_cast(static_cast(a) -2441: & ~static_cast(b)); -2441: } -2441: -2441: template -2441: struct Use_By_Ref; -2441: -2441: struct Use_Slow_Copy; -2441: template -2441: struct Use_By_Ref -2441: : public Bool::value> { -2441: }; -2441: -2441: struct By_Value; -2441: template -2441: struct Use_By_Ref -2441: : public False { -2441: }; -2441: -2441: struct By_Ref; -2441: template -2441: struct Use_By_Ref -2441: : public True { -2441: }; -2441: -2441: template -2441: class Val_Or_Ref; -2441: -2441: template -2441: class Val_Or_Ref::value>::type> { -2441: T value; -2441: public: -2441: typedef T Arg_Type; -2441: typedef T Return_Type; -2441: Val_Or_Ref() -2441: : value() { -2441: } -2441: explicit Val_Or_Ref(Arg_Type v, bool = false) -2441: : value(v) { -2441: } -2441: Val_Or_Ref& operator=(Arg_Type v) { -2441: value = v; -2441: return *this; -2441: } -2441: void set(Arg_Type v, bool = false) { -2441: value = v; -2441: } -2441: Return_Type get() const { -2441: return value; -2441: } -2441: operator Return_Type() const { -2441: return get(); -2441: } -2441: }; -2441: -2441: template -2441: class Val_Or_Ref::value>::type> { -2441: const T* ptr; -2441: public: -2441: typedef T& Arg_Type; -2441: typedef const T& Return_Type; -2441: Val_Or_Ref() -2441: : ptr(0) { -2441: } -2441: explicit Val_Or_Ref(Arg_Type v) -2441: : ptr(&v) { -2441: } -2441: Val_Or_Ref(const T& v, bool) -2441: : ptr(&v) { -2441: } -2441: Val_Or_Ref& operator=(Arg_Type v) { -2441: ptr = &v; -2441: return *this; -2441: } -2441: void set(Arg_Type v) { -2441: ptr = &v; -2441: } -2441: void set(const T& v, bool) { -2441: ptr = &v; -2441: } -2441: Return_Type get() const { -2441: return *ptr; -2441: } -2441: operator Return_Type() const { -2441: return get(); -2441: } -2441: }; -2441: -2441: class I_Constraint_Base { -2441: }; -2441: -2441: template -2441: class I_Constraint_Common : public I_Constraint_Base { -2441: public: -2441: template -2441: Result convert_real(T& to) const { -2441: const Derived& c = static_cast(*this); -2441: Result r = c.rel(); -2441: switch (r) { -2441: case V_EMPTY: -2441: case V_LGE: -2441: return r; -2441: case V_LE: -2441: r = assign_r(to, c.value(), (ROUND_UP | ROUND_STRICT_RELATION)); -2441: r = result_relation_class(r); -2441: if (r == V_EQ) { -2441: return V_LE; -2441: } -2441: goto lt; -2441: case V_LT: -2441: r = assign_r(to, c.value(), ROUND_UP); -2441: r = result_relation_class(r); -2441: lt: -2441: switch (r) { -2441: case V_EMPTY: -2441: case V_LT_PLUS_INFINITY: -2441: case V_EQ_MINUS_INFINITY: -2441: return r; -2441: case V_LT: -2441: case V_LE: -2441: case V_EQ: -2441: return V_LT; -2441: default: -2441: break; -2441: } -2441: break; -2441: case V_GE: -2441: r = assign_r(to, c.value(), (ROUND_DOWN | ROUND_STRICT_RELATION)); -2441: r = result_relation_class(r); -2441: if (r == V_EQ) { -2441: return V_GE; -2441: } -2441: goto gt; -2441: case V_GT: -2441: r = assign_r(to, c.value(), ROUND_DOWN); -2441: r = result_relation_class(r); -2441: gt: -2441: switch (r) { -2441: case V_EMPTY: -2441: case V_GT_MINUS_INFINITY: -2441: case V_EQ_PLUS_INFINITY: -2441: return r; -2441: case V_LT: -2441: case V_LE: -2441: case V_EQ: -2441: return V_GT; -2441: default: -2441: break; -2441: } -2441: break; -2441: case V_EQ: -2441: r = assign_r(to, c.value(), ROUND_CHECK); -2441: r = result_relation_class(r); -2441: ((void) 0); -2441: if (r == V_EQ) { -2441: return V_EQ; -2441: } -2441: else { -2441: return V_EMPTY; -2441: } -2441: case V_NE: -2441: r = assign_r(to, c.value(), ROUND_CHECK); -2441: r = result_relation_class(r); -2441: if (r == V_EQ) { -2441: return V_NE; -2441: } -2441: else { -2441: return V_LGE; -2441: } -2441: default: -2441: break; -2441: } -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return V_EMPTY; -2441: } -2441: template -2441: Result convert_real(T& to1, Result& rel2, T& to2) const { -2441: const Derived& c = static_cast(*this); -2441: Result rel1; -2441: if (c.rel() != V_EQ) { -2441: rel2 = convert(to2); -2441: return V_LGE; -2441: } -2441: rel2 = assign_r(to2, c.value(), ROUND_UP); -2441: rel2 = result_relation_class(rel2); -2441: switch (rel2) { -2441: case V_EMPTY: -2441: case V_EQ_MINUS_INFINITY: -2441: case V_EQ: -2441: return V_LGE; -2441: default: -2441: break; -2441: } -2441: rel1 = assign_r(to1, c.value(), ROUND_DOWN); -2441: rel1 = result_relation_class(rel1); -2441: switch (rel1) { -2441: case V_EQ: -2441: ((void) 0); -2441: goto eq; -2441: case V_EQ_PLUS_INFINITY: -2441: case V_EMPTY: -2441: rel2 = rel1; -2441: return V_LGE; -2441: case V_GE: -2441: if (rel2 == V_LE && to1 == to2) { -2441: eq: -2441: rel2 = V_EQ; -2441: return V_LGE; -2441: } -2441: -2441: case V_GT: -2441: case V_GT_MINUS_INFINITY: -2441: return rel1; -2441: default: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return V_EMPTY; -2441: } -2441: switch (rel2) { -2441: case V_LE: -2441: case V_LT: -2441: case V_LT_PLUS_INFINITY: -2441: return rel1; -2441: default: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return V_EMPTY; -2441: } -2441: } -2441: template -2441: Result convert_integer(T& to) const { -2441: Result rel = convert_real(to); -2441: switch (rel) { -2441: case V_LT: -2441: if (is_integer(to)) { -2441: rel = sub_assign_r(to, to, T(1), (ROUND_UP | ROUND_STRICT_RELATION)); -2441: rel = result_relation_class(rel); -2441: return (rel == V_EQ) ? V_LE : rel; -2441: } -2441: -2441: case V_LE: -2441: rel = floor_assign_r(to, to, ROUND_UP); -2441: rel = result_relation_class(rel); -2441: ((void) 0); -2441: return V_LE; -2441: case V_GT: -2441: if (is_integer(to)) { -2441: rel = add_assign_r(to, to, T(1), (ROUND_DOWN | ROUND_STRICT_RELATION)); -2441: rel = result_relation_class(rel); -2441: return (rel == V_EQ) ? V_GE : rel; -2441: } -2441: -2441: case V_GE: -2441: rel = ceil_assign_r(to, to, ROUND_DOWN); -2441: rel = result_relation_class(rel); -2441: ((void) 0); -2441: return V_GE; -2441: case V_EQ: -2441: if (is_integer(to)) { -2441: return V_EQ; -2441: } -2441: return V_EMPTY; -2441: case V_NE: -2441: if (is_integer(to)) { -2441: return V_NE; -2441: } -2441: return V_LGE; -2441: default: -2441: return rel; -2441: } -2441: } -2441: }; -2441: -2441: struct I_Constraint_Rel { -2441: Result rel; -2441: I_Constraint_Rel(Result r) -2441: : rel(r) { -2441: ((void) 0); -2441: } -2441: I_Constraint_Rel(Relation_Symbol r) -2441: : rel(static_cast(r)) { -2441: } -2441: operator Result() const { -2441: return rel; -2441: } -2441: }; -2441: -2441: template -2441: class I_Constraint -2441: : public I_Constraint_Common > { -2441: typedef Val_Or_Ref Val_Ref; -2441: typedef typename Val_Ref::Arg_Type Arg_Type; -2441: typedef typename Val_Ref::Return_Type Return_Type; -2441: Result rel_; -2441: Val_Ref value_; -2441: public: -2441: typedef T value_type; -2441: explicit I_Constraint() -2441: : rel_(V_LGE) { -2441: } -2441: I_Constraint(I_Constraint_Rel r, Arg_Type v) -2441: : rel_(r), value_(v) { -2441: } -2441: I_Constraint(I_Constraint_Rel r, const T& v, bool force) -2441: : rel_(r), value_(v, force) { -2441: } -2441: template -2441: I_Constraint(I_Constraint_Rel r, const U& v) -2441: : rel_(r), value_(v) { -2441: } -2441: void set(I_Constraint_Rel r, Arg_Type v) { -2441: rel_ = r; -2441: value_.set(v); -2441: } -2441: void set(I_Constraint_Rel r, const T& v, bool force) { -2441: rel_ = r; -2441: value_.set(v, force); -2441: } -2441: template -2441: void set(I_Constraint_Rel r, const U& v) { -2441: rel_ = r; -2441: value_.set(v); -2441: } -2441: Return_Type value() const { -2441: return value_; -2441: } -2441: Result rel() const { -2441: return rel_; -2441: } -2441: }; -2441: -2441: template -2441: inline I_Constraint -2441: i_constraint(I_Constraint_Rel rel, const T& v) { -2441: return I_Constraint(rel, v); -2441: } -2441: -2441: template -2441: inline I_Constraint -2441: i_constraint(I_Constraint_Rel rel, const T& v, bool force) { -2441: return I_Constraint(rel, v, force); -2441: } -2441: -2441: template -2441: inline I_Constraint -2441: i_constraint(I_Constraint_Rel rel, T& v) { -2441: return I_Constraint(rel, v); -2441: } -2441: -2441: template -2441: inline I_Constraint -2441: i_constraint(I_Constraint_Rel rel, const T& v, const Val_Or_Ref_Criteria&) { -2441: return I_Constraint(rel, v); -2441: } -2441: -2441: template -2441: inline I_Constraint -2441: i_constraint(I_Constraint_Rel rel, const T& v, bool force, -2441: const Val_Or_Ref_Criteria&) { -2441: return I_Constraint(rel, v, force); -2441: } -2441: -2441: template -2441: inline I_Constraint -2441: i_constraint(I_Constraint_Rel rel, T& v, const Val_Or_Ref_Criteria&) { -2441: return I_Constraint(rel, v); -2441: } -2441: -2441: } -2441: # 32 "../../src/Interval_defs.hh" 2 -2441: # 1 "../../src/Interval_Info_defs.hh" 1 -2441: # 27 "../../src/Interval_Info_defs.hh" -2441: # 1 "../../src/Boundary_defs.hh" 1 -2441: # 29 "../../src/Boundary_defs.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: namespace Boundary_NS { -2441: -2441: struct Property { -2441: enum Type { -2441: SPECIAL_, -2441: OPEN_ -2441: }; -2441: typedef bool Value; -2441: static const Value default_value = true; -2441: static const Value unsupported_value = false; -2441: Property(Type t) -2441: : type(t) { -2441: } -2441: Type type; -2441: }; -2441: -2441: static const Property SPECIAL(Property::SPECIAL_); -2441: static const Property OPEN(Property::OPEN_); -2441: -2441: enum Boundary_Type { -2441: LOWER = ROUND_DOWN, -2441: UPPER = ROUND_UP -2441: }; -2441: -2441: inline Rounding_Dir -2441: round_dir_check(Boundary_Type t, bool check = false) { -2441: if (check) { -2441: return static_cast(t) | ROUND_STRICT_RELATION; -2441: } -2441: else { -2441: return static_cast(t); -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: special_set_boundary_infinity(Boundary_Type type, T&, Info& info) { -2441: ((void) 0); -2441: info.set_boundary_property(type, SPECIAL); -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline bool -2441: special_is_open(Boundary_Type, const T&, const Info&) { -2441: return !Info::may_contain_infinity; -2441: } -2441: -2441: template -2441: inline bool -2441: normal_is_open(Boundary_Type type, const T& x, const Info& info) { -2441: if (Info::store_open) { -2441: return info.get_boundary_property(type, OPEN); -2441: } -2441: else { -2441: return !Info::store_special && !Info::may_contain_infinity -2441: && normal_is_boundary_infinity(type, x, info); -2441: } -2441: } -2441: -2441: template -2441: inline bool -2441: is_open(Boundary_Type type, const T& x, const Info& info) { -2441: if (Info::store_open) { -2441: return info.get_boundary_property(type, OPEN); -2441: } -2441: else { -2441: return !Info::may_contain_infinity -2441: && is_boundary_infinity(type, x, info); -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: set_unbounded(Boundary_Type type, T& x, Info& info) { -2441: enum anonymous_enum_compile_time_check___LINE__ { compile_time_check_109 = sizeof(Parma_Polyhedra_Library::Compile_Time_Check<(Info::store_special || std::numeric_limits::is_bounded || std::numeric_limits::has_infinity)>) } -2441: -2441: -2441: ; -2441: Result r; -2441: if (Info::store_special) { -2441: r = special_set_boundary_infinity(type, x, info); -2441: } -2441: else if (type == LOWER) { -2441: r = assign_r(x, MINUS_INFINITY, ROUND_UP); -2441: } -2441: else { -2441: r = assign_r(x, PLUS_INFINITY, ROUND_DOWN); -2441: } -2441: if (result_relation(r) == VR_EQ && !Info::may_contain_infinity) { -2441: info.set_boundary_property(type, OPEN); -2441: } -2441: return r; -2441: } -2441: -2441: template -2441: inline Result -2441: set_minus_infinity(Boundary_Type type, T& x, Info& info, bool open = false) { -2441: if (open) { -2441: ((void) 0); -2441: } -2441: else { -2441: ((void) 0); -2441: } -2441: Result r; -2441: if (Info::store_special) { -2441: ((void) 0); -2441: r = special_set_boundary_infinity(type, x, info); -2441: } -2441: else { -2441: r = assign_r(x, MINUS_INFINITY, round_dir_check(type)); -2441: ((void) 0); -2441: } -2441: if (open || result_relation(r) != VR_EQ) { -2441: info.set_boundary_property(type, OPEN); -2441: } -2441: return r; -2441: } -2441: -2441: template -2441: inline Result -2441: set_plus_infinity(Boundary_Type type, T& x, Info& info, bool open = false) { -2441: if (open) { -2441: ((void) 0); -2441: } -2441: else { -2441: ((void) 0); -2441: } -2441: Result r; -2441: if (Info::store_special) { -2441: ((void) 0); -2441: r = special_set_boundary_infinity(type, x, info); -2441: } -2441: else { -2441: r = assign_r(x, PLUS_INFINITY, round_dir_check(type)); -2441: ((void) 0); -2441: } -2441: if (open || result_relation(r) != VR_EQ) { -2441: info.set_boundary_property(type, OPEN); -2441: } -2441: return r; -2441: } -2441: -2441: template -2441: inline Result -2441: set_boundary_infinity(Boundary_Type type, T& x, Info& info, bool open = false) { -2441: ((void) 0); -2441: Result r; -2441: if (Info::store_special) { -2441: r = special_set_boundary_infinity(type, x, info); -2441: } -2441: else if (type == LOWER) { -2441: r = assign_r(x, MINUS_INFINITY, round_dir_check(type)); -2441: } -2441: else { -2441: r = assign_r(x, PLUS_INFINITY, round_dir_check(type)); -2441: } -2441: ((void) 0); -2441: if (open) { -2441: info.set_boundary_property(type, OPEN); -2441: } -2441: return r; -2441: } -2441: -2441: template -2441: inline bool -2441: is_domain_inf(Boundary_Type type, const T& x, const Info& info) { -2441: if (Info::store_special && type == LOWER) { -2441: return info.get_boundary_property(type, SPECIAL); -2441: } -2441: else if (std::numeric_limits::has_infinity) { -2441: return Parma_Polyhedra_Library::is_minus_infinity(x); -2441: } -2441: else if (std::numeric_limits::is_bounded) { -2441: return x == std::numeric_limits::min(); -2441: } -2441: else { -2441: return false; -2441: } -2441: } -2441: -2441: template -2441: inline bool -2441: is_domain_sup(Boundary_Type type, const T& x, const Info& info) { -2441: if (Info::store_special && type == UPPER) { -2441: return info.get_boundary_property(type, SPECIAL); -2441: } -2441: else if (std::numeric_limits::has_infinity) { -2441: return Parma_Polyhedra_Library::is_plus_infinity(x); -2441: } -2441: else if (std::numeric_limits::is_bounded) { -2441: return x == std::numeric_limits::max(); -2441: } -2441: else { -2441: return false; -2441: } -2441: } -2441: -2441: template -2441: inline bool -2441: normal_is_boundary_infinity(Boundary_Type type, const T& x, const Info&) { -2441: if (!std::numeric_limits::has_infinity) { -2441: return false; -2441: } -2441: if (type == LOWER) { -2441: return Parma_Polyhedra_Library::is_minus_infinity(x); -2441: } -2441: else { -2441: return Parma_Polyhedra_Library::is_plus_infinity(x); -2441: } -2441: } -2441: -2441: template -2441: inline bool -2441: is_boundary_infinity(Boundary_Type type, const T& x, const Info& info) { -2441: if (Info::store_special) { -2441: return info.get_boundary_property(type, SPECIAL); -2441: } -2441: else { -2441: return normal_is_boundary_infinity(type, x, info); -2441: } -2441: } -2441: -2441: template -2441: inline bool -2441: normal_is_reverse_infinity(Boundary_Type type, const T& x, const Info&) { -2441: if (!Info::may_contain_infinity) { -2441: return false; -2441: } -2441: else if (type == LOWER) { -2441: return Parma_Polyhedra_Library::is_plus_infinity(x); -2441: } -2441: else { -2441: return Parma_Polyhedra_Library::is_minus_infinity(x); -2441: } -2441: } -2441: -2441: template -2441: inline bool -2441: is_minus_infinity(Boundary_Type type, const T& x, const Info& info) { -2441: if (type == LOWER) { -2441: if (Info::store_special) { -2441: return info.get_boundary_property(type, SPECIAL); -2441: } -2441: else { -2441: return normal_is_boundary_infinity(type, x, info); -2441: } -2441: } -2441: else { -2441: return !Info::store_special && normal_is_reverse_infinity(type, x, info); -2441: } -2441: } -2441: -2441: template -2441: inline bool -2441: is_plus_infinity(Boundary_Type type, const T& x, const Info& info) { -2441: if (type == UPPER) { -2441: if (Info::store_special) { -2441: return info.get_boundary_property(type, SPECIAL); -2441: } -2441: else { -2441: return normal_is_boundary_infinity(type, x, info); -2441: } -2441: } -2441: else { -2441: return !Info::store_special && normal_is_reverse_infinity(type, x, info); -2441: } -2441: } -2441: -2441: template -2441: inline bool -2441: is_reverse_infinity(Boundary_Type type, const T& x, const Info& info) { -2441: return normal_is_reverse_infinity(type, x, info); -2441: } -2441: -2441: template -2441: inline int -2441: infinity_sign(Boundary_Type type, const T& x, const Info& info) { -2441: if (is_boundary_infinity(type, x, info)) { -2441: return (type == LOWER) ? -1 : 1; -2441: } -2441: else if (is_reverse_infinity(type, x, info)) { -2441: return (type == UPPER) ? -1 : 1; -2441: } -2441: else { -2441: return 0; -2441: } -2441: } -2441: -2441: template -2441: inline bool -2441: is_boundary_infinity_closed(Boundary_Type type, const T& x, const Info& info) { -2441: return Info::may_contain_infinity -2441: && !info.get_boundary_property(type, OPEN) -2441: && is_boundary_infinity(type, x, info); -2441: } -2441: -2441: template -2441: inline bool -2441: boundary_infinity_is_open(Boundary_Type type, const Info& info) { -2441: return !Info::may_contain_infinity -2441: || info.get_boundary_property(type, OPEN); -2441: } -2441: -2441: template -2441: inline int -2441: sgn_b(Boundary_Type type, const T& x, const Info& info) { -2441: if (info.get_boundary_property(type, SPECIAL)) { -2441: return (type == LOWER) ? -1 : 1; -2441: } -2441: else { -2441: -2441: -2441: return Parma_Polyhedra_Library::sgn(x); -2441: } -2441: } -2441: -2441: template -2441: inline int -2441: sgn(Boundary_Type type, const T& x, const Info& info) { -2441: int sign = sgn_b(type, x, info); -2441: if (x == 0 && info.get_boundary_property(type, OPEN)) { -2441: return (type == LOWER) ? -1 : 1; -2441: } -2441: else { -2441: return sign; -2441: } -2441: } -2441: -2441: template -2441: inline bool -2441: eq(Boundary_Type type1, const T1& x1, const Info1& info1, -2441: Boundary_Type type2, const T2& x2, const Info2& info2) { -2441: if (type1 == type2) { -2441: if (is_open(type1, x1, info1) -2441: != is_open(type2, x2, info2)) { -2441: return false; -2441: } -2441: } -2441: else if (is_open(type1, x1, info1) -2441: || is_open(type2, x2, info2)) { -2441: return false; -2441: } -2441: if (is_minus_infinity(type1, x1, info1)) { -2441: return is_minus_infinity(type2, x2, info2); -2441: } -2441: else if (is_plus_infinity(type1, x1, info1)) { -2441: return is_plus_infinity(type2, x2, info2); -2441: } -2441: else if (is_minus_infinity(type2, x2, info2) -2441: || is_plus_infinity(type2, x2, info2)) { -2441: return false; -2441: } -2441: else { -2441: return equal(x1, x2); -2441: } -2441: } -2441: -2441: template -2441: inline bool -2441: lt(Boundary_Type type1, const T1& x1, const Info1& info1, -2441: Boundary_Type type2, const T2& x2, const Info2& info2) { -2441: if (is_open(type1, x1, info1)) { -2441: if (type1 == UPPER -2441: && (type2 == LOWER -2441: || !is_open(type2, x2, info2))) { -2441: goto le; -2441: } -2441: } -2441: else if (type2 == LOWER -2441: && is_open(type2, x2, info2)) { -2441: le: -2441: if (is_minus_infinity(type1, x1, info1) -2441: || is_plus_infinity(type2, x2, info2)) { -2441: return true; -2441: } -2441: if (is_plus_infinity(type1, x1, info1) -2441: || is_minus_infinity(type2, x2, info2)) { -2441: return false; -2441: } -2441: else { -2441: return less_or_equal(x1, x2); -2441: } -2441: } -2441: if (is_plus_infinity(type1, x1, info1) -2441: || is_minus_infinity(type2, x2, info2)) { -2441: return false; -2441: } -2441: if (is_minus_infinity(type1, x1, info1) -2441: || is_plus_infinity(type2, x2, info2)) { -2441: return true; -2441: } -2441: else { -2441: return less_than(x1, x2); -2441: } -2441: } -2441: -2441: template -2441: inline bool -2441: gt(Boundary_Type type1, const T1& x1, const Info1& info1, -2441: Boundary_Type type2, const T2& x2, const Info2& info2) { -2441: return lt(type2, x2, info2, type1, x1, info1); -2441: } -2441: -2441: template -2441: inline bool -2441: le(Boundary_Type type1, const T1& x1, const Info1& info1, -2441: Boundary_Type type2, const T2& x2, const Info2& info2) { -2441: return !gt(type1, x1, info1, type2, x2, info2); -2441: } -2441: -2441: template -2441: inline bool -2441: ge(Boundary_Type type1, const T1& x1, const Info1& info1, -2441: Boundary_Type type2, const T2& x2, const Info2& info2) { -2441: return !lt(type1, x1, info1, type2, x2, info2); -2441: } -2441: -2441: template -2441: inline Result -2441: adjust_boundary(Boundary_Type type, T& x, Info& info, -2441: bool open, Result r) { -2441: r = result_relation_class(r); -2441: if (type == LOWER) { -2441: switch (r) { -2441: case V_GT_MINUS_INFINITY: -2441: open = true; -2441: -2441: case V_EQ_MINUS_INFINITY: -2441: if (!Info::store_special) { -2441: return r; -2441: } -2441: if (open) { -2441: info.set_boundary_property(type, OPEN); -2441: } -2441: return special_set_boundary_infinity(type, x, info); -2441: case V_GT: -2441: open = true; -2441: -2441: case V_GE: -2441: case V_EQ: -2441: if (open) { -2441: info.set_boundary_property(type, OPEN); -2441: } -2441: return r; -2441: default: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return V_NAN; -2441: } -2441: } -2441: else { -2441: switch (r) { -2441: case V_LT_PLUS_INFINITY: -2441: open = true; -2441: -2441: case V_EQ_PLUS_INFINITY: -2441: if (!Info::store_special) { -2441: return r; -2441: } -2441: if (open) { -2441: info.set_boundary_property(type, OPEN); -2441: } -2441: return special_set_boundary_infinity(type, x, info); -2441: case V_LT: -2441: open = true; -2441: -2441: case V_LE: -2441: case V_EQ: -2441: if (open) { -2441: info.set_boundary_property(type, OPEN); -2441: } -2441: return r; -2441: default: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return V_NAN; -2441: } -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: complement(Boundary_Type to_type, To& to, To_Info& to_info, -2441: Boundary_Type type, const T& x, const Info& info) { -2441: ((void) 0); -2441: bool should_shrink; -2441: if (info.get_boundary_property(type, SPECIAL)) { -2441: should_shrink = !special_is_open(type, x, info); -2441: if (type == LOWER) { -2441: return set_minus_infinity(to_type, to, to_info, should_shrink); -2441: } -2441: else { -2441: return set_plus_infinity(to_type, to, to_info, should_shrink); -2441: } -2441: } -2441: should_shrink = !normal_is_open(type, x, info); -2441: bool check = (To_Info::check_inexact || (!should_shrink && To_Info::store_open)); -2441: Result r = assign_r(to, x, round_dir_check(to_type, check)); -2441: return adjust_boundary(to_type, to, to_info, should_shrink, r); -2441: } -2441: -2441: template -2441: inline Result -2441: assign(Boundary_Type to_type, To& to, To_Info& to_info, -2441: Boundary_Type type, const T& x, const Info& info, -2441: bool should_shrink = false) { -2441: ((void) 0); -2441: if (info.get_boundary_property(type, SPECIAL)) { -2441: should_shrink = (should_shrink || special_is_open(type, x, info)); -2441: return set_boundary_infinity(to_type, to, to_info, should_shrink); -2441: } -2441: should_shrink = (should_shrink || normal_is_open(type, x, info)); -2441: const bool check -2441: = (To_Info::check_inexact || (!should_shrink && To_Info::store_open)); -2441: const Result r = assign_r(to, x, round_dir_check(to_type, check)); -2441: return adjust_boundary(to_type, to, to_info, should_shrink, r); -2441: } -2441: -2441: template -2441: inline Result -2441: min_assign(Boundary_Type to_type, To& to, To_Info& to_info, -2441: Boundary_Type type, const T& x, const Info& info) { -2441: if (lt(type, x, info, to_type, to, to_info)) { -2441: to_info.clear_boundary_properties(to_type); -2441: return assign(to_type, to, to_info, type, x, info); -2441: } -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline Result -2441: min_assign(Boundary_Type to_type, To& to, To_Info& to_info, -2441: Boundary_Type type1, const T1& x1, const Info1& info1, -2441: Boundary_Type type2, const T2& x2, const Info2& info2) { -2441: if (lt(type1, x1, info1, type2, x2, info2)) { -2441: return assign(to_type, to, to_info, type1, x1, info1); -2441: } -2441: else { -2441: return assign(to_type, to, to_info, type2, x2, info2); -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: max_assign(Boundary_Type to_type, To& to, To_Info& to_info, -2441: Boundary_Type type, const T& x, const Info& info) { -2441: if (gt(type, x, info, to_type, to, to_info)) { -2441: to_info.clear_boundary_properties(to_type); -2441: return assign(to_type, to, to_info, type, x, info); -2441: } -2441: return V_EQ; -2441: } -2441: -2441: template -2441: inline Result -2441: max_assign(Boundary_Type to_type, To& to, To_Info& to_info, -2441: Boundary_Type type1, const T1& x1, const Info1& info1, -2441: Boundary_Type type2, const T2& x2, const Info2& info2) { -2441: if (gt(type1, x1, info1, type2, x2, info2)) { -2441: return assign(to_type, to, to_info, type1, x1, info1); -2441: } -2441: else { -2441: return assign(to_type, to, to_info, type2, x2, info2); -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: neg_assign(Boundary_Type to_type, To& to, To_Info& to_info, -2441: Boundary_Type type, const T& x, const Info& info) { -2441: ((void) 0); -2441: bool should_shrink; -2441: if (info.get_boundary_property(type, SPECIAL)) { -2441: should_shrink = special_is_open(type, x, info); -2441: return set_boundary_infinity(to_type, to, to_info, should_shrink); -2441: } -2441: should_shrink = normal_is_open(type, x, info); -2441: bool check = (To_Info::check_inexact || (!should_shrink && To_Info::store_open)); -2441: Result r = neg_assign_r(to, x, round_dir_check(to_type, check)); -2441: return adjust_boundary(to_type, to, to_info, should_shrink, r); -2441: } -2441: -2441: template -2441: inline Result -2441: add_assign(Boundary_Type to_type, To& to, To_Info& to_info, -2441: Boundary_Type type1, const T1& x1, const Info1& info1, -2441: Boundary_Type type2, const T2& x2, const Info2& info2) { -2441: ((void) 0); -2441: bool should_shrink; -2441: if (is_boundary_infinity(type1, x1, info1)) { -2441: should_shrink = (boundary_infinity_is_open(type1, info1) -2441: && !is_boundary_infinity_closed(type2, x2, info2)); -2441: return set_boundary_infinity(to_type, to, to_info, should_shrink); -2441: } -2441: else if (is_boundary_infinity(type2, x2, info2)) { -2441: should_shrink = (boundary_infinity_is_open(type2, info2) -2441: && !is_boundary_infinity_closed(type1, x1, info1)); -2441: return set_boundary_infinity(to_type, to, to_info, should_shrink); -2441: } -2441: should_shrink = (normal_is_open(type1, x1, info1) -2441: || normal_is_open(type2, x2, info2)); -2441: bool check = (To_Info::check_inexact || (!should_shrink && To_Info::store_open)); -2441: -2441: Result r = add_assign_r(to, x1, x2, round_dir_check(to_type, check)); -2441: return adjust_boundary(to_type, to, to_info, should_shrink, r); -2441: } -2441: -2441: template -2441: inline Result -2441: sub_assign(Boundary_Type to_type, To& to, To_Info& to_info, -2441: Boundary_Type type1, const T1& x1, const Info1& info1, -2441: Boundary_Type type2, const T2& x2, const Info2& info2) { -2441: ((void) 0); -2441: bool should_shrink; -2441: if (is_boundary_infinity(type1, x1, info1)) { -2441: should_shrink = (boundary_infinity_is_open(type1, info1) -2441: && !is_boundary_infinity_closed(type2, x2, info2)); -2441: return set_boundary_infinity(to_type, to, to_info, should_shrink); -2441: } -2441: else if (is_boundary_infinity(type2, x2, info2)) { -2441: should_shrink = (boundary_infinity_is_open(type2, info2) -2441: && !is_boundary_infinity_closed(type1, x1, info1)); -2441: return set_boundary_infinity(to_type, to, to_info, should_shrink); -2441: } -2441: should_shrink = (normal_is_open(type1, x1, info1) -2441: || normal_is_open(type2, x2, info2)); -2441: bool check = (To_Info::check_inexact || (!should_shrink && To_Info::store_open)); -2441: -2441: Result r = sub_assign_r(to, x1, x2, round_dir_check(to_type, check)); -2441: return adjust_boundary(to_type, to, to_info, should_shrink, r); -2441: } -2441: -2441: template -2441: inline Result -2441: mul_assign(Boundary_Type to_type, To& to, To_Info& to_info, -2441: Boundary_Type type1, const T1& x1, const Info1& info1, -2441: Boundary_Type type2, const T2& x2, const Info2& info2) { -2441: bool should_shrink; -2441: if (is_boundary_infinity(type1, x1, info1)) { -2441: should_shrink = (boundary_infinity_is_open(type1, info1) -2441: && !is_boundary_infinity_closed(type2, x2, info2)); -2441: return set_boundary_infinity(to_type, to, to_info, should_shrink); -2441: } -2441: else if (is_boundary_infinity(type2, x2, info2)) { -2441: should_shrink = (boundary_infinity_is_open(type2, info2) -2441: && !is_boundary_infinity_closed(type1, x1, info1)); -2441: return set_boundary_infinity(to_type, to, to_info, should_shrink); -2441: } -2441: should_shrink = (normal_is_open(type1, x1, info1) -2441: || normal_is_open(type2, x2, info2)); -2441: bool check = (To_Info::check_inexact || (!should_shrink && To_Info::store_open)); -2441: ((void) 0); -2441: -2441: Result r = mul_assign_r(to, x1, x2, round_dir_check(to_type, check)); -2441: return adjust_boundary(to_type, to, to_info, should_shrink, r); -2441: } -2441: -2441: template -2441: inline Result -2441: set_zero(Boundary_Type to_type, To& to, To_Info& to_info, bool should_shrink) { -2441: bool check = (To_Info::check_inexact || (!should_shrink && To_Info::store_open)); -2441: Result r = assign_r(to, Constant<0>::value, round_dir_check(to_type, check)); -2441: return adjust_boundary(to_type, to, to_info, should_shrink, r); -2441: } -2441: -2441: template -2441: inline Result -2441: mul_assign_z(Boundary_Type to_type, To& to, To_Info& to_info, -2441: Boundary_Type type1, const T1& x1, const Info1& info1, int x1s, -2441: Boundary_Type type2, const T2& x2, const Info2& info2, int x2s) { -2441: bool should_shrink; -2441: if (x1s != 0) { -2441: if (x2s != 0) { -2441: return mul_assign(to_type, to, to_info, -2441: type1, x1, info1, -2441: type2, x2, info2); -2441: } -2441: else { -2441: should_shrink = info2.get_boundary_property(type2, OPEN); -2441: } -2441: } -2441: else { -2441: should_shrink = (info1.get_boundary_property(type1, OPEN) -2441: && (x2s != 0 || info2.get_boundary_property(type2, OPEN))); -2441: } -2441: return set_zero(to_type, to, to_info, should_shrink); -2441: } -2441: -2441: template -2441: inline Result -2441: div_assign(Boundary_Type to_type, To& to, To_Info& to_info, -2441: Boundary_Type type1, const T1& x1, const Info1& info1, -2441: Boundary_Type type2, const T2& x2, const Info2& info2) { -2441: bool should_shrink; -2441: if (is_boundary_infinity(type1, x1, info1)) { -2441: should_shrink = boundary_infinity_is_open(type1, info1); -2441: return set_boundary_infinity(to_type, to, to_info, should_shrink); -2441: } -2441: else if (is_boundary_infinity(type2, x2, info2)) { -2441: should_shrink = boundary_infinity_is_open(type2, info2); -2441: return set_zero(to_type, to, to_info, should_shrink); -2441: } -2441: should_shrink = (normal_is_open(type1, x1, info1) -2441: || normal_is_open(type2, x2, info2)); -2441: bool check = (To_Info::check_inexact || (!should_shrink && To_Info::store_open)); -2441: ((void) 0); -2441: -2441: Result r = div_assign_r(to, x1, x2, round_dir_check(to_type, check)); -2441: return adjust_boundary(to_type, to, to_info, should_shrink, r); -2441: } -2441: -2441: -2441: template -2441: inline Result -2441: div_assign_z(Boundary_Type to_type, To& to, To_Info& to_info, -2441: Boundary_Type type1, const T1& x1, const Info1& info1, int x1s, -2441: Boundary_Type type2, const T2& x2, const Info2& info2, int x2s) { -2441: if (x1s != 0) { -2441: if (x2s != 0) { -2441: return div_assign(to_type, to, to_info, -2441: type1, x1, info1, -2441: type2, x2, info2); -2441: } -2441: else { -2441: return set_boundary_infinity(to_type, to, to_info, true); -2441: } -2441: } -2441: else { -2441: bool should_shrink = info1.get_boundary_property(type1, OPEN) -2441: && !is_boundary_infinity_closed(type2, x2, info2); -2441: return set_zero(to_type, to, to_info, should_shrink); -2441: } -2441: } -2441: -2441: template -2441: inline Result -2441: umod_2exp_assign(Boundary_Type to_type, To& to, To_Info& to_info, -2441: Boundary_Type type, const T& x, const Info& info, -2441: unsigned int exp) { -2441: ((void) 0); -2441: bool should_shrink; -2441: if (is_boundary_infinity(type, x, info)) { -2441: should_shrink = boundary_infinity_is_open(type, info); -2441: return set_boundary_infinity(to_type, to, to_info, should_shrink); -2441: } -2441: should_shrink = normal_is_open(type, x, info); -2441: bool check = (To_Info::check_inexact || (!should_shrink && To_Info::store_open)); -2441: Result r = umod_2exp_assign_r(to, x, exp, round_dir_check(to_type, check)); -2441: return adjust_boundary(to_type, to, to_info, should_shrink, r); -2441: } -2441: -2441: template -2441: inline Result -2441: smod_2exp_assign(Boundary_Type to_type, To& to, To_Info& to_info, -2441: Boundary_Type type, const T& x, const Info& info, -2441: unsigned int exp) { -2441: ((void) 0); -2441: bool should_shrink; -2441: if (is_boundary_infinity(type, x, info)) { -2441: should_shrink = boundary_infinity_is_open(type, info); -2441: return set_boundary_infinity(to_type, to, to_info, should_shrink); -2441: } -2441: should_shrink = normal_is_open(type, x, info); -2441: bool check = (To_Info::check_inexact || (!should_shrink && To_Info::store_open)); -2441: Result r = smod_2exp_assign_r(to, x, exp, round_dir_check(to_type, check)); -2441: return adjust_boundary(to_type, to, to_info, should_shrink, r); -2441: } -2441: -2441: } -2441: -2441: } -2441: # 28 "../../src/Interval_Info_defs.hh" 2 -2441: -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: namespace Interval_NS { -2441: -2441: struct Property { -2441: enum Type { -2441: CARDINALITY_0_, -2441: CARDINALITY_1_, -2441: CARDINALITY_IS_ -2441: }; -2441: typedef bool Value; -2441: static const Value default_value = true; -2441: static const Value unsupported_value = false; -2441: Property(Type t) -2441: : type(t) { -2441: } -2441: Type type; -2441: }; -2441: -2441: const Property CARDINALITY_0(Property::CARDINALITY_0_); -2441: const Property CARDINALITY_1(Property::CARDINALITY_1_); -2441: const Property CARDINALITY_IS(Property::CARDINALITY_IS_); -2441: -2441: template -2441: inline void -2441: reset_bits(T& bits) { -2441: bits = 0; -2441: } -2441: -2441: template -2441: inline void -2441: reset_bit(T& bits, unsigned int bit) { -2441: bits &= ~(static_cast(1) << bit); -2441: } -2441: -2441: template -2441: inline void -2441: set_bit(T& bits, unsigned int bit, bool value) { -2441: if (value) { -2441: bits |= static_cast(1) << bit; -2441: } -2441: else { -2441: reset_bit(bits, bit); -2441: } -2441: } -2441: -2441: template -2441: inline bool -2441: get_bit(const T& bits, unsigned int bit) { -2441: return (bits & (static_cast(1) << bit)) != 0; -2441: } -2441: -2441: template -2441: inline void -2441: set_bits(T& bits, unsigned int start, unsigned int len, T value) { -2441: bits &= ~(((static_cast(1) << len) - 1) << start); -2441: bits |= value << start; -2441: } -2441: -2441: template -2441: inline T -2441: get_bits(T& bits, unsigned int start, unsigned int len) { -2441: return (bits >> start) & ((static_cast(1) << len) - 1); -2441: } -2441: -2441: } -2441: -2441: using namespace Interval_NS; -2441: using namespace Boundary_NS; -2441: -2441: -2441: template -2441: class Interval_Info_Null { -2441: public: -2441: enum const_bool_value_may_be_empty { may_be_empty = (Policy::may_be_empty) }; -2441: enum const_bool_value_may_contain_infinity { may_contain_infinity = (Policy::may_contain_infinity) }; -2441: enum const_bool_value_check_inexact { check_inexact = (Policy::check_inexact) }; -2441: enum const_bool_value_store_special { store_special = (false) }; -2441: enum const_bool_value_store_open { store_open = (false) }; -2441: enum const_bool_value_cache_empty { cache_empty = (false) }; -2441: enum const_bool_value_cache_singleton { cache_singleton = (false) }; -2441: Interval_Info_Null() { -2441: } -2441: void clear() { -2441: } -2441: void clear_boundary_properties(Boundary_Type) { -2441: } -2441: -2441: template -2441: void set_boundary_property(Boundary_Type, const Property&, typename Property::Value = Property::default_value) { -2441: } -2441: template -2441: typename Property::Value get_boundary_property(Boundary_Type, const Property&) const { -2441: return Property::unsupported_value; -2441: } -2441: template -2441: void set_interval_property(const Property&, typename Property::Value = Property::default_value) { -2441: } -2441: template -2441: typename Property::Value get_interval_property(const Property&) const { -2441: return Property::unsupported_value; -2441: } -2441: -2441: -2441: void m_swap(Interval_Info_Null& y); -2441: -2441: void ascii_dump(std::ostream& s) const; -2441: bool ascii_load(std::istream& s); -2441: }; -2441: -2441: template -2441: class Interval_Info_Null_Open : public Interval_Info_Null { -2441: public: -2441: enum const_bool_value_store_open { store_open = (true) }; -2441: Interval_Info_Null_Open(bool o) -2441: : open(o) { -2441: } -2441: bool get_boundary_property(Boundary_Type, -2441: const Boundary_NS::Property& p) const { -2441: if (p.type == Boundary_NS::Property::OPEN_) { -2441: return open; -2441: } -2441: else { -2441: return Boundary_NS::Property::unsupported_value; -2441: } -2441: } -2441: -2441: void ascii_dump(std::ostream& s) const; -2441: bool ascii_load(std::istream& s); -2441: -2441: private: -2441: bool open; -2441: }; -2441: -2441: -2441: template -2441: class Interval_Info_Bitset { -2441: public: -2441: enum const_bool_value_may_be_empty { may_be_empty = (Policy::may_be_empty) }; -2441: enum const_bool_value_may_contain_infinity { may_contain_infinity = (Policy::may_contain_infinity) }; -2441: enum const_bool_value_check_inexact { check_inexact = (Policy::check_inexact) }; -2441: enum const_bool_value_store_special { store_special = (Policy::store_special) }; -2441: enum const_bool_value_store_open { store_open = (Policy::store_open) }; -2441: enum const_bool_value_cache_empty { cache_empty = (Policy::cache_empty) }; -2441: enum const_bool_value_cache_singleton { cache_singleton = (Policy::cache_singleton) }; -2441: enum anonymous_enum_lower_special_bit { lower_special_bit = (Policy::next_bit) }; -2441: enum anonymous_enum_lower_open_bit { lower_open_bit = (lower_special_bit + (store_special ? 1 : 0)) }; -2441: enum anonymous_enum_upper_special_bit { upper_special_bit = (lower_open_bit + (store_open ? 1 : 0)) }; -2441: enum anonymous_enum_upper_open_bit { upper_open_bit = (upper_special_bit + (store_special ? 1 : 0)) }; -2441: enum anonymous_enum_cardinality_is_bit { cardinality_is_bit = (upper_open_bit + (store_open ? 1 : 0)) }; -2441: enum anonymous_enum_cardinality_0_bit { cardinality_0_bit = (cardinality_is_bit + ((cache_empty || cache_singleton) ? 1 : 0)) } -2441: ; -2441: enum anonymous_enum_cardinality_1_bit { cardinality_1_bit = (cardinality_0_bit + (cache_empty ? 1 : 0)) }; -2441: enum anonymous_enum_next_bit { next_bit = (cardinality_1_bit + (cache_singleton ? 1 : 0)) }; -2441: -2441: Interval_Info_Bitset() { -2441: -2441: -2441: clear(); -2441: } -2441: -2441: void clear() { -2441: reset_bits(bitset); -2441: } -2441: void clear_boundary_properties(Boundary_Type t) { -2441: set_boundary_property(t, SPECIAL, false); -2441: set_boundary_property(t, OPEN, false); -2441: } -2441: void set_boundary_property(Boundary_Type t, -2441: const Boundary_NS::Property& p, -2441: bool value = true) { -2441: switch (p.type) { -2441: case Boundary_NS::Property::SPECIAL_: -2441: if (store_special) { -2441: if (t == LOWER) { -2441: set_bit(bitset, lower_special_bit, value); -2441: } -2441: else { -2441: set_bit(bitset, upper_special_bit, value); -2441: } -2441: } -2441: break; -2441: case Boundary_NS::Property::OPEN_: -2441: if (store_open) { -2441: if (t == LOWER) { -2441: set_bit(bitset, lower_open_bit, value); -2441: } -2441: else { -2441: set_bit(bitset, upper_open_bit, value); -2441: } -2441: } -2441: break; -2441: default: -2441: break; -2441: } -2441: } -2441: bool get_boundary_property(Boundary_Type t, const Boundary_NS::Property& p) const { -2441: switch (p.type) { -2441: case Boundary_NS::Property::SPECIAL_: -2441: if (!store_special) { -2441: return false; -2441: } -2441: if (t == LOWER) { -2441: return get_bit(bitset, lower_special_bit); -2441: } -2441: else { -2441: return get_bit(bitset, upper_special_bit); -2441: } -2441: case Boundary_NS::Property::OPEN_: -2441: if (!store_open) { -2441: return false; -2441: } -2441: else if (t == LOWER) { -2441: return get_bit(bitset, lower_open_bit); -2441: } -2441: else { -2441: return get_bit(bitset, upper_open_bit); -2441: } -2441: default: -2441: return false; -2441: } -2441: } -2441: void set_interval_property(const Interval_NS::Property& p, bool value = true) { -2441: switch (p.type) { -2441: case Interval_NS::Property::CARDINALITY_0_: -2441: if (cache_empty) { -2441: set_bit(bitset, cardinality_0_bit, value); -2441: } -2441: break; -2441: case Interval_NS::Property::CARDINALITY_1_: -2441: if (cache_singleton) { -2441: set_bit(bitset, cardinality_1_bit, value); -2441: } -2441: break; -2441: case Interval_NS::Property::CARDINALITY_IS_: -2441: if (cache_empty || cache_singleton) { -2441: set_bit(bitset, cardinality_is_bit, value); -2441: } -2441: break; -2441: default: -2441: break; -2441: } -2441: } -2441: bool get_interval_property(Interval_NS::Property p) const { -2441: switch (p.type) { -2441: case Interval_NS::Property::CARDINALITY_0_: -2441: return cache_empty && get_bit(bitset, cardinality_0_bit); -2441: case Interval_NS::Property::CARDINALITY_1_: -2441: return cache_singleton && get_bit(bitset, cardinality_1_bit); -2441: case Interval_NS::Property::CARDINALITY_IS_: -2441: return (cache_empty || cache_singleton) -2441: && get_bit(bitset, cardinality_is_bit); -2441: default: -2441: return false; -2441: } -2441: } -2441: -2441: -2441: void m_swap(Interval_Info_Bitset& y); -2441: -2441: void ascii_dump(std::ostream& s) const; -2441: bool ascii_load(std::istream& s); -2441: -2441: protected: -2441: T bitset; -2441: }; -2441: -2441: } -2441: -2441: # 1 "../../src/Interval_Info_inlines.hh" 1 -2441: # 29 "../../src/Interval_Info_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: inline void -2441: Interval_Info_Null::m_swap(Interval_Info_Null&) { -2441: } -2441: -2441: template -2441: inline void -2441: Interval_Info_Null::ascii_dump(std::ostream&) const { -2441: } -2441: -2441: template -2441: inline bool -2441: Interval_Info_Null::ascii_load(std::istream&) { -2441: return true; -2441: } -2441: -2441: template -2441: inline void -2441: Interval_Info_Null_Open::ascii_dump(std::ostream& s) const { -2441: s << (open ? "open" : "closed"); -2441: } -2441: -2441: template -2441: inline bool -2441: Interval_Info_Null_Open::ascii_load(std::istream& s) { -2441: std::string str; -2441: if (!(s >> str)) { -2441: return false; -2441: } -2441: if (str == "open") { -2441: open = true; -2441: return true; -2441: } -2441: if (str == "closed") { -2441: open = false; -2441: return true; -2441: } -2441: return false; -2441: } -2441: -2441: template -2441: inline void -2441: Interval_Info_Bitset::m_swap(Interval_Info_Bitset& y) { -2441: using std::swap; -2441: swap(bitset, y.bitset); -2441: } -2441: -2441: template -2441: inline void -2441: Interval_Info_Bitset::ascii_dump(std::ostream& s) const { -2441: const std::ios::fmtflags old_flags = s.setf(std::ios::hex, -2441: std::ios::basefield); -2441: s << bitset; -2441: s.flags(old_flags); -2441: } -2441: -2441: template -2441: inline bool -2441: Interval_Info_Bitset::ascii_load(std::istream& s) { -2441: const std::ios::fmtflags old_flags = s.setf(std::ios::hex, -2441: std::ios::basefield); -2441: s >> bitset; -2441: s.flags(old_flags); -2441: return !s.fail(); -2441: } -2441: -2441: -2441: -2441: -2441: template -2441: inline void -2441: swap(Interval_Info_Null& x, Interval_Info_Null& y) { -2441: x.m_swap(y); -2441: } -2441: -2441: -2441: -2441: -2441: template -2441: inline void -2441: swap(Interval_Info_Bitset& x, Interval_Info_Bitset& y) { -2441: x.m_swap(y); -2441: } -2441: -2441: } -2441: # 300 "../../src/Interval_Info_defs.hh" 2 -2441: # 33 "../../src/Interval_defs.hh" 2 -2441: -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: enum Ternary { T_YES, T_NO, T_MAYBE }; -2441: -2441: inline I_Result -2441: combine(Result l, Result u) { -2441: const unsigned res -2441: = static_cast(l) | (static_cast(u) << 6); -2441: return static_cast(res); -2441: } -2441: -2441: struct Interval_Base { -2441: }; -2441: -2441: using namespace Boundary_NS; -2441: using namespace Interval_NS; -2441: -2441: template -2441: struct Is_Singleton : public Is_Native_Or_Checked {}; -2441: -2441: template -2441: struct Is_Interval : public Is_Same_Or_Derived {}; -2441: # 80 "../../src/Interval_defs.hh" -2441: template -2441: class Interval : public Interval_Base, private Info { -2441: private: -2441: enum anonymous_enum_compile_time_check___LINE__ { compile_time_check_86 = sizeof(Parma_Polyhedra_Library::Compile_Time_Check<(!Info::store_special || !std::numeric_limits::has_infinity)>) } -2441: -2441: -2441: ; -2441: Info& w_info() const { -2441: return const_cast(*this); -2441: } -2441: -2441: public: -2441: typedef Boundary boundary_type; -2441: typedef Info info_type; -2441: -2441: typedef Interval_NS::Property Property; -2441: -2441: template -2441: typename Enable_If::value || Is_Interval::value, Interval&>::type -2441: operator=(const T& x) { -2441: assign(x); -2441: return *this; -2441: } -2441: -2441: template -2441: typename Enable_If::value || Is_Interval::value, Interval&>::type -2441: operator+=(const T& x) { -2441: add_assign(*this, x); -2441: return *this; -2441: } -2441: template -2441: typename Enable_If::value || Is_Interval::value, Interval&>::type -2441: operator-=(const T& x) { -2441: sub_assign(*this, x); -2441: return *this; -2441: } -2441: template -2441: typename Enable_If::value || Is_Interval::value, Interval&>::type -2441: operator*=(const T& x) { -2441: mul_assign(*this, x); -2441: return *this; -2441: } -2441: template -2441: typename Enable_If::value || Is_Interval::value, Interval&>::type -2441: operator/=(const T& x) { -2441: div_assign(*this, x); -2441: return *this; -2441: } -2441: -2441: -2441: void m_swap(Interval& y); -2441: -2441: Info& info() { -2441: return *this; -2441: } -2441: -2441: const Info& info() const { -2441: return *this; -2441: } -2441: -2441: Boundary& lower() { -2441: return lower_; -2441: } -2441: -2441: const Boundary& lower() const { -2441: return lower_; -2441: } -2441: -2441: Boundary& upper() { -2441: return upper_; -2441: } -2441: -2441: const Boundary& upper() const { -2441: return upper_; -2441: } -2441: -2441: I_Constraint lower_constraint() const { -2441: ((void) 0); -2441: if (info().get_boundary_property(LOWER, SPECIAL)) { -2441: return I_Constraint(); -2441: } -2441: return i_constraint(lower_is_open() ? GREATER_THAN : GREATER_OR_EQUAL, -2441: lower(), true); -2441: } -2441: I_Constraint upper_constraint() const { -2441: ((void) 0); -2441: if (info().get_boundary_property(UPPER, SPECIAL)) { -2441: return I_Constraint(); -2441: } -2441: return i_constraint(upper_is_open() ? LESS_THAN : LESS_OR_EQUAL, -2441: upper(), true); -2441: } -2441: -2441: bool is_empty() const { -2441: return lt(UPPER, upper(), info(), LOWER, lower(), info()); -2441: } -2441: -2441: bool check_empty(I_Result r) const { -2441: return (r & I_ANY) == I_EMPTY -2441: || ((r & I_ANY) != I_NOT_EMPTY && is_empty()); -2441: } -2441: -2441: bool is_singleton() const { -2441: return eq(LOWER, lower(), info(), UPPER, upper(), info()); -2441: } -2441: -2441: bool lower_is_open() const { -2441: ((void) 0); -2441: return is_open(LOWER, lower(), info()); -2441: } -2441: -2441: bool upper_is_open() const { -2441: ((void) 0); -2441: return is_open(UPPER, upper(), info()); -2441: } -2441: -2441: bool lower_is_boundary_infinity() const { -2441: ((void) 0); -2441: return Boundary_NS::is_boundary_infinity(LOWER, lower(), info()); -2441: } -2441: -2441: bool upper_is_boundary_infinity() const { -2441: ((void) 0); -2441: return Boundary_NS::is_boundary_infinity(UPPER, upper(), info()); -2441: } -2441: -2441: bool lower_is_domain_inf() const { -2441: ((void) 0); -2441: return Boundary_NS::is_domain_inf(LOWER, lower(), info()); -2441: } -2441: -2441: bool upper_is_domain_sup() const { -2441: ((void) 0); -2441: return Boundary_NS::is_domain_sup(UPPER, upper(), info()); -2441: } -2441: -2441: bool is_bounded() const { -2441: ((void) 0); -2441: return !lower_is_boundary_infinity() && !upper_is_boundary_infinity(); -2441: } -2441: -2441: bool is_universe() const { -2441: ((void) 0); -2441: return lower_is_domain_inf() && upper_is_domain_sup(); -2441: } -2441: -2441: I_Result lower_extend() { -2441: info().clear_boundary_properties(LOWER); -2441: set_unbounded(LOWER, lower(), info()); -2441: return I_ANY; -2441: } -2441: -2441: template -2441: typename Enable_If::value, I_Result>::type -2441: lower_extend(const C& c); -2441: -2441: I_Result upper_extend() { -2441: info().clear_boundary_properties(UPPER); -2441: set_unbounded(UPPER, upper(), info()); -2441: return I_ANY; -2441: } -2441: -2441: template -2441: typename Enable_If::value, I_Result>::type -2441: upper_extend(const C& c); -2441: -2441: I_Result build() { -2441: return assign(UNIVERSE); -2441: } -2441: -2441: template -2441: typename Enable_If::value, I_Result>::type -2441: build(const C& c) { -2441: Relation_Symbol rs; -2441: switch (c.rel()) { -2441: case V_LGE: -2441: case V_GT_MINUS_INFINITY: -2441: case V_LT_PLUS_INFINITY: -2441: return assign(UNIVERSE); -2441: default: -2441: return assign(EMPTY); -2441: case V_LT: -2441: case V_LE: -2441: case V_GT: -2441: case V_GE: -2441: case V_EQ: -2441: case V_NE: -2441: assign(UNIVERSE); -2441: rs = static_cast(c.rel()); -2441: return refine_existential(rs, c.value()); -2441: } -2441: } -2441: -2441: template -2441: typename Enable_If::value -2441: && -2441: Is_Same_Or_Derived::value, -2441: I_Result>::type -2441: build(const C1& c1, const C2& c2) { -2441: switch (c1.rel()) { -2441: case V_LGE: -2441: return build(c2); -2441: case V_NAN: -2441: return assign(EMPTY); -2441: default: -2441: break; -2441: } -2441: switch (c2.rel()) { -2441: case V_LGE: -2441: return build(c1); -2441: case V_NAN: -2441: return assign(EMPTY); -2441: default: -2441: break; -2441: } -2441: build(c1); -2441: const I_Result r = add_constraint(c2); -2441: return r - (I_CHANGED | I_UNCHANGED); -2441: } -2441: -2441: template -2441: typename Enable_If::value, I_Result>::type -2441: add_constraint(const C& c) { -2441: Interval x; -2441: x.build(c); -2441: return intersect_assign(x); -2441: } -2441: -2441: I_Result assign(Degenerate_Element e) { -2441: I_Result r; -2441: info().clear(); -2441: switch (e) { -2441: case EMPTY: -2441: lower_ = 1; -2441: upper_ = 0; -2441: r = I_EMPTY | I_EXACT; -2441: break; -2441: case UNIVERSE: -2441: set_unbounded(LOWER, lower(), info()); -2441: set_unbounded(UPPER, upper(), info()); -2441: r = I_UNIVERSE | I_EXACT; -2441: break; -2441: default: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: r = I_EMPTY; -2441: break; -2441: } -2441: ((void) 0); -2441: return r; -2441: } -2441: -2441: template -2441: typename Enable_If::value, I_Result>::type -2441: assign(const From&) { -2441: info().clear(); -2441: Result rl; -2441: Result ru; -2441: switch (From::vclass) { -2441: case VC_MINUS_INFINITY: -2441: rl = Boundary_NS::set_minus_infinity(LOWER, lower(), info()); -2441: ru = Boundary_NS::set_minus_infinity(UPPER, upper(), info()); -2441: break; -2441: case VC_PLUS_INFINITY: -2441: rl = Boundary_NS::set_plus_infinity(LOWER, lower(), info()); -2441: ru = Boundary_NS::set_plus_infinity(UPPER, upper(), info()); -2441: break; -2441: default: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: rl = V_NAN; -2441: ru = V_NAN; -2441: break; -2441: } -2441: ((void) 0); -2441: return combine(rl, ru); -2441: } -2441: -2441: I_Result set_infinities() { -2441: info().clear(); -2441: Result rl = Boundary_NS::set_minus_infinity(LOWER, lower(), info()); -2441: Result ru = Boundary_NS::set_plus_infinity(UPPER, upper(), info()); -2441: ((void) 0); -2441: return combine(rl, ru); -2441: } -2441: -2441: static bool is_always_topologically_closed() { -2441: return !Info::store_open; -2441: } -2441: -2441: bool is_topologically_closed() const { -2441: ((void) 0); -2441: return is_always_topologically_closed() -2441: || is_empty() -2441: || ((lower_is_boundary_infinity() || !lower_is_open()) -2441: && (upper_is_boundary_infinity() || !upper_is_open())); -2441: } -2441: -2441: -2441: void topological_closure_assign() { -2441: if (!Info::store_open || is_empty()) { -2441: return; -2441: } -2441: if (lower_is_open() && !lower_is_boundary_infinity()) { -2441: info().set_boundary_property(LOWER, OPEN, false); -2441: } -2441: if (upper_is_open() && !upper_is_boundary_infinity()) { -2441: info().set_boundary_property(UPPER, OPEN, false); -2441: } -2441: } -2441: -2441: void remove_inf() { -2441: ((void) 0); -2441: if (!Info::store_open) { -2441: return; -2441: } -2441: info().set_boundary_property(LOWER, OPEN, true); -2441: } -2441: -2441: void remove_sup() { -2441: ((void) 0); -2441: if (!Info::store_open) { -2441: return; -2441: } -2441: info().set_boundary_property(UPPER, OPEN, true); -2441: } -2441: -2441: int infinity_sign() const { -2441: ((void) 0); -2441: if (is_reverse_infinity(LOWER, lower(), info())) { -2441: return 1; -2441: } -2441: else if (is_reverse_infinity(UPPER, upper(), info())) { -2441: return -1; -2441: } -2441: else { -2441: return 0; -2441: } -2441: } -2441: -2441: bool contains_integer_point() const { -2441: ((void) 0); -2441: if (is_empty()) { -2441: return false; -2441: } -2441: if (!is_bounded()) { -2441: return true; -2441: } -2441: Boundary l; -2441: if (lower_is_open()) { -2441: add_assign_r(l, lower(), Boundary(1), ROUND_DOWN); -2441: floor_assign_r(l, l, ROUND_DOWN); -2441: } -2441: else { -2441: ceil_assign_r(l, lower(), ROUND_DOWN); -2441: } -2441: Boundary u; -2441: if (upper_is_open()) { -2441: sub_assign_r(u, upper(), Boundary(1), ROUND_UP); -2441: ceil_assign_r(u, u, ROUND_UP); -2441: } -2441: else { -2441: floor_assign_r(u, upper(), ROUND_UP); -2441: } -2441: return u >= l; -2441: } -2441: -2441: void drop_some_non_integer_points() { -2441: if (is_empty()) { -2441: return; -2441: } -2441: if (lower_is_open() && !lower_is_boundary_infinity()) { -2441: add_assign_r(lower(), lower(), Boundary(1), ROUND_DOWN); -2441: floor_assign_r(lower(), lower(), ROUND_DOWN); -2441: info().set_boundary_property(LOWER, OPEN, false); -2441: } -2441: else { -2441: ceil_assign_r(lower(), lower(), ROUND_DOWN); -2441: } -2441: if (upper_is_open() && !upper_is_boundary_infinity()) { -2441: sub_assign_r(upper(), upper(), Boundary(1), ROUND_UP); -2441: ceil_assign_r(upper(), upper(), ROUND_UP); -2441: info().set_boundary_property(UPPER, OPEN, false); -2441: } -2441: else { -2441: floor_assign_r(upper(), upper(), ROUND_UP); -2441: } -2441: } -2441: -2441: template -2441: typename Enable_If::value || Is_Interval::value, I_Result>::type -2441: wrap_assign(Bounded_Integer_Type_Width w, -2441: Bounded_Integer_Type_Representation r, -2441: const From& refinement) { -2441: if (is_empty()) { -2441: return I_EMPTY; -2441: } -2441: if (lower_is_boundary_infinity() || upper_is_boundary_infinity()) { -2441: return assign(refinement); -2441: } -2441: Parma_Polyhedra_Library::Dirty_Temp holder_u; Boundary& u = holder_u.item(); -2441: Result result = sub_2exp_assign_r(u, upper(), w, ROUND_UP); -2441: if (result_overflow(result) == 0 && u > lower()) { -2441: return assign(refinement); -2441: } -2441: info().clear(); -2441: switch (r) { -2441: case UNSIGNED: -2441: umod_2exp_assign(LOWER, lower(), info(), -2441: LOWER, lower(), info(), w); -2441: umod_2exp_assign(UPPER, upper(), info(), -2441: UPPER, upper(), info(), w); -2441: break; -2441: case SIGNED_2_COMPLEMENT: -2441: smod_2exp_assign(LOWER, lower(), info(), -2441: LOWER, lower(), info(), w); -2441: smod_2exp_assign(UPPER, upper(), info(), -2441: UPPER, upper(), info(), w); -2441: break; -2441: default: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: if (le(LOWER, lower(), info(), UPPER, upper(), info())) { -2441: return intersect_assign(refinement); -2441: } -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp; Interval& tmp = holder_tmp.item(); -2441: tmp.info().clear(); -2441: Boundary_NS::assign(LOWER, tmp.lower(), tmp.info(), -2441: LOWER, lower(), info()); -2441: set_unbounded(UPPER, tmp.upper(), tmp.info()); -2441: tmp.intersect_assign(refinement); -2441: lower_extend(); -2441: intersect_assign(refinement); -2441: return join_assign(tmp); -2441: } -2441: -2441: -2441: memory_size_type total_memory_in_bytes() const; -2441: -2441: -2441: memory_size_type external_memory_in_bytes() const; -2441: -2441: void ascii_dump(std::ostream& s) const; -2441: bool ascii_load(std::istream& s); -2441: -2441: bool OK() const { -2441: if (!Info::may_be_empty && is_empty()) { -2441: -2441: -2441: -2441: return false; -2441: } -2441: -2441: if (is_open(LOWER, lower(), info())) { -2441: if (is_plus_infinity(LOWER, lower(), info())) { -2441: -2441: -2441: -2441: } -2441: } -2441: else if (!Info::may_contain_infinity -2441: && (is_minus_infinity(LOWER, lower(), info()) -2441: || is_plus_infinity(LOWER, lower(), info()))) { -2441: -2441: -2441: -2441: return false; -2441: } -2441: if (!info().get_boundary_property(LOWER, SPECIAL)) { -2441: if (is_not_a_number(lower())) { -2441: -2441: -2441: -2441: return false; -2441: } -2441: } -2441: -2441: if (is_open(UPPER, upper(), info())) { -2441: if (is_minus_infinity(UPPER, upper(), info())) { -2441: -2441: -2441: -2441: } -2441: } -2441: else if (!Info::may_contain_infinity -2441: && (is_minus_infinity(UPPER, upper(), info()) -2441: || is_plus_infinity(UPPER, upper(), info()))) { -2441: -2441: -2441: -2441: -2441: return false; -2441: } -2441: if (!info().get_boundary_property(UPPER, SPECIAL)) { -2441: if (is_not_a_number(upper())) { -2441: -2441: -2441: -2441: return false; -2441: } -2441: } -2441: -2441: -2441: return true; -2441: } -2441: -2441: Interval() { -2441: } -2441: -2441: template -2441: explicit Interval(const T& x) { -2441: assign(x); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: explicit Interval(const char* s); -2441: -2441: template -2441: typename Enable_If::value -2441: || Is_Interval::value, bool>::type -2441: contains(const T& y) const; -2441: -2441: template -2441: typename Enable_If::value -2441: || Is_Interval::value, bool>::type -2441: strictly_contains(const T& y) const; -2441: -2441: template -2441: typename Enable_If::value -2441: || Is_Interval::value, bool>::type -2441: is_disjoint_from(const T& y) const; -2441: -2441: -2441: template -2441: typename Enable_If::value -2441: || Is_Interval::value, I_Result>::type -2441: assign(const From& x); -2441: -2441: template -2441: typename Enable_If::value -2441: || Is_Interval::value, bool>::type -2441: can_be_exactly_joined_to(const Type& x) const; -2441: -2441: template -2441: typename Enable_If::value -2441: || Is_Interval::value, I_Result>::type -2441: join_assign(const From& x); -2441: -2441: template -2441: typename Enable_If<((Is_Singleton::value -2441: || Is_Interval::value) -2441: && (Is_Singleton::value -2441: || Is_Interval::value)), I_Result>::type -2441: join_assign(const From1& x, const From2& y); -2441: -2441: template -2441: typename Enable_If::value -2441: || Is_Interval::value, I_Result>::type -2441: intersect_assign(const From& x); -2441: -2441: template -2441: typename Enable_If<((Is_Singleton::value -2441: || Is_Interval::value) -2441: && (Is_Singleton::value -2441: || Is_Interval::value)), I_Result>::type -2441: intersect_assign(const From1& x, const From2& y); -2441: -2441: -2441: -2441: -2441: -2441: template -2441: typename Enable_If::value -2441: || Is_Interval::value, I_Result>::type -2441: difference_assign(const From& x); -2441: -2441: -2441: -2441: -2441: -2441: template -2441: typename Enable_If<((Is_Singleton::value -2441: || Is_Interval::value) -2441: && (Is_Singleton::value -2441: || Is_Interval::value)), I_Result>::type -2441: difference_assign(const From1& x, const From2& y); -2441: -2441: -2441: -2441: -2441: -2441: template -2441: typename Enable_If::value -2441: || Is_Interval::value, I_Result>::type -2441: lower_approximation_difference_assign(const From& x); -2441: # 685 "../../src/Interval_defs.hh" -2441: template -2441: typename Enable_If::value, bool>::type -2441: simplify_using_context_assign(const From& y); -2441: -2441: -2441: -2441: -2441: -2441: template -2441: typename Enable_If::value, void>::type -2441: empty_intersection_assign(const From& y); -2441: # 712 "../../src/Interval_defs.hh" -2441: template -2441: typename Enable_If::value -2441: || Is_Interval::value, I_Result>::type -2441: refine_existential(Relation_Symbol rel, const From& x); -2441: # 732 "../../src/Interval_defs.hh" -2441: template -2441: typename Enable_If::value -2441: || Is_Interval::value, I_Result>::type -2441: refine_universal(Relation_Symbol rel, const From& x); -2441: -2441: template -2441: typename Enable_If::value -2441: || Is_Interval::value, I_Result>::type -2441: neg_assign(const From& x); -2441: -2441: template -2441: typename Enable_If<((Is_Singleton::value || Is_Interval::value) -2441: && (Is_Singleton::value || Is_Interval::value)), I_Result>::type -2441: add_assign(const From1& x, const From2& y); -2441: -2441: template -2441: typename Enable_If<((Is_Singleton::value || Is_Interval::value) -2441: && (Is_Singleton::value || Is_Interval::value)), I_Result>::type -2441: sub_assign(const From1& x, const From2& y); -2441: -2441: template -2441: typename Enable_If<((Is_Singleton::value || Is_Interval::value) -2441: && (Is_Singleton::value || Is_Interval::value)), I_Result>::type -2441: mul_assign(const From1& x, const From2& y); -2441: -2441: template -2441: typename Enable_If<((Is_Singleton::value || Is_Interval::value) -2441: && (Is_Singleton::value || Is_Interval::value)), I_Result>::type -2441: div_assign(const From1& x, const From2& y); -2441: -2441: template -2441: typename Enable_If::value, void>::type -2441: CC76_widening_assign(const From& y, Iterator first, Iterator last); -2441: -2441: private: -2441: Boundary lower_; -2441: Boundary upper_; -2441: }; -2441: -2441: -2441: -2441: template -2441: void swap(Interval& x, Interval& y); -2441: -2441: } -2441: -2441: # 1 "../../src/Interval_inlines.hh" 1 -2441: # 27 "../../src/Interval_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: inline memory_size_type -2441: Interval::external_memory_in_bytes() const { -2441: return Parma_Polyhedra_Library::external_memory_in_bytes(lower()) -2441: + Parma_Polyhedra_Library::external_memory_in_bytes(upper()); -2441: } -2441: -2441: template -2441: inline memory_size_type -2441: Interval::total_memory_in_bytes() const { -2441: return sizeof(*this) + external_memory_in_bytes(); -2441: } -2441: -2441: template -2441: inline void -2441: Interval::m_swap(Interval& y) { -2441: using std::swap; -2441: swap(lower(), y.lower()); -2441: swap(upper(), y.upper()); -2441: swap(info(), y.info()); -2441: } -2441: -2441: template -2441: inline bool -2441: f_is_empty(const Interval& x) { -2441: return x.is_empty(); -2441: } -2441: template -2441: inline bool -2441: f_is_singleton(const Interval& x) { -2441: return x.is_singleton(); -2441: } -2441: template -2441: inline int -2441: infinity_sign(const Interval& x) { -2441: return x.infinity_sign(); -2441: } -2441: -2441: namespace Interval_NS { -2441: -2441: template -2441: inline const Boundary& -2441: f_lower(const Interval& x) { -2441: return x.lower(); -2441: } -2441: template -2441: inline const Boundary& -2441: f_upper(const Interval& x) { -2441: return x.upper(); -2441: } -2441: template -2441: inline const Info& -2441: f_info(const Interval& x) { -2441: return x.info(); -2441: } -2441: -2441: struct Scalar_As_Interval_Policy { -2441: enum const_bool_value_may_be_empty { may_be_empty = (true) }; -2441: enum const_bool_value_may_contain_infinity { may_contain_infinity = (true) }; -2441: enum const_bool_value_check_inexact { check_inexact = (false) }; -2441: }; -2441: -2441: typedef Interval_Info_Null -2441: Scalar_As_Interval_Info; -2441: -2441: const Scalar_As_Interval_Info SCALAR_INFO; -2441: -2441: typedef Interval_Info_Null_Open -2441: Scalar_As_Interval_Info_Open; -2441: -2441: template -2441: inline typename Enable_If::value, const T&>::type -2441: f_lower(const T& x) { -2441: return x; -2441: } -2441: template -2441: inline typename Enable_If::value, const T&>::type -2441: f_upper(const T& x) { -2441: return x; -2441: } -2441: template -2441: inline typename Enable_If::value, -2441: const Scalar_As_Interval_Info&>::type -2441: f_info(const T&) { -2441: return SCALAR_INFO; -2441: } -2441: template -2441: inline typename Enable_If::value, -2441: Scalar_As_Interval_Info_Open>::type -2441: f_info(const T&, bool open) { -2441: return Scalar_As_Interval_Info_Open(open); -2441: } -2441: -2441: template -2441: inline typename Enable_If::value, bool>::type -2441: f_is_empty(const T& x) { -2441: return is_not_a_number(x); -2441: } -2441: -2441: template -2441: inline typename Enable_If::value, bool>::type -2441: f_is_singleton(const T& x) { -2441: return !f_is_empty(x); -2441: } -2441: -2441: } -2441: -2441: template -2441: inline typename Enable_If::value -2441: || Is_Interval::value, bool>::type -2441: is_singleton_integer(const T& x) { -2441: return is_singleton(x) && is_integer(f_lower(x)); -2441: } -2441: -2441: template -2441: inline typename Enable_If::value -2441: || Is_Interval::value, bool>::type -2441: check_empty_arg(const T& x) { -2441: if (f_info(x).may_be_empty) { -2441: return f_is_empty(x); -2441: } -2441: else { -2441: ((void) 0); -2441: return false; -2441: } -2441: } -2441: -2441: template -2441: inline typename Enable_If<((Is_Singleton::value -2441: || Is_Interval::value) -2441: && (Is_Singleton::value -2441: || Is_Interval::value) -2441: && (Is_Interval::value -2441: || Is_Interval::value)), -2441: bool>::type -2441: operator==(const T1& x, const T2& y) { -2441: ((void) 0); -2441: ((void) 0); -2441: if (check_empty_arg(x)) { -2441: return check_empty_arg(y); -2441: } -2441: else if (check_empty_arg(y)) { -2441: return false; -2441: } -2441: return eq(LOWER, f_lower(x), f_info(x), LOWER, f_lower(y), f_info(y)) -2441: && eq(UPPER, f_upper(x), f_info(x), UPPER, f_upper(y), f_info(y)); -2441: } -2441: -2441: template -2441: inline typename Enable_If<((Is_Singleton::value -2441: || Is_Interval::value) -2441: && (Is_Singleton::value -2441: || Is_Interval::value) -2441: && (Is_Interval::value -2441: || Is_Interval::value)), -2441: bool>::type -2441: operator!=(const T1& x, const T2& y) { -2441: return !(x == y); -2441: } -2441: -2441: template -2441: template -2441: inline typename Enable_If::value -2441: || Is_Interval::value, bool>::type -2441: Interval::contains(const T& y) const { -2441: ((void) 0); -2441: ((void) 0); -2441: if (check_empty_arg(y)) { -2441: return true; -2441: } -2441: if (check_empty_arg(*this)) { -2441: return false; -2441: } -2441: return le(LOWER, lower(), info(), LOWER, f_lower(y), f_info(y)) -2441: && ge(UPPER, upper(), info(), UPPER, f_upper(y), f_info(y)); -2441: } -2441: -2441: template -2441: template -2441: inline typename Enable_If::value -2441: || Is_Interval::value, bool>::type -2441: Interval::strictly_contains(const T& y) const { -2441: ((void) 0); -2441: ((void) 0); -2441: if (check_empty_arg(y)) { -2441: return !check_empty_arg(*this); -2441: } -2441: if (check_empty_arg(*this)) { -2441: return false; -2441: } -2441: return (lt(LOWER, lower(), info(), LOWER, f_lower(y), f_info(y)) -2441: && ge(UPPER, upper(), info(), UPPER, f_upper(y), f_info(y))) -2441: || (le(LOWER, lower(), info(), LOWER, f_lower(y), f_info(y)) -2441: && gt(UPPER, upper(), info(), UPPER, f_upper(y), f_info(y))); -2441: } -2441: -2441: template -2441: template -2441: inline typename Enable_If::value -2441: || Is_Interval::value, bool>::type -2441: Interval::is_disjoint_from(const T& y) const { -2441: ((void) 0); -2441: ((void) 0); -2441: if (check_empty_arg(*this) || check_empty_arg(y)) { -2441: return true; -2441: } -2441: return gt(LOWER, lower(), info(), UPPER, f_upper(y), f_info(y)) -2441: || lt(UPPER, upper(), info(), LOWER, f_lower(y), f_info(y)); -2441: } -2441: -2441: template -2441: template -2441: inline typename Enable_If::value -2441: || Is_Interval::value, I_Result>::type -2441: Interval::assign(const From& x) { -2441: ((void) 0); -2441: if (check_empty_arg(x)) { -2441: return assign(EMPTY); -2441: } -2441: Parma_Polyhedra_Library::Dirty_Temp holder_to_info; To_Info& to_info = holder_to_info.item(); -2441: to_info.clear(); -2441: const Result rl = Boundary_NS::assign(LOWER, lower(), to_info, -2441: LOWER, f_lower(x), f_info(x)); -2441: const Result ru = Boundary_NS::assign(UPPER, upper(), to_info, -2441: UPPER, f_upper(x), f_info(x)); -2441: assign_or_swap(info(), to_info); -2441: ((void) 0); -2441: return combine(rl, ru); -2441: } -2441: -2441: template -2441: template -2441: inline typename Enable_If::value -2441: || Is_Interval::value, I_Result>::type -2441: Interval::join_assign(const From& x) { -2441: ((void) 0); -2441: if (check_empty_arg(*this)) { -2441: return assign(x); -2441: } -2441: if (check_empty_arg(x)) { -2441: return combine(V_EQ, V_EQ); -2441: } -2441: Result rl; -2441: Result ru; -2441: rl = min_assign(LOWER, lower(), info(), LOWER, f_lower(x), f_info(x)); -2441: ru = max_assign(UPPER, upper(), info(), UPPER, f_upper(x), f_info(x)); -2441: ((void) 0); -2441: return combine(rl, ru); -2441: } -2441: -2441: template -2441: template -2441: inline typename Enable_If<((Is_Singleton::value -2441: || Is_Interval::value) -2441: && (Is_Singleton::value -2441: || Is_Interval::value)), I_Result>::type -2441: Interval::join_assign(const From1& x, const From2& y) { -2441: ((void) 0); -2441: ((void) 0); -2441: if (check_empty_arg(x)) { -2441: return assign(y); -2441: } -2441: if (check_empty_arg(y)) { -2441: return assign(x); -2441: } -2441: Parma_Polyhedra_Library::Dirty_Temp holder_to_info; To_Info& to_info = holder_to_info.item(); -2441: to_info.clear(); -2441: Result rl; -2441: Result ru; -2441: rl = min_assign(LOWER, lower(), to_info, -2441: LOWER, f_lower(x), f_info(x), -2441: LOWER, f_lower(y), f_info(y)); -2441: ru = max_assign(UPPER, upper(), to_info, -2441: UPPER, f_upper(x), f_info(x), -2441: UPPER, f_upper(y), f_info(y)); -2441: assign_or_swap(info(), to_info); -2441: ((void) 0); -2441: return combine(rl, ru); -2441: } -2441: -2441: template -2441: template -2441: inline typename Enable_If::value -2441: || Is_Interval::value, bool>::type -2441: Interval::can_be_exactly_joined_to(const Type& x) const { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_b; Boundary& b = holder_b.item(); -2441: if (gt(LOWER, lower(), info(), UPPER, f_upper(x), f_info(x))) { -2441: b = lower(); -2441: return eq(LOWER, b, info(), UPPER, f_upper(x), f_info(x)); -2441: } -2441: else if (lt(UPPER, upper(), info(), LOWER, f_lower(x), f_info(x))) { -2441: b = upper(); -2441: return eq(UPPER, b, info(), LOWER, f_lower(x), f_info(x)); -2441: } -2441: return true; -2441: } -2441: -2441: -2441: template -2441: template -2441: inline typename Enable_If::value -2441: || Is_Interval::value, I_Result>::type -2441: Interval::intersect_assign(const From& x) { -2441: ((void) 0); -2441: max_assign(LOWER, lower(), info(), LOWER, f_lower(x), f_info(x)); -2441: min_assign(UPPER, upper(), info(), UPPER, f_upper(x), f_info(x)); -2441: ((void) 0); -2441: return I_ANY; -2441: } -2441: -2441: template -2441: template -2441: inline typename Enable_If<((Is_Singleton::value -2441: || Is_Interval::value) -2441: && (Is_Singleton::value -2441: || Is_Interval::value)), I_Result>::type -2441: Interval::intersect_assign(const From1& x, -2441: const From2& y) { -2441: ((void) 0); -2441: ((void) 0); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_to_info; To_Info& to_info = holder_to_info.item(); -2441: to_info.clear(); -2441: max_assign(LOWER, lower(), to_info, -2441: LOWER, f_lower(x), f_info(x), -2441: LOWER, f_lower(y), f_info(y)); -2441: min_assign(UPPER, upper(), to_info, -2441: UPPER, f_upper(x), f_info(x), -2441: UPPER, f_upper(y), f_info(y)); -2441: assign_or_swap(info(), to_info); -2441: ((void) 0); -2441: return I_NOT_EMPTY; -2441: } -2441: -2441: template -2441: template -2441: inline typename Enable_If::value -2441: || Is_Interval::value, I_Result>::type -2441: Interval::difference_assign(const From& x) { -2441: ((void) 0); -2441: if (lt(UPPER, upper(), info(), LOWER, f_lower(x), f_info(x)) -2441: || gt(LOWER, lower(), info(), UPPER, f_upper(x), f_info(x))) { -2441: return combine(V_EQ, V_EQ); -2441: } -2441: bool nl = ge(LOWER, lower(), info(), LOWER, f_lower(x), f_info(x)); -2441: bool nu = le(UPPER, upper(), info(), UPPER, f_upper(x), f_info(x)); -2441: Result rl = V_EQ; -2441: Result ru = V_EQ; -2441: if (nl) { -2441: if (nu) { -2441: return assign(EMPTY); -2441: } -2441: else { -2441: info().clear_boundary_properties(LOWER); -2441: rl = complement(LOWER, lower(), info(), UPPER, f_upper(x), f_info(x)); -2441: } -2441: } -2441: else if (nu) { -2441: info().clear_boundary_properties(UPPER); -2441: ru = complement(UPPER, upper(), info(), LOWER, f_lower(x), f_info(x)); -2441: } -2441: ((void) 0); -2441: return combine(rl, ru); -2441: } -2441: -2441: template -2441: template -2441: inline typename Enable_If<((Is_Singleton::value -2441: || Is_Interval::value) -2441: && (Is_Singleton::value -2441: || Is_Interval::value)), I_Result>::type -2441: Interval::difference_assign(const From1& x, -2441: const From2& y) { -2441: ((void) 0); -2441: ((void) 0); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_to_info; To_Info& to_info = holder_to_info.item(); -2441: to_info.clear(); -2441: if (lt(UPPER, f_upper(x), f_info(x), LOWER, f_lower(y), f_info(y)) -2441: || gt(LOWER, f_lower(x), f_info(x), UPPER, f_upper(y), f_info(y))) { -2441: return assign(x); -2441: } -2441: bool nl = ge(LOWER, f_lower(x), f_info(x), LOWER, f_lower(y), f_info(y)); -2441: bool nu = le(UPPER, f_upper(x), f_info(x), UPPER, f_upper(y), f_info(y)); -2441: Result rl = V_EQ; -2441: Result ru = V_EQ; -2441: if (nl) { -2441: if (nu) { -2441: return assign(EMPTY); -2441: } -2441: else { -2441: rl = complement(LOWER, lower(), info(), UPPER, f_upper(y), f_info(y)); -2441: ru = Boundary_NS::assign(UPPER, upper(), info(), UPPER, f_upper(x), f_info(x)); -2441: } -2441: } -2441: else if (nu) { -2441: ru = complement(UPPER, upper(), info(), LOWER, f_lower(y), f_info(y)); -2441: rl = Boundary_NS::assign(LOWER, lower(), info(), -2441: LOWER, f_lower(x), f_info(x)); -2441: } -2441: assign_or_swap(info(), to_info); -2441: ((void) 0); -2441: return combine(rl, ru); -2441: } -2441: -2441: template -2441: template -2441: inline typename Enable_If::value -2441: || Is_Interval::value, I_Result>::type -2441: Interval -2441: ::refine_existential(Relation_Symbol rel, const From& x) { -2441: ((void) 0); -2441: ((void) 0); -2441: if (check_empty_arg(x)) { -2441: return assign(EMPTY); -2441: } -2441: switch (rel) { -2441: case LESS_THAN: -2441: { -2441: if (lt(UPPER, upper(), info(), UPPER, f_upper(x), f_info(x))) { -2441: return combine(V_EQ, V_EQ); -2441: } -2441: info().clear_boundary_properties(UPPER); -2441: Boundary_NS::assign(UPPER, upper(), info(), -2441: UPPER, f_upper(x), f_info(x), true); -2441: return I_ANY; -2441: } -2441: case LESS_OR_EQUAL: -2441: { -2441: if (le(UPPER, upper(), info(), UPPER, f_upper(x), f_info(x))) { -2441: return combine(V_EQ, V_EQ); -2441: } -2441: info().clear_boundary_properties(UPPER); -2441: Boundary_NS::assign(UPPER, upper(), info(), -2441: UPPER, f_upper(x), f_info(x)); -2441: return I_ANY; -2441: } -2441: case GREATER_THAN: -2441: { -2441: if (gt(LOWER, lower(), info(), LOWER, f_lower(x), f_info(x))) { -2441: return combine(V_EQ, V_EQ); -2441: } -2441: info().clear_boundary_properties(LOWER); -2441: Boundary_NS::assign(LOWER, lower(), info(), -2441: LOWER, f_lower(x), f_info(x), true); -2441: return I_ANY; -2441: } -2441: case GREATER_OR_EQUAL: -2441: { -2441: if (ge(LOWER, lower(), info(), LOWER, f_lower(x), f_info(x))) { -2441: return combine(V_EQ, V_EQ); -2441: } -2441: info().clear_boundary_properties(LOWER); -2441: Boundary_NS::assign(LOWER, lower(), info(), -2441: LOWER, f_lower(x), f_info(x)); -2441: return I_ANY; -2441: } -2441: case EQUAL: -2441: return intersect_assign(x); -2441: case NOT_EQUAL: -2441: { -2441: if (!f_is_singleton(x)) { -2441: return combine(V_EQ, V_EQ); -2441: } -2441: if (check_empty_arg(*this)) { -2441: return I_EMPTY; -2441: } -2441: if (eq(LOWER, lower(), info(), LOWER, f_lower(x), f_info(x))) { -2441: remove_inf(); -2441: } -2441: if (eq(UPPER, upper(), info(), UPPER, f_upper(x), f_info(x))) { -2441: remove_sup(); -2441: } -2441: return I_ANY; -2441: } -2441: default: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return I_EMPTY; -2441: } -2441: } -2441: -2441: template -2441: template -2441: inline typename Enable_If::value -2441: || Is_Interval::value, I_Result>::type -2441: Interval::refine_universal(Relation_Symbol rel, -2441: const From& x) { -2441: ((void) 0); -2441: ((void) 0); -2441: if (check_empty_arg(x)) { -2441: return combine(V_EQ, V_EQ); -2441: } -2441: switch (rel) { -2441: case LESS_THAN: -2441: { -2441: if (lt(UPPER, upper(), info(), LOWER, f_lower(x), f_info(x))) { -2441: return combine(V_EQ, V_EQ); -2441: } -2441: info().clear_boundary_properties(UPPER); -2441: Result ru = Boundary_NS::assign(UPPER, upper(), info(), -2441: LOWER, f_lower(x), SCALAR_INFO, -2441: !is_open(LOWER, f_lower(x), f_info(x))); -2441: (void)(ru); -2441: return I_ANY; -2441: } -2441: case LESS_OR_EQUAL: -2441: { -2441: if (le(UPPER, upper(), info(), LOWER, f_lower(x), f_info(x))) { -2441: return combine(V_EQ, V_EQ); -2441: } -2441: info().clear_boundary_properties(UPPER); -2441: Result ru = Boundary_NS::assign(UPPER, upper(), info(), -2441: LOWER, f_lower(x), SCALAR_INFO); -2441: (void)(ru); -2441: return I_ANY; -2441: } -2441: case GREATER_THAN: -2441: { -2441: if (gt(LOWER, lower(), info(), UPPER, f_upper(x), f_info(x))) { -2441: return combine(V_EQ, V_EQ); -2441: } -2441: info().clear_boundary_properties(LOWER); -2441: Result rl = Boundary_NS::assign(LOWER, lower(), info(), -2441: UPPER, f_upper(x), SCALAR_INFO, -2441: !is_open(UPPER, f_upper(x), f_info(x))); -2441: (void)(rl); -2441: return I_ANY; -2441: } -2441: case GREATER_OR_EQUAL: -2441: { -2441: if (ge(LOWER, lower(), info(), UPPER, f_upper(x), f_info(x))) { -2441: return combine(V_EQ, V_EQ); -2441: } -2441: info().clear_boundary_properties(LOWER); -2441: Result rl = Boundary_NS::assign(LOWER, lower(), info(), -2441: UPPER, f_upper(x), SCALAR_INFO); -2441: (void)(rl); -2441: return I_ANY; -2441: } -2441: case EQUAL: -2441: if (!f_is_singleton(x)) { -2441: return assign(EMPTY); -2441: } -2441: return intersect_assign(x); -2441: case NOT_EQUAL: -2441: { -2441: if (check_empty_arg(*this)) { -2441: return I_EMPTY; -2441: } -2441: if (eq(LOWER, lower(), info(), LOWER, f_lower(x), f_info(x))) { -2441: remove_inf(); -2441: } -2441: if (eq(UPPER, upper(), info(), UPPER, f_upper(x), f_info(x))) { -2441: remove_sup(); -2441: } -2441: return I_ANY; -2441: } -2441: default: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return I_EMPTY; -2441: } -2441: } -2441: -2441: template -2441: template -2441: inline typename Enable_If::value -2441: || Is_Interval::value, I_Result>::type -2441: Interval::neg_assign(const From& x) { -2441: ((void) 0); -2441: if (check_empty_arg(x)) { -2441: return assign(EMPTY); -2441: } -2441: Parma_Polyhedra_Library::Dirty_Temp holder_to_info; To_Info& to_info = holder_to_info.item(); -2441: to_info.clear(); -2441: Result rl; -2441: Result ru; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_to_lower; To_Boundary& to_lower = holder_to_lower.item(); -2441: rl = Boundary_NS::neg_assign(LOWER, to_lower, to_info, UPPER, f_upper(x), f_info(x)); -2441: ru = Boundary_NS::neg_assign(UPPER, upper(), to_info, LOWER, f_lower(x), f_info(x)); -2441: assign_or_swap(lower(), to_lower); -2441: assign_or_swap(info(), to_info); -2441: ((void) 0); -2441: return combine(rl, ru); -2441: } -2441: -2441: template -2441: template -2441: inline typename Enable_If<((Is_Singleton::value -2441: || Is_Interval::value) -2441: && (Is_Singleton::value -2441: || Is_Interval::value)), I_Result>::type -2441: Interval::add_assign(const From1& x, const From2& y) { -2441: ((void) 0); -2441: ((void) 0); -2441: if (check_empty_arg(x) || check_empty_arg(y)) { -2441: return assign(EMPTY); -2441: } -2441: int inf_sign = Parma_Polyhedra_Library::infinity_sign(x); -2441: if (inf_sign != 0) { -2441: if (Parma_Polyhedra_Library::infinity_sign(y) == -inf_sign) { -2441: return assign(EMPTY); -2441: } -2441: } -2441: else { -2441: inf_sign = Parma_Polyhedra_Library::infinity_sign(y); -2441: } -2441: if (inf_sign < 0) { -2441: return assign(MINUS_INFINITY); -2441: } -2441: else if (inf_sign > 0) { -2441: return assign(PLUS_INFINITY); -2441: } -2441: Parma_Polyhedra_Library::Dirty_Temp holder_to_info; To_Info& to_info = holder_to_info.item(); -2441: to_info.clear(); -2441: Result rl = Boundary_NS::add_assign(LOWER, lower(), to_info, -2441: LOWER, f_lower(x), f_info(x), -2441: LOWER, f_lower(y), f_info(y)); -2441: Result ru = Boundary_NS::add_assign(UPPER, upper(), to_info, -2441: UPPER, f_upper(x), f_info(x), -2441: UPPER, f_upper(y), f_info(y)); -2441: assign_or_swap(info(), to_info); -2441: ((void) 0); -2441: return combine(rl, ru); -2441: } -2441: -2441: template -2441: template -2441: inline typename Enable_If<((Is_Singleton::value -2441: || Is_Interval::value) -2441: && (Is_Singleton::value -2441: || Is_Interval::value)), I_Result>::type -2441: Interval::sub_assign(const From1& x, const From2& y) { -2441: ((void) 0); -2441: ((void) 0); -2441: if (check_empty_arg(x) || check_empty_arg(y)) { -2441: return assign(EMPTY); -2441: } -2441: int inf_sign = Parma_Polyhedra_Library::infinity_sign(x); -2441: if (inf_sign != 0) { -2441: if (Parma_Polyhedra_Library::infinity_sign(y) == inf_sign) { -2441: return assign(EMPTY); -2441: } -2441: } -2441: else { -2441: inf_sign = -Parma_Polyhedra_Library::infinity_sign(y); -2441: } -2441: if (inf_sign < 0) { -2441: return assign(MINUS_INFINITY); -2441: } -2441: else if (inf_sign > 0) { -2441: return assign(PLUS_INFINITY); -2441: } -2441: Parma_Polyhedra_Library::Dirty_Temp holder_to_info; To_Info& to_info = holder_to_info.item(); -2441: to_info.clear(); -2441: Result rl; -2441: Result ru; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_to_lower; To_Boundary& to_lower = holder_to_lower.item(); -2441: rl = Boundary_NS::sub_assign(LOWER, to_lower, to_info, -2441: LOWER, f_lower(x), f_info(x), -2441: UPPER, f_upper(y), f_info(y)); -2441: ru = Boundary_NS::sub_assign(UPPER, upper(), to_info, -2441: UPPER, f_upper(x), f_info(x), -2441: LOWER, f_lower(y), f_info(y)); -2441: assign_or_swap(lower(), to_lower); -2441: assign_or_swap(info(), to_info); -2441: ((void) 0); -2441: return combine(rl, ru); -2441: } -2441: # 708 "../../src/Interval_inlines.hh" -2441: template -2441: template -2441: inline typename Enable_If<((Is_Singleton::value -2441: || Is_Interval::value) -2441: && (Is_Singleton::value -2441: || Is_Interval::value)), I_Result>::type -2441: Interval::mul_assign(const From1& x, const From2& y) { -2441: ((void) 0); -2441: ((void) 0); -2441: if (check_empty_arg(x) || check_empty_arg(y)) { -2441: return assign(EMPTY); -2441: } -2441: int xls = sgn_b(LOWER, f_lower(x), f_info(x)); -2441: int xus = (xls > 0) ? 1 : sgn_b(UPPER, f_upper(x), f_info(x)); -2441: int yls = sgn_b(LOWER, f_lower(y), f_info(y)); -2441: int yus = (yls > 0) ? 1 : sgn_b(UPPER, f_upper(y), f_info(y)); -2441: int inf_sign = Parma_Polyhedra_Library::infinity_sign(x); -2441: int ls; -2441: int us; -2441: if (inf_sign != 0) { -2441: ls = yls; -2441: us = yus; -2441: goto inf; -2441: } -2441: else { -2441: inf_sign = Parma_Polyhedra_Library::infinity_sign(y); -2441: if (inf_sign != 0) { -2441: ls = xls; -2441: us = xus; -2441: inf: -2441: if (ls == 0 && us == 0) { -2441: return assign(EMPTY); -2441: } -2441: if (ls == -us) { -2441: return set_infinities(); -2441: } -2441: if (ls < 0 || us < 0) { -2441: inf_sign = -inf_sign; -2441: } -2441: if (inf_sign < 0) { -2441: return assign(MINUS_INFINITY); -2441: } -2441: else { -2441: return assign(PLUS_INFINITY); -2441: } -2441: } -2441: } -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_to_info; To_Info& to_info = holder_to_info.item(); -2441: to_info.clear(); -2441: Result rl; -2441: Result ru; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_to_lower; To_Boundary& to_lower = holder_to_lower.item(); -2441: -2441: if (xls >= 0) { -2441: if (yls >= 0) { -2441: -2441: rl = mul_assign_z(LOWER, to_lower, to_info, -2441: LOWER, f_lower(x), f_info(x), xls, -2441: LOWER, f_lower(y), f_info(y), yls); -2441: ru = mul_assign_z(UPPER, upper(), to_info, -2441: UPPER, f_upper(x), f_info(x), xus, -2441: UPPER, f_upper(y), f_info(y), yus); -2441: } -2441: else if (yus <= 0) { -2441: -2441: rl = mul_assign_z(LOWER, to_lower, to_info, -2441: UPPER, f_upper(x), f_info(x), xus, -2441: LOWER, f_lower(y), f_info(y), yls); -2441: ru = mul_assign_z(UPPER, upper(), to_info, -2441: LOWER, f_lower(x), f_info(x), xls, -2441: UPPER, f_upper(y), f_info(y), yus); -2441: } -2441: else { -2441: -2441: rl = mul_assign_z(LOWER, to_lower, to_info, -2441: UPPER, f_upper(x), f_info(x), xus, -2441: LOWER, f_lower(y), f_info(y), yls); -2441: ru = mul_assign_z(UPPER, upper(), to_info, -2441: UPPER, f_upper(x), f_info(x), xus, -2441: UPPER, f_upper(y), f_info(y), yus); -2441: } -2441: } -2441: else if (xus <= 0) { -2441: if (yls >= 0) { -2441: -2441: rl = mul_assign_z(LOWER, to_lower, to_info, -2441: LOWER, f_lower(x), f_info(x), xls, -2441: UPPER, f_upper(y), f_info(y), yus); -2441: ru = mul_assign_z(UPPER, upper(), to_info, -2441: UPPER, f_upper(x), f_info(x), xus, -2441: LOWER, f_lower(y), f_info(y), yls); -2441: } -2441: else if (yus <= 0) { -2441: -2441: rl = mul_assign_z(LOWER, to_lower, to_info, -2441: UPPER, f_upper(x), f_info(x), xus, -2441: UPPER, f_upper(y), f_info(y), yus); -2441: ru = mul_assign_z(UPPER, upper(), to_info, -2441: LOWER, f_lower(x), f_info(x), xls, -2441: LOWER, f_lower(y), f_info(y), yls); -2441: } -2441: else { -2441: -2441: rl = mul_assign_z(LOWER, to_lower, to_info, -2441: LOWER, f_lower(x), f_info(x), xls, -2441: UPPER, f_upper(y), f_info(y), yus); -2441: ru = mul_assign_z(UPPER, upper(), to_info, -2441: LOWER, f_lower(x), f_info(x), xls, -2441: LOWER, f_lower(y), f_info(y), yls); -2441: } -2441: } -2441: else if (yls >= 0) { -2441: -2441: rl = mul_assign_z(LOWER, to_lower, to_info, -2441: LOWER, f_lower(x), f_info(x), xls, -2441: UPPER, f_upper(y), f_info(y), yus); -2441: ru = mul_assign_z(UPPER, upper(), to_info, -2441: UPPER, f_upper(x), f_info(x), xus, -2441: UPPER, f_upper(y), f_info(y), yus); -2441: } -2441: else if (yus <= 0) { -2441: -2441: rl = mul_assign_z(LOWER, to_lower, to_info, -2441: UPPER, f_upper(x), f_info(x), xus, -2441: LOWER, f_lower(y), f_info(y), yls); -2441: ru = mul_assign_z(UPPER, upper(), to_info, -2441: LOWER, f_lower(x), f_info(x), xls, -2441: LOWER, f_lower(y), f_info(y), yls); -2441: } -2441: else { -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp; To_Boundary& tmp = holder_tmp.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp_info; To_Info& tmp_info = holder_tmp_info.item(); -2441: tmp_info.clear(); -2441: Result tmp_r; -2441: tmp_r = Boundary_NS::mul_assign(LOWER, tmp, tmp_info, -2441: UPPER, f_upper(x), f_info(x), -2441: LOWER, f_lower(y), f_info(y)); -2441: rl = Boundary_NS::mul_assign(LOWER, to_lower, to_info, -2441: LOWER, f_lower(x), f_info(x), -2441: UPPER, f_upper(y), f_info(y)); -2441: if (gt(LOWER, to_lower, to_info, LOWER, tmp, tmp_info)) { -2441: to_lower = tmp; -2441: rl = tmp_r; -2441: } -2441: tmp_info.clear(); -2441: tmp_r = Boundary_NS::mul_assign(UPPER, tmp, tmp_info, -2441: UPPER, f_upper(x), f_info(x), -2441: UPPER, f_upper(y), f_info(y)); -2441: ru = Boundary_NS::mul_assign(UPPER, upper(), to_info, -2441: LOWER, f_lower(x), f_info(x), -2441: LOWER, f_lower(y), f_info(y)); -2441: if (lt(UPPER, upper(), to_info, UPPER, tmp, tmp_info)) { -2441: upper() = tmp; -2441: ru = tmp_r; -2441: } -2441: } -2441: assign_or_swap(lower(), to_lower); -2441: assign_or_swap(info(), to_info); -2441: ((void) 0); -2441: return combine(rl, ru); -2441: } -2441: # 883 "../../src/Interval_inlines.hh" -2441: template -2441: template -2441: inline typename Enable_If<((Is_Singleton::value -2441: || Is_Interval::value) -2441: && (Is_Singleton::value -2441: || Is_Interval::value)), I_Result>::type -2441: Interval::div_assign(const From1& x, const From2& y) { -2441: ((void) 0); -2441: ((void) 0); -2441: if (check_empty_arg(x) || check_empty_arg(y)) { -2441: return assign(EMPTY); -2441: } -2441: int yls = sgn_b(LOWER, f_lower(y), f_info(y)); -2441: int yus = (yls > 0) ? 1 : sgn_b(UPPER, f_upper(y), f_info(y)); -2441: if (yls == 0 && yus == 0) { -2441: return assign(EMPTY); -2441: } -2441: int inf_sign = Parma_Polyhedra_Library::infinity_sign(x); -2441: if (inf_sign != 0) { -2441: if (Parma_Polyhedra_Library::infinity_sign(y) != 0) { -2441: return assign(EMPTY); -2441: } -2441: if (yls == -yus) { -2441: return set_infinities(); -2441: } -2441: if (yls < 0 || yus < 0) { -2441: inf_sign = -inf_sign; -2441: } -2441: if (inf_sign < 0) { -2441: return assign(MINUS_INFINITY); -2441: } -2441: else { -2441: return assign(PLUS_INFINITY); -2441: } -2441: } -2441: int xls = sgn_b(LOWER, f_lower(x), f_info(x)); -2441: int xus = (xls > 0) ? 1 : sgn_b(UPPER, f_upper(x), f_info(x)); -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_to_info; To_Info& to_info = holder_to_info.item(); -2441: to_info.clear(); -2441: Result rl; -2441: Result ru; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_to_lower; To_Boundary& to_lower = holder_to_lower.item(); -2441: if (yls >= 0) { -2441: if (xls >= 0) { -2441: rl = div_assign_z(LOWER, to_lower, to_info, -2441: LOWER, f_lower(x), f_info(x), xls, -2441: UPPER, f_upper(y), f_info(y), yus); -2441: ru = div_assign_z(UPPER, upper(), to_info, -2441: UPPER, f_upper(x), f_info(x), xus, -2441: LOWER, f_lower(y), f_info(y), yls); -2441: } -2441: else if (xus <= 0) { -2441: rl = div_assign_z(LOWER, to_lower, to_info, -2441: LOWER, f_lower(x), f_info(x), xls, -2441: LOWER, f_lower(y), f_info(y), yls); -2441: ru = div_assign_z(UPPER, upper(), to_info, -2441: UPPER, f_upper(x), f_info(x), xus, -2441: UPPER, f_upper(y), f_info(y), yus); -2441: } -2441: else { -2441: rl = div_assign_z(LOWER, to_lower, to_info, -2441: LOWER, f_lower(x), f_info(x), xls, -2441: LOWER, f_lower(y), f_info(y), yls); -2441: ru = div_assign_z(UPPER, upper(), to_info, -2441: UPPER, f_upper(x), f_info(x), xus, -2441: LOWER, f_lower(y), f_info(y), yls); -2441: } -2441: } -2441: else if (yus <= 0) { -2441: if (xls >= 0) { -2441: rl = div_assign_z(LOWER, to_lower, to_info, -2441: UPPER, f_upper(x), f_info(x), xus, -2441: UPPER, f_upper(y), f_info(y), yus); -2441: ru = div_assign_z(UPPER, upper(), to_info, -2441: LOWER, f_lower(x), f_info(x), xls, -2441: LOWER, f_lower(y), f_info(y), yls); -2441: } -2441: else if (xus <= 0) { -2441: rl = div_assign_z(LOWER, to_lower, to_info, -2441: UPPER, f_upper(x), f_info(x), xus, -2441: LOWER, f_lower(y), f_info(y), yls); -2441: ru = div_assign_z(UPPER, upper(), to_info, -2441: LOWER, f_lower(x), f_info(x), xls, -2441: UPPER, f_upper(y), f_info(y), yus); -2441: } -2441: else { -2441: rl = div_assign_z(LOWER, to_lower, to_info, -2441: UPPER, f_upper(x), f_info(x), xus, -2441: UPPER, f_upper(y), f_info(y), yus); -2441: ru = div_assign_z(UPPER, upper(), to_info, -2441: LOWER, f_lower(x), f_info(x), xls, -2441: UPPER, f_upper(y), f_info(y), yus); -2441: } -2441: } -2441: else { -2441: return static_cast(assign(UNIVERSE) | I_SINGULARITIES); -2441: } -2441: assign_or_swap(lower(), to_lower); -2441: assign_or_swap(info(), to_info); -2441: ((void) 0); -2441: return combine(rl, ru); -2441: } -2441: -2441: template -2441: inline typename Enable_If::value, Interval >::type -2441: operator+(const Interval& x, const T& y) { -2441: Interval z; -2441: z.add_assign(x, y); -2441: return z; -2441: } -2441: -2441: template -2441: inline typename Enable_If::value, Interval >::type -2441: operator+(const T& x, const Interval& y) { -2441: Interval z; -2441: z.add_assign(x, y); -2441: return z; -2441: } -2441: -2441: template -2441: inline Interval -2441: operator+(const Interval& x, const Interval& y) { -2441: Interval z; -2441: z.add_assign(x, y); -2441: return z; -2441: } -2441: -2441: template -2441: inline typename Enable_If::value, Interval >::type -2441: operator-(const Interval& x, const T& y) { -2441: Interval z; -2441: z.sub_assign(x, y); -2441: return z; -2441: } -2441: -2441: template -2441: inline typename Enable_If::value, Interval >::type -2441: operator-(const T& x, const Interval& y) { -2441: Interval z; -2441: z.sub_assign(x, y); -2441: return z; -2441: } -2441: -2441: template -2441: inline Interval -2441: operator-(const Interval& x, const Interval& y) { -2441: Interval z; -2441: z.sub_assign(x, y); -2441: return z; -2441: } -2441: -2441: template -2441: inline typename Enable_If::value, Interval >::type -2441: operator*(const Interval& x, const T& y) { -2441: Interval z; -2441: z.mul_assign(x, y); -2441: return z; -2441: } -2441: -2441: template -2441: inline typename Enable_If::value, Interval >::type -2441: operator*(const T& x, const Interval& y) { -2441: Interval z; -2441: z.mul_assign(x, y); -2441: return z; -2441: } -2441: -2441: template -2441: inline Interval -2441: operator*(const Interval& x, const Interval& y) { -2441: Interval z; -2441: z.mul_assign(x, y); -2441: return z; -2441: } -2441: -2441: template -2441: inline typename Enable_If::value, Interval >::type -2441: operator/(const Interval& x, const T& y) { -2441: Interval z; -2441: z.div_assign(x, y); -2441: return z; -2441: } -2441: -2441: template -2441: inline typename Enable_If::value, Interval >::type -2441: operator/(const T& x, const Interval& y) { -2441: Interval z; -2441: z.div_assign(x, y); -2441: return z; -2441: } -2441: -2441: template -2441: inline Interval -2441: operator/(const Interval& x, const Interval& y) { -2441: Interval z; -2441: z.div_assign(x, y); -2441: return z; -2441: } -2441: -2441: template -2441: inline std::ostream& -2441: operator<<(std::ostream& os, const Interval& x) { -2441: if (check_empty_arg(x)) { -2441: return os << "[]"; -2441: } -2441: if (x.is_singleton()) { -2441: output(os, x.lower(), Numeric_Format(), ROUND_NOT_NEEDED); -2441: return os; -2441: } -2441: os << (x.lower_is_open() ? "(" : "["); -2441: if (x.info().get_boundary_property(LOWER, SPECIAL)) { -2441: os << "-inf"; -2441: } -2441: else { -2441: output(os, x.lower(), Numeric_Format(), ROUND_NOT_NEEDED); -2441: } -2441: os << ", "; -2441: if (x.info().get_boundary_property(UPPER, SPECIAL)) { -2441: os << "+inf"; -2441: } -2441: else { -2441: output(os, x.upper(), Numeric_Format(), ROUND_NOT_NEEDED); -2441: } -2441: os << (x.upper_is_open() ? ")" : "]"); -2441: return os; -2441: } -2441: -2441: template -2441: inline void -2441: Interval::ascii_dump(std::ostream& s) const { -2441: using Parma_Polyhedra_Library::ascii_dump; -2441: s << "info "; -2441: info().ascii_dump(s); -2441: s << " lower "; -2441: ascii_dump(s, lower()); -2441: s << " upper "; -2441: ascii_dump(s, upper()); -2441: s << '\n'; -2441: } -2441: -2441: template -2441: inline bool -2441: Interval::ascii_load(std::istream& s) { -2441: using Parma_Polyhedra_Library::ascii_load; -2441: std::string str; -2441: if (!(s >> str) || str != "info") { -2441: return false; -2441: } -2441: if (!info().ascii_load(s)) { -2441: return false; -2441: } -2441: if (!(s >> str) || str != "lower") { -2441: return false; -2441: } -2441: if (!ascii_load(s, lower())) { -2441: return false; -2441: } -2441: if (!(s >> str) || str != "upper") { -2441: return false; -2441: } -2441: if (!ascii_load(s, upper())) { -2441: return false; -2441: } -2441: ((void) 0); -2441: return true; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: template struct Select_Temp_Boundary_Type; -2441: -2441: template -2441: struct Select_Temp_Boundary_Type { -2441: typedef Interval_Boundary_Type type; -2441: }; -2441: -2441: -2441: template <> -2441: struct Select_Temp_Boundary_Type { -2441: typedef double type; -2441: }; -2441: -2441: -2441: template <> -2441: struct Select_Temp_Boundary_Type { -2441: typedef signed long long type; -2441: }; -2441: -2441: template <> -2441: struct Select_Temp_Boundary_Type { -2441: typedef signed long long type; -2441: }; -2441: -2441: template <> -2441: struct Select_Temp_Boundary_Type { -2441: typedef signed long long type; -2441: }; -2441: -2441: template <> -2441: struct Select_Temp_Boundary_Type { -2441: typedef signed long long type; -2441: }; -2441: -2441: template <> -2441: struct Select_Temp_Boundary_Type { -2441: typedef signed long long type; -2441: }; -2441: -2441: template <> -2441: struct Select_Temp_Boundary_Type { -2441: typedef signed long long type; -2441: }; -2441: -2441: template <> -2441: struct Select_Temp_Boundary_Type { -2441: typedef signed long long type; -2441: }; -2441: -2441: template <> -2441: struct Select_Temp_Boundary_Type { -2441: typedef signed long long type; -2441: }; -2441: -2441: template <> -2441: struct Select_Temp_Boundary_Type { -2441: typedef signed long long type; -2441: }; -2441: -2441: template <> -2441: struct Select_Temp_Boundary_Type { -2441: typedef signed long long type; -2441: }; -2441: -2441: -2441: template -2441: inline void -2441: swap(Interval& x, Interval& y) { -2441: x.m_swap(y); -2441: } -2441: -2441: } -2441: # 779 "../../src/Interval_defs.hh" 2 -2441: # 1 "../../src/Interval_templates.hh" 1 -2441: # 29 "../../src/Interval_templates.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: template -2441: typename Enable_If::value, I_Result>::type -2441: Interval::lower_extend(const C& c) { -2441: ((void) 0); -2441: bool open; -2441: switch (c.rel()) { -2441: case V_LGE: -2441: return lower_extend(); -2441: case V_NAN: -2441: return I_NOT_EMPTY | I_EXACT | I_UNCHANGED; -2441: case V_GT: -2441: open = true; -2441: break; -2441: case V_GE: -2441: case V_EQ: -2441: open = false; -2441: break; -2441: default: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return I_NOT_EMPTY | I_EXACT | I_UNCHANGED; -2441: } -2441: min_assign(LOWER, lower(), info(), LOWER, c.value(), f_info(c.value(), open)); -2441: ((void) 0); -2441: return I_ANY; -2441: } -2441: -2441: template -2441: template -2441: typename Enable_If::value, I_Result>::type -2441: Interval::upper_extend(const C& c) { -2441: ((void) 0); -2441: bool open; -2441: switch (c.rel()) { -2441: case V_LGE: -2441: return lower_extend(); -2441: case V_NAN: -2441: return I_NOT_EMPTY | I_EXACT | I_UNCHANGED; -2441: case V_LT: -2441: open = true; -2441: break; -2441: case V_LE: -2441: case V_EQ: -2441: open = false; -2441: break; -2441: default: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return I_NOT_EMPTY | I_EXACT | I_UNCHANGED; -2441: } -2441: max_assign(UPPER, upper(), info(), UPPER, c.value(), f_info(c.value(), open)); -2441: ((void) 0); -2441: return I_ANY; -2441: } -2441: -2441: template -2441: template -2441: typename Enable_If::value, void>::type -2441: Interval::CC76_widening_assign(const From& y, -2441: Iterator first, -2441: Iterator last) { -2441: -2441: ((void) 0); -2441: Interval& x = *this; -2441: -2441: -2441: if (!x.upper_is_boundary_infinity()) { -2441: Boundary& x_ub = x.upper(); -2441: const Boundary& y_ub = y.upper(); -2441: ((void) 0); -2441: if (y_ub < x_ub) { -2441: Iterator k = std::lower_bound(first, last, x_ub); -2441: if (k != last) { -2441: if (x_ub < *k) { -2441: x_ub = *k; -2441: } -2441: } -2441: else { -2441: x.upper_extend(); -2441: } -2441: } -2441: } -2441: -2441: -2441: if (!x.lower_is_boundary_infinity()) { -2441: Boundary& x_lb = x.lower(); -2441: const Boundary& y_lb = y.lower(); -2441: ((void) 0); -2441: if (y_lb > x_lb) { -2441: Iterator k = std::lower_bound(first, last, x_lb); -2441: if (k != last) { -2441: if (x_lb < *k) { -2441: if (k != first) { -2441: x_lb = *--k; -2441: } -2441: else { -2441: x.lower_extend(); -2441: } -2441: } -2441: } -2441: else { -2441: if (k != first) { -2441: x_lb = *--k; -2441: } -2441: else { -2441: x.lower_extend(); -2441: } -2441: } -2441: } -2441: } -2441: } -2441: -2441: template -2441: Interval::Interval(const char* s) { -2441: -2441: Boundary lower_bound; -2441: Result lower_r = assign_r(lower_bound, s, ROUND_DOWN); -2441: if (lower_r == V_CVT_STR_UNK || lower_r == V_NAN) { -2441: throw std::invalid_argument("PPL::Interval(const char* s)" -2441: " with s invalid"); -2441: } -2441: lower_r = result_relation_class(lower_r); -2441: -2441: -2441: Boundary upper_bound; -2441: Result upper_r = assign_r(upper_bound, s, ROUND_UP); -2441: ((void) 0); -2441: upper_r = result_relation_class(upper_r); -2441: -2441: -2441: bool lower_open = false; -2441: bool upper_open = false; -2441: bool lower_boundary_infinity = false; -2441: bool upper_boundary_infinity = false; -2441: switch (lower_r) { -2441: case V_EQ: -2441: case V_GE: -2441: break; -2441: case V_GT: -2441: lower_open = true; -2441: break; -2441: case V_GT_MINUS_INFINITY: -2441: lower_open = true; -2441: -2441: case V_EQ_MINUS_INFINITY: -2441: lower_boundary_infinity = true; -2441: break; -2441: case V_EQ_PLUS_INFINITY: -2441: case V_LT_PLUS_INFINITY: -2441: if (upper_r == V_EQ_PLUS_INFINITY || upper_r == V_LT_PLUS_INFINITY) { -2441: assign(UNIVERSE); -2441: } -2441: else { -2441: assign(EMPTY); -2441: } -2441: break; -2441: default: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: switch (upper_r) { -2441: case V_EQ: -2441: case V_LE: -2441: break; -2441: case V_LT: -2441: upper_open = true; -2441: break; -2441: case V_EQ_MINUS_INFINITY: -2441: case V_GT_MINUS_INFINITY: -2441: if (lower_r == V_EQ_MINUS_INFINITY || lower_r == V_GT_MINUS_INFINITY) { -2441: assign(UNIVERSE); -2441: } -2441: else { -2441: assign(EMPTY); -2441: } -2441: break; -2441: case V_LT_PLUS_INFINITY: -2441: upper_open = true; -2441: -2441: case V_EQ_PLUS_INFINITY: -2441: upper_boundary_infinity = true; -2441: break; -2441: default: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: -2441: if (!lower_boundary_infinity -2441: && !upper_boundary_infinity -2441: && (lower_bound > upper_bound -2441: || (lower_open && lower_bound == upper_bound))) { -2441: assign(EMPTY); -2441: } -2441: else { -2441: if (lower_boundary_infinity) { -2441: set_minus_infinity(LOWER, lower(), info(), lower_open); -2441: } -2441: else { -2441: Boundary_NS::assign(LOWER, lower(), info(), -2441: LOWER, lower_bound, SCALAR_INFO, lower_open); -2441: } -2441: if (upper_boundary_infinity) { -2441: set_plus_infinity(UPPER, upper(), info(), upper_open); -2441: } -2441: else { -2441: Boundary_NS::assign(UPPER, upper(), info(), -2441: UPPER, upper_bound, SCALAR_INFO, upper_open); -2441: } -2441: } -2441: } -2441: -2441: -2441: template -2441: inline std::istream& -2441: operator>>(std::istream& is, Interval& x) { -2441: Boundary lower_bound; -2441: Boundary upper_bound; -2441: bool lower_boundary_infinity = false; -2441: bool upper_boundary_infinity = false; -2441: bool lower_open = false; -2441: bool upper_open = false; -2441: Result lower_r; -2441: Result upper_r; -2441: -2441: -2441: char c; -2441: do { -2441: if (!is.get(c)) { -2441: goto fail; -2441: } -2441: } while (is_space(c)); -2441: -2441: -2441: if (c == '(') { -2441: lower_open = true; -2441: } -2441: else if (c == '[') { -2441: if (!is.get(c)) { -2441: goto fail; -2441: } -2441: if (c == ']') { -2441: -2441: x.assign(EMPTY); -2441: return is; -2441: } -2441: else { -2441: is.unget(); -2441: } -2441: } -2441: else { -2441: goto unexpected_char; -2441: } -2441: -2441: -2441: lower_r = input(lower_bound, is, ROUND_DOWN); -2441: if (lower_r == V_CVT_STR_UNK || lower_r == V_NAN) { -2441: goto fail; -2441: } -2441: lower_r = result_relation_class(lower_r); -2441: -2441: -2441: do { -2441: if (!is.get(c)) { -2441: goto fail; -2441: } -2441: } while (is_space(c)); -2441: if (c != ',') { -2441: goto unexpected_char; -2441: } -2441: -2441: -2441: upper_r = input(upper_bound, is, ROUND_UP); -2441: if (upper_r == V_CVT_STR_UNK || upper_r == V_NAN) { -2441: goto fail; -2441: } -2441: upper_r = result_relation_class(upper_r); -2441: -2441: -2441: do { -2441: if (!is.get(c)) { -2441: goto fail; -2441: } -2441: } while (is_space(c)); -2441: if (c == ')') { -2441: upper_open = true; -2441: } -2441: else if (c != ']') { -2441: unexpected_char: -2441: is.unget(); -2441: fail: -2441: is.setstate(std::ios::failbit); -2441: return is; -2441: } -2441: -2441: -2441: switch (lower_r) { -2441: case V_EQ: -2441: case V_GE: -2441: break; -2441: case V_GT: -2441: lower_open = true; -2441: break; -2441: case V_GT_MINUS_INFINITY: -2441: lower_open = true; -2441: -2441: case V_EQ_MINUS_INFINITY: -2441: lower_boundary_infinity = true; -2441: break; -2441: case V_EQ_PLUS_INFINITY: -2441: case V_LT_PLUS_INFINITY: -2441: if (upper_r == V_EQ_PLUS_INFINITY || upper_r == V_LT_PLUS_INFINITY) { -2441: x.assign(UNIVERSE); -2441: } -2441: else { -2441: x.assign(EMPTY); -2441: } -2441: return is; -2441: default: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: switch (upper_r) { -2441: case V_EQ: -2441: case V_LE: -2441: break; -2441: case V_LT: -2441: upper_open = true; -2441: break; -2441: case V_GT_MINUS_INFINITY: -2441: upper_open = true; -2441: -2441: case V_EQ_MINUS_INFINITY: -2441: if (lower_r == V_EQ_MINUS_INFINITY || lower_r == V_GT_MINUS_INFINITY) { -2441: x.assign(UNIVERSE); -2441: } -2441: else { -2441: x.assign(EMPTY); -2441: } -2441: return is; -2441: case V_EQ_PLUS_INFINITY: -2441: case V_LT_PLUS_INFINITY: -2441: upper_boundary_infinity = true; -2441: break; -2441: default: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: -2441: if (!lower_boundary_infinity -2441: && !upper_boundary_infinity -2441: && (lower_bound > upper_bound -2441: || (lower_open && lower_bound == upper_bound))) { -2441: x.assign(EMPTY); -2441: } -2441: else { -2441: if (lower_boundary_infinity) { -2441: set_minus_infinity(LOWER, x.lower(), x.info(), lower_open); -2441: } -2441: else { -2441: assign(LOWER, x.lower(), x.info(), -2441: LOWER, lower_bound, SCALAR_INFO, lower_open); -2441: } -2441: if (upper_boundary_infinity) { -2441: set_plus_infinity(UPPER, x.upper(), x.info(), upper_open); -2441: } -2441: else { -2441: assign(UPPER, x.upper(), x.info(), -2441: UPPER, upper_bound, SCALAR_INFO, upper_open); -2441: } -2441: } -2441: return is; -2441: } -2441: -2441: template -2441: template -2441: typename Enable_If::value, bool>::type -2441: Interval::simplify_using_context_assign(const From& y) { -2441: -2441: if (lt(UPPER, upper(), info(), LOWER, f_lower(y), f_info(y))) { -2441: lower_extend(); -2441: return false; -2441: } -2441: if (gt(LOWER, lower(), info(), UPPER, f_upper(y), f_info(y))) { -2441: upper_extend(); -2441: return false; -2441: } -2441: -2441: if (!upper_is_boundary_infinity() && !y.upper_is_boundary_infinity() -2441: && y.upper() <= upper()) { -2441: upper_extend(); -2441: } -2441: -2441: if (!lower_is_boundary_infinity() && !y.lower_is_boundary_infinity() -2441: && y.lower() >= lower()) { -2441: lower_extend(); -2441: } -2441: return true; -2441: } -2441: -2441: template -2441: template -2441: typename Enable_If::value, void>::type -2441: Interval::empty_intersection_assign(const From&) { -2441: -2441: assign(EMPTY); -2441: } -2441: -2441: } -2441: # 780 "../../src/Interval_defs.hh" 2 -2441: # 28 "../../src/Integer_Interval.hh" 2 -2441: -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: struct Integer_Interval_Info_Policy { -2441: enum const_bool_value_store_special { store_special = (true) }; -2441: enum const_bool_value_store_open { store_open = (false) }; -2441: enum const_bool_value_cache_empty { cache_empty = (true) }; -2441: enum const_bool_value_cache_singleton { cache_singleton = (true) }; -2441: enum anonymous_enum_next_bit { next_bit = (0) }; -2441: enum const_bool_value_may_be_empty { may_be_empty = (true) }; -2441: enum const_bool_value_may_contain_infinity { may_contain_infinity = (false) }; -2441: enum const_bool_value_check_empty_result { check_empty_result = (false) }; -2441: enum const_bool_value_check_inexact { check_inexact = (false) }; -2441: }; -2441: -2441: typedef Interval_Info_Bitset Integer_Interval_Info; -2441: -2441: -2441: -2441: -2441: typedef Interval Integer_Interval; -2441: -2441: } -2441: # 7 "../../src/ppl_include_files.hh" 2 -2441: # 1 "../../src/initializer.hh" 1 -2441: # 27 "../../src/initializer.hh" -2441: # 1 "../../src/Init_defs.hh" 1 -2441: # 30 "../../src/Init_defs.hh" -2441: namespace Parma_Polyhedra_Library { -2441: # 40 "../../src/Init_defs.hh" -2441: void set_rounding_for_PPL(); -2441: # 55 "../../src/Init_defs.hh" -2441: void restore_pre_PPL_rounding(); -2441: -2441: } -2441: # 72 "../../src/Init_defs.hh" -2441: class Parma_Polyhedra_Library::Init { -2441: public: -2441: -2441: Init(); -2441: -2441: -2441: ~Init(); -2441: -2441: private: -2441: -2441: -2441: -2441: -2441: -2441: -2441: static const unsigned DEFAULT_IRRATIONAL_PRECISION = 128U; -2441: -2441: -2441: static unsigned int count; -2441: static fpu_rounding_direction_type old_rounding_direction; -2441: -2441: friend void set_rounding_for_PPL(); -2441: friend void restore_pre_PPL_rounding(); -2441: }; -2441: -2441: # 1 "../../src/Init_inlines.hh" 1 -2441: # 30 "../../src/Init_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: inline void -2441: set_rounding_for_PPL() { -2441: -2441: fpu_set_rounding_direction(round_fpu_dir(ROUND_DIRECT)); -2441: -2441: } -2441: -2441: inline void -2441: restore_pre_PPL_rounding() { -2441: -2441: fpu_set_rounding_direction(Init::old_rounding_direction); -2441: -2441: } -2441: -2441: } -2441: # 98 "../../src/Init_defs.hh" 2 -2441: # 28 "../../src/initializer.hh" 2 -2441: -2441: -2441: -2441: static Parma_Polyhedra_Library::Init Parma_Polyhedra_Library_initializer; -2441: # 48 "../../src/initializer.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: inline void -2441: initialize() { -2441: -2441: -2441: -2441: } -2441: -2441: -2441: inline void -2441: finalize() { -2441: -2441: -2441: -2441: } -2441: -2441: } -2441: # 8 "../../src/ppl_include_files.hh" 2 -2441: # 1 "../../src/Linear_Expression_Impl_defs.hh" 1 -2441: # 27 "../../src/Linear_Expression_Impl_defs.hh" -2441: # 1 "../../src/Linear_Expression_Impl_types.hh" 1 -2441: # 16 "../../src/Linear_Expression_Impl_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: class Linear_Expression_Impl; -2441: -2441: } -2441: # 28 "../../src/Linear_Expression_Impl_defs.hh" 2 -2441: # 1 "../../src/Linear_Expression_Interface_defs.hh" 1 -2441: # 27 "../../src/Linear_Expression_Interface_defs.hh" -2441: # 1 "../../src/Linear_Expression_Interface_types.hh" 1 -2441: # 16 "../../src/Linear_Expression_Interface_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: class Linear_Expression_Interface; -2441: -2441: } -2441: # 28 "../../src/Linear_Expression_Interface_defs.hh" 2 -2441: # 1 "../../src/Coefficient_defs.hh" 1 -2441: # 27 "../../src/Coefficient_defs.hh" -2441: # 1 "../../src/Coefficient_types.hh" 1 -2441: # 19 "../../src/Coefficient_types.hh" -2441: # 1 "../../src/GMP_Integer_types.hh" 1 -2441: # 20 "../../src/GMP_Integer_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: # 31 "../../src/GMP_Integer_types.hh" -2441: typedef mpz_class GMP_Integer; -2441: -2441: -2441: -2441: -2441: -2441: template <> -2441: struct Coefficient_traits_template { -2441: -2441: typedef const GMP_Integer& const_reference; -2441: }; -2441: -2441: } -2441: # 20 "../../src/Coefficient_types.hh" 2 -2441: # 152 "../../src/Coefficient_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: # 172 "../../src/Coefficient_types.hh" -2441: typedef mpz_class Coefficient; -2441: -2441: -2441: -2441: -2441: -2441: typedef Coefficient_traits_template Coefficient_traits; -2441: -2441: } -2441: # 28 "../../src/Coefficient_defs.hh" 2 -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: # 1 "../../src/GMP_Integer_defs.hh" 1 -2441: # 31 "../../src/GMP_Integer_defs.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: -2441: -2441: -2441: const mpz_class& raw_value(const GMP_Integer& x); -2441: -2441: -2441: -2441: mpz_class& raw_value(GMP_Integer& x); -2441: # 51 "../../src/GMP_Integer_defs.hh" -2441: void neg_assign(GMP_Integer& x); -2441: -2441: -2441: -2441: void neg_assign(GMP_Integer& x, const GMP_Integer& y); -2441: -2441: -2441: -2441: void abs_assign(GMP_Integer& x); -2441: -2441: -2441: -2441: void abs_assign(GMP_Integer& x, const GMP_Integer& y); -2441: -2441: -2441: -2441: void rem_assign(GMP_Integer& x, -2441: const GMP_Integer& y, const GMP_Integer& z); -2441: -2441: -2441: -2441: void gcd_assign(GMP_Integer& x, -2441: const GMP_Integer& y, const GMP_Integer& z); -2441: -2441: -2441: -2441: -2441: -2441: -2441: void gcdext_assign(GMP_Integer& x, GMP_Integer& s, GMP_Integer& t, -2441: const GMP_Integer& y, const GMP_Integer& z); -2441: -2441: -2441: -2441: void lcm_assign(GMP_Integer& x, -2441: const GMP_Integer& y, const GMP_Integer& z); -2441: -2441: -2441: -2441: void add_mul_assign(GMP_Integer& x, -2441: const GMP_Integer& y, const GMP_Integer& z); -2441: -2441: -2441: -2441: void sub_mul_assign(GMP_Integer& x, -2441: const GMP_Integer& y, const GMP_Integer& z); -2441: -2441: -2441: -2441: void mul_2exp_assign(GMP_Integer& x, const GMP_Integer& y, unsigned int exp); -2441: -2441: -2441: -2441: void div_2exp_assign(GMP_Integer& x, const GMP_Integer& y, unsigned int exp); -2441: # 113 "../../src/GMP_Integer_defs.hh" -2441: void exact_div_assign(GMP_Integer& x, -2441: const GMP_Integer& y, const GMP_Integer& z); -2441: -2441: -2441: -2441: void sqrt_assign(GMP_Integer& x, const GMP_Integer& y); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: int cmp(const GMP_Integer& x, const GMP_Integer& y); -2441: -2441: -2441: -2441: } -2441: -2441: # 1 "../../src/GMP_Integer_inlines.hh" 1 -2441: # 29 "../../src/GMP_Integer_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: inline void -2441: neg_assign(GMP_Integer& x) { -2441: -2441: # 33 "../../src/GMP_Integer_inlines.hh" 3 4 -2441: __gmpz_neg -2441: # 33 "../../src/GMP_Integer_inlines.hh" -2441: (x.get_mpz_t(), x.get_mpz_t()); -2441: } -2441: -2441: inline void -2441: neg_assign(GMP_Integer& x, const GMP_Integer& y) { -2441: -2441: # 38 "../../src/GMP_Integer_inlines.hh" 3 4 -2441: __gmpz_neg -2441: # 38 "../../src/GMP_Integer_inlines.hh" -2441: (x.get_mpz_t(), y.get_mpz_t()); -2441: } -2441: -2441: inline void -2441: abs_assign(GMP_Integer& x) { -2441: -2441: # 43 "../../src/GMP_Integer_inlines.hh" 3 4 -2441: __gmpz_abs -2441: # 43 "../../src/GMP_Integer_inlines.hh" -2441: (x.get_mpz_t(), x.get_mpz_t()); -2441: } -2441: -2441: inline void -2441: abs_assign(GMP_Integer& x, const GMP_Integer& y) { -2441: -2441: # 48 "../../src/GMP_Integer_inlines.hh" 3 4 -2441: __gmpz_abs -2441: # 48 "../../src/GMP_Integer_inlines.hh" -2441: (x.get_mpz_t(), y.get_mpz_t()); -2441: } -2441: -2441: inline void -2441: gcd_assign(GMP_Integer& x, const GMP_Integer& y, const GMP_Integer& z) { -2441: -2441: # 53 "../../src/GMP_Integer_inlines.hh" 3 4 -2441: __gmpz_gcd -2441: # 53 "../../src/GMP_Integer_inlines.hh" -2441: (x.get_mpz_t(), y.get_mpz_t(), z.get_mpz_t()); -2441: } -2441: -2441: inline void -2441: rem_assign(GMP_Integer& x, const GMP_Integer& y, const GMP_Integer& z) { -2441: -2441: # 58 "../../src/GMP_Integer_inlines.hh" 3 4 -2441: __gmpz_tdiv_r -2441: # 58 "../../src/GMP_Integer_inlines.hh" -2441: (x.get_mpz_t(), y.get_mpz_t(), z.get_mpz_t()); -2441: } -2441: -2441: inline void -2441: gcdext_assign(GMP_Integer& x, GMP_Integer& s, GMP_Integer& t, -2441: const GMP_Integer& y, const GMP_Integer& z) { -2441: -2441: # 64 "../../src/GMP_Integer_inlines.hh" 3 4 -2441: __gmpz_gcdext -2441: # 64 "../../src/GMP_Integer_inlines.hh" -2441: (x.get_mpz_t(), -2441: s.get_mpz_t(), t.get_mpz_t(), -2441: y.get_mpz_t(), z.get_mpz_t()); -2441: } -2441: -2441: inline void -2441: lcm_assign(GMP_Integer& x, const GMP_Integer& y, const GMP_Integer& z) { -2441: -2441: # 71 "../../src/GMP_Integer_inlines.hh" 3 4 -2441: __gmpz_lcm -2441: # 71 "../../src/GMP_Integer_inlines.hh" -2441: (x.get_mpz_t(), y.get_mpz_t(), z.get_mpz_t()); -2441: } -2441: -2441: inline void -2441: add_mul_assign(GMP_Integer& x, const GMP_Integer& y, const GMP_Integer& z) { -2441: -2441: # 76 "../../src/GMP_Integer_inlines.hh" 3 4 -2441: __gmpz_addmul -2441: # 76 "../../src/GMP_Integer_inlines.hh" -2441: (x.get_mpz_t(), y.get_mpz_t(), z.get_mpz_t()); -2441: } -2441: -2441: inline void -2441: sub_mul_assign(GMP_Integer& x, const GMP_Integer& y, const GMP_Integer& z) { -2441: -2441: # 81 "../../src/GMP_Integer_inlines.hh" 3 4 -2441: __gmpz_submul -2441: # 81 "../../src/GMP_Integer_inlines.hh" -2441: (x.get_mpz_t(), y.get_mpz_t(), z.get_mpz_t()); -2441: } -2441: -2441: inline void -2441: mul_2exp_assign(GMP_Integer& x, const GMP_Integer& y, unsigned int exp) { -2441: -2441: # 86 "../../src/GMP_Integer_inlines.hh" 3 4 -2441: __gmpz_mul_2exp -2441: # 86 "../../src/GMP_Integer_inlines.hh" -2441: (x.get_mpz_t(), y.get_mpz_t(), exp); -2441: } -2441: -2441: inline void -2441: div_2exp_assign(GMP_Integer& x, const GMP_Integer& y, unsigned int exp) { -2441: -2441: # 91 "../../src/GMP_Integer_inlines.hh" 3 4 -2441: __gmpz_tdiv_q_2exp -2441: # 91 "../../src/GMP_Integer_inlines.hh" -2441: (x.get_mpz_t(), y.get_mpz_t(), exp); -2441: } -2441: -2441: inline void -2441: exact_div_assign(GMP_Integer& x, const GMP_Integer& y, const GMP_Integer& z) { -2441: ((void) 0); -2441: -2441: # 97 "../../src/GMP_Integer_inlines.hh" 3 4 -2441: __gmpz_divexact -2441: # 97 "../../src/GMP_Integer_inlines.hh" -2441: (x.get_mpz_t(), y.get_mpz_t(), z.get_mpz_t()); -2441: } -2441: -2441: inline void -2441: sqrt_assign(GMP_Integer& x, const GMP_Integer& y) { -2441: -2441: # 102 "../../src/GMP_Integer_inlines.hh" 3 4 -2441: __gmpz_sqrt -2441: # 102 "../../src/GMP_Integer_inlines.hh" -2441: (x.get_mpz_t(), y.get_mpz_t()); -2441: } -2441: -2441: inline int -2441: cmp(const GMP_Integer& x, const GMP_Integer& y) { -2441: return -2441: # 107 "../../src/GMP_Integer_inlines.hh" 3 4 -2441: __gmpz_cmp -2441: # 107 "../../src/GMP_Integer_inlines.hh" -2441: (x.get_mpz_t(), y.get_mpz_t()); -2441: } -2441: -2441: inline const mpz_class& -2441: raw_value(const GMP_Integer& x) { -2441: return x; -2441: } -2441: -2441: inline mpz_class& -2441: raw_value(GMP_Integer& x) { -2441: return x; -2441: } -2441: -2441: } -2441: # 133 "../../src/GMP_Integer_defs.hh" 2 -2441: # 36 "../../src/Coefficient_defs.hh" 2 -2441: -2441: -2441: -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: -2441: void Coefficient_constants_initialize(); -2441: -2441: -2441: -2441: -2441: void Coefficient_constants_finalize(); -2441: -2441: -2441: Coefficient_traits::const_reference Coefficient_zero(); -2441: -2441: -2441: Coefficient_traits::const_reference Coefficient_one(); -2441: -2441: } -2441: -2441: # 1 "../../src/Coefficient_inlines.hh" 1 -2441: # 27 "../../src/Coefficient_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: # 57 "../../src/Coefficient_inlines.hh" -2441: inline Coefficient_traits::const_reference -2441: Coefficient_zero() { -2441: extern const Coefficient* Coefficient_zero_p; -2441: return *Coefficient_zero_p; -2441: } -2441: -2441: inline Coefficient_traits::const_reference -2441: Coefficient_one() { -2441: extern const Coefficient* Coefficient_one_p; -2441: ((void) 0); -2441: return *Coefficient_one_p; -2441: } -2441: -2441: -2441: } -2441: # 61 "../../src/Coefficient_defs.hh" 2 -2441: # 29 "../../src/Linear_Expression_Interface_defs.hh" 2 -2441: -2441: # 1 "../../src/Variables_Set_types.hh" 1 -2441: # 16 "../../src/Variables_Set_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: class Variables_Set; -2441: -2441: } -2441: # 31 "../../src/Linear_Expression_Interface_defs.hh" 2 -2441: # 1 "../../src/Dense_Row_types.hh" 1 -2441: # 16 "../../src/Dense_Row_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: class Dense_Row; -2441: -2441: } -2441: # 32 "../../src/Linear_Expression_Interface_defs.hh" 2 -2441: # 1 "../../src/Sparse_Row_types.hh" 1 -2441: # 16 "../../src/Sparse_Row_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: class Sparse_Row; -2441: -2441: } -2441: # 33 "../../src/Linear_Expression_Interface_defs.hh" 2 -2441: # 51 "../../src/Linear_Expression_Interface_defs.hh" -2441: class Parma_Polyhedra_Library::Linear_Expression_Interface { -2441: public: -2441: virtual ~Linear_Expression_Interface(); -2441: -2441: virtual bool OK() const = 0; -2441: -2441: -2441: virtual Representation representation() const = 0; -2441: -2441: -2441: -2441: -2441: -2441: -2441: class const_iterator_interface { -2441: public: -2441: typedef std::bidirectional_iterator_tag iterator_category; -2441: typedef const Coefficient value_type; -2441: typedef std::ptrdiff_t difference_type; -2441: typedef value_type* pointer; -2441: typedef Coefficient_traits::const_reference reference; -2441: -2441: -2441: -2441: -2441: virtual const_iterator_interface* clone() const = 0; -2441: -2441: virtual ~const_iterator_interface(); -2441: -2441: -2441: -2441: -2441: virtual void operator++() = 0; -2441: -2441: -2441: -2441: -2441: virtual void operator--() = 0; -2441: -2441: -2441: virtual reference operator*() const = 0; -2441: -2441: -2441: -2441: -2441: -2441: virtual Variable variable() const = 0; -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual bool operator==(const const_iterator_interface& x) const = 0; -2441: }; -2441: -2441: -2441: -2441: virtual const_iterator_interface* begin() const = 0; -2441: -2441: -2441: -2441: virtual const_iterator_interface* end() const = 0; -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual const_iterator_interface* lower_bound(Variable v) const = 0; -2441: -2441: -2441: virtual dimension_type space_dimension() const = 0; -2441: -2441: -2441: virtual void set_space_dimension(dimension_type n) = 0; -2441: -2441: -2441: virtual Coefficient_traits::const_reference -2441: coefficient(Variable v) const = 0; -2441: -2441: -2441: virtual void -2441: set_coefficient(Variable v, Coefficient_traits::const_reference n) = 0; -2441: -2441: -2441: virtual Coefficient_traits::const_reference inhomogeneous_term() const = 0; -2441: -2441: -2441: virtual void -2441: set_inhomogeneous_term(Coefficient_traits::const_reference n) = 0; -2441: # 158 "../../src/Linear_Expression_Interface_defs.hh" -2441: virtual void -2441: linear_combine(const Linear_Expression_Interface& y, Variable v) = 0; -2441: -2441: -2441: -2441: virtual void linear_combine(const Linear_Expression_Interface& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2) = 0; -2441: -2441: -2441: -2441: virtual void linear_combine_lax(const Linear_Expression_Interface& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2) = 0; -2441: -2441: -2441: virtual void swap_space_dimensions(Variable v1, Variable v2) = 0; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual void remove_space_dimensions(const Variables_Set& vars) = 0; -2441: -2441: -2441: -2441: virtual void shift_space_dimensions(Variable v, dimension_type n) = 0; -2441: # 200 "../../src/Linear_Expression_Interface_defs.hh" -2441: virtual void -2441: permute_space_dimensions(const std::vector& cycle) = 0; -2441: -2441: -2441: virtual bool is_zero() const = 0; -2441: -2441: -2441: -2441: -2441: -2441: virtual bool all_homogeneous_terms_are_zero() const = 0; -2441: -2441: -2441: -2441: -2441: -2441: virtual memory_size_type total_memory_in_bytes() const = 0; -2441: -2441: -2441: virtual memory_size_type external_memory_in_bytes() const = 0; -2441: -2441: -2441: virtual void ascii_dump(std::ostream& s) const = 0; -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual bool ascii_load(std::istream& s) = 0; -2441: -2441: -2441: -2441: virtual bool is_equal_to(const Linear_Expression_Interface& x) const = 0; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual void normalize() = 0; -2441: -2441: -2441: -2441: virtual void sign_normalize() = 0; -2441: -2441: -2441: -2441: -2441: -2441: virtual void negate(dimension_type first, dimension_type last) = 0; -2441: -2441: virtual Linear_Expression_Interface& -2441: operator+=(Coefficient_traits::const_reference n) = 0; -2441: virtual Linear_Expression_Interface& -2441: operator-=(Coefficient_traits::const_reference n) = 0; -2441: # 269 "../../src/Linear_Expression_Interface_defs.hh" -2441: virtual int compare(const Linear_Expression_Interface& y) const = 0; -2441: -2441: virtual Linear_Expression_Interface& -2441: operator+=(const Linear_Expression_Interface& e2) = 0; -2441: virtual Linear_Expression_Interface& -2441: operator+=(const Variable v) = 0; -2441: virtual Linear_Expression_Interface& -2441: operator-=(const Linear_Expression_Interface& e2) = 0; -2441: virtual Linear_Expression_Interface& -2441: operator-=(const Variable v) = 0; -2441: virtual Linear_Expression_Interface& -2441: operator*=(Coefficient_traits::const_reference n) = 0; -2441: virtual Linear_Expression_Interface& -2441: operator/=(Coefficient_traits::const_reference n) = 0; -2441: -2441: virtual void negate() = 0; -2441: -2441: virtual Linear_Expression_Interface& -2441: add_mul_assign(Coefficient_traits::const_reference n, const Variable v) = 0; -2441: -2441: virtual Linear_Expression_Interface& -2441: sub_mul_assign(Coefficient_traits::const_reference n, const Variable v) = 0; -2441: -2441: virtual void add_mul_assign(Coefficient_traits::const_reference factor, -2441: const Linear_Expression_Interface& e2) = 0; -2441: -2441: virtual void sub_mul_assign(Coefficient_traits::const_reference factor, -2441: const Linear_Expression_Interface& e2) = 0; -2441: -2441: virtual void print(std::ostream& s) const = 0; -2441: -2441: -2441: -2441: -2441: -2441: virtual bool all_zeroes(const Variables_Set& vars) const = 0; -2441: -2441: -2441: -2441: virtual bool have_a_common_variable(const Linear_Expression_Interface& x, -2441: Variable first, Variable last) const = 0; -2441: -2441: -2441: -2441: -2441: -2441: virtual Coefficient_traits::const_reference get(dimension_type i) const = 0; -2441: -2441: -2441: -2441: -2441: -2441: virtual void set(dimension_type i, Coefficient_traits::const_reference n) = 0; -2441: # 330 "../../src/Linear_Expression_Interface_defs.hh" -2441: virtual bool all_zeroes(dimension_type start, dimension_type end) const = 0; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual dimension_type -2441: num_zeroes(dimension_type start, dimension_type end) const = 0; -2441: # 348 "../../src/Linear_Expression_Interface_defs.hh" -2441: virtual Coefficient gcd(dimension_type start, dimension_type end) const = 0; -2441: -2441: -2441: -2441: -2441: virtual void exact_div_assign(Coefficient_traits::const_reference c, -2441: dimension_type start, dimension_type end) = 0; -2441: -2441: -2441: -2441: -2441: -2441: virtual void mul_assign(Coefficient_traits::const_reference n, -2441: dimension_type start, dimension_type end) = 0; -2441: # 381 "../../src/Linear_Expression_Interface_defs.hh" -2441: virtual void -2441: linear_combine(const Linear_Expression_Interface& y, dimension_type i) = 0; -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual void linear_combine(const Linear_Expression_Interface& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2, -2441: dimension_type start, dimension_type end) = 0; -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual void linear_combine_lax(const Linear_Expression_Interface& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2, -2441: dimension_type start, dimension_type end) = 0; -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual dimension_type last_nonzero() const = 0; -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual dimension_type -2441: last_nonzero(dimension_type first, dimension_type last) const = 0; -2441: -2441: -2441: -2441: virtual dimension_type -2441: first_nonzero(dimension_type first, dimension_type last) const = 0; -2441: # 431 "../../src/Linear_Expression_Interface_defs.hh" -2441: virtual bool -2441: all_zeroes_except(const Variables_Set& vars, -2441: dimension_type start, dimension_type end) const = 0; -2441: -2441: -2441: -2441: -2441: -2441: virtual void -2441: scalar_product_assign(Coefficient& result, -2441: const Linear_Expression_Interface& y, -2441: dimension_type start, dimension_type end) const = 0; -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual int -2441: scalar_product_sign(const Linear_Expression_Interface& y, -2441: dimension_type start, dimension_type end) const = 0; -2441: -2441: -2441: -2441: -2441: -2441: virtual void -2441: has_a_free_dimension_helper(std::set& x) const = 0; -2441: -2441: -2441: -2441: -2441: -2441: virtual bool is_equal_to(const Linear_Expression_Interface& x, -2441: dimension_type start, dimension_type end) const = 0; -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual bool is_equal_to(const Linear_Expression_Interface& x, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2, -2441: dimension_type start, dimension_type end) const = 0; -2441: -2441: -2441: -2441: -2441: -2441: virtual void get_row(Dense_Row& r) const = 0; -2441: -2441: -2441: -2441: -2441: -2441: virtual void get_row(Sparse_Row& r) const = 0; -2441: }; -2441: # 29 "../../src/Linear_Expression_Impl_defs.hh" 2 -2441: -2441: -2441: # 1 "../../src/Variables_Set_defs.hh" 1 -2441: # 33 "../../src/Variables_Set_defs.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: namespace IO_Operators { -2441: -2441: -2441: -2441: std::ostream& -2441: operator<<(std::ostream& s, const Variables_Set& vs); -2441: -2441: } -2441: -2441: } -2441: -2441: -2441: class Parma_Polyhedra_Library::Variables_Set -2441: : public std::set { -2441: private: -2441: typedef std::set Base; -2441: -2441: public: -2441: -2441: Variables_Set(); -2441: -2441: -2441: explicit Variables_Set(const Variable v); -2441: # 68 "../../src/Variables_Set_defs.hh" -2441: Variables_Set(const Variable v, const Variable w); -2441: -2441: -2441: static dimension_type max_space_dimension(); -2441: -2441: -2441: -2441: -2441: -2441: dimension_type space_dimension() const; -2441: -2441: -2441: void insert(Variable v); -2441: -2441: -2441: -2441: using Base::insert; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool ascii_load(std::istream& s); -2441: -2441: -2441: memory_size_type total_memory_in_bytes() const; -2441: -2441: -2441: memory_size_type external_memory_in_bytes() const; -2441: -2441: -2441: bool OK() const; -2441: -2441: void ascii_dump() const; void ascii_dump(std::ostream& s) const; void print() const; -2441: }; -2441: -2441: # 1 "../../src/Variables_Set_inlines.hh" 1 -2441: # 30 "../../src/Variables_Set_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: inline -2441: Variables_Set::Variables_Set() -2441: : Base() { -2441: } -2441: -2441: inline void -2441: Variables_Set::insert(const Variable v) { -2441: insert(v.id()); -2441: } -2441: -2441: inline -2441: Variables_Set::Variables_Set(const Variable v) -2441: : Base() { -2441: insert(v); -2441: } -2441: -2441: inline dimension_type -2441: Variables_Set::max_space_dimension() { -2441: return Variable::max_space_dimension(); -2441: } -2441: -2441: inline dimension_type -2441: Variables_Set::space_dimension() const { -2441: reverse_iterator i = rbegin(); -2441: return (i == rend()) ? 0 : (*i + 1); -2441: } -2441: -2441: inline memory_size_type -2441: Variables_Set::external_memory_in_bytes() const { -2441: -2441: -2441: -2441: enum color { red, black }; -2441: return size() * (sizeof(color) + 3*sizeof(void*) + sizeof(dimension_type)); -2441: } -2441: -2441: inline memory_size_type -2441: Variables_Set::total_memory_in_bytes() const { -2441: return sizeof(*this) + external_memory_in_bytes(); -2441: } -2441: -2441: } -2441: # 106 "../../src/Variables_Set_defs.hh" 2 -2441: # 32 "../../src/Linear_Expression_Impl_defs.hh" 2 -2441: # 1 "../../src/Dense_Row_defs.hh" 1 -2441: # 33 "../../src/Dense_Row_defs.hh" -2441: # 1 "/usr/include/c++/8/memory" 1 3 -2441: # 46 "/usr/include/c++/8/memory" 3 -2441: -2441: # 47 "/usr/include/c++/8/memory" 3 -2441: # 67 "/usr/include/c++/8/memory" 3 -2441: # 1 "/usr/include/c++/8/bits/stl_raw_storage_iter.h" 1 3 -2441: # 59 "/usr/include/c++/8/bits/stl_raw_storage_iter.h" 3 -2441: -2441: # 59 "/usr/include/c++/8/bits/stl_raw_storage_iter.h" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: class raw_storage_iterator -2441: : public iterator -2441: { -2441: protected: -2441: _OutputIterator _M_iter; -2441: -2441: public: -2441: explicit -2441: raw_storage_iterator(_OutputIterator __x) -2441: : _M_iter(__x) {} -2441: -2441: raw_storage_iterator& -2441: operator*() { return *this; } -2441: -2441: raw_storage_iterator& -2441: operator=(const _Tp& __element) -2441: { -2441: std::_Construct(std::__addressof(*_M_iter), __element); -2441: return *this; -2441: } -2441: -2441: -2441: -2441: -2441: raw_storage_iterator& -2441: operator=(_Tp&& __element) -2441: { -2441: std::_Construct(std::__addressof(*_M_iter), std::move(__element)); -2441: return *this; -2441: } -2441: -2441: -2441: raw_storage_iterator& -2441: operator++() -2441: { -2441: ++_M_iter; -2441: return *this; -2441: } -2441: -2441: raw_storage_iterator -2441: operator++(int) -2441: { -2441: raw_storage_iterator __tmp = *this; -2441: ++_M_iter; -2441: return __tmp; -2441: } -2441: -2441: -2441: -2441: _OutputIterator base() const { return _M_iter; } -2441: }; -2441: -2441: -2441: } -2441: # 68 "/usr/include/c++/8/memory" 2 3 -2441: -2441: -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/c++/8/ext/concurrence.h" 1 3 -2441: # 32 "/usr/include/c++/8/ext/concurrence.h" 3 -2441: -2441: # 33 "/usr/include/c++/8/ext/concurrence.h" 3 -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: enum _Lock_policy { _S_single, _S_mutex, _S_atomic }; -2441: -2441: -2441: -2441: static const _Lock_policy __default_lock_policy = -2441: -2441: -2441: -2441: _S_atomic; -2441: # 67 "/usr/include/c++/8/ext/concurrence.h" 3 -2441: class __concurrence_lock_error : public std::exception -2441: { -2441: public: -2441: virtual char const* -2441: what() const throw() -2441: { return "__gnu_cxx::__concurrence_lock_error"; } -2441: }; -2441: -2441: class __concurrence_unlock_error : public std::exception -2441: { -2441: public: -2441: virtual char const* -2441: what() const throw() -2441: { return "__gnu_cxx::__concurrence_unlock_error"; } -2441: }; -2441: -2441: class __concurrence_broadcast_error : public std::exception -2441: { -2441: public: -2441: virtual char const* -2441: what() const throw() -2441: { return "__gnu_cxx::__concurrence_broadcast_error"; } -2441: }; -2441: -2441: class __concurrence_wait_error : public std::exception -2441: { -2441: public: -2441: virtual char const* -2441: what() const throw() -2441: { return "__gnu_cxx::__concurrence_wait_error"; } -2441: }; -2441: -2441: -2441: inline void -2441: __throw_concurrence_lock_error() -2441: { (throw (__concurrence_lock_error())); } -2441: -2441: inline void -2441: __throw_concurrence_unlock_error() -2441: { (throw (__concurrence_unlock_error())); } -2441: -2441: -2441: inline void -2441: __throw_concurrence_broadcast_error() -2441: { (throw (__concurrence_broadcast_error())); } -2441: -2441: inline void -2441: __throw_concurrence_wait_error() -2441: { (throw (__concurrence_wait_error())); } -2441: -2441: -2441: class __mutex -2441: { -2441: private: -2441: -2441: __gthread_mutex_t _M_mutex = { { 0, 0, 0, 0, 0, { { 0, 0 } } } }; -2441: -2441: -2441: -2441: -2441: __mutex(const __mutex&); -2441: __mutex& operator=(const __mutex&); -2441: -2441: public: -2441: __mutex() -2441: { -2441: -2441: -2441: -2441: -2441: } -2441: # 147 "/usr/include/c++/8/ext/concurrence.h" 3 -2441: void lock() -2441: { -2441: -2441: if (__gthread_active_p()) -2441: { -2441: if (__gthread_mutex_lock(&_M_mutex) != 0) -2441: __throw_concurrence_lock_error(); -2441: } -2441: -2441: } -2441: -2441: void unlock() -2441: { -2441: -2441: if (__gthread_active_p()) -2441: { -2441: if (__gthread_mutex_unlock(&_M_mutex) != 0) -2441: __throw_concurrence_unlock_error(); -2441: } -2441: -2441: } -2441: -2441: __gthread_mutex_t* gthread_mutex(void) -2441: { return &_M_mutex; } -2441: }; -2441: -2441: class __recursive_mutex -2441: { -2441: private: -2441: -2441: __gthread_recursive_mutex_t _M_mutex = { { 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP, 0, { { 0, 0 } } } }; -2441: -2441: -2441: -2441: -2441: __recursive_mutex(const __recursive_mutex&); -2441: __recursive_mutex& operator=(const __recursive_mutex&); -2441: -2441: public: -2441: __recursive_mutex() -2441: { -2441: -2441: -2441: -2441: -2441: } -2441: # 202 "/usr/include/c++/8/ext/concurrence.h" 3 -2441: void lock() -2441: { -2441: -2441: if (__gthread_active_p()) -2441: { -2441: if (__gthread_recursive_mutex_lock(&_M_mutex) != 0) -2441: __throw_concurrence_lock_error(); -2441: } -2441: -2441: } -2441: -2441: void unlock() -2441: { -2441: -2441: if (__gthread_active_p()) -2441: { -2441: if (__gthread_recursive_mutex_unlock(&_M_mutex) != 0) -2441: __throw_concurrence_unlock_error(); -2441: } -2441: -2441: } -2441: -2441: __gthread_recursive_mutex_t* gthread_recursive_mutex(void) -2441: { return &_M_mutex; } -2441: }; -2441: -2441: -2441: -2441: -2441: class __scoped_lock -2441: { -2441: public: -2441: typedef __mutex __mutex_type; -2441: -2441: private: -2441: __mutex_type& _M_device; -2441: -2441: __scoped_lock(const __scoped_lock&); -2441: __scoped_lock& operator=(const __scoped_lock&); -2441: -2441: public: -2441: explicit __scoped_lock(__mutex_type& __name) : _M_device(__name) -2441: { _M_device.lock(); } -2441: -2441: ~__scoped_lock() throw() -2441: { _M_device.unlock(); } -2441: }; -2441: -2441: -2441: class __cond -2441: { -2441: private: -2441: -2441: __gthread_cond_t _M_cond = { { {0}, {0}, {0, 0}, {0, 0}, 0, 0, {0, 0} } }; -2441: -2441: -2441: -2441: -2441: __cond(const __cond&); -2441: __cond& operator=(const __cond&); -2441: -2441: public: -2441: __cond() -2441: { -2441: -2441: -2441: -2441: -2441: } -2441: # 280 "/usr/include/c++/8/ext/concurrence.h" 3 -2441: void broadcast() -2441: { -2441: -2441: if (__gthread_active_p()) -2441: { -2441: if (__gthread_cond_broadcast(&_M_cond) != 0) -2441: __throw_concurrence_broadcast_error(); -2441: } -2441: -2441: } -2441: -2441: void wait(__mutex *mutex) -2441: { -2441: -2441: { -2441: if (__gthread_cond_wait(&_M_cond, mutex->gthread_mutex()) != 0) -2441: __throw_concurrence_wait_error(); -2441: } -2441: -2441: } -2441: -2441: void wait_recursive(__recursive_mutex *mutex) -2441: { -2441: -2441: { -2441: if (__gthread_cond_wait_recursive(&_M_cond, -2441: mutex->gthread_recursive_mutex()) -2441: != 0) -2441: __throw_concurrence_wait_error(); -2441: } -2441: -2441: } -2441: }; -2441: -2441: -2441: -2441: } -2441: # 75 "/usr/include/c++/8/memory" 2 3 -2441: -2441: -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/c++/8/bits/shared_ptr.h" 1 3 -2441: # 52 "/usr/include/c++/8/bits/shared_ptr.h" 3 -2441: # 1 "/usr/include/c++/8/bits/shared_ptr_base.h" 1 3 -2441: # 53 "/usr/include/c++/8/bits/shared_ptr_base.h" 3 -2441: # 1 "/usr/include/c++/8/bits/allocated_ptr.h" 1 3 -2441: # 40 "/usr/include/c++/8/bits/allocated_ptr.h" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: template -2441: struct __allocated_ptr -2441: { -2441: using pointer = typename allocator_traits<_Alloc>::pointer; -2441: using value_type = typename allocator_traits<_Alloc>::value_type; -2441: -2441: -2441: __allocated_ptr(_Alloc& __a, pointer __ptr) noexcept -2441: : _M_alloc(std::__addressof(__a)), _M_ptr(__ptr) -2441: { } -2441: -2441: -2441: template>> -2441: __allocated_ptr(_Alloc& __a, _Ptr __ptr) -2441: : _M_alloc(std::__addressof(__a)), -2441: _M_ptr(pointer_traits::pointer_to(*__ptr)) -2441: { } -2441: -2441: -2441: __allocated_ptr(__allocated_ptr&& __gd) noexcept -2441: : _M_alloc(__gd._M_alloc), _M_ptr(__gd._M_ptr) -2441: { __gd._M_ptr = nullptr; } -2441: -2441: -2441: ~__allocated_ptr() -2441: { -2441: if (_M_ptr != nullptr) -2441: std::allocator_traits<_Alloc>::deallocate(*_M_alloc, _M_ptr, 1); -2441: } -2441: -2441: -2441: __allocated_ptr& -2441: operator=(std::nullptr_t) noexcept -2441: { -2441: _M_ptr = nullptr; -2441: return *this; -2441: } -2441: -2441: -2441: value_type* get() { return std::__to_address(_M_ptr); } -2441: -2441: private: -2441: _Alloc* _M_alloc; -2441: pointer _M_ptr; -2441: }; -2441: -2441: -2441: template -2441: __allocated_ptr<_Alloc> -2441: __allocate_guarded(_Alloc& __a) -2441: { -2441: return { __a, std::allocator_traits<_Alloc>::allocate(__a, 1) }; -2441: } -2441: -2441: -2441: } -2441: # 54 "/usr/include/c++/8/bits/shared_ptr_base.h" 2 3 -2441: # 1 "/usr/include/c++/8/bits/refwrap.h" 1 3 -2441: # 33 "/usr/include/c++/8/bits/refwrap.h" 3 -2441: -2441: # 34 "/usr/include/c++/8/bits/refwrap.h" 3 -2441: # 43 "/usr/include/c++/8/bits/refwrap.h" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct _Maybe_unary_or_binary_function { }; -2441: -2441: -2441: template -2441: struct _Maybe_unary_or_binary_function<_Res, _T1> -2441: : std::unary_function<_T1, _Res> { }; -2441: -2441: -2441: template -2441: struct _Maybe_unary_or_binary_function<_Res, _T1, _T2> -2441: : std::binary_function<_T1, _T2, _Res> { }; -2441: -2441: template -2441: struct _Mem_fn_traits; -2441: -2441: template -2441: struct _Mem_fn_traits_base -2441: { -2441: using __result_type = _Res; -2441: using __maybe_type -2441: = _Maybe_unary_or_binary_function<_Res, _Class*, _ArgTypes...>; -2441: using __arity = integral_constant; -2441: }; -2441: # 97 "/usr/include/c++/8/bits/refwrap.h" 3 -2441: template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) > : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) > : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const > : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const > : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile > : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile > : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile > : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile > : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; }; -2441: template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) &> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) &> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const &> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const &> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile &> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile &> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile &> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile &> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; }; -2441: template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) &&> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) &&> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const &&> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const &&> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile &&> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile &&> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile &&> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile &&> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; }; -2441: # 111 "/usr/include/c++/8/bits/refwrap.h" 3 -2441: template> -2441: struct _Maybe_get_result_type -2441: { }; -2441: -2441: template -2441: struct _Maybe_get_result_type<_Functor, -2441: __void_t> -2441: { typedef typename _Functor::result_type result_type; }; -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct _Weak_result_type_impl -2441: : _Maybe_get_result_type<_Functor> -2441: { }; -2441: -2441: -2441: template -2441: struct _Weak_result_type_impl<_Res(_ArgTypes...) > -2441: { typedef _Res result_type; }; -2441: -2441: -2441: template -2441: struct _Weak_result_type_impl<_Res(_ArgTypes......) > -2441: { typedef _Res result_type; }; -2441: -2441: -2441: template -2441: struct _Weak_result_type_impl<_Res(*)(_ArgTypes...) > -2441: { typedef _Res result_type; }; -2441: -2441: -2441: template -2441: struct -2441: _Weak_result_type_impl<_Res(*)(_ArgTypes......) > -2441: { typedef _Res result_type; }; -2441: -2441: -2441: template::value> -2441: struct _Weak_result_type_memfun -2441: : _Weak_result_type_impl<_Functor> -2441: { }; -2441: -2441: -2441: template -2441: struct _Weak_result_type_memfun<_MemFunPtr, true> -2441: { -2441: using result_type = typename _Mem_fn_traits<_MemFunPtr>::__result_type; -2441: }; -2441: -2441: -2441: template -2441: struct _Weak_result_type_memfun<_Func _Class::*, false> -2441: { }; -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct _Weak_result_type -2441: : _Weak_result_type_memfun::type> -2441: { }; -2441: -2441: -2441: template> -2441: struct _Refwrap_base_arg1 -2441: { }; -2441: -2441: -2441: template -2441: struct _Refwrap_base_arg1<_Tp, -2441: __void_t> -2441: { -2441: typedef typename _Tp::argument_type argument_type; -2441: }; -2441: -2441: -2441: template> -2441: struct _Refwrap_base_arg2 -2441: { }; -2441: -2441: -2441: template -2441: struct _Refwrap_base_arg2<_Tp, -2441: __void_t> -2441: { -2441: typedef typename _Tp::first_argument_type first_argument_type; -2441: typedef typename _Tp::second_argument_type second_argument_type; -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct _Reference_wrapper_base -2441: : _Weak_result_type<_Tp>, _Refwrap_base_arg1<_Tp>, _Refwrap_base_arg2<_Tp> -2441: { }; -2441: -2441: -2441: template -2441: struct _Reference_wrapper_base<_Res(_T1) > -2441: : unary_function<_T1, _Res> -2441: { }; -2441: -2441: template -2441: struct _Reference_wrapper_base<_Res(_T1) const> -2441: : unary_function<_T1, _Res> -2441: { }; -2441: -2441: template -2441: struct _Reference_wrapper_base<_Res(_T1) volatile> -2441: : unary_function<_T1, _Res> -2441: { }; -2441: -2441: template -2441: struct _Reference_wrapper_base<_Res(_T1) const volatile> -2441: : unary_function<_T1, _Res> -2441: { }; -2441: -2441: -2441: template -2441: struct _Reference_wrapper_base<_Res(_T1, _T2) > -2441: : binary_function<_T1, _T2, _Res> -2441: { }; -2441: -2441: template -2441: struct _Reference_wrapper_base<_Res(_T1, _T2) const> -2441: : binary_function<_T1, _T2, _Res> -2441: { }; -2441: -2441: template -2441: struct _Reference_wrapper_base<_Res(_T1, _T2) volatile> -2441: : binary_function<_T1, _T2, _Res> -2441: { }; -2441: -2441: template -2441: struct _Reference_wrapper_base<_Res(_T1, _T2) const volatile> -2441: : binary_function<_T1, _T2, _Res> -2441: { }; -2441: -2441: -2441: template -2441: struct _Reference_wrapper_base<_Res(*)(_T1) > -2441: : unary_function<_T1, _Res> -2441: { }; -2441: -2441: -2441: template -2441: struct _Reference_wrapper_base<_Res(*)(_T1, _T2) > -2441: : binary_function<_T1, _T2, _Res> -2441: { }; -2441: -2441: template::value> -2441: struct _Reference_wrapper_base_memfun -2441: : _Reference_wrapper_base<_Tp> -2441: { }; -2441: -2441: template -2441: struct _Reference_wrapper_base_memfun<_MemFunPtr, true> -2441: : _Mem_fn_traits<_MemFunPtr>::__maybe_type -2441: { -2441: using result_type = typename _Mem_fn_traits<_MemFunPtr>::__result_type; -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: class reference_wrapper -2441: : public _Reference_wrapper_base_memfun::type> -2441: { -2441: _Tp* _M_data; -2441: -2441: public: -2441: typedef _Tp type; -2441: -2441: reference_wrapper(_Tp& __indata) noexcept -2441: : _M_data(std::__addressof(__indata)) -2441: { } -2441: -2441: reference_wrapper(_Tp&&) = delete; -2441: -2441: reference_wrapper(const reference_wrapper&) = default; -2441: -2441: reference_wrapper& -2441: operator=(const reference_wrapper&) = default; -2441: -2441: operator _Tp&() const noexcept -2441: { return this->get(); } -2441: -2441: _Tp& -2441: get() const noexcept -2441: { return *_M_data; } -2441: -2441: template -2441: typename result_of<_Tp&(_Args&&...)>::type -2441: operator()(_Args&&... __args) const -2441: { -2441: return std::__invoke(get(), std::forward<_Args>(__args)...); -2441: } -2441: }; -2441: -2441: -2441: -2441: template -2441: inline reference_wrapper<_Tp> -2441: ref(_Tp& __t) noexcept -2441: { return reference_wrapper<_Tp>(__t); } -2441: -2441: -2441: template -2441: inline reference_wrapper -2441: cref(const _Tp& __t) noexcept -2441: { return reference_wrapper(__t); } -2441: -2441: template -2441: void ref(const _Tp&&) = delete; -2441: -2441: template -2441: void cref(const _Tp&&) = delete; -2441: -2441: -2441: template -2441: inline reference_wrapper<_Tp> -2441: ref(reference_wrapper<_Tp> __t) noexcept -2441: { return __t; } -2441: -2441: -2441: template -2441: inline reference_wrapper -2441: cref(reference_wrapper<_Tp> __t) noexcept -2441: { return { __t.get() }; } -2441: -2441: -2441: -2441: -2441: } -2441: # 55 "/usr/include/c++/8/bits/shared_ptr_base.h" 2 3 -2441: -2441: -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: #pragma GCC diagnostic push -2441: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" -2441: template class auto_ptr; -2441: #pragma GCC diagnostic pop -2441: -2441: -2441: -2441: -2441: -2441: -2441: class bad_weak_ptr : public std::exception -2441: { -2441: public: -2441: virtual char const* what() const noexcept; -2441: -2441: virtual ~bad_weak_ptr() noexcept; -2441: }; -2441: -2441: -2441: inline void -2441: __throw_bad_weak_ptr() -2441: { (throw (bad_weak_ptr())); } -2441: -2441: using __gnu_cxx::_Lock_policy; -2441: using __gnu_cxx::__default_lock_policy; -2441: using __gnu_cxx::_S_single; -2441: using __gnu_cxx::_S_mutex; -2441: using __gnu_cxx::_S_atomic; -2441: -2441: -2441: template<_Lock_policy _Lp> -2441: class _Mutex_base -2441: { -2441: protected: -2441: -2441: enum { _S_need_barriers = 0 }; -2441: }; -2441: -2441: template<> -2441: class _Mutex_base<_S_mutex> -2441: : public __gnu_cxx::__mutex -2441: { -2441: protected: -2441: -2441: -2441: -2441: enum { _S_need_barriers = 1 }; -2441: }; -2441: -2441: template<_Lock_policy _Lp = __default_lock_policy> -2441: class _Sp_counted_base -2441: : public _Mutex_base<_Lp> -2441: { -2441: public: -2441: _Sp_counted_base() noexcept -2441: : _M_use_count(1), _M_weak_count(1) { } -2441: -2441: virtual -2441: ~_Sp_counted_base() noexcept -2441: { } -2441: -2441: -2441: -2441: virtual void -2441: _M_dispose() noexcept = 0; -2441: -2441: -2441: virtual void -2441: _M_destroy() noexcept -2441: { delete this; } -2441: -2441: virtual void* -2441: _M_get_deleter(const std::type_info&) noexcept = 0; -2441: -2441: void -2441: _M_add_ref_copy() -2441: { __gnu_cxx::__atomic_add_dispatch(&_M_use_count, 1); } -2441: -2441: void -2441: _M_add_ref_lock(); -2441: -2441: bool -2441: _M_add_ref_lock_nothrow(); -2441: -2441: void -2441: _M_release() noexcept -2441: { -2441: -2441: ; -2441: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, -1) == 1) -2441: { -2441: ; -2441: _M_dispose(); -2441: -2441: -2441: -2441: -2441: if (_Mutex_base<_Lp>::_S_need_barriers) -2441: { -2441: __atomic_thread_fence (4); -2441: } -2441: -2441: -2441: ; -2441: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_weak_count, -2441: -1) == 1) -2441: { -2441: ; -2441: _M_destroy(); -2441: } -2441: } -2441: } -2441: -2441: void -2441: _M_weak_add_ref() noexcept -2441: { __gnu_cxx::__atomic_add_dispatch(&_M_weak_count, 1); } -2441: -2441: void -2441: _M_weak_release() noexcept -2441: { -2441: -2441: ; -2441: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_weak_count, -1) == 1) -2441: { -2441: ; -2441: if (_Mutex_base<_Lp>::_S_need_barriers) -2441: { -2441: -2441: -2441: __atomic_thread_fence (4); -2441: } -2441: _M_destroy(); -2441: } -2441: } -2441: -2441: long -2441: _M_get_use_count() const noexcept -2441: { -2441: -2441: -2441: return __atomic_load_n(&_M_use_count, 0); -2441: } -2441: -2441: private: -2441: _Sp_counted_base(_Sp_counted_base const&) = delete; -2441: _Sp_counted_base& operator=(_Sp_counted_base const&) = delete; -2441: -2441: _Atomic_word _M_use_count; -2441: _Atomic_word _M_weak_count; -2441: }; -2441: -2441: template<> -2441: inline void -2441: _Sp_counted_base<_S_single>:: -2441: _M_add_ref_lock() -2441: { -2441: if (_M_use_count == 0) -2441: __throw_bad_weak_ptr(); -2441: ++_M_use_count; -2441: } -2441: -2441: template<> -2441: inline void -2441: _Sp_counted_base<_S_mutex>:: -2441: _M_add_ref_lock() -2441: { -2441: __gnu_cxx::__scoped_lock sentry(*this); -2441: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, 1) == 0) -2441: { -2441: _M_use_count = 0; -2441: __throw_bad_weak_ptr(); -2441: } -2441: } -2441: -2441: template<> -2441: inline void -2441: _Sp_counted_base<_S_atomic>:: -2441: _M_add_ref_lock() -2441: { -2441: -2441: _Atomic_word __count = _M_get_use_count(); -2441: do -2441: { -2441: if (__count == 0) -2441: __throw_bad_weak_ptr(); -2441: -2441: -2441: } -2441: while (!__atomic_compare_exchange_n(&_M_use_count, &__count, __count + 1, -2441: true, 4, -2441: 0)); -2441: } -2441: -2441: template<> -2441: inline bool -2441: _Sp_counted_base<_S_single>:: -2441: _M_add_ref_lock_nothrow() -2441: { -2441: if (_M_use_count == 0) -2441: return false; -2441: ++_M_use_count; -2441: return true; -2441: } -2441: -2441: template<> -2441: inline bool -2441: _Sp_counted_base<_S_mutex>:: -2441: _M_add_ref_lock_nothrow() -2441: { -2441: __gnu_cxx::__scoped_lock sentry(*this); -2441: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, 1) == 0) -2441: { -2441: _M_use_count = 0; -2441: return false; -2441: } -2441: return true; -2441: } -2441: -2441: template<> -2441: inline bool -2441: _Sp_counted_base<_S_atomic>:: -2441: _M_add_ref_lock_nothrow() -2441: { -2441: -2441: _Atomic_word __count = _M_get_use_count(); -2441: do -2441: { -2441: if (__count == 0) -2441: return false; -2441: -2441: -2441: } -2441: while (!__atomic_compare_exchange_n(&_M_use_count, &__count, __count + 1, -2441: true, 4, -2441: 0)); -2441: return true; -2441: } -2441: -2441: template<> -2441: inline void -2441: _Sp_counted_base<_S_single>::_M_add_ref_copy() -2441: { ++_M_use_count; } -2441: -2441: template<> -2441: inline void -2441: _Sp_counted_base<_S_single>::_M_release() noexcept -2441: { -2441: if (--_M_use_count == 0) -2441: { -2441: _M_dispose(); -2441: if (--_M_weak_count == 0) -2441: _M_destroy(); -2441: } -2441: } -2441: -2441: template<> -2441: inline void -2441: _Sp_counted_base<_S_single>::_M_weak_add_ref() noexcept -2441: { ++_M_weak_count; } -2441: -2441: template<> -2441: inline void -2441: _Sp_counted_base<_S_single>::_M_weak_release() noexcept -2441: { -2441: if (--_M_weak_count == 0) -2441: _M_destroy(); -2441: } -2441: -2441: template<> -2441: inline long -2441: _Sp_counted_base<_S_single>::_M_get_use_count() const noexcept -2441: { return _M_use_count; } -2441: -2441: -2441: -2441: template -2441: class __shared_ptr; -2441: -2441: template -2441: class __weak_ptr; -2441: -2441: template -2441: class __enable_shared_from_this; -2441: -2441: template -2441: class shared_ptr; -2441: -2441: template -2441: class weak_ptr; -2441: -2441: template -2441: struct owner_less; -2441: -2441: template -2441: class enable_shared_from_this; -2441: -2441: template<_Lock_policy _Lp = __default_lock_policy> -2441: class __weak_count; -2441: -2441: template<_Lock_policy _Lp = __default_lock_policy> -2441: class __shared_count; -2441: -2441: -2441: -2441: template -2441: class _Sp_counted_ptr final : public _Sp_counted_base<_Lp> -2441: { -2441: public: -2441: explicit -2441: _Sp_counted_ptr(_Ptr __p) noexcept -2441: : _M_ptr(__p) { } -2441: -2441: virtual void -2441: _M_dispose() noexcept -2441: { delete _M_ptr; } -2441: -2441: virtual void -2441: _M_destroy() noexcept -2441: { delete this; } -2441: -2441: virtual void* -2441: _M_get_deleter(const std::type_info&) noexcept -2441: { return nullptr; } -2441: -2441: _Sp_counted_ptr(const _Sp_counted_ptr&) = delete; -2441: _Sp_counted_ptr& operator=(const _Sp_counted_ptr&) = delete; -2441: -2441: private: -2441: _Ptr _M_ptr; -2441: }; -2441: -2441: template<> -2441: inline void -2441: _Sp_counted_ptr::_M_dispose() noexcept { } -2441: -2441: template<> -2441: inline void -2441: _Sp_counted_ptr::_M_dispose() noexcept { } -2441: -2441: template<> -2441: inline void -2441: _Sp_counted_ptr::_M_dispose() noexcept { } -2441: -2441: template -2441: struct _Sp_ebo_helper; -2441: -2441: -2441: template -2441: struct _Sp_ebo_helper<_Nm, _Tp, true> : private _Tp -2441: { -2441: explicit _Sp_ebo_helper(const _Tp& __tp) : _Tp(__tp) { } -2441: explicit _Sp_ebo_helper(_Tp&& __tp) : _Tp(std::move(__tp)) { } -2441: -2441: static _Tp& -2441: _S_get(_Sp_ebo_helper& __eboh) { return static_cast<_Tp&>(__eboh); } -2441: }; -2441: -2441: -2441: template -2441: struct _Sp_ebo_helper<_Nm, _Tp, false> -2441: { -2441: explicit _Sp_ebo_helper(const _Tp& __tp) : _M_tp(__tp) { } -2441: explicit _Sp_ebo_helper(_Tp&& __tp) : _M_tp(std::move(__tp)) { } -2441: -2441: static _Tp& -2441: _S_get(_Sp_ebo_helper& __eboh) -2441: { return __eboh._M_tp; } -2441: -2441: private: -2441: _Tp _M_tp; -2441: }; -2441: -2441: -2441: template -2441: class _Sp_counted_deleter final : public _Sp_counted_base<_Lp> -2441: { -2441: class _Impl : _Sp_ebo_helper<0, _Deleter>, _Sp_ebo_helper<1, _Alloc> -2441: { -2441: typedef _Sp_ebo_helper<0, _Deleter> _Del_base; -2441: typedef _Sp_ebo_helper<1, _Alloc> _Alloc_base; -2441: -2441: public: -2441: _Impl(_Ptr __p, _Deleter __d, const _Alloc& __a) noexcept -2441: : _M_ptr(__p), _Del_base(std::move(__d)), _Alloc_base(__a) -2441: { } -2441: -2441: _Deleter& _M_del() noexcept { return _Del_base::_S_get(*this); } -2441: _Alloc& _M_alloc() noexcept { return _Alloc_base::_S_get(*this); } -2441: -2441: _Ptr _M_ptr; -2441: }; -2441: -2441: public: -2441: using __allocator_type = __alloc_rebind<_Alloc, _Sp_counted_deleter>; -2441: -2441: -2441: _Sp_counted_deleter(_Ptr __p, _Deleter __d) noexcept -2441: : _M_impl(__p, std::move(__d), _Alloc()) { } -2441: -2441: -2441: _Sp_counted_deleter(_Ptr __p, _Deleter __d, const _Alloc& __a) noexcept -2441: : _M_impl(__p, std::move(__d), __a) { } -2441: -2441: ~_Sp_counted_deleter() noexcept { } -2441: -2441: virtual void -2441: _M_dispose() noexcept -2441: { _M_impl._M_del()(_M_impl._M_ptr); } -2441: -2441: virtual void -2441: _M_destroy() noexcept -2441: { -2441: __allocator_type __a(_M_impl._M_alloc()); -2441: __allocated_ptr<__allocator_type> __guard_ptr{ __a, this }; -2441: this->~_Sp_counted_deleter(); -2441: } -2441: -2441: virtual void* -2441: _M_get_deleter(const std::type_info& __ti) noexcept -2441: { -2441: -2441: -2441: -2441: return __ti == typeid(_Deleter) -2441: ? std::__addressof(_M_impl._M_del()) -2441: : nullptr; -2441: -2441: -2441: -2441: } -2441: -2441: private: -2441: _Impl _M_impl; -2441: }; -2441: -2441: -2441: -2441: struct _Sp_make_shared_tag -2441: { -2441: private: -2441: template -2441: friend class _Sp_counted_ptr_inplace; -2441: -2441: static const type_info& -2441: _S_ti() noexcept __attribute__ ((__visibility__ ("default"))) -2441: { -2441: alignas(type_info) static constexpr char __tag[sizeof(type_info)] = { }; -2441: return reinterpret_cast(__tag); -2441: } -2441: }; -2441: -2441: template -2441: struct _Sp_alloc_shared_tag -2441: { -2441: const _Alloc& _M_a; -2441: }; -2441: -2441: template -2441: class _Sp_counted_ptr_inplace final : public _Sp_counted_base<_Lp> -2441: { -2441: class _Impl : _Sp_ebo_helper<0, _Alloc> -2441: { -2441: typedef _Sp_ebo_helper<0, _Alloc> _A_base; -2441: -2441: public: -2441: explicit _Impl(_Alloc __a) noexcept : _A_base(__a) { } -2441: -2441: _Alloc& _M_alloc() noexcept { return _A_base::_S_get(*this); } -2441: -2441: __gnu_cxx::__aligned_buffer<_Tp> _M_storage; -2441: }; -2441: -2441: public: -2441: using __allocator_type = __alloc_rebind<_Alloc, _Sp_counted_ptr_inplace>; -2441: -2441: template -2441: _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args) -2441: : _M_impl(__a) -2441: { -2441: -2441: -2441: allocator_traits<_Alloc>::construct(__a, _M_ptr(), -2441: std::forward<_Args>(__args)...); -2441: } -2441: -2441: ~_Sp_counted_ptr_inplace() noexcept { } -2441: -2441: virtual void -2441: _M_dispose() noexcept -2441: { -2441: allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr()); -2441: } -2441: -2441: -2441: virtual void -2441: _M_destroy() noexcept -2441: { -2441: __allocator_type __a(_M_impl._M_alloc()); -2441: __allocated_ptr<__allocator_type> __guard_ptr{ __a, this }; -2441: this->~_Sp_counted_ptr_inplace(); -2441: } -2441: -2441: private: -2441: friend class __shared_count<_Lp>; -2441: -2441: -2441: -2441: virtual void* -2441: _M_get_deleter(const std::type_info& __ti) noexcept override -2441: { -2441: -2441: -2441: if (&__ti == &_Sp_make_shared_tag::_S_ti()) -2441: return const_cast::type*>(_M_ptr()); -2441: -2441: -2441: -2441: else if (__ti == typeid(_Sp_make_shared_tag)) -2441: return const_cast::type*>(_M_ptr()); -2441: -2441: -2441: -2441: -2441: -2441: -2441: return nullptr; -2441: } -2441: -2441: _Tp* _M_ptr() noexcept { return _M_impl._M_storage._M_ptr(); } -2441: -2441: _Impl _M_impl; -2441: }; -2441: -2441: -2441: struct __sp_array_delete -2441: { -2441: template -2441: void operator()(_Yp* __p) const { delete[] __p; } -2441: }; -2441: -2441: template<_Lock_policy _Lp> -2441: class __shared_count -2441: { -2441: template -2441: struct __not_alloc_shared_tag { using type = void; }; -2441: -2441: template -2441: struct __not_alloc_shared_tag<_Sp_alloc_shared_tag<_Tp>> { }; -2441: -2441: public: -2441: constexpr __shared_count() noexcept : _M_pi(0) -2441: { } -2441: -2441: template -2441: explicit -2441: __shared_count(_Ptr __p) : _M_pi(0) -2441: { -2441: try -2441: { -2441: _M_pi = new _Sp_counted_ptr<_Ptr, _Lp>(__p); -2441: } -2441: catch(...) -2441: { -2441: delete __p; -2441: throw; -2441: } -2441: } -2441: -2441: template -2441: __shared_count(_Ptr __p, false_type) -2441: : __shared_count(__p) -2441: { } -2441: -2441: template -2441: __shared_count(_Ptr __p, true_type) -2441: : __shared_count(__p, __sp_array_delete{}, allocator()) -2441: { } -2441: -2441: template::type> -2441: __shared_count(_Ptr __p, _Deleter __d) -2441: : __shared_count(__p, std::move(__d), allocator()) -2441: { } -2441: -2441: template::type> -2441: __shared_count(_Ptr __p, _Deleter __d, _Alloc __a) : _M_pi(0) -2441: { -2441: typedef _Sp_counted_deleter<_Ptr, _Deleter, _Alloc, _Lp> _Sp_cd_type; -2441: try -2441: { -2441: typename _Sp_cd_type::__allocator_type __a2(__a); -2441: auto __guard = std::__allocate_guarded(__a2); -2441: _Sp_cd_type* __mem = __guard.get(); -2441: ::new (__mem) _Sp_cd_type(__p, std::move(__d), std::move(__a)); -2441: _M_pi = __mem; -2441: __guard = nullptr; -2441: } -2441: catch(...) -2441: { -2441: __d(__p); -2441: throw; -2441: } -2441: } -2441: -2441: template -2441: __shared_count(_Tp*& __p, _Sp_alloc_shared_tag<_Alloc> __a, -2441: _Args&&... __args) -2441: { -2441: typedef _Sp_counted_ptr_inplace<_Tp, _Alloc, _Lp> _Sp_cp_type; -2441: typename _Sp_cp_type::__allocator_type __a2(__a._M_a); -2441: auto __guard = std::__allocate_guarded(__a2); -2441: _Sp_cp_type* __mem = __guard.get(); -2441: auto __pi = ::new (__mem) -2441: _Sp_cp_type(__a._M_a, std::forward<_Args>(__args)...); -2441: __guard = nullptr; -2441: _M_pi = __pi; -2441: __p = __pi->_M_ptr(); -2441: } -2441: -2441: -2441: #pragma GCC diagnostic push -2441: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" -2441: -2441: template -2441: explicit -2441: __shared_count(std::auto_ptr<_Tp>&& __r); -2441: #pragma GCC diagnostic pop -2441: -2441: -2441: -2441: template -2441: explicit -2441: __shared_count(std::unique_ptr<_Tp, _Del>&& __r) : _M_pi(0) -2441: { -2441: -2441: -2441: if (__r.get() == nullptr) -2441: return; -2441: -2441: using _Ptr = typename unique_ptr<_Tp, _Del>::pointer; -2441: using _Del2 = typename conditional::value, -2441: reference_wrapper::type>, -2441: _Del>::type; -2441: using _Sp_cd_type -2441: = _Sp_counted_deleter<_Ptr, _Del2, allocator, _Lp>; -2441: using _Alloc = allocator<_Sp_cd_type>; -2441: using _Alloc_traits = allocator_traits<_Alloc>; -2441: _Alloc __a; -2441: _Sp_cd_type* __mem = _Alloc_traits::allocate(__a, 1); -2441: _Alloc_traits::construct(__a, __mem, __r.release(), -2441: __r.get_deleter()); -2441: _M_pi = __mem; -2441: } -2441: -2441: -2441: explicit __shared_count(const __weak_count<_Lp>& __r); -2441: -2441: -2441: explicit __shared_count(const __weak_count<_Lp>& __r, std::nothrow_t); -2441: -2441: ~__shared_count() noexcept -2441: { -2441: if (_M_pi != nullptr) -2441: _M_pi->_M_release(); -2441: } -2441: -2441: __shared_count(const __shared_count& __r) noexcept -2441: : _M_pi(__r._M_pi) -2441: { -2441: if (_M_pi != 0) -2441: _M_pi->_M_add_ref_copy(); -2441: } -2441: -2441: __shared_count& -2441: operator=(const __shared_count& __r) noexcept -2441: { -2441: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; -2441: if (__tmp != _M_pi) -2441: { -2441: if (__tmp != 0) -2441: __tmp->_M_add_ref_copy(); -2441: if (_M_pi != 0) -2441: _M_pi->_M_release(); -2441: _M_pi = __tmp; -2441: } -2441: return *this; -2441: } -2441: -2441: void -2441: _M_swap(__shared_count& __r) noexcept -2441: { -2441: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; -2441: __r._M_pi = _M_pi; -2441: _M_pi = __tmp; -2441: } -2441: -2441: long -2441: _M_get_use_count() const noexcept -2441: { return _M_pi != 0 ? _M_pi->_M_get_use_count() : 0; } -2441: -2441: bool -2441: _M_unique() const noexcept -2441: { return this->_M_get_use_count() == 1; } -2441: -2441: void* -2441: _M_get_deleter(const std::type_info& __ti) const noexcept -2441: { return _M_pi ? _M_pi->_M_get_deleter(__ti) : nullptr; } -2441: -2441: bool -2441: _M_less(const __shared_count& __rhs) const noexcept -2441: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } -2441: -2441: bool -2441: _M_less(const __weak_count<_Lp>& __rhs) const noexcept -2441: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } -2441: -2441: -2441: friend inline bool -2441: operator==(const __shared_count& __a, const __shared_count& __b) noexcept -2441: { return __a._M_pi == __b._M_pi; } -2441: -2441: private: -2441: friend class __weak_count<_Lp>; -2441: -2441: _Sp_counted_base<_Lp>* _M_pi; -2441: }; -2441: -2441: -2441: template<_Lock_policy _Lp> -2441: class __weak_count -2441: { -2441: public: -2441: constexpr __weak_count() noexcept : _M_pi(nullptr) -2441: { } -2441: -2441: __weak_count(const __shared_count<_Lp>& __r) noexcept -2441: : _M_pi(__r._M_pi) -2441: { -2441: if (_M_pi != nullptr) -2441: _M_pi->_M_weak_add_ref(); -2441: } -2441: -2441: __weak_count(const __weak_count& __r) noexcept -2441: : _M_pi(__r._M_pi) -2441: { -2441: if (_M_pi != nullptr) -2441: _M_pi->_M_weak_add_ref(); -2441: } -2441: -2441: __weak_count(__weak_count&& __r) noexcept -2441: : _M_pi(__r._M_pi) -2441: { __r._M_pi = nullptr; } -2441: -2441: ~__weak_count() noexcept -2441: { -2441: if (_M_pi != nullptr) -2441: _M_pi->_M_weak_release(); -2441: } -2441: -2441: __weak_count& -2441: operator=(const __shared_count<_Lp>& __r) noexcept -2441: { -2441: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; -2441: if (__tmp != nullptr) -2441: __tmp->_M_weak_add_ref(); -2441: if (_M_pi != nullptr) -2441: _M_pi->_M_weak_release(); -2441: _M_pi = __tmp; -2441: return *this; -2441: } -2441: -2441: __weak_count& -2441: operator=(const __weak_count& __r) noexcept -2441: { -2441: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; -2441: if (__tmp != nullptr) -2441: __tmp->_M_weak_add_ref(); -2441: if (_M_pi != nullptr) -2441: _M_pi->_M_weak_release(); -2441: _M_pi = __tmp; -2441: return *this; -2441: } -2441: -2441: __weak_count& -2441: operator=(__weak_count&& __r) noexcept -2441: { -2441: if (_M_pi != nullptr) -2441: _M_pi->_M_weak_release(); -2441: _M_pi = __r._M_pi; -2441: __r._M_pi = nullptr; -2441: return *this; -2441: } -2441: -2441: void -2441: _M_swap(__weak_count& __r) noexcept -2441: { -2441: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; -2441: __r._M_pi = _M_pi; -2441: _M_pi = __tmp; -2441: } -2441: -2441: long -2441: _M_get_use_count() const noexcept -2441: { return _M_pi != nullptr ? _M_pi->_M_get_use_count() : 0; } -2441: -2441: bool -2441: _M_less(const __weak_count& __rhs) const noexcept -2441: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } -2441: -2441: bool -2441: _M_less(const __shared_count<_Lp>& __rhs) const noexcept -2441: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } -2441: -2441: -2441: friend inline bool -2441: operator==(const __weak_count& __a, const __weak_count& __b) noexcept -2441: { return __a._M_pi == __b._M_pi; } -2441: -2441: private: -2441: friend class __shared_count<_Lp>; -2441: -2441: _Sp_counted_base<_Lp>* _M_pi; -2441: }; -2441: -2441: -2441: template<_Lock_policy _Lp> -2441: inline -2441: __shared_count<_Lp>::__shared_count(const __weak_count<_Lp>& __r) -2441: : _M_pi(__r._M_pi) -2441: { -2441: if (_M_pi != nullptr) -2441: _M_pi->_M_add_ref_lock(); -2441: else -2441: __throw_bad_weak_ptr(); -2441: } -2441: -2441: -2441: template<_Lock_policy _Lp> -2441: inline -2441: __shared_count<_Lp>:: -2441: __shared_count(const __weak_count<_Lp>& __r, std::nothrow_t) -2441: : _M_pi(__r._M_pi) -2441: { -2441: if (_M_pi != nullptr) -2441: if (!_M_pi->_M_add_ref_lock_nothrow()) -2441: _M_pi = nullptr; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: struct __sp_compatible_with -2441: : false_type -2441: { }; -2441: -2441: template -2441: struct __sp_compatible_with<_Yp*, _Tp*> -2441: : is_convertible<_Yp*, _Tp*>::type -2441: { }; -2441: -2441: template -2441: struct __sp_compatible_with<_Up(*)[_Nm], _Up(*)[]> -2441: : true_type -2441: { }; -2441: -2441: template -2441: struct __sp_compatible_with<_Up(*)[_Nm], const _Up(*)[]> -2441: : true_type -2441: { }; -2441: -2441: template -2441: struct __sp_compatible_with<_Up(*)[_Nm], volatile _Up(*)[]> -2441: : true_type -2441: { }; -2441: -2441: template -2441: struct __sp_compatible_with<_Up(*)[_Nm], const volatile _Up(*)[]> -2441: : true_type -2441: { }; -2441: -2441: -2441: template -2441: struct __sp_is_constructible_arrN -2441: : false_type -2441: { }; -2441: -2441: template -2441: struct __sp_is_constructible_arrN<_Up, _Nm, _Yp, __void_t<_Yp[_Nm]>> -2441: : is_convertible<_Yp(*)[_Nm], _Up(*)[_Nm]>::type -2441: { }; -2441: -2441: -2441: template -2441: struct __sp_is_constructible_arr -2441: : false_type -2441: { }; -2441: -2441: template -2441: struct __sp_is_constructible_arr<_Up, _Yp, __void_t<_Yp[]>> -2441: : is_convertible<_Yp(*)[], _Up(*)[]>::type -2441: { }; -2441: -2441: -2441: template -2441: struct __sp_is_constructible; -2441: -2441: -2441: template -2441: struct __sp_is_constructible<_Up[_Nm], _Yp> -2441: : __sp_is_constructible_arrN<_Up, _Nm, _Yp>::type -2441: { }; -2441: -2441: -2441: template -2441: struct __sp_is_constructible<_Up[], _Yp> -2441: : __sp_is_constructible_arr<_Up, _Yp>::type -2441: { }; -2441: -2441: -2441: template -2441: struct __sp_is_constructible -2441: : is_convertible<_Yp*, _Tp*>::type -2441: { }; -2441: -2441: -2441: -2441: template::value, bool = is_void<_Tp>::value> -2441: class __shared_ptr_access -2441: { -2441: public: -2441: using element_type = _Tp; -2441: -2441: element_type& -2441: operator*() const noexcept -2441: { -2441: ; -2441: return *_M_get(); -2441: } -2441: -2441: element_type* -2441: operator->() const noexcept -2441: { -2441: ; -2441: return _M_get(); -2441: } -2441: -2441: private: -2441: element_type* -2441: _M_get() const noexcept -2441: { return static_cast*>(this)->get(); } -2441: }; -2441: -2441: -2441: template -2441: class __shared_ptr_access<_Tp, _Lp, false, true> -2441: { -2441: public: -2441: using element_type = _Tp; -2441: -2441: element_type* -2441: operator->() const noexcept -2441: { -2441: auto __ptr = static_cast*>(this)->get(); -2441: ; -2441: return __ptr; -2441: } -2441: }; -2441: -2441: -2441: template -2441: class __shared_ptr_access<_Tp, _Lp, true, false> -2441: { -2441: public: -2441: using element_type = typename remove_extent<_Tp>::type; -2441: -2441: -2441: [[__deprecated__("shared_ptr::operator* is absent from C++17")]] -2441: element_type& -2441: operator*() const noexcept -2441: { -2441: ; -2441: return *_M_get(); -2441: } -2441: -2441: [[__deprecated__("shared_ptr::operator-> is absent from C++17")]] -2441: element_type* -2441: operator->() const noexcept -2441: { -2441: ; -2441: return _M_get(); -2441: } -2441: -2441: -2441: element_type& -2441: operator[](ptrdiff_t __i) const -2441: { -2441: ; -2441: ; -2441: return _M_get()[__i]; -2441: } -2441: -2441: private: -2441: element_type* -2441: _M_get() const noexcept -2441: { return static_cast*>(this)->get(); } -2441: }; -2441: -2441: template -2441: class __shared_ptr -2441: : public __shared_ptr_access<_Tp, _Lp> -2441: { -2441: public: -2441: using element_type = typename remove_extent<_Tp>::type; -2441: -2441: private: -2441: -2441: template -2441: using _SafeConv -2441: = typename enable_if<__sp_is_constructible<_Tp, _Yp>::value>::type; -2441: -2441: -2441: template -2441: using _Compatible = typename -2441: enable_if<__sp_compatible_with<_Yp*, _Tp*>::value, _Res>::type; -2441: -2441: -2441: template -2441: using _Assignable = _Compatible<_Yp, __shared_ptr&>; -2441: -2441: -2441: template::pointer> -2441: using _UniqCompatible = typename enable_if<__and_< -2441: __sp_compatible_with<_Yp*, _Tp*>, is_convertible<_Ptr, element_type*> -2441: >::value, _Res>::type; -2441: -2441: -2441: template -2441: using _UniqAssignable = _UniqCompatible<_Yp, _Del, __shared_ptr&>; -2441: -2441: public: -2441: -2441: -2441: -2441: -2441: -2441: constexpr __shared_ptr() noexcept -2441: : _M_ptr(0), _M_refcount() -2441: { } -2441: -2441: template> -2441: explicit -2441: __shared_ptr(_Yp* __p) -2441: : _M_ptr(__p), _M_refcount(__p, typename is_array<_Tp>::type()) -2441: { -2441: static_assert( !is_void<_Yp>::value, "incomplete type" ); -2441: static_assert( sizeof(_Yp) > 0, "incomplete type" ); -2441: _M_enable_shared_from_this_with(__p); -2441: } -2441: -2441: template> -2441: __shared_ptr(_Yp* __p, _Deleter __d) -2441: : _M_ptr(__p), _M_refcount(__p, std::move(__d)) -2441: { -2441: static_assert(__is_invocable<_Deleter&, _Yp*&>::value, -2441: "deleter expression d(p) is well-formed"); -2441: _M_enable_shared_from_this_with(__p); -2441: } -2441: -2441: template> -2441: __shared_ptr(_Yp* __p, _Deleter __d, _Alloc __a) -2441: : _M_ptr(__p), _M_refcount(__p, std::move(__d), std::move(__a)) -2441: { -2441: static_assert(__is_invocable<_Deleter&, _Yp*&>::value, -2441: "deleter expression d(p) is well-formed"); -2441: _M_enable_shared_from_this_with(__p); -2441: } -2441: -2441: template -2441: __shared_ptr(nullptr_t __p, _Deleter __d) -2441: : _M_ptr(0), _M_refcount(__p, std::move(__d)) -2441: { } -2441: -2441: template -2441: __shared_ptr(nullptr_t __p, _Deleter __d, _Alloc __a) -2441: : _M_ptr(0), _M_refcount(__p, std::move(__d), std::move(__a)) -2441: { } -2441: -2441: template -2441: __shared_ptr(const __shared_ptr<_Yp, _Lp>& __r, -2441: element_type* __p) noexcept -2441: : _M_ptr(__p), _M_refcount(__r._M_refcount) -2441: { } -2441: -2441: __shared_ptr(const __shared_ptr&) noexcept = default; -2441: __shared_ptr& operator=(const __shared_ptr&) noexcept = default; -2441: ~__shared_ptr() = default; -2441: -2441: template> -2441: __shared_ptr(const __shared_ptr<_Yp, _Lp>& __r) noexcept -2441: : _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount) -2441: { } -2441: -2441: __shared_ptr(__shared_ptr&& __r) noexcept -2441: : _M_ptr(__r._M_ptr), _M_refcount() -2441: { -2441: _M_refcount._M_swap(__r._M_refcount); -2441: __r._M_ptr = 0; -2441: } -2441: -2441: template> -2441: __shared_ptr(__shared_ptr<_Yp, _Lp>&& __r) noexcept -2441: : _M_ptr(__r._M_ptr), _M_refcount() -2441: { -2441: _M_refcount._M_swap(__r._M_refcount); -2441: __r._M_ptr = 0; -2441: } -2441: -2441: template> -2441: explicit __shared_ptr(const __weak_ptr<_Yp, _Lp>& __r) -2441: : _M_refcount(__r._M_refcount) -2441: { -2441: -2441: -2441: _M_ptr = __r._M_ptr; -2441: } -2441: -2441: -2441: template> -2441: __shared_ptr(unique_ptr<_Yp, _Del>&& __r) -2441: : _M_ptr(__r.get()), _M_refcount() -2441: { -2441: auto __raw = __to_address(__r.get()); -2441: _M_refcount = __shared_count<_Lp>(std::move(__r)); -2441: _M_enable_shared_from_this_with(__raw); -2441: } -2441: -2441: -2441: protected: -2441: -2441: template>, is_array<_Tp1>, -2441: is_convertible::pointer, _Tp*> -2441: >::value, bool>::type = true> -2441: __shared_ptr(unique_ptr<_Tp1, _Del>&& __r, __sp_array_delete) -2441: : _M_ptr(__r.get()), _M_refcount() -2441: { -2441: auto __raw = __to_address(__r.get()); -2441: _M_refcount = __shared_count<_Lp>(std::move(__r)); -2441: _M_enable_shared_from_this_with(__raw); -2441: } -2441: public: -2441: -2441: -2441: -2441: #pragma GCC diagnostic push -2441: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" -2441: -2441: template> -2441: __shared_ptr(auto_ptr<_Yp>&& __r); -2441: #pragma GCC diagnostic pop -2441: -2441: -2441: constexpr __shared_ptr(nullptr_t) noexcept : __shared_ptr() { } -2441: -2441: template -2441: _Assignable<_Yp> -2441: operator=(const __shared_ptr<_Yp, _Lp>& __r) noexcept -2441: { -2441: _M_ptr = __r._M_ptr; -2441: _M_refcount = __r._M_refcount; -2441: return *this; -2441: } -2441: -2441: -2441: #pragma GCC diagnostic push -2441: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" -2441: template -2441: _Assignable<_Yp> -2441: operator=(auto_ptr<_Yp>&& __r) -2441: { -2441: __shared_ptr(std::move(__r)).swap(*this); -2441: return *this; -2441: } -2441: #pragma GCC diagnostic pop -2441: -2441: -2441: __shared_ptr& -2441: operator=(__shared_ptr&& __r) noexcept -2441: { -2441: __shared_ptr(std::move(__r)).swap(*this); -2441: return *this; -2441: } -2441: -2441: template -2441: _Assignable<_Yp> -2441: operator=(__shared_ptr<_Yp, _Lp>&& __r) noexcept -2441: { -2441: __shared_ptr(std::move(__r)).swap(*this); -2441: return *this; -2441: } -2441: -2441: template -2441: _UniqAssignable<_Yp, _Del> -2441: operator=(unique_ptr<_Yp, _Del>&& __r) -2441: { -2441: __shared_ptr(std::move(__r)).swap(*this); -2441: return *this; -2441: } -2441: -2441: void -2441: reset() noexcept -2441: { __shared_ptr().swap(*this); } -2441: -2441: template -2441: _SafeConv<_Yp> -2441: reset(_Yp* __p) -2441: { -2441: -2441: ; -2441: __shared_ptr(__p).swap(*this); -2441: } -2441: -2441: template -2441: _SafeConv<_Yp> -2441: reset(_Yp* __p, _Deleter __d) -2441: { __shared_ptr(__p, std::move(__d)).swap(*this); } -2441: -2441: template -2441: _SafeConv<_Yp> -2441: reset(_Yp* __p, _Deleter __d, _Alloc __a) -2441: { __shared_ptr(__p, std::move(__d), std::move(__a)).swap(*this); } -2441: -2441: element_type* -2441: get() const noexcept -2441: { return _M_ptr; } -2441: -2441: explicit operator bool() const -2441: { return _M_ptr == 0 ? false : true; } -2441: -2441: bool -2441: unique() const noexcept -2441: { return _M_refcount._M_unique(); } -2441: -2441: long -2441: use_count() const noexcept -2441: { return _M_refcount._M_get_use_count(); } -2441: -2441: void -2441: swap(__shared_ptr<_Tp, _Lp>& __other) noexcept -2441: { -2441: std::swap(_M_ptr, __other._M_ptr); -2441: _M_refcount._M_swap(__other._M_refcount); -2441: } -2441: -2441: template -2441: bool -2441: owner_before(__shared_ptr<_Tp1, _Lp> const& __rhs) const noexcept -2441: { return _M_refcount._M_less(__rhs._M_refcount); } -2441: -2441: template -2441: bool -2441: owner_before(__weak_ptr<_Tp1, _Lp> const& __rhs) const noexcept -2441: { return _M_refcount._M_less(__rhs._M_refcount); } -2441: -2441: protected: -2441: -2441: template -2441: __shared_ptr(_Sp_alloc_shared_tag<_Alloc> __tag, _Args&&... __args) -2441: : _M_ptr(), _M_refcount(_M_ptr, __tag, std::forward<_Args>(__args)...) -2441: { _M_enable_shared_from_this_with(_M_ptr); } -2441: -2441: template -2441: friend __shared_ptr<_Tp1, _Lp1> -2441: __allocate_shared(const _Alloc& __a, _Args&&... __args); -2441: -2441: -2441: -2441: __shared_ptr(const __weak_ptr<_Tp, _Lp>& __r, std::nothrow_t) -2441: : _M_refcount(__r._M_refcount, std::nothrow) -2441: { -2441: _M_ptr = _M_refcount._M_get_use_count() ? __r._M_ptr : nullptr; -2441: } -2441: -2441: friend class __weak_ptr<_Tp, _Lp>; -2441: -2441: private: -2441: -2441: template -2441: using __esft_base_t = decltype(__enable_shared_from_this_base( -2441: std::declval&>(), -2441: std::declval<_Yp*>())); -2441: -2441: -2441: template -2441: struct __has_esft_base -2441: : false_type { }; -2441: -2441: template -2441: struct __has_esft_base<_Yp, __void_t<__esft_base_t<_Yp>>> -2441: : __not_> { }; -2441: -2441: template::type> -2441: typename enable_if<__has_esft_base<_Yp2>::value>::type -2441: _M_enable_shared_from_this_with(_Yp* __p) noexcept -2441: { -2441: if (auto __base = __enable_shared_from_this_base(_M_refcount, __p)) -2441: __base->_M_weak_assign(const_cast<_Yp2*>(__p), _M_refcount); -2441: } -2441: -2441: template::type> -2441: typename enable_if::value>::type -2441: _M_enable_shared_from_this_with(_Yp*) noexcept -2441: { } -2441: -2441: void* -2441: _M_get_deleter(const std::type_info& __ti) const noexcept -2441: { return _M_refcount._M_get_deleter(__ti); } -2441: -2441: template friend class __shared_ptr; -2441: template friend class __weak_ptr; -2441: -2441: template -2441: friend _Del* get_deleter(const __shared_ptr<_Tp1, _Lp1>&) noexcept; -2441: -2441: template -2441: friend _Del* get_deleter(const shared_ptr<_Tp1>&) noexcept; -2441: -2441: element_type* _M_ptr; -2441: __shared_count<_Lp> _M_refcount; -2441: }; -2441: -2441: -2441: -2441: template -2441: inline bool -2441: operator==(const __shared_ptr<_Tp1, _Lp>& __a, -2441: const __shared_ptr<_Tp2, _Lp>& __b) noexcept -2441: { return __a.get() == __b.get(); } -2441: -2441: template -2441: inline bool -2441: operator==(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept -2441: { return !__a; } -2441: -2441: template -2441: inline bool -2441: operator==(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept -2441: { return !__a; } -2441: -2441: template -2441: inline bool -2441: operator!=(const __shared_ptr<_Tp1, _Lp>& __a, -2441: const __shared_ptr<_Tp2, _Lp>& __b) noexcept -2441: { return __a.get() != __b.get(); } -2441: -2441: template -2441: inline bool -2441: operator!=(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept -2441: { return (bool)__a; } -2441: -2441: template -2441: inline bool -2441: operator!=(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept -2441: { return (bool)__a; } -2441: -2441: template -2441: inline bool -2441: operator<(const __shared_ptr<_Tp, _Lp>& __a, -2441: const __shared_ptr<_Up, _Lp>& __b) noexcept -2441: { -2441: using _Tp_elt = typename __shared_ptr<_Tp, _Lp>::element_type; -2441: using _Up_elt = typename __shared_ptr<_Up, _Lp>::element_type; -2441: using _Vp = typename common_type<_Tp_elt*, _Up_elt*>::type; -2441: return less<_Vp>()(__a.get(), __b.get()); -2441: } -2441: -2441: template -2441: inline bool -2441: operator<(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept -2441: { -2441: using _Tp_elt = typename __shared_ptr<_Tp, _Lp>::element_type; -2441: return less<_Tp_elt*>()(__a.get(), nullptr); -2441: } -2441: -2441: template -2441: inline bool -2441: operator<(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept -2441: { -2441: using _Tp_elt = typename __shared_ptr<_Tp, _Lp>::element_type; -2441: return less<_Tp_elt*>()(nullptr, __a.get()); -2441: } -2441: -2441: template -2441: inline bool -2441: operator<=(const __shared_ptr<_Tp1, _Lp>& __a, -2441: const __shared_ptr<_Tp2, _Lp>& __b) noexcept -2441: { return !(__b < __a); } -2441: -2441: template -2441: inline bool -2441: operator<=(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept -2441: { return !(nullptr < __a); } -2441: -2441: template -2441: inline bool -2441: operator<=(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept -2441: { return !(__a < nullptr); } -2441: -2441: template -2441: inline bool -2441: operator>(const __shared_ptr<_Tp1, _Lp>& __a, -2441: const __shared_ptr<_Tp2, _Lp>& __b) noexcept -2441: { return (__b < __a); } -2441: -2441: template -2441: inline bool -2441: operator>(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept -2441: { return nullptr < __a; } -2441: -2441: template -2441: inline bool -2441: operator>(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept -2441: { return __a < nullptr; } -2441: -2441: template -2441: inline bool -2441: operator>=(const __shared_ptr<_Tp1, _Lp>& __a, -2441: const __shared_ptr<_Tp2, _Lp>& __b) noexcept -2441: { return !(__a < __b); } -2441: -2441: template -2441: inline bool -2441: operator>=(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept -2441: { return !(__a < nullptr); } -2441: -2441: template -2441: inline bool -2441: operator>=(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept -2441: { return !(nullptr < __a); } -2441: -2441: template -2441: struct _Sp_less : public binary_function<_Sp, _Sp, bool> -2441: { -2441: bool -2441: operator()(const _Sp& __lhs, const _Sp& __rhs) const noexcept -2441: { -2441: typedef typename _Sp::element_type element_type; -2441: return std::less()(__lhs.get(), __rhs.get()); -2441: } -2441: }; -2441: -2441: template -2441: struct less<__shared_ptr<_Tp, _Lp>> -2441: : public _Sp_less<__shared_ptr<_Tp, _Lp>> -2441: { }; -2441: -2441: -2441: template -2441: inline void -2441: swap(__shared_ptr<_Tp, _Lp>& __a, __shared_ptr<_Tp, _Lp>& __b) noexcept -2441: { __a.swap(__b); } -2441: # 1544 "/usr/include/c++/8/bits/shared_ptr_base.h" 3 -2441: template -2441: inline __shared_ptr<_Tp, _Lp> -2441: static_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept -2441: { -2441: using _Sp = __shared_ptr<_Tp, _Lp>; -2441: return _Sp(__r, static_cast(__r.get())); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline __shared_ptr<_Tp, _Lp> -2441: const_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept -2441: { -2441: using _Sp = __shared_ptr<_Tp, _Lp>; -2441: return _Sp(__r, const_cast(__r.get())); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline __shared_ptr<_Tp, _Lp> -2441: dynamic_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept -2441: { -2441: using _Sp = __shared_ptr<_Tp, _Lp>; -2441: if (auto* __p = dynamic_cast(__r.get())) -2441: return _Sp(__r, __p); -2441: return _Sp(); -2441: } -2441: # 1590 "/usr/include/c++/8/bits/shared_ptr_base.h" 3 -2441: template -2441: class __weak_ptr -2441: { -2441: template -2441: using _Compatible = typename -2441: enable_if<__sp_compatible_with<_Yp*, _Tp*>::value, _Res>::type; -2441: -2441: -2441: template -2441: using _Assignable = _Compatible<_Yp, __weak_ptr&>; -2441: -2441: public: -2441: using element_type = typename remove_extent<_Tp>::type; -2441: -2441: constexpr __weak_ptr() noexcept -2441: : _M_ptr(nullptr), _M_refcount() -2441: { } -2441: -2441: __weak_ptr(const __weak_ptr&) noexcept = default; -2441: -2441: ~__weak_ptr() = default; -2441: # 1626 "/usr/include/c++/8/bits/shared_ptr_base.h" 3 -2441: template> -2441: __weak_ptr(const __weak_ptr<_Yp, _Lp>& __r) noexcept -2441: : _M_refcount(__r._M_refcount) -2441: { _M_ptr = __r.lock().get(); } -2441: -2441: template> -2441: __weak_ptr(const __shared_ptr<_Yp, _Lp>& __r) noexcept -2441: : _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount) -2441: { } -2441: -2441: __weak_ptr(__weak_ptr&& __r) noexcept -2441: : _M_ptr(__r._M_ptr), _M_refcount(std::move(__r._M_refcount)) -2441: { __r._M_ptr = nullptr; } -2441: -2441: template> -2441: __weak_ptr(__weak_ptr<_Yp, _Lp>&& __r) noexcept -2441: : _M_ptr(__r.lock().get()), _M_refcount(std::move(__r._M_refcount)) -2441: { __r._M_ptr = nullptr; } -2441: -2441: __weak_ptr& -2441: operator=(const __weak_ptr& __r) noexcept = default; -2441: -2441: template -2441: _Assignable<_Yp> -2441: operator=(const __weak_ptr<_Yp, _Lp>& __r) noexcept -2441: { -2441: _M_ptr = __r.lock().get(); -2441: _M_refcount = __r._M_refcount; -2441: return *this; -2441: } -2441: -2441: template -2441: _Assignable<_Yp> -2441: operator=(const __shared_ptr<_Yp, _Lp>& __r) noexcept -2441: { -2441: _M_ptr = __r._M_ptr; -2441: _M_refcount = __r._M_refcount; -2441: return *this; -2441: } -2441: -2441: __weak_ptr& -2441: operator=(__weak_ptr&& __r) noexcept -2441: { -2441: _M_ptr = __r._M_ptr; -2441: _M_refcount = std::move(__r._M_refcount); -2441: __r._M_ptr = nullptr; -2441: return *this; -2441: } -2441: -2441: template -2441: _Assignable<_Yp> -2441: operator=(__weak_ptr<_Yp, _Lp>&& __r) noexcept -2441: { -2441: _M_ptr = __r.lock().get(); -2441: _M_refcount = std::move(__r._M_refcount); -2441: __r._M_ptr = nullptr; -2441: return *this; -2441: } -2441: -2441: __shared_ptr<_Tp, _Lp> -2441: lock() const noexcept -2441: { return __shared_ptr(*this, std::nothrow); } -2441: -2441: long -2441: use_count() const noexcept -2441: { return _M_refcount._M_get_use_count(); } -2441: -2441: bool -2441: expired() const noexcept -2441: { return _M_refcount._M_get_use_count() == 0; } -2441: -2441: template -2441: bool -2441: owner_before(const __shared_ptr<_Tp1, _Lp>& __rhs) const noexcept -2441: { return _M_refcount._M_less(__rhs._M_refcount); } -2441: -2441: template -2441: bool -2441: owner_before(const __weak_ptr<_Tp1, _Lp>& __rhs) const noexcept -2441: { return _M_refcount._M_less(__rhs._M_refcount); } -2441: -2441: void -2441: reset() noexcept -2441: { __weak_ptr().swap(*this); } -2441: -2441: void -2441: swap(__weak_ptr& __s) noexcept -2441: { -2441: std::swap(_M_ptr, __s._M_ptr); -2441: _M_refcount._M_swap(__s._M_refcount); -2441: } -2441: -2441: private: -2441: -2441: void -2441: _M_assign(_Tp* __ptr, const __shared_count<_Lp>& __refcount) noexcept -2441: { -2441: if (use_count() == 0) -2441: { -2441: _M_ptr = __ptr; -2441: _M_refcount = __refcount; -2441: } -2441: } -2441: -2441: template friend class __shared_ptr; -2441: template friend class __weak_ptr; -2441: friend class __enable_shared_from_this<_Tp, _Lp>; -2441: friend class enable_shared_from_this<_Tp>; -2441: -2441: element_type* _M_ptr; -2441: __weak_count<_Lp> _M_refcount; -2441: }; -2441: -2441: -2441: template -2441: inline void -2441: swap(__weak_ptr<_Tp, _Lp>& __a, __weak_ptr<_Tp, _Lp>& __b) noexcept -2441: { __a.swap(__b); } -2441: -2441: template -2441: struct _Sp_owner_less : public binary_function<_Tp, _Tp, bool> -2441: { -2441: bool -2441: operator()(const _Tp& __lhs, const _Tp& __rhs) const noexcept -2441: { return __lhs.owner_before(__rhs); } -2441: -2441: bool -2441: operator()(const _Tp& __lhs, const _Tp1& __rhs) const noexcept -2441: { return __lhs.owner_before(__rhs); } -2441: -2441: bool -2441: operator()(const _Tp1& __lhs, const _Tp& __rhs) const noexcept -2441: { return __lhs.owner_before(__rhs); } -2441: }; -2441: -2441: template<> -2441: struct _Sp_owner_less -2441: { -2441: template -2441: auto -2441: operator()(const _Tp& __lhs, const _Up& __rhs) const noexcept -2441: -> decltype(__lhs.owner_before(__rhs)) -2441: { return __lhs.owner_before(__rhs); } -2441: -2441: using is_transparent = void; -2441: }; -2441: -2441: template -2441: struct owner_less<__shared_ptr<_Tp, _Lp>> -2441: : public _Sp_owner_less<__shared_ptr<_Tp, _Lp>, __weak_ptr<_Tp, _Lp>> -2441: { }; -2441: -2441: template -2441: struct owner_less<__weak_ptr<_Tp, _Lp>> -2441: : public _Sp_owner_less<__weak_ptr<_Tp, _Lp>, __shared_ptr<_Tp, _Lp>> -2441: { }; -2441: -2441: -2441: template -2441: class __enable_shared_from_this -2441: { -2441: protected: -2441: constexpr __enable_shared_from_this() noexcept { } -2441: -2441: __enable_shared_from_this(const __enable_shared_from_this&) noexcept { } -2441: -2441: __enable_shared_from_this& -2441: operator=(const __enable_shared_from_this&) noexcept -2441: { return *this; } -2441: -2441: ~__enable_shared_from_this() { } -2441: -2441: public: -2441: __shared_ptr<_Tp, _Lp> -2441: shared_from_this() -2441: { return __shared_ptr<_Tp, _Lp>(this->_M_weak_this); } -2441: -2441: __shared_ptr -2441: shared_from_this() const -2441: { return __shared_ptr(this->_M_weak_this); } -2441: -2441: -2441: __weak_ptr<_Tp, _Lp> -2441: weak_from_this() noexcept -2441: { return this->_M_weak_this; } -2441: -2441: __weak_ptr -2441: weak_from_this() const noexcept -2441: { return this->_M_weak_this; } -2441: -2441: -2441: private: -2441: template -2441: void -2441: _M_weak_assign(_Tp1* __p, const __shared_count<_Lp>& __n) const noexcept -2441: { _M_weak_this._M_assign(__p, __n); } -2441: -2441: friend const __enable_shared_from_this* -2441: __enable_shared_from_this_base(const __shared_count<_Lp>&, -2441: const __enable_shared_from_this* __p) -2441: { return __p; } -2441: -2441: template -2441: friend class __shared_ptr; -2441: -2441: mutable __weak_ptr<_Tp, _Lp> _M_weak_this; -2441: }; -2441: -2441: template -2441: inline __shared_ptr<_Tp, _Lp> -2441: __allocate_shared(const _Alloc& __a, _Args&&... __args) -2441: { -2441: return __shared_ptr<_Tp, _Lp>(_Sp_alloc_shared_tag<_Alloc>{__a}, -2441: std::forward<_Args>(__args)...); -2441: } -2441: -2441: template -2441: inline __shared_ptr<_Tp, _Lp> -2441: __make_shared(_Args&&... __args) -2441: { -2441: typedef typename std::remove_const<_Tp>::type _Tp_nc; -2441: return std::__allocate_shared<_Tp, _Lp>(std::allocator<_Tp_nc>(), -2441: std::forward<_Args>(__args)...); -2441: } -2441: -2441: -2441: template -2441: struct hash<__shared_ptr<_Tp, _Lp>> -2441: : public __hash_base> -2441: { -2441: size_t -2441: operator()(const __shared_ptr<_Tp, _Lp>& __s) const noexcept -2441: { -2441: return hash::element_type*>()( -2441: __s.get()); -2441: } -2441: }; -2441: -2441: -2441: } -2441: # 53 "/usr/include/c++/8/bits/shared_ptr.h" 2 3 -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline std::basic_ostream<_Ch, _Tr>& -2441: operator<<(std::basic_ostream<_Ch, _Tr>& __os, -2441: const __shared_ptr<_Tp, _Lp>& __p) -2441: { -2441: __os << __p.get(); -2441: return __os; -2441: } -2441: -2441: template -2441: inline _Del* -2441: get_deleter(const __shared_ptr<_Tp, _Lp>& __p) noexcept -2441: { -2441: -2441: return static_cast<_Del*>(__p._M_get_deleter(typeid(_Del))); -2441: -2441: -2441: -2441: } -2441: -2441: -2441: template -2441: inline _Del* -2441: get_deleter(const shared_ptr<_Tp>& __p) noexcept -2441: { -2441: -2441: return static_cast<_Del*>(__p._M_get_deleter(typeid(_Del))); -2441: -2441: -2441: -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: class shared_ptr : public __shared_ptr<_Tp> -2441: { -2441: template -2441: using _Constructible = typename enable_if< -2441: is_constructible<__shared_ptr<_Tp>, _Args...>::value -2441: >::type; -2441: -2441: template -2441: using _Assignable = typename enable_if< -2441: is_assignable<__shared_ptr<_Tp>&, _Arg>::value, shared_ptr& -2441: >::type; -2441: -2441: public: -2441: -2441: using element_type = typename __shared_ptr<_Tp>::element_type; -2441: # 127 "/usr/include/c++/8/bits/shared_ptr.h" 3 -2441: constexpr shared_ptr() noexcept : __shared_ptr<_Tp>() { } -2441: -2441: shared_ptr(const shared_ptr&) noexcept = default; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template> -2441: explicit -2441: shared_ptr(_Yp* __p) : __shared_ptr<_Tp>(__p) { } -2441: # 154 "/usr/include/c++/8/bits/shared_ptr.h" 3 -2441: template> -2441: shared_ptr(_Yp* __p, _Deleter __d) -2441: : __shared_ptr<_Tp>(__p, std::move(__d)) { } -2441: # 172 "/usr/include/c++/8/bits/shared_ptr.h" 3 -2441: template -2441: shared_ptr(nullptr_t __p, _Deleter __d) -2441: : __shared_ptr<_Tp>(__p, std::move(__d)) { } -2441: # 191 "/usr/include/c++/8/bits/shared_ptr.h" 3 -2441: template> -2441: shared_ptr(_Yp* __p, _Deleter __d, _Alloc __a) -2441: : __shared_ptr<_Tp>(__p, std::move(__d), std::move(__a)) { } -2441: # 211 "/usr/include/c++/8/bits/shared_ptr.h" 3 -2441: template -2441: shared_ptr(nullptr_t __p, _Deleter __d, _Alloc __a) -2441: : __shared_ptr<_Tp>(__p, std::move(__d), std::move(__a)) { } -2441: # 233 "/usr/include/c++/8/bits/shared_ptr.h" 3 -2441: template -2441: shared_ptr(const shared_ptr<_Yp>& __r, element_type* __p) noexcept -2441: : __shared_ptr<_Tp>(__r, __p) { } -2441: # 244 "/usr/include/c++/8/bits/shared_ptr.h" 3 -2441: template&>> -2441: shared_ptr(const shared_ptr<_Yp>& __r) noexcept -2441: : __shared_ptr<_Tp>(__r) { } -2441: -2441: -2441: -2441: -2441: -2441: -2441: shared_ptr(shared_ptr&& __r) noexcept -2441: : __shared_ptr<_Tp>(std::move(__r)) { } -2441: -2441: -2441: -2441: -2441: -2441: -2441: template>> -2441: shared_ptr(shared_ptr<_Yp>&& __r) noexcept -2441: : __shared_ptr<_Tp>(std::move(__r)) { } -2441: # 274 "/usr/include/c++/8/bits/shared_ptr.h" 3 -2441: template&>> -2441: explicit shared_ptr(const weak_ptr<_Yp>& __r) -2441: : __shared_ptr<_Tp>(__r) { } -2441: -2441: -2441: #pragma GCC diagnostic push -2441: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" -2441: template>> -2441: shared_ptr(auto_ptr<_Yp>&& __r); -2441: #pragma GCC diagnostic pop -2441: -2441: -2441: -2441: -2441: template>> -2441: shared_ptr(unique_ptr<_Yp, _Del>&& __r) -2441: : __shared_ptr<_Tp>(std::move(__r)) { } -2441: -2441: -2441: -2441: -2441: -2441: template, __sp_array_delete>* = 0> -2441: shared_ptr(unique_ptr<_Yp, _Del>&& __r) -2441: : __shared_ptr<_Tp>(std::move(__r), __sp_array_delete()) { } -2441: -2441: -2441: -2441: -2441: -2441: -2441: constexpr shared_ptr(nullptr_t) noexcept : shared_ptr() { } -2441: -2441: shared_ptr& operator=(const shared_ptr&) noexcept = default; -2441: -2441: template -2441: _Assignable&> -2441: operator=(const shared_ptr<_Yp>& __r) noexcept -2441: { -2441: this->__shared_ptr<_Tp>::operator=(__r); -2441: return *this; -2441: } -2441: -2441: -2441: #pragma GCC diagnostic push -2441: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" -2441: template -2441: _Assignable> -2441: operator=(auto_ptr<_Yp>&& __r) -2441: { -2441: this->__shared_ptr<_Tp>::operator=(std::move(__r)); -2441: return *this; -2441: } -2441: #pragma GCC diagnostic pop -2441: -2441: -2441: shared_ptr& -2441: operator=(shared_ptr&& __r) noexcept -2441: { -2441: this->__shared_ptr<_Tp>::operator=(std::move(__r)); -2441: return *this; -2441: } -2441: -2441: template -2441: _Assignable> -2441: operator=(shared_ptr<_Yp>&& __r) noexcept -2441: { -2441: this->__shared_ptr<_Tp>::operator=(std::move(__r)); -2441: return *this; -2441: } -2441: -2441: template -2441: _Assignable> -2441: operator=(unique_ptr<_Yp, _Del>&& __r) -2441: { -2441: this->__shared_ptr<_Tp>::operator=(std::move(__r)); -2441: return *this; -2441: } -2441: -2441: private: -2441: -2441: template -2441: shared_ptr(_Sp_alloc_shared_tag<_Alloc> __tag, _Args&&... __args) -2441: : __shared_ptr<_Tp>(__tag, std::forward<_Args>(__args)...) -2441: { } -2441: -2441: template -2441: friend shared_ptr<_Yp> -2441: allocate_shared(const _Alloc& __a, _Args&&... __args); -2441: -2441: -2441: shared_ptr(const weak_ptr<_Tp>& __r, std::nothrow_t) -2441: : __shared_ptr<_Tp>(__r, std::nothrow) { } -2441: -2441: friend class weak_ptr<_Tp>; -2441: }; -2441: # 381 "/usr/include/c++/8/bits/shared_ptr.h" 3 -2441: template -2441: inline bool -2441: operator==(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept -2441: { return __a.get() == __b.get(); } -2441: -2441: template -2441: inline bool -2441: operator==(const shared_ptr<_Tp>& __a, nullptr_t) noexcept -2441: { return !__a; } -2441: -2441: template -2441: inline bool -2441: operator==(nullptr_t, const shared_ptr<_Tp>& __a) noexcept -2441: { return !__a; } -2441: -2441: template -2441: inline bool -2441: operator!=(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept -2441: { return __a.get() != __b.get(); } -2441: -2441: template -2441: inline bool -2441: operator!=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept -2441: { return (bool)__a; } -2441: -2441: template -2441: inline bool -2441: operator!=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept -2441: { return (bool)__a; } -2441: -2441: template -2441: inline bool -2441: operator<(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept -2441: { -2441: using _Tp_elt = typename shared_ptr<_Tp>::element_type; -2441: using _Up_elt = typename shared_ptr<_Up>::element_type; -2441: using _Vp = typename common_type<_Tp_elt*, _Up_elt*>::type; -2441: return less<_Vp>()(__a.get(), __b.get()); -2441: } -2441: -2441: template -2441: inline bool -2441: operator<(const shared_ptr<_Tp>& __a, nullptr_t) noexcept -2441: { -2441: using _Tp_elt = typename shared_ptr<_Tp>::element_type; -2441: return less<_Tp_elt*>()(__a.get(), nullptr); -2441: } -2441: -2441: template -2441: inline bool -2441: operator<(nullptr_t, const shared_ptr<_Tp>& __a) noexcept -2441: { -2441: using _Tp_elt = typename shared_ptr<_Tp>::element_type; -2441: return less<_Tp_elt*>()(nullptr, __a.get()); -2441: } -2441: -2441: template -2441: inline bool -2441: operator<=(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept -2441: { return !(__b < __a); } -2441: -2441: template -2441: inline bool -2441: operator<=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept -2441: { return !(nullptr < __a); } -2441: -2441: template -2441: inline bool -2441: operator<=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept -2441: { return !(__a < nullptr); } -2441: -2441: template -2441: inline bool -2441: operator>(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept -2441: { return (__b < __a); } -2441: -2441: template -2441: inline bool -2441: operator>(const shared_ptr<_Tp>& __a, nullptr_t) noexcept -2441: { return nullptr < __a; } -2441: -2441: template -2441: inline bool -2441: operator>(nullptr_t, const shared_ptr<_Tp>& __a) noexcept -2441: { return __a < nullptr; } -2441: -2441: template -2441: inline bool -2441: operator>=(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept -2441: { return !(__a < __b); } -2441: -2441: template -2441: inline bool -2441: operator>=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept -2441: { return !(__a < nullptr); } -2441: -2441: template -2441: inline bool -2441: operator>=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept -2441: { return !(nullptr < __a); } -2441: -2441: template -2441: struct less> : public _Sp_less> -2441: { }; -2441: -2441: -2441: template -2441: inline void -2441: swap(shared_ptr<_Tp>& __a, shared_ptr<_Tp>& __b) noexcept -2441: { __a.swap(__b); } -2441: -2441: -2441: template -2441: inline shared_ptr<_Tp> -2441: static_pointer_cast(const shared_ptr<_Up>& __r) noexcept -2441: { -2441: using _Sp = shared_ptr<_Tp>; -2441: return _Sp(__r, static_cast(__r.get())); -2441: } -2441: -2441: template -2441: inline shared_ptr<_Tp> -2441: const_pointer_cast(const shared_ptr<_Up>& __r) noexcept -2441: { -2441: using _Sp = shared_ptr<_Tp>; -2441: return _Sp(__r, const_cast(__r.get())); -2441: } -2441: -2441: template -2441: inline shared_ptr<_Tp> -2441: dynamic_pointer_cast(const shared_ptr<_Up>& __r) noexcept -2441: { -2441: using _Sp = shared_ptr<_Tp>; -2441: if (auto* __p = dynamic_cast(__r.get())) -2441: return _Sp(__r, __p); -2441: return _Sp(); -2441: } -2441: # 534 "/usr/include/c++/8/bits/shared_ptr.h" 3 -2441: template -2441: class weak_ptr : public __weak_ptr<_Tp> -2441: { -2441: template -2441: using _Constructible = typename enable_if< -2441: is_constructible<__weak_ptr<_Tp>, _Arg>::value -2441: >::type; -2441: -2441: template -2441: using _Assignable = typename enable_if< -2441: is_assignable<__weak_ptr<_Tp>&, _Arg>::value, weak_ptr& -2441: >::type; -2441: -2441: public: -2441: constexpr weak_ptr() noexcept = default; -2441: -2441: template&>> -2441: weak_ptr(const shared_ptr<_Yp>& __r) noexcept -2441: : __weak_ptr<_Tp>(__r) { } -2441: -2441: weak_ptr(const weak_ptr&) noexcept = default; -2441: -2441: template&>> -2441: weak_ptr(const weak_ptr<_Yp>& __r) noexcept -2441: : __weak_ptr<_Tp>(__r) { } -2441: -2441: weak_ptr(weak_ptr&&) noexcept = default; -2441: -2441: template>> -2441: weak_ptr(weak_ptr<_Yp>&& __r) noexcept -2441: : __weak_ptr<_Tp>(std::move(__r)) { } -2441: -2441: weak_ptr& -2441: operator=(const weak_ptr& __r) noexcept = default; -2441: -2441: template -2441: _Assignable&> -2441: operator=(const weak_ptr<_Yp>& __r) noexcept -2441: { -2441: this->__weak_ptr<_Tp>::operator=(__r); -2441: return *this; -2441: } -2441: -2441: template -2441: _Assignable&> -2441: operator=(const shared_ptr<_Yp>& __r) noexcept -2441: { -2441: this->__weak_ptr<_Tp>::operator=(__r); -2441: return *this; -2441: } -2441: -2441: weak_ptr& -2441: operator=(weak_ptr&& __r) noexcept = default; -2441: -2441: template -2441: _Assignable> -2441: operator=(weak_ptr<_Yp>&& __r) noexcept -2441: { -2441: this->__weak_ptr<_Tp>::operator=(std::move(__r)); -2441: return *this; -2441: } -2441: -2441: shared_ptr<_Tp> -2441: lock() const noexcept -2441: { return shared_ptr<_Tp>(*this, std::nothrow); } -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline void -2441: swap(weak_ptr<_Tp>& __a, weak_ptr<_Tp>& __b) noexcept -2441: { __a.swap(__b); } -2441: -2441: -2441: -2441: template -2441: struct owner_less; -2441: -2441: -2441: template<> -2441: struct owner_less : _Sp_owner_less -2441: { }; -2441: -2441: -2441: template -2441: struct owner_less> -2441: : public _Sp_owner_less, weak_ptr<_Tp>> -2441: { }; -2441: -2441: -2441: template -2441: struct owner_less> -2441: : public _Sp_owner_less, shared_ptr<_Tp>> -2441: { }; -2441: -2441: -2441: -2441: -2441: template -2441: class enable_shared_from_this -2441: { -2441: protected: -2441: constexpr enable_shared_from_this() noexcept { } -2441: -2441: enable_shared_from_this(const enable_shared_from_this&) noexcept { } -2441: -2441: enable_shared_from_this& -2441: operator=(const enable_shared_from_this&) noexcept -2441: { return *this; } -2441: -2441: ~enable_shared_from_this() { } -2441: -2441: public: -2441: shared_ptr<_Tp> -2441: shared_from_this() -2441: { return shared_ptr<_Tp>(this->_M_weak_this); } -2441: -2441: shared_ptr -2441: shared_from_this() const -2441: { return shared_ptr(this->_M_weak_this); } -2441: -2441: -2441: -2441: weak_ptr<_Tp> -2441: weak_from_this() noexcept -2441: { return this->_M_weak_this; } -2441: -2441: weak_ptr -2441: weak_from_this() const noexcept -2441: { return this->_M_weak_this; } -2441: -2441: -2441: private: -2441: template -2441: void -2441: _M_weak_assign(_Tp1* __p, const __shared_count<>& __n) const noexcept -2441: { _M_weak_this._M_assign(__p, __n); } -2441: -2441: -2441: friend const enable_shared_from_this* -2441: __enable_shared_from_this_base(const __shared_count<>&, -2441: const enable_shared_from_this* __p) -2441: { return __p; } -2441: -2441: template -2441: friend class __shared_ptr; -2441: -2441: mutable weak_ptr<_Tp> _M_weak_this; -2441: }; -2441: # 701 "/usr/include/c++/8/bits/shared_ptr.h" 3 -2441: template -2441: inline shared_ptr<_Tp> -2441: allocate_shared(const _Alloc& __a, _Args&&... __args) -2441: { -2441: return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a}, -2441: std::forward<_Args>(__args)...); -2441: } -2441: # 716 "/usr/include/c++/8/bits/shared_ptr.h" 3 -2441: template -2441: inline shared_ptr<_Tp> -2441: make_shared(_Args&&... __args) -2441: { -2441: typedef typename std::remove_cv<_Tp>::type _Tp_nc; -2441: return std::allocate_shared<_Tp>(std::allocator<_Tp_nc>(), -2441: std::forward<_Args>(__args)...); -2441: } -2441: -2441: -2441: template -2441: struct hash> -2441: : public __hash_base> -2441: { -2441: size_t -2441: operator()(const shared_ptr<_Tp>& __s) const noexcept -2441: { -2441: return std::hash::element_type*>()(__s.get()); -2441: } -2441: }; -2441: -2441: -2441: -2441: -2441: } -2441: # 82 "/usr/include/c++/8/memory" 2 3 -2441: # 1 "/usr/include/c++/8/bits/shared_ptr_atomic.h" 1 3 -2441: # 33 "/usr/include/c++/8/bits/shared_ptr_atomic.h" 3 -2441: # 1 "/usr/include/c++/8/bits/atomic_base.h" 1 3 -2441: # 33 "/usr/include/c++/8/bits/atomic_base.h" 3 -2441: -2441: # 34 "/usr/include/c++/8/bits/atomic_base.h" 3 -2441: -2441: -2441: -2441: # 1 "/usr/include/c++/8/bits/atomic_lockfree_defines.h" 1 3 -2441: # 33 "/usr/include/c++/8/bits/atomic_lockfree_defines.h" 3 -2441: -2441: # 34 "/usr/include/c++/8/bits/atomic_lockfree_defines.h" 3 -2441: # 38 "/usr/include/c++/8/bits/atomic_base.h" 2 3 -2441: -2441: -2441: -2441: -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: # 55 "/usr/include/c++/8/bits/atomic_base.h" 3 -2441: typedef enum memory_order -2441: { -2441: memory_order_relaxed, -2441: memory_order_consume, -2441: memory_order_acquire, -2441: memory_order_release, -2441: memory_order_acq_rel, -2441: memory_order_seq_cst -2441: } memory_order; -2441: -2441: enum __memory_order_modifier -2441: { -2441: __memory_order_mask = 0x0ffff, -2441: __memory_order_modifier_mask = 0xffff0000, -2441: __memory_order_hle_acquire = 0x10000, -2441: __memory_order_hle_release = 0x20000 -2441: }; -2441: -2441: constexpr memory_order -2441: operator|(memory_order __m, __memory_order_modifier __mod) -2441: { -2441: return memory_order(__m | int(__mod)); -2441: } -2441: -2441: constexpr memory_order -2441: operator&(memory_order __m, __memory_order_modifier __mod) -2441: { -2441: return memory_order(__m & int(__mod)); -2441: } -2441: -2441: -2441: constexpr memory_order -2441: __cmpexch_failure_order2(memory_order __m) noexcept -2441: { -2441: return __m == memory_order_acq_rel ? memory_order_acquire -2441: : __m == memory_order_release ? memory_order_relaxed : __m; -2441: } -2441: -2441: constexpr memory_order -2441: __cmpexch_failure_order(memory_order __m) noexcept -2441: { -2441: return memory_order(__cmpexch_failure_order2(__m & __memory_order_mask) -2441: | (__m & __memory_order_modifier_mask)); -2441: } -2441: -2441: inline __attribute__((__always_inline__)) void -2441: atomic_thread_fence(memory_order __m) noexcept -2441: { __atomic_thread_fence(__m); } -2441: -2441: inline __attribute__((__always_inline__)) void -2441: atomic_signal_fence(memory_order __m) noexcept -2441: { __atomic_signal_fence(__m); } -2441: -2441: -2441: template -2441: inline _Tp -2441: kill_dependency(_Tp __y) noexcept -2441: { -2441: _Tp __ret(__y); -2441: return __ret; -2441: } -2441: -2441: -2441: -2441: template -2441: struct __atomic_base; -2441: -2441: -2441: -2441: -2441: template -2441: struct atomic; -2441: -2441: template -2441: struct atomic<_Tp*>; -2441: -2441: -2441: -2441: typedef bool __atomic_flag_data_type; -2441: # 148 "/usr/include/c++/8/bits/atomic_base.h" 3 -2441: extern "C" { -2441: -2441: struct __atomic_flag_base -2441: { -2441: __atomic_flag_data_type _M_i; -2441: }; -2441: -2441: } -2441: -2441: -2441: -2441: -2441: struct atomic_flag : public __atomic_flag_base -2441: { -2441: atomic_flag() noexcept = default; -2441: ~atomic_flag() noexcept = default; -2441: atomic_flag(const atomic_flag&) = delete; -2441: atomic_flag& operator=(const atomic_flag&) = delete; -2441: atomic_flag& operator=(const atomic_flag&) volatile = delete; -2441: -2441: -2441: constexpr atomic_flag(bool __i) noexcept -2441: : __atomic_flag_base{ _S_init(__i) } -2441: { } -2441: -2441: inline __attribute__((__always_inline__)) bool -2441: test_and_set(memory_order __m = memory_order_seq_cst) noexcept -2441: { -2441: return __atomic_test_and_set (&_M_i, __m); -2441: } -2441: -2441: inline __attribute__((__always_inline__)) bool -2441: test_and_set(memory_order __m = memory_order_seq_cst) volatile noexcept -2441: { -2441: return __atomic_test_and_set (&_M_i, __m); -2441: } -2441: -2441: inline __attribute__((__always_inline__)) void -2441: clear(memory_order __m = memory_order_seq_cst) noexcept -2441: { -2441: memory_order __b = __m & __memory_order_mask; -2441: ; -2441: ; -2441: ; -2441: -2441: __atomic_clear (&_M_i, __m); -2441: } -2441: -2441: inline __attribute__((__always_inline__)) void -2441: clear(memory_order __m = memory_order_seq_cst) volatile noexcept -2441: { -2441: memory_order __b = __m & __memory_order_mask; -2441: ; -2441: ; -2441: ; -2441: -2441: __atomic_clear (&_M_i, __m); -2441: } -2441: -2441: private: -2441: static constexpr __atomic_flag_data_type -2441: _S_init(bool __i) -2441: { return __i ? 1 : 0; } -2441: }; -2441: # 237 "/usr/include/c++/8/bits/atomic_base.h" 3 -2441: template -2441: struct __atomic_base -2441: { -2441: private: -2441: typedef _ITp __int_type; -2441: -2441: static constexpr int _S_alignment = -2441: sizeof(_ITp) > alignof(_ITp) ? sizeof(_ITp) : alignof(_ITp); -2441: -2441: alignas(_S_alignment) __int_type _M_i; -2441: -2441: public: -2441: __atomic_base() noexcept = default; -2441: ~__atomic_base() noexcept = default; -2441: __atomic_base(const __atomic_base&) = delete; -2441: __atomic_base& operator=(const __atomic_base&) = delete; -2441: __atomic_base& operator=(const __atomic_base&) volatile = delete; -2441: -2441: -2441: constexpr __atomic_base(__int_type __i) noexcept : _M_i (__i) { } -2441: -2441: operator __int_type() const noexcept -2441: { return load(); } -2441: -2441: operator __int_type() const volatile noexcept -2441: { return load(); } -2441: -2441: __int_type -2441: operator=(__int_type __i) noexcept -2441: { -2441: store(__i); -2441: return __i; -2441: } -2441: -2441: __int_type -2441: operator=(__int_type __i) volatile noexcept -2441: { -2441: store(__i); -2441: return __i; -2441: } -2441: -2441: __int_type -2441: operator++(int) noexcept -2441: { return fetch_add(1); } -2441: -2441: __int_type -2441: operator++(int) volatile noexcept -2441: { return fetch_add(1); } -2441: -2441: __int_type -2441: operator--(int) noexcept -2441: { return fetch_sub(1); } -2441: -2441: __int_type -2441: operator--(int) volatile noexcept -2441: { return fetch_sub(1); } -2441: -2441: __int_type -2441: operator++() noexcept -2441: { return __atomic_add_fetch(&_M_i, 1, memory_order_seq_cst); } -2441: -2441: __int_type -2441: operator++() volatile noexcept -2441: { return __atomic_add_fetch(&_M_i, 1, memory_order_seq_cst); } -2441: -2441: __int_type -2441: operator--() noexcept -2441: { return __atomic_sub_fetch(&_M_i, 1, memory_order_seq_cst); } -2441: -2441: __int_type -2441: operator--() volatile noexcept -2441: { return __atomic_sub_fetch(&_M_i, 1, memory_order_seq_cst); } -2441: -2441: __int_type -2441: operator+=(__int_type __i) noexcept -2441: { return __atomic_add_fetch(&_M_i, __i, memory_order_seq_cst); } -2441: -2441: __int_type -2441: operator+=(__int_type __i) volatile noexcept -2441: { return __atomic_add_fetch(&_M_i, __i, memory_order_seq_cst); } -2441: -2441: __int_type -2441: operator-=(__int_type __i) noexcept -2441: { return __atomic_sub_fetch(&_M_i, __i, memory_order_seq_cst); } -2441: -2441: __int_type -2441: operator-=(__int_type __i) volatile noexcept -2441: { return __atomic_sub_fetch(&_M_i, __i, memory_order_seq_cst); } -2441: -2441: __int_type -2441: operator&=(__int_type __i) noexcept -2441: { return __atomic_and_fetch(&_M_i, __i, memory_order_seq_cst); } -2441: -2441: __int_type -2441: operator&=(__int_type __i) volatile noexcept -2441: { return __atomic_and_fetch(&_M_i, __i, memory_order_seq_cst); } -2441: -2441: __int_type -2441: operator|=(__int_type __i) noexcept -2441: { return __atomic_or_fetch(&_M_i, __i, memory_order_seq_cst); } -2441: -2441: __int_type -2441: operator|=(__int_type __i) volatile noexcept -2441: { return __atomic_or_fetch(&_M_i, __i, memory_order_seq_cst); } -2441: -2441: __int_type -2441: operator^=(__int_type __i) noexcept -2441: { return __atomic_xor_fetch(&_M_i, __i, memory_order_seq_cst); } -2441: -2441: __int_type -2441: operator^=(__int_type __i) volatile noexcept -2441: { return __atomic_xor_fetch(&_M_i, __i, memory_order_seq_cst); } -2441: -2441: bool -2441: is_lock_free() const noexcept -2441: { -2441: -2441: return __atomic_is_lock_free(sizeof(_M_i), -2441: reinterpret_cast(-__alignof(_M_i))); -2441: } -2441: -2441: bool -2441: is_lock_free() const volatile noexcept -2441: { -2441: -2441: return __atomic_is_lock_free(sizeof(_M_i), -2441: reinterpret_cast(-__alignof(_M_i))); -2441: } -2441: -2441: inline __attribute__((__always_inline__)) void -2441: store(__int_type __i, memory_order __m = memory_order_seq_cst) noexcept -2441: { -2441: memory_order __b = __m & __memory_order_mask; -2441: ; -2441: ; -2441: ; -2441: -2441: __atomic_store_n(&_M_i, __i, __m); -2441: } -2441: -2441: inline __attribute__((__always_inline__)) void -2441: store(__int_type __i, -2441: memory_order __m = memory_order_seq_cst) volatile noexcept -2441: { -2441: memory_order __b = __m & __memory_order_mask; -2441: ; -2441: ; -2441: ; -2441: -2441: __atomic_store_n(&_M_i, __i, __m); -2441: } -2441: -2441: inline __attribute__((__always_inline__)) __int_type -2441: load(memory_order __m = memory_order_seq_cst) const noexcept -2441: { -2441: memory_order __b = __m & __memory_order_mask; -2441: ; -2441: ; -2441: -2441: return __atomic_load_n(&_M_i, __m); -2441: } -2441: -2441: inline __attribute__((__always_inline__)) __int_type -2441: load(memory_order __m = memory_order_seq_cst) const volatile noexcept -2441: { -2441: memory_order __b = __m & __memory_order_mask; -2441: ; -2441: ; -2441: -2441: return __atomic_load_n(&_M_i, __m); -2441: } -2441: -2441: inline __attribute__((__always_inline__)) __int_type -2441: exchange(__int_type __i, -2441: memory_order __m = memory_order_seq_cst) noexcept -2441: { -2441: return __atomic_exchange_n(&_M_i, __i, __m); -2441: } -2441: -2441: -2441: inline __attribute__((__always_inline__)) __int_type -2441: exchange(__int_type __i, -2441: memory_order __m = memory_order_seq_cst) volatile noexcept -2441: { -2441: return __atomic_exchange_n(&_M_i, __i, __m); -2441: } -2441: -2441: inline __attribute__((__always_inline__)) bool -2441: compare_exchange_weak(__int_type& __i1, __int_type __i2, -2441: memory_order __m1, memory_order __m2) noexcept -2441: { -2441: memory_order __b2 = __m2 & __memory_order_mask; -2441: memory_order __b1 = __m1 & __memory_order_mask; -2441: ; -2441: ; -2441: ; -2441: -2441: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, __m1, __m2); -2441: } -2441: -2441: inline __attribute__((__always_inline__)) bool -2441: compare_exchange_weak(__int_type& __i1, __int_type __i2, -2441: memory_order __m1, -2441: memory_order __m2) volatile noexcept -2441: { -2441: memory_order __b2 = __m2 & __memory_order_mask; -2441: memory_order __b1 = __m1 & __memory_order_mask; -2441: ; -2441: ; -2441: ; -2441: -2441: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, __m1, __m2); -2441: } -2441: -2441: inline __attribute__((__always_inline__)) bool -2441: compare_exchange_weak(__int_type& __i1, __int_type __i2, -2441: memory_order __m = memory_order_seq_cst) noexcept -2441: { -2441: return compare_exchange_weak(__i1, __i2, __m, -2441: __cmpexch_failure_order(__m)); -2441: } -2441: -2441: inline __attribute__((__always_inline__)) bool -2441: compare_exchange_weak(__int_type& __i1, __int_type __i2, -2441: memory_order __m = memory_order_seq_cst) volatile noexcept -2441: { -2441: return compare_exchange_weak(__i1, __i2, __m, -2441: __cmpexch_failure_order(__m)); -2441: } -2441: -2441: inline __attribute__((__always_inline__)) bool -2441: compare_exchange_strong(__int_type& __i1, __int_type __i2, -2441: memory_order __m1, memory_order __m2) noexcept -2441: { -2441: memory_order __b2 = __m2 & __memory_order_mask; -2441: memory_order __b1 = __m1 & __memory_order_mask; -2441: ; -2441: ; -2441: ; -2441: -2441: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, __m1, __m2); -2441: } -2441: -2441: inline __attribute__((__always_inline__)) bool -2441: compare_exchange_strong(__int_type& __i1, __int_type __i2, -2441: memory_order __m1, -2441: memory_order __m2) volatile noexcept -2441: { -2441: memory_order __b2 = __m2 & __memory_order_mask; -2441: memory_order __b1 = __m1 & __memory_order_mask; -2441: -2441: ; -2441: ; -2441: ; -2441: -2441: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, __m1, __m2); -2441: } -2441: -2441: inline __attribute__((__always_inline__)) bool -2441: compare_exchange_strong(__int_type& __i1, __int_type __i2, -2441: memory_order __m = memory_order_seq_cst) noexcept -2441: { -2441: return compare_exchange_strong(__i1, __i2, __m, -2441: __cmpexch_failure_order(__m)); -2441: } -2441: -2441: inline __attribute__((__always_inline__)) bool -2441: compare_exchange_strong(__int_type& __i1, __int_type __i2, -2441: memory_order __m = memory_order_seq_cst) volatile noexcept -2441: { -2441: return compare_exchange_strong(__i1, __i2, __m, -2441: __cmpexch_failure_order(__m)); -2441: } -2441: -2441: inline __attribute__((__always_inline__)) __int_type -2441: fetch_add(__int_type __i, -2441: memory_order __m = memory_order_seq_cst) noexcept -2441: { return __atomic_fetch_add(&_M_i, __i, __m); } -2441: -2441: inline __attribute__((__always_inline__)) __int_type -2441: fetch_add(__int_type __i, -2441: memory_order __m = memory_order_seq_cst) volatile noexcept -2441: { return __atomic_fetch_add(&_M_i, __i, __m); } -2441: -2441: inline __attribute__((__always_inline__)) __int_type -2441: fetch_sub(__int_type __i, -2441: memory_order __m = memory_order_seq_cst) noexcept -2441: { return __atomic_fetch_sub(&_M_i, __i, __m); } -2441: -2441: inline __attribute__((__always_inline__)) __int_type -2441: fetch_sub(__int_type __i, -2441: memory_order __m = memory_order_seq_cst) volatile noexcept -2441: { return __atomic_fetch_sub(&_M_i, __i, __m); } -2441: -2441: inline __attribute__((__always_inline__)) __int_type -2441: fetch_and(__int_type __i, -2441: memory_order __m = memory_order_seq_cst) noexcept -2441: { return __atomic_fetch_and(&_M_i, __i, __m); } -2441: -2441: inline __attribute__((__always_inline__)) __int_type -2441: fetch_and(__int_type __i, -2441: memory_order __m = memory_order_seq_cst) volatile noexcept -2441: { return __atomic_fetch_and(&_M_i, __i, __m); } -2441: -2441: inline __attribute__((__always_inline__)) __int_type -2441: fetch_or(__int_type __i, -2441: memory_order __m = memory_order_seq_cst) noexcept -2441: { return __atomic_fetch_or(&_M_i, __i, __m); } -2441: -2441: inline __attribute__((__always_inline__)) __int_type -2441: fetch_or(__int_type __i, -2441: memory_order __m = memory_order_seq_cst) volatile noexcept -2441: { return __atomic_fetch_or(&_M_i, __i, __m); } -2441: -2441: inline __attribute__((__always_inline__)) __int_type -2441: fetch_xor(__int_type __i, -2441: memory_order __m = memory_order_seq_cst) noexcept -2441: { return __atomic_fetch_xor(&_M_i, __i, __m); } -2441: -2441: inline __attribute__((__always_inline__)) __int_type -2441: fetch_xor(__int_type __i, -2441: memory_order __m = memory_order_seq_cst) volatile noexcept -2441: { return __atomic_fetch_xor(&_M_i, __i, __m); } -2441: }; -2441: -2441: -2441: -2441: template -2441: struct __atomic_base<_PTp*> -2441: { -2441: private: -2441: typedef _PTp* __pointer_type; -2441: -2441: __pointer_type _M_p; -2441: -2441: -2441: constexpr ptrdiff_t -2441: _M_type_size(ptrdiff_t __d) const { return __d * sizeof(_PTp); } -2441: -2441: constexpr ptrdiff_t -2441: _M_type_size(ptrdiff_t __d) const volatile { return __d * sizeof(_PTp); } -2441: -2441: public: -2441: __atomic_base() noexcept = default; -2441: ~__atomic_base() noexcept = default; -2441: __atomic_base(const __atomic_base&) = delete; -2441: __atomic_base& operator=(const __atomic_base&) = delete; -2441: __atomic_base& operator=(const __atomic_base&) volatile = delete; -2441: -2441: -2441: constexpr __atomic_base(__pointer_type __p) noexcept : _M_p (__p) { } -2441: -2441: operator __pointer_type() const noexcept -2441: { return load(); } -2441: -2441: operator __pointer_type() const volatile noexcept -2441: { return load(); } -2441: -2441: __pointer_type -2441: operator=(__pointer_type __p) noexcept -2441: { -2441: store(__p); -2441: return __p; -2441: } -2441: -2441: __pointer_type -2441: operator=(__pointer_type __p) volatile noexcept -2441: { -2441: store(__p); -2441: return __p; -2441: } -2441: -2441: __pointer_type -2441: operator++(int) noexcept -2441: { return fetch_add(1); } -2441: -2441: __pointer_type -2441: operator++(int) volatile noexcept -2441: { return fetch_add(1); } -2441: -2441: __pointer_type -2441: operator--(int) noexcept -2441: { return fetch_sub(1); } -2441: -2441: __pointer_type -2441: operator--(int) volatile noexcept -2441: { return fetch_sub(1); } -2441: -2441: __pointer_type -2441: operator++() noexcept -2441: { return __atomic_add_fetch(&_M_p, _M_type_size(1), -2441: memory_order_seq_cst); } -2441: -2441: __pointer_type -2441: operator++() volatile noexcept -2441: { return __atomic_add_fetch(&_M_p, _M_type_size(1), -2441: memory_order_seq_cst); } -2441: -2441: __pointer_type -2441: operator--() noexcept -2441: { return __atomic_sub_fetch(&_M_p, _M_type_size(1), -2441: memory_order_seq_cst); } -2441: -2441: __pointer_type -2441: operator--() volatile noexcept -2441: { return __atomic_sub_fetch(&_M_p, _M_type_size(1), -2441: memory_order_seq_cst); } -2441: -2441: __pointer_type -2441: operator+=(ptrdiff_t __d) noexcept -2441: { return __atomic_add_fetch(&_M_p, _M_type_size(__d), -2441: memory_order_seq_cst); } -2441: -2441: __pointer_type -2441: operator+=(ptrdiff_t __d) volatile noexcept -2441: { return __atomic_add_fetch(&_M_p, _M_type_size(__d), -2441: memory_order_seq_cst); } -2441: -2441: __pointer_type -2441: operator-=(ptrdiff_t __d) noexcept -2441: { return __atomic_sub_fetch(&_M_p, _M_type_size(__d), -2441: memory_order_seq_cst); } -2441: -2441: __pointer_type -2441: operator-=(ptrdiff_t __d) volatile noexcept -2441: { return __atomic_sub_fetch(&_M_p, _M_type_size(__d), -2441: memory_order_seq_cst); } -2441: -2441: bool -2441: is_lock_free() const noexcept -2441: { -2441: -2441: return __atomic_is_lock_free(sizeof(_M_p), -2441: reinterpret_cast(-__alignof(_M_p))); -2441: } -2441: -2441: bool -2441: is_lock_free() const volatile noexcept -2441: { -2441: -2441: return __atomic_is_lock_free(sizeof(_M_p), -2441: reinterpret_cast(-__alignof(_M_p))); -2441: } -2441: -2441: inline __attribute__((__always_inline__)) void -2441: store(__pointer_type __p, -2441: memory_order __m = memory_order_seq_cst) noexcept -2441: { -2441: memory_order __b = __m & __memory_order_mask; -2441: -2441: ; -2441: ; -2441: ; -2441: -2441: __atomic_store_n(&_M_p, __p, __m); -2441: } -2441: -2441: inline __attribute__((__always_inline__)) void -2441: store(__pointer_type __p, -2441: memory_order __m = memory_order_seq_cst) volatile noexcept -2441: { -2441: memory_order __b = __m & __memory_order_mask; -2441: ; -2441: ; -2441: ; -2441: -2441: __atomic_store_n(&_M_p, __p, __m); -2441: } -2441: -2441: inline __attribute__((__always_inline__)) __pointer_type -2441: load(memory_order __m = memory_order_seq_cst) const noexcept -2441: { -2441: memory_order __b = __m & __memory_order_mask; -2441: ; -2441: ; -2441: -2441: return __atomic_load_n(&_M_p, __m); -2441: } -2441: -2441: inline __attribute__((__always_inline__)) __pointer_type -2441: load(memory_order __m = memory_order_seq_cst) const volatile noexcept -2441: { -2441: memory_order __b = __m & __memory_order_mask; -2441: ; -2441: ; -2441: -2441: return __atomic_load_n(&_M_p, __m); -2441: } -2441: -2441: inline __attribute__((__always_inline__)) __pointer_type -2441: exchange(__pointer_type __p, -2441: memory_order __m = memory_order_seq_cst) noexcept -2441: { -2441: return __atomic_exchange_n(&_M_p, __p, __m); -2441: } -2441: -2441: -2441: inline __attribute__((__always_inline__)) __pointer_type -2441: exchange(__pointer_type __p, -2441: memory_order __m = memory_order_seq_cst) volatile noexcept -2441: { -2441: return __atomic_exchange_n(&_M_p, __p, __m); -2441: } -2441: -2441: inline __attribute__((__always_inline__)) bool -2441: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, -2441: memory_order __m1, -2441: memory_order __m2) noexcept -2441: { -2441: memory_order __b2 = __m2 & __memory_order_mask; -2441: memory_order __b1 = __m1 & __memory_order_mask; -2441: ; -2441: ; -2441: ; -2441: -2441: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, __m1, __m2); -2441: } -2441: -2441: inline __attribute__((__always_inline__)) bool -2441: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, -2441: memory_order __m1, -2441: memory_order __m2) volatile noexcept -2441: { -2441: memory_order __b2 = __m2 & __memory_order_mask; -2441: memory_order __b1 = __m1 & __memory_order_mask; -2441: -2441: ; -2441: ; -2441: ; -2441: -2441: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, __m1, __m2); -2441: } -2441: -2441: inline __attribute__((__always_inline__)) __pointer_type -2441: fetch_add(ptrdiff_t __d, -2441: memory_order __m = memory_order_seq_cst) noexcept -2441: { return __atomic_fetch_add(&_M_p, _M_type_size(__d), __m); } -2441: -2441: inline __attribute__((__always_inline__)) __pointer_type -2441: fetch_add(ptrdiff_t __d, -2441: memory_order __m = memory_order_seq_cst) volatile noexcept -2441: { return __atomic_fetch_add(&_M_p, _M_type_size(__d), __m); } -2441: -2441: inline __attribute__((__always_inline__)) __pointer_type -2441: fetch_sub(ptrdiff_t __d, -2441: memory_order __m = memory_order_seq_cst) noexcept -2441: { return __atomic_fetch_sub(&_M_p, _M_type_size(__d), __m); } -2441: -2441: inline __attribute__((__always_inline__)) __pointer_type -2441: fetch_sub(ptrdiff_t __d, -2441: memory_order __m = memory_order_seq_cst) volatile noexcept -2441: { return __atomic_fetch_sub(&_M_p, _M_type_size(__d), __m); } -2441: }; -2441: -2441: -2441: -2441: -2441: } -2441: # 34 "/usr/include/c++/8/bits/shared_ptr_atomic.h" 2 3 -2441: -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: struct _Sp_locker -2441: { -2441: _Sp_locker(const _Sp_locker&) = delete; -2441: _Sp_locker& operator=(const _Sp_locker&) = delete; -2441: -2441: -2441: explicit -2441: _Sp_locker(const void*) noexcept; -2441: _Sp_locker(const void*, const void*) noexcept; -2441: ~_Sp_locker(); -2441: -2441: private: -2441: unsigned char _M_key1; -2441: unsigned char _M_key2; -2441: -2441: -2441: -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline bool -2441: atomic_is_lock_free(const __shared_ptr<_Tp, _Lp>* __p) -2441: { -2441: -2441: return __gthread_active_p() == 0; -2441: -2441: -2441: -2441: } -2441: -2441: template -2441: inline bool -2441: atomic_is_lock_free(const shared_ptr<_Tp>* __p) -2441: { return std::atomic_is_lock_free<_Tp, __default_lock_policy>(__p); } -2441: # 96 "/usr/include/c++/8/bits/shared_ptr_atomic.h" 3 -2441: template -2441: inline shared_ptr<_Tp> -2441: atomic_load_explicit(const shared_ptr<_Tp>* __p, memory_order) -2441: { -2441: _Sp_locker __lock{__p}; -2441: return *__p; -2441: } -2441: -2441: template -2441: inline shared_ptr<_Tp> -2441: atomic_load(const shared_ptr<_Tp>* __p) -2441: { return std::atomic_load_explicit(__p, memory_order_seq_cst); } -2441: -2441: template -2441: inline __shared_ptr<_Tp, _Lp> -2441: atomic_load_explicit(const __shared_ptr<_Tp, _Lp>* __p, memory_order) -2441: { -2441: _Sp_locker __lock{__p}; -2441: return *__p; -2441: } -2441: -2441: template -2441: inline __shared_ptr<_Tp, _Lp> -2441: atomic_load(const __shared_ptr<_Tp, _Lp>* __p) -2441: { return std::atomic_load_explicit(__p, memory_order_seq_cst); } -2441: # 132 "/usr/include/c++/8/bits/shared_ptr_atomic.h" 3 -2441: template -2441: inline void -2441: atomic_store_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r, -2441: memory_order) -2441: { -2441: _Sp_locker __lock{__p}; -2441: __p->swap(__r); -2441: } -2441: -2441: template -2441: inline void -2441: atomic_store(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r) -2441: { std::atomic_store_explicit(__p, std::move(__r), memory_order_seq_cst); } -2441: -2441: template -2441: inline void -2441: atomic_store_explicit(__shared_ptr<_Tp, _Lp>* __p, -2441: __shared_ptr<_Tp, _Lp> __r, -2441: memory_order) -2441: { -2441: _Sp_locker __lock{__p}; -2441: __p->swap(__r); -2441: } -2441: -2441: template -2441: inline void -2441: atomic_store(__shared_ptr<_Tp, _Lp>* __p, __shared_ptr<_Tp, _Lp> __r) -2441: { std::atomic_store_explicit(__p, std::move(__r), memory_order_seq_cst); } -2441: # 169 "/usr/include/c++/8/bits/shared_ptr_atomic.h" 3 -2441: template -2441: inline shared_ptr<_Tp> -2441: atomic_exchange_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r, -2441: memory_order) -2441: { -2441: _Sp_locker __lock{__p}; -2441: __p->swap(__r); -2441: return __r; -2441: } -2441: -2441: template -2441: inline shared_ptr<_Tp> -2441: atomic_exchange(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r) -2441: { -2441: return std::atomic_exchange_explicit(__p, std::move(__r), -2441: memory_order_seq_cst); -2441: } -2441: -2441: template -2441: inline __shared_ptr<_Tp, _Lp> -2441: atomic_exchange_explicit(__shared_ptr<_Tp, _Lp>* __p, -2441: __shared_ptr<_Tp, _Lp> __r, -2441: memory_order) -2441: { -2441: _Sp_locker __lock{__p}; -2441: __p->swap(__r); -2441: return __r; -2441: } -2441: -2441: template -2441: inline __shared_ptr<_Tp, _Lp> -2441: atomic_exchange(__shared_ptr<_Tp, _Lp>* __p, __shared_ptr<_Tp, _Lp> __r) -2441: { -2441: return std::atomic_exchange_explicit(__p, std::move(__r), -2441: memory_order_seq_cst); -2441: } -2441: # 218 "/usr/include/c++/8/bits/shared_ptr_atomic.h" 3 -2441: template -2441: bool -2441: atomic_compare_exchange_strong_explicit(shared_ptr<_Tp>* __p, -2441: shared_ptr<_Tp>* __v, -2441: shared_ptr<_Tp> __w, -2441: memory_order, -2441: memory_order) -2441: { -2441: shared_ptr<_Tp> __x; -2441: _Sp_locker __lock{__p, __v}; -2441: owner_less> __less; -2441: if (*__p == *__v && !__less(*__p, *__v) && !__less(*__v, *__p)) -2441: { -2441: __x = std::move(*__p); -2441: *__p = std::move(__w); -2441: return true; -2441: } -2441: __x = std::move(*__v); -2441: *__v = *__p; -2441: return false; -2441: } -2441: -2441: template -2441: inline bool -2441: atomic_compare_exchange_strong(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v, -2441: shared_ptr<_Tp> __w) -2441: { -2441: return std::atomic_compare_exchange_strong_explicit(__p, __v, -2441: std::move(__w), memory_order_seq_cst, memory_order_seq_cst); -2441: } -2441: -2441: template -2441: inline bool -2441: atomic_compare_exchange_weak_explicit(shared_ptr<_Tp>* __p, -2441: shared_ptr<_Tp>* __v, -2441: shared_ptr<_Tp> __w, -2441: memory_order __success, -2441: memory_order __failure) -2441: { -2441: return std::atomic_compare_exchange_strong_explicit(__p, __v, -2441: std::move(__w), __success, __failure); -2441: } -2441: -2441: template -2441: inline bool -2441: atomic_compare_exchange_weak(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v, -2441: shared_ptr<_Tp> __w) -2441: { -2441: return std::atomic_compare_exchange_weak_explicit(__p, __v, -2441: std::move(__w), memory_order_seq_cst, memory_order_seq_cst); -2441: } -2441: -2441: template -2441: bool -2441: atomic_compare_exchange_strong_explicit(__shared_ptr<_Tp, _Lp>* __p, -2441: __shared_ptr<_Tp, _Lp>* __v, -2441: __shared_ptr<_Tp, _Lp> __w, -2441: memory_order, -2441: memory_order) -2441: { -2441: __shared_ptr<_Tp, _Lp> __x; -2441: _Sp_locker __lock{__p, __v}; -2441: owner_less<__shared_ptr<_Tp, _Lp>> __less; -2441: if (*__p == *__v && !__less(*__p, *__v) && !__less(*__v, *__p)) -2441: { -2441: __x = std::move(*__p); -2441: *__p = std::move(__w); -2441: return true; -2441: } -2441: __x = std::move(*__v); -2441: *__v = *__p; -2441: return false; -2441: } -2441: -2441: template -2441: inline bool -2441: atomic_compare_exchange_strong(__shared_ptr<_Tp, _Lp>* __p, -2441: __shared_ptr<_Tp, _Lp>* __v, -2441: __shared_ptr<_Tp, _Lp> __w) -2441: { -2441: return std::atomic_compare_exchange_strong_explicit(__p, __v, -2441: std::move(__w), memory_order_seq_cst, memory_order_seq_cst); -2441: } -2441: -2441: template -2441: inline bool -2441: atomic_compare_exchange_weak_explicit(__shared_ptr<_Tp, _Lp>* __p, -2441: __shared_ptr<_Tp, _Lp>* __v, -2441: __shared_ptr<_Tp, _Lp> __w, -2441: memory_order __success, -2441: memory_order __failure) -2441: { -2441: return std::atomic_compare_exchange_strong_explicit(__p, __v, -2441: std::move(__w), __success, __failure); -2441: } -2441: -2441: template -2441: inline bool -2441: atomic_compare_exchange_weak(__shared_ptr<_Tp, _Lp>* __p, -2441: __shared_ptr<_Tp, _Lp>* __v, -2441: __shared_ptr<_Tp, _Lp> __w) -2441: { -2441: return std::atomic_compare_exchange_weak_explicit(__p, __v, -2441: std::move(__w), memory_order_seq_cst, memory_order_seq_cst); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: } -2441: # 83 "/usr/include/c++/8/memory" 2 3 -2441: -2441: # 1 "/usr/include/c++/8/backward/auto_ptr.h" 1 3 -2441: # 36 "/usr/include/c++/8/backward/auto_ptr.h" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: # 47 "/usr/include/c++/8/backward/auto_ptr.h" 3 -2441: template -2441: struct auto_ptr_ref -2441: { -2441: _Tp1* _M_ptr; -2441: -2441: explicit -2441: auto_ptr_ref(_Tp1* __p): _M_ptr(__p) { } -2441: } __attribute__ ((__deprecated__)); -2441: -2441: #pragma GCC diagnostic push -2441: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" -2441: # 88 "/usr/include/c++/8/backward/auto_ptr.h" 3 -2441: template -2441: class auto_ptr -2441: { -2441: private: -2441: _Tp* _M_ptr; -2441: -2441: public: -2441: -2441: typedef _Tp element_type; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: explicit -2441: auto_ptr(element_type* __p = 0) throw() : _M_ptr(__p) { } -2441: # 114 "/usr/include/c++/8/backward/auto_ptr.h" 3 -2441: auto_ptr(auto_ptr& __a) throw() : _M_ptr(__a.release()) { } -2441: # 126 "/usr/include/c++/8/backward/auto_ptr.h" 3 -2441: template -2441: auto_ptr(auto_ptr<_Tp1>& __a) throw() : _M_ptr(__a.release()) { } -2441: # 137 "/usr/include/c++/8/backward/auto_ptr.h" 3 -2441: auto_ptr& -2441: operator=(auto_ptr& __a) throw() -2441: { -2441: reset(__a.release()); -2441: return *this; -2441: } -2441: # 154 "/usr/include/c++/8/backward/auto_ptr.h" 3 -2441: template -2441: auto_ptr& -2441: operator=(auto_ptr<_Tp1>& __a) throw() -2441: { -2441: reset(__a.release()); -2441: return *this; -2441: } -2441: # 172 "/usr/include/c++/8/backward/auto_ptr.h" 3 -2441: ~auto_ptr() { delete _M_ptr; } -2441: # 182 "/usr/include/c++/8/backward/auto_ptr.h" 3 -2441: element_type& -2441: operator*() const throw() -2441: { -2441: ; -2441: return *_M_ptr; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: element_type* -2441: operator->() const throw() -2441: { -2441: ; -2441: return _M_ptr; -2441: } -2441: # 212 "/usr/include/c++/8/backward/auto_ptr.h" 3 -2441: element_type* -2441: get() const throw() { return _M_ptr; } -2441: # 226 "/usr/include/c++/8/backward/auto_ptr.h" 3 -2441: element_type* -2441: release() throw() -2441: { -2441: element_type* __tmp = _M_ptr; -2441: _M_ptr = 0; -2441: return __tmp; -2441: } -2441: # 241 "/usr/include/c++/8/backward/auto_ptr.h" 3 -2441: void -2441: reset(element_type* __p = 0) throw() -2441: { -2441: if (__p != _M_ptr) -2441: { -2441: delete _M_ptr; -2441: _M_ptr = __p; -2441: } -2441: } -2441: # 266 "/usr/include/c++/8/backward/auto_ptr.h" 3 -2441: auto_ptr(auto_ptr_ref __ref) throw() -2441: : _M_ptr(__ref._M_ptr) { } -2441: -2441: auto_ptr& -2441: operator=(auto_ptr_ref __ref) throw() -2441: { -2441: if (__ref._M_ptr != this->get()) -2441: { -2441: delete _M_ptr; -2441: _M_ptr = __ref._M_ptr; -2441: } -2441: return *this; -2441: } -2441: -2441: template -2441: operator auto_ptr_ref<_Tp1>() throw() -2441: { return auto_ptr_ref<_Tp1>(this->release()); } -2441: -2441: template -2441: operator auto_ptr<_Tp1>() throw() -2441: { return auto_ptr<_Tp1>(this->release()); } -2441: } __attribute__ ((__deprecated__)); -2441: -2441: -2441: -2441: template<> -2441: class auto_ptr -2441: { -2441: public: -2441: typedef void element_type; -2441: } __attribute__ ((__deprecated__)); -2441: -2441: -2441: template<_Lock_policy _Lp> -2441: template -2441: inline -2441: __shared_count<_Lp>::__shared_count(std::auto_ptr<_Tp>&& __r) -2441: : _M_pi(new _Sp_counted_ptr<_Tp*, _Lp>(__r.get())) -2441: { __r.release(); } -2441: -2441: template -2441: template -2441: inline -2441: __shared_ptr<_Tp, _Lp>::__shared_ptr(std::auto_ptr<_Tp1>&& __r) -2441: : _M_ptr(__r.get()), _M_refcount() -2441: { -2441: -2441: static_assert( sizeof(_Tp1) > 0, "incomplete type" ); -2441: _Tp1* __tmp = __r.get(); -2441: _M_refcount = __shared_count<_Lp>(std::move(__r)); -2441: _M_enable_shared_from_this_with(__tmp); -2441: } -2441: -2441: template -2441: template -2441: inline -2441: shared_ptr<_Tp>::shared_ptr(std::auto_ptr<_Tp1>&& __r) -2441: : __shared_ptr<_Tp>(std::move(__r)) { } -2441: -2441: template -2441: template -2441: inline -2441: unique_ptr<_Tp, _Dp>::unique_ptr(auto_ptr<_Up>&& __u) noexcept -2441: : _M_t(__u.release(), deleter_type()) { } -2441: -2441: -2441: #pragma GCC diagnostic pop -2441: -2441: -2441: } -2441: # 85 "/usr/include/c++/8/memory" 2 3 -2441: # 93 "/usr/include/c++/8/memory" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: # 113 "/usr/include/c++/8/memory" 3 -2441: inline void* -2441: align(size_t __align, size_t __size, void*& __ptr, size_t& __space) noexcept -2441: { -2441: const auto __intptr = reinterpret_cast(__ptr); -2441: const auto __aligned = (__intptr - 1u + __align) & -__align; -2441: const auto __diff = __aligned - __intptr; -2441: if ((__size + __diff) > __space) -2441: return nullptr; -2441: else -2441: { -2441: __space -= __diff; -2441: return __ptr = reinterpret_cast(__aligned); -2441: } -2441: } -2441: -2441: -2441: -2441: enum class pointer_safety { relaxed, preferred, strict }; -2441: -2441: inline void -2441: declare_reachable(void*) { } -2441: -2441: template -2441: inline _Tp* -2441: undeclare_reachable(_Tp* __p) { return __p; } -2441: -2441: inline void -2441: declare_no_pointers(char*, size_t) { } -2441: -2441: inline void -2441: undeclare_no_pointers(char*, size_t) { } -2441: -2441: inline pointer_safety -2441: get_pointer_safety() noexcept { return pointer_safety::relaxed; } -2441: -2441: -2441: } -2441: # 34 "../../src/Dense_Row_defs.hh" 2 -2441: # 42 "../../src/Dense_Row_defs.hh" -2441: -2441: # 42 "../../src/Dense_Row_defs.hh" -2441: class Parma_Polyhedra_Library::Dense_Row { -2441: public: -2441: class iterator; -2441: class const_iterator; -2441: -2441: -2441: Dense_Row(); -2441: -2441: explicit Dense_Row(const Sparse_Row& row); -2441: -2441: -2441: -2441: -2441: -2441: Dense_Row(dimension_type sz); -2441: # 69 "../../src/Dense_Row_defs.hh" -2441: Dense_Row(dimension_type sz, dimension_type capacity); -2441: -2441: -2441: Dense_Row(const Dense_Row& y); -2441: -2441: -2441: -2441: -2441: -2441: -2441: Dense_Row(const Dense_Row& y, dimension_type capacity); -2441: -2441: -2441: -2441: -2441: -2441: Dense_Row(const Dense_Row& y, dimension_type sz, dimension_type capacity); -2441: -2441: -2441: -2441: -2441: -2441: Dense_Row(const Sparse_Row& y, dimension_type sz, dimension_type capacity); -2441: -2441: -2441: ~Dense_Row(); -2441: -2441: -2441: Dense_Row& operator=(const Dense_Row& y); -2441: -2441: -2441: Dense_Row& operator=(const Sparse_Row& y); -2441: -2441: -2441: void m_swap(Dense_Row& y); -2441: -2441: -2441: void resize(dimension_type sz); -2441: -2441: -2441: void resize(dimension_type sz, dimension_type capacity); -2441: -2441: -2441: void clear(); -2441: # 127 "../../src/Dense_Row_defs.hh" -2441: void add_zeroes_and_shift(dimension_type n, dimension_type i); -2441: # 136 "../../src/Dense_Row_defs.hh" -2441: void expand_within_capacity(dimension_type new_size); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void shrink(dimension_type new_size); -2441: -2441: -2441: static dimension_type max_size(); -2441: -2441: -2441: dimension_type size() const; -2441: -2441: -2441: -2441: -2441: Coefficient& operator[](dimension_type k); -2441: -2441: -2441: Coefficient_traits::const_reference operator[](dimension_type k) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void normalize(); -2441: -2441: -2441: -2441: void swap_coefficients(dimension_type i, dimension_type j); -2441: -2441: -2441: -2441: void swap_coefficients(iterator i, iterator j); -2441: -2441: iterator begin(); -2441: const_iterator begin() const; -2441: -2441: iterator end(); -2441: const_iterator end() const; -2441: -2441: -2441: -2441: void reset(dimension_type i); -2441: -2441: -2441: -2441: void reset(dimension_type first, dimension_type last); -2441: -2441: -2441: -2441: iterator reset(iterator itr); -2441: -2441: -2441: -2441: Coefficient_traits::const_reference get(dimension_type i) const; -2441: -2441: -2441: iterator find(dimension_type i); -2441: -2441: -2441: const_iterator find(dimension_type i) const; -2441: -2441: -2441: iterator find(iterator itr, dimension_type i); -2441: -2441: -2441: const_iterator find(const_iterator itr, dimension_type i) const; -2441: -2441: -2441: iterator lower_bound(dimension_type i); -2441: -2441: -2441: const_iterator lower_bound(dimension_type i) const; -2441: -2441: -2441: iterator lower_bound(iterator itr, dimension_type i); -2441: -2441: -2441: const_iterator lower_bound(const_iterator itr, dimension_type i) const; -2441: -2441: -2441: iterator insert(dimension_type i, Coefficient_traits::const_reference x); -2441: -2441: -2441: iterator insert(dimension_type i); -2441: -2441: -2441: iterator insert(iterator itr, dimension_type i, -2441: Coefficient_traits::const_reference x); -2441: -2441: -2441: iterator insert(iterator itr, dimension_type i); -2441: # 258 "../../src/Dense_Row_defs.hh" -2441: template -2441: void combine_needs_first(const Dense_Row& y, -2441: const Func1& f, const Func2& g); -2441: # 286 "../../src/Dense_Row_defs.hh" -2441: template -2441: void combine_needs_second(const Dense_Row& y, -2441: const Func1& g, const Func2& h); -2441: # 318 "../../src/Dense_Row_defs.hh" -2441: template -2441: void combine(const Dense_Row& y, -2441: const Func1& f, const Func2& g, const Func3& h); -2441: # 342 "../../src/Dense_Row_defs.hh" -2441: void linear_combine(const Dense_Row& y, -2441: Coefficient_traits::const_reference coeff1, -2441: Coefficient_traits::const_reference coeff2); -2441: # 354 "../../src/Dense_Row_defs.hh" -2441: void linear_combine(const Dense_Row& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2, -2441: dimension_type start, dimension_type end); -2441: -2441: void ascii_dump() const; void ascii_dump(std::ostream& s) const; void print() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool ascii_load(std::istream& s); -2441: -2441: -2441: -2441: -2441: -2441: memory_size_type total_memory_in_bytes() const; -2441: -2441: -2441: -2441: -2441: -2441: memory_size_type external_memory_in_bytes() const; -2441: -2441: -2441: -2441: -2441: -2441: memory_size_type total_memory_in_bytes(dimension_type capacity) const; -2441: -2441: -2441: -2441: -2441: -2441: memory_size_type external_memory_in_bytes(dimension_type capacity) const; -2441: -2441: -2441: bool OK() const; -2441: -2441: -2441: -2441: -2441: -2441: bool OK(dimension_type row_size) const; -2441: -2441: private: -2441: void init(const Sparse_Row& row); -2441: -2441: void destroy(); -2441: -2441: struct Impl { -2441: -2441: Impl(); -2441: -2441: ~Impl(); -2441: -2441: -2441: dimension_type size; -2441: -2441: -2441: dimension_type capacity; -2441: -2441: -2441: std::allocator coeff_allocator; -2441: -2441: -2441: -2441: Coefficient* vec; -2441: }; -2441: -2441: Impl impl; -2441: -2441: -2441: dimension_type capacity() const; -2441: }; -2441: -2441: class Parma_Polyhedra_Library::Dense_Row::iterator { -2441: public: -2441: -2441: typedef std::bidirectional_iterator_tag iterator_category; -2441: typedef Coefficient value_type; -2441: typedef std::ptrdiff_t difference_type; -2441: typedef value_type* pointer; -2441: typedef value_type& reference; -2441: -2441: iterator(); -2441: iterator(Dense_Row& r, dimension_type i); -2441: -2441: Coefficient& operator*(); -2441: Coefficient_traits::const_reference operator*() const; -2441: # 454 "../../src/Dense_Row_defs.hh" -2441: dimension_type index() const; -2441: -2441: iterator& operator++(); -2441: iterator operator++(int); -2441: -2441: iterator& operator--(); -2441: iterator operator--(int); -2441: -2441: bool operator==(const iterator& x) const; -2441: bool operator!=(const iterator& x) const; -2441: -2441: operator const_iterator() const; -2441: -2441: bool OK() const; -2441: -2441: private: -2441: Dense_Row* row; -2441: dimension_type idx; -2441: }; -2441: -2441: class Parma_Polyhedra_Library::Dense_Row::const_iterator { -2441: public: -2441: -2441: typedef const Coefficient value_type; -2441: typedef std::ptrdiff_t difference_type; -2441: typedef value_type* pointer; -2441: typedef Coefficient_traits::const_reference reference; -2441: -2441: const_iterator(); -2441: const_iterator(const Dense_Row& r, dimension_type i); -2441: -2441: Coefficient_traits::const_reference operator*() const; -2441: # 494 "../../src/Dense_Row_defs.hh" -2441: dimension_type index() const; -2441: -2441: const_iterator& operator++(); -2441: const_iterator operator++(int); -2441: -2441: const_iterator& operator--(); -2441: const_iterator operator--(int); -2441: -2441: bool operator==(const const_iterator& x) const; -2441: bool operator!=(const const_iterator& x) const; -2441: -2441: bool OK() const; -2441: -2441: private: -2441: const Dense_Row* row; -2441: dimension_type idx; -2441: }; -2441: -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: -2441: -2441: void swap(Dense_Row& x, Dense_Row& y); -2441: -2441: -2441: -2441: -2441: -2441: void iter_swap(std::vector::iterator x, -2441: std::vector::iterator y); -2441: -2441: -2441: -2441: -2441: -2441: bool operator==(const Dense_Row& x, const Dense_Row& y); -2441: -2441: -2441: -2441: -2441: -2441: bool operator!=(const Dense_Row& x, const Dense_Row& y); -2441: -2441: -2441: -2441: -2441: void linear_combine(Dense_Row& x, const Dense_Row& y, -2441: Coefficient_traits::const_reference coeff1, -2441: Coefficient_traits::const_reference coeff2); -2441: -2441: -2441: -2441: -2441: -2441: -2441: void linear_combine(Dense_Row& x, const Dense_Row& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2, -2441: dimension_type start, dimension_type end); -2441: -2441: } -2441: -2441: # 1 "../../src/Dense_Row_inlines.hh" 1 -2441: # 32 "../../src/Dense_Row_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: inline -2441: Dense_Row::Impl::Impl() -2441: : size(0), capacity(0), coeff_allocator(), vec(0) { -2441: } -2441: -2441: inline -2441: Dense_Row::Impl::~Impl() { -2441: while (size != 0) { -2441: --size; -2441: vec[size].~Coefficient(); -2441: } -2441: coeff_allocator.deallocate(vec, capacity); -2441: } -2441: -2441: inline dimension_type -2441: Dense_Row::max_size() { -2441: return std::numeric_limits::max() / sizeof(Coefficient); -2441: } -2441: -2441: inline dimension_type -2441: Dense_Row::size() const { -2441: return impl.size; -2441: } -2441: -2441: inline dimension_type -2441: Dense_Row::capacity() const { -2441: return impl.capacity; -2441: } -2441: -2441: inline -2441: Dense_Row::Dense_Row() -2441: : impl() { -2441: -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: Dense_Row::Dense_Row(const dimension_type sz, -2441: const dimension_type capacity) -2441: : impl() { -2441: -2441: resize(sz, capacity); -2441: -2441: ((void) 0); -2441: ((void) 0); -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: Dense_Row::Dense_Row(const dimension_type sz) -2441: : impl() { -2441: -2441: resize(sz); -2441: -2441: ((void) 0); -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: Dense_Row::Dense_Row(const Dense_Row& y) -2441: : impl() { -2441: impl.coeff_allocator = y.impl.coeff_allocator; -2441: if (y.impl.vec != 0) { -2441: impl.capacity = y.capacity(); -2441: impl.vec = impl.coeff_allocator.allocate(impl.capacity); -2441: while (impl.size != y.size()) { -2441: new(&impl.vec[impl.size]) Coefficient(y[impl.size]); -2441: ++impl.size; -2441: } -2441: } -2441: ((void) 0); -2441: ((void) 0); -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: Dense_Row::Dense_Row(const Dense_Row& y, -2441: const dimension_type capacity) -2441: : impl() { -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: impl.capacity = capacity; -2441: impl.coeff_allocator = y.impl.coeff_allocator; -2441: impl.vec = impl.coeff_allocator.allocate(impl.capacity); -2441: -2441: if (y.impl.vec != 0) { -2441: while (impl.size != y.size()) { -2441: new(&impl.vec[impl.size]) Coefficient(y[impl.size]); -2441: ++impl.size; -2441: } -2441: } -2441: -2441: ((void) 0); -2441: ((void) 0); -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: Dense_Row::Dense_Row(const Dense_Row& y, -2441: const dimension_type sz, -2441: const dimension_type capacity) -2441: : impl() { -2441: ((void) 0); -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: impl.capacity = capacity; -2441: impl.coeff_allocator = y.impl.coeff_allocator; -2441: impl.vec = impl.coeff_allocator.allocate(impl.capacity); -2441: -2441: const dimension_type n = std::min(sz, y.size()); -2441: while (impl.size != n) { -2441: new(&impl.vec[impl.size]) Coefficient(y[impl.size]); -2441: ++impl.size; -2441: } -2441: while (impl.size != sz) { -2441: new(&impl.vec[impl.size]) Coefficient(); -2441: ++impl.size; -2441: } -2441: -2441: ((void) 0); -2441: ((void) 0); -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: Dense_Row::~Dense_Row() { -2441: -2441: } -2441: -2441: inline void -2441: Dense_Row::destroy() { -2441: resize(0); -2441: impl.coeff_allocator.deallocate(impl.vec, impl.capacity); -2441: } -2441: -2441: inline void -2441: Dense_Row::m_swap(Dense_Row& y) { -2441: using std::swap; -2441: swap(impl.size, y.impl.size); -2441: swap(impl.capacity, y.impl.capacity); -2441: swap(impl.coeff_allocator, y.impl.coeff_allocator); -2441: swap(impl.vec, y.impl.vec); -2441: ((void) 0); -2441: ((void) 0); -2441: } -2441: -2441: inline Dense_Row& -2441: Dense_Row::operator=(const Dense_Row& y) { -2441: -2441: if (this != &y && size() == y.size()) { -2441: -2441: -2441: for (dimension_type i = size(); i-- > 0; ) { -2441: (*this)[i] = y[i]; -2441: } -2441: -2441: return *this; -2441: } -2441: -2441: Dense_Row x(y); -2441: swap(*this, x); -2441: -2441: return *this; -2441: } -2441: -2441: inline Coefficient& -2441: Dense_Row::operator[](const dimension_type k) { -2441: ((void) 0); -2441: ((void) 0); -2441: return impl.vec[k]; -2441: } -2441: -2441: inline Coefficient_traits::const_reference -2441: Dense_Row::operator[](const dimension_type k) const { -2441: ((void) 0); -2441: ((void) 0); -2441: return impl.vec[k]; -2441: } -2441: -2441: inline void -2441: Dense_Row::swap_coefficients(dimension_type i, dimension_type j) { -2441: std::swap((*this)[i], (*this)[j]); -2441: } -2441: -2441: inline void -2441: Dense_Row::swap_coefficients(iterator i, iterator j) { -2441: std::swap(*i, *j); -2441: } -2441: -2441: inline void -2441: Dense_Row::reset(dimension_type i) { -2441: (*this)[i] = 0; -2441: } -2441: -2441: inline Dense_Row::iterator -2441: Dense_Row::reset(iterator itr) { -2441: *itr = 0; -2441: ++itr; -2441: return itr; -2441: } -2441: -2441: inline Dense_Row::iterator -2441: Dense_Row::begin() { -2441: return iterator(*this, 0); -2441: } -2441: -2441: inline Dense_Row::const_iterator -2441: Dense_Row::begin() const { -2441: return const_iterator(*this, 0); -2441: } -2441: -2441: inline Dense_Row::iterator -2441: Dense_Row::end() { -2441: return iterator(*this, size()); -2441: } -2441: -2441: inline Dense_Row::const_iterator -2441: Dense_Row::end() const { -2441: return const_iterator(*this, size()); -2441: } -2441: -2441: inline Coefficient_traits::const_reference -2441: Dense_Row::get(dimension_type i) const { -2441: return (*this)[i]; -2441: } -2441: -2441: inline Dense_Row::iterator -2441: Dense_Row::find(dimension_type i) { -2441: return iterator(*this, i); -2441: } -2441: -2441: inline Dense_Row::const_iterator -2441: Dense_Row::find(dimension_type i) const { -2441: return const_iterator(*this, i); -2441: } -2441: -2441: inline Dense_Row::iterator -2441: Dense_Row::find(iterator itr, dimension_type i) { -2441: (void)itr; -2441: return iterator(*this, i); -2441: } -2441: -2441: inline Dense_Row::const_iterator -2441: Dense_Row::find(const_iterator itr, dimension_type i) const { -2441: (void)itr; -2441: return const_iterator(*this, i); -2441: } -2441: -2441: inline Dense_Row::iterator -2441: Dense_Row::lower_bound(dimension_type i) { -2441: return find(i); -2441: } -2441: -2441: inline Dense_Row::const_iterator -2441: Dense_Row::lower_bound(dimension_type i) const { -2441: return find(i); -2441: } -2441: -2441: inline Dense_Row::iterator -2441: Dense_Row::lower_bound(iterator itr, dimension_type i) { -2441: return find(itr, i); -2441: } -2441: -2441: inline Dense_Row::const_iterator -2441: Dense_Row::lower_bound(const_iterator itr, dimension_type i) const { -2441: return find(itr, i); -2441: } -2441: -2441: inline Dense_Row::iterator -2441: Dense_Row::insert(dimension_type i, -2441: Coefficient_traits::const_reference x) { -2441: (*this)[i] = x; -2441: return find(i); -2441: } -2441: -2441: inline Dense_Row::iterator -2441: Dense_Row::insert(dimension_type i) { -2441: return find(i); -2441: } -2441: -2441: inline Dense_Row::iterator -2441: Dense_Row::insert(iterator itr, dimension_type i, -2441: Coefficient_traits::const_reference x) { -2441: (void)itr; -2441: (*this)[i] = x; -2441: return find(i); -2441: } -2441: -2441: inline Dense_Row::iterator -2441: Dense_Row::insert(iterator itr, dimension_type i) { -2441: (void)itr; -2441: return find(i); -2441: } -2441: -2441: inline memory_size_type -2441: Dense_Row::total_memory_in_bytes() const { -2441: return sizeof(*this) + external_memory_in_bytes(); -2441: } -2441: -2441: inline memory_size_type -2441: Dense_Row::total_memory_in_bytes(dimension_type capacity) const { -2441: return sizeof(*this) + external_memory_in_bytes(capacity); -2441: } -2441: -2441: -2441: inline bool -2441: operator!=(const Dense_Row& x, const Dense_Row& y) { -2441: return !(x == y); -2441: } -2441: -2441: -2441: inline -2441: Dense_Row::iterator::iterator() -2441: : row( -2441: # 349 "../../src/Dense_Row_inlines.hh" 3 4 -2441: __null -2441: # 349 "../../src/Dense_Row_inlines.hh" -2441: ), idx(0) { -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: Dense_Row::iterator::iterator(Dense_Row& r, dimension_type i) -2441: : row(&r), idx(i) { -2441: ((void) 0); -2441: } -2441: -2441: inline Coefficient& -2441: Dense_Row::iterator::operator*() { -2441: ((void) 0); -2441: return (*row)[idx]; -2441: } -2441: -2441: inline Coefficient_traits::const_reference -2441: Dense_Row::iterator::operator*() const { -2441: ((void) 0); -2441: return (*row)[idx]; -2441: } -2441: -2441: inline dimension_type -2441: Dense_Row::iterator::index() const { -2441: return idx; -2441: } -2441: -2441: inline Dense_Row::iterator& -2441: Dense_Row::iterator::operator++() { -2441: ((void) 0); -2441: ++idx; -2441: ((void) 0); -2441: return *this; -2441: } -2441: -2441: inline Dense_Row::iterator -2441: Dense_Row::iterator::operator++(int) { -2441: iterator tmp(*this); -2441: ++(*this); -2441: return tmp; -2441: } -2441: -2441: inline Dense_Row::iterator& -2441: Dense_Row::iterator::operator--() { -2441: ((void) 0); -2441: --idx; -2441: ((void) 0); -2441: return *this; -2441: } -2441: -2441: inline Dense_Row::iterator -2441: Dense_Row::iterator::operator--(int) { -2441: iterator tmp(*this); -2441: --(*this); -2441: return tmp; -2441: } -2441: -2441: inline bool -2441: Dense_Row::iterator::operator==(const iterator& x) const { -2441: return (row == x.row) && (idx == x.idx); -2441: } -2441: -2441: inline bool -2441: Dense_Row::iterator::operator!=(const iterator& x) const { -2441: return !(*this == x); -2441: } -2441: -2441: inline -2441: Dense_Row::iterator::operator const_iterator() const { -2441: return const_iterator(*row, idx); -2441: } -2441: -2441: inline bool -2441: Dense_Row::iterator::OK() const { -2441: if (row == -2441: # 423 "../../src/Dense_Row_inlines.hh" 3 4 -2441: __null -2441: # 423 "../../src/Dense_Row_inlines.hh" -2441: ) { -2441: return true; -2441: } -2441: -2441: return (idx <= row->size()); -2441: } -2441: -2441: -2441: inline -2441: Dense_Row::const_iterator::const_iterator() -2441: : row( -2441: # 433 "../../src/Dense_Row_inlines.hh" 3 4 -2441: __null -2441: # 433 "../../src/Dense_Row_inlines.hh" -2441: ), idx(0) { -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: Dense_Row::const_iterator::const_iterator(const Dense_Row& r, -2441: dimension_type i) -2441: : row(&r), idx(i) { -2441: ((void) 0); -2441: } -2441: -2441: inline Coefficient_traits::const_reference -2441: Dense_Row::const_iterator::operator*() const { -2441: ((void) 0); -2441: return (*row)[idx]; -2441: } -2441: -2441: inline dimension_type -2441: Dense_Row::const_iterator::index() const { -2441: return idx; -2441: } -2441: -2441: inline Dense_Row::const_iterator& -2441: Dense_Row::const_iterator::operator++() { -2441: ((void) 0); -2441: ++idx; -2441: ((void) 0); -2441: return *this; -2441: } -2441: -2441: inline Dense_Row::const_iterator -2441: Dense_Row::const_iterator::operator++(int) { -2441: const_iterator tmp(*this); -2441: ++(*this); -2441: return tmp; -2441: } -2441: -2441: inline Dense_Row::const_iterator& -2441: Dense_Row::const_iterator::operator--() { -2441: ((void) 0); -2441: --idx; -2441: ((void) 0); -2441: return *this; -2441: } -2441: -2441: inline Dense_Row::const_iterator -2441: Dense_Row::const_iterator::operator--(int) { -2441: const_iterator tmp(*this); -2441: --(*this); -2441: return tmp; -2441: } -2441: -2441: inline bool -2441: Dense_Row::const_iterator::operator==(const const_iterator& x) const { -2441: return (row == x.row) && (idx == x.idx); -2441: } -2441: -2441: inline bool -2441: Dense_Row::const_iterator::operator!=(const const_iterator& x) const { -2441: return !(*this == x); -2441: } -2441: -2441: inline bool -2441: Dense_Row::const_iterator::OK() const { -2441: if (row == -2441: # 497 "../../src/Dense_Row_inlines.hh" 3 4 -2441: __null -2441: # 497 "../../src/Dense_Row_inlines.hh" -2441: ) { -2441: return true; -2441: } -2441: -2441: return (idx <= row->size()); -2441: } -2441: -2441: inline void -2441: linear_combine(Dense_Row& x, const Dense_Row& y, -2441: Coefficient_traits::const_reference coeff1, -2441: Coefficient_traits::const_reference coeff2) { -2441: x.linear_combine(y, coeff1, coeff2); -2441: } -2441: -2441: inline void -2441: linear_combine(Dense_Row& x, const Dense_Row& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2, -2441: dimension_type start, dimension_type end) { -2441: x.linear_combine(y, c1, c2, start, end); -2441: } -2441: -2441: -2441: inline void -2441: swap(Dense_Row& x, Dense_Row& y) { -2441: x.m_swap(y); -2441: } -2441: -2441: -2441: inline void -2441: iter_swap(std::vector::iterator x, -2441: std::vector::iterator y) { -2441: swap(*x, *y); -2441: } -2441: -2441: } -2441: # 560 "../../src/Dense_Row_defs.hh" 2 -2441: # 1 "../../src/Dense_Row_templates.hh" 1 -2441: # 27 "../../src/Dense_Row_templates.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: template -2441: void -2441: Dense_Row::combine_needs_first(const Dense_Row& y, const Func1& , -2441: const Func2& g) { -2441: for (dimension_type i = size(); i-- > 0; ) { -2441: g((*this)[i], y[i]); -2441: } -2441: } -2441: -2441: template -2441: void -2441: Dense_Row::combine_needs_second(const Dense_Row& y, const Func1& g, -2441: const Func2& ) { -2441: for (dimension_type i = size(); i-- > 0; ) { -2441: g((*this)[i], y[i]); -2441: } -2441: } -2441: -2441: template -2441: void -2441: Dense_Row::combine(const Dense_Row& y, const Func1& , const Func2& g, -2441: const Func3& ) { -2441: for (dimension_type i = size(); i-- > 0; ) { -2441: g((*this)[i], y[i]); -2441: } -2441: } -2441: -2441: } -2441: # 561 "../../src/Dense_Row_defs.hh" 2 -2441: # 33 "../../src/Linear_Expression_Impl_defs.hh" 2 -2441: # 1 "../../src/Sparse_Row_defs.hh" 1 -2441: # 29 "../../src/Sparse_Row_defs.hh" -2441: # 1 "../../src/CO_Tree_defs.hh" 1 -2441: # 27 "../../src/CO_Tree_defs.hh" -2441: # 1 "../../src/CO_Tree_types.hh" 1 -2441: # 16 "../../src/CO_Tree_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: class CO_Tree; -2441: -2441: } -2441: # 28 "../../src/CO_Tree_defs.hh" 2 -2441: # 53 "../../src/CO_Tree_defs.hh" -2441: namespace Parma_Polyhedra_Library { -2441: # 103 "../../src/CO_Tree_defs.hh" -2441: class CO_Tree { -2441: -2441: public: -2441: class const_iterator; -2441: class iterator; -2441: -2441: private: -2441: -2441: typedef unsigned height_t; -2441: -2441: enum anonymous_enum_compile_time_check___LINE__ { compile_time_check_115 = sizeof(Parma_Polyhedra_Library::Compile_Time_Check<(C_Integer::max >= ((sizeof(dimension_type)) * static_cast(8)))>) } -2441: -2441: ; -2441: -2441: class tree_iterator; -2441: # 128 "../../src/CO_Tree_defs.hh" -2441: dimension_type dfs_index(const_iterator itr) const; -2441: # 139 "../../src/CO_Tree_defs.hh" -2441: dimension_type dfs_index(iterator itr) const; -2441: -2441: public: -2441: -2441: -2441: -2441: -2441: -2441: -2441: typedef Coefficient data_type; -2441: typedef Coefficient_traits::const_reference data_type_const_reference; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: class const_iterator { -2441: private: -2441: public: -2441: -2441: typedef std::bidirectional_iterator_tag iterator_category; -2441: typedef const data_type value_type; -2441: typedef std::ptrdiff_t difference_type; -2441: typedef value_type* pointer; -2441: typedef data_type_const_reference reference; -2441: -2441: -2441: -2441: -2441: -2441: explicit const_iterator(); -2441: # 180 "../../src/CO_Tree_defs.hh" -2441: explicit const_iterator(const CO_Tree& tree); -2441: # 195 "../../src/CO_Tree_defs.hh" -2441: const_iterator(const CO_Tree& tree, dimension_type i); -2441: # 204 "../../src/CO_Tree_defs.hh" -2441: const_iterator(const const_iterator& itr); -2441: # 213 "../../src/CO_Tree_defs.hh" -2441: const_iterator(const iterator& itr); -2441: # 222 "../../src/CO_Tree_defs.hh" -2441: void m_swap(const_iterator& itr); -2441: # 231 "../../src/CO_Tree_defs.hh" -2441: const_iterator& operator=(const const_iterator& itr); -2441: # 240 "../../src/CO_Tree_defs.hh" -2441: const_iterator& operator=(const iterator& itr); -2441: -2441: -2441: -2441: -2441: -2441: const_iterator& operator++(); -2441: -2441: -2441: -2441: -2441: -2441: const_iterator& operator--(); -2441: -2441: -2441: -2441: -2441: -2441: const_iterator operator++(int); -2441: -2441: -2441: -2441: -2441: -2441: const_iterator operator--(int); -2441: -2441: -2441: data_type_const_reference operator*() const; -2441: -2441: -2441: -2441: -2441: -2441: dimension_type index() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool operator==(const const_iterator& x) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool operator!=(const const_iterator& x) const; -2441: -2441: private: -2441: -2441: bool OK() const; -2441: -2441: -2441: const dimension_type* current_index; -2441: -2441: -2441: const data_type* current_data; -2441: -2441: -2441: -2441: -2441: -2441: -2441: friend dimension_type CO_Tree::dfs_index(const_iterator itr) const; -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: class iterator { -2441: public: -2441: -2441: typedef std::bidirectional_iterator_tag iterator_category; -2441: typedef data_type value_type; -2441: typedef std::ptrdiff_t difference_type; -2441: typedef value_type* pointer; -2441: typedef value_type& reference; -2441: -2441: -2441: -2441: -2441: -2441: iterator(); -2441: # 335 "../../src/CO_Tree_defs.hh" -2441: explicit iterator(CO_Tree& tree); -2441: # 350 "../../src/CO_Tree_defs.hh" -2441: iterator(CO_Tree& tree, dimension_type i); -2441: # 362 "../../src/CO_Tree_defs.hh" -2441: explicit iterator(const tree_iterator& itr); -2441: # 371 "../../src/CO_Tree_defs.hh" -2441: iterator(const iterator& itr); -2441: # 380 "../../src/CO_Tree_defs.hh" -2441: void m_swap(iterator& itr); -2441: # 389 "../../src/CO_Tree_defs.hh" -2441: iterator& operator=(const iterator& itr); -2441: # 398 "../../src/CO_Tree_defs.hh" -2441: iterator& operator=(const tree_iterator& itr); -2441: -2441: -2441: -2441: -2441: -2441: iterator& operator++(); -2441: -2441: -2441: -2441: -2441: -2441: iterator& operator--(); -2441: -2441: -2441: -2441: -2441: -2441: iterator operator++(int); -2441: -2441: -2441: -2441: -2441: -2441: iterator operator--(int); -2441: -2441: -2441: data_type& operator*(); -2441: -2441: -2441: data_type_const_reference operator*() const; -2441: -2441: -2441: -2441: -2441: -2441: dimension_type index() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool operator==(const iterator& x) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool operator!=(const iterator& x) const; -2441: -2441: private: -2441: -2441: bool OK() const; -2441: -2441: -2441: const dimension_type* current_index; -2441: -2441: -2441: data_type* current_data; -2441: -2441: -2441: -2441: -2441: -2441: -2441: friend const_iterator& const_iterator::operator=(const iterator&); -2441: friend dimension_type CO_Tree::dfs_index(iterator itr) const; -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: CO_Tree(); -2441: # 482 "../../src/CO_Tree_defs.hh" -2441: CO_Tree(const CO_Tree& y); -2441: # 501 "../../src/CO_Tree_defs.hh" -2441: template -2441: CO_Tree(Iterator i, dimension_type n); -2441: # 511 "../../src/CO_Tree_defs.hh" -2441: CO_Tree& operator=(const CO_Tree& y); -2441: -2441: -2441: -2441: -2441: -2441: void clear(); -2441: -2441: -2441: -2441: -2441: -2441: ~CO_Tree(); -2441: -2441: -2441: -2441: -2441: -2441: bool empty() const; -2441: -2441: -2441: -2441: -2441: -2441: dimension_type size() const; -2441: -2441: -2441: static dimension_type max_size(); -2441: -2441: -2441: void dump_tree() const; -2441: -2441: -2441: -2441: -2441: -2441: dimension_type external_memory_in_bytes() const; -2441: # 566 "../../src/CO_Tree_defs.hh" -2441: iterator insert(dimension_type key); -2441: # 587 "../../src/CO_Tree_defs.hh" -2441: iterator insert(dimension_type key, data_type_const_reference data); -2441: # 615 "../../src/CO_Tree_defs.hh" -2441: iterator insert(iterator itr, dimension_type key); -2441: # 645 "../../src/CO_Tree_defs.hh" -2441: iterator insert(iterator itr, dimension_type key, -2441: data_type_const_reference data); -2441: # 661 "../../src/CO_Tree_defs.hh" -2441: iterator erase(dimension_type key); -2441: # 676 "../../src/CO_Tree_defs.hh" -2441: iterator erase(iterator itr); -2441: # 690 "../../src/CO_Tree_defs.hh" -2441: void erase_element_and_shift_left(dimension_type key); -2441: # 703 "../../src/CO_Tree_defs.hh" -2441: void increase_keys_from(dimension_type key, dimension_type n); -2441: # 712 "../../src/CO_Tree_defs.hh" -2441: void fast_shift(dimension_type i, iterator itr); -2441: # 723 "../../src/CO_Tree_defs.hh" -2441: void m_swap(CO_Tree& x); -2441: -2441: -2441: -2441: -2441: -2441: iterator begin(); -2441: # 740 "../../src/CO_Tree_defs.hh" -2441: const iterator& end(); -2441: -2441: -2441: const_iterator begin() const; -2441: -2441: -2441: const const_iterator& end() const; -2441: -2441: -2441: -2441: -2441: -2441: const_iterator cbegin() const; -2441: # 763 "../../src/CO_Tree_defs.hh" -2441: const const_iterator& cend() const; -2441: # 777 "../../src/CO_Tree_defs.hh" -2441: iterator bisect(dimension_type key); -2441: # 791 "../../src/CO_Tree_defs.hh" -2441: const_iterator bisect(dimension_type key) const; -2441: # 815 "../../src/CO_Tree_defs.hh" -2441: iterator bisect_in(iterator first, iterator last, dimension_type key); -2441: # 839 "../../src/CO_Tree_defs.hh" -2441: const_iterator bisect_in(const_iterator first, const_iterator last, -2441: dimension_type key) const; -2441: # 860 "../../src/CO_Tree_defs.hh" -2441: iterator bisect_near(iterator hint, dimension_type key); -2441: # 880 "../../src/CO_Tree_defs.hh" -2441: const_iterator bisect_near(const_iterator hint, dimension_type key) const; -2441: -2441: private: -2441: # 905 "../../src/CO_Tree_defs.hh" -2441: dimension_type bisect_in(dimension_type first, dimension_type last, -2441: dimension_type key) const; -2441: # 929 "../../src/CO_Tree_defs.hh" -2441: dimension_type bisect_near(dimension_type hint, dimension_type key) const; -2441: # 954 "../../src/CO_Tree_defs.hh" -2441: tree_iterator insert_precise(dimension_type key, -2441: data_type_const_reference data, -2441: tree_iterator itr); -2441: # 965 "../../src/CO_Tree_defs.hh" -2441: tree_iterator insert_precise_aux(dimension_type key, -2441: data_type_const_reference data, -2441: tree_iterator itr); -2441: # 984 "../../src/CO_Tree_defs.hh" -2441: void insert_in_empty_tree(dimension_type key, -2441: data_type_const_reference data); -2441: # 1000 "../../src/CO_Tree_defs.hh" -2441: iterator erase(tree_iterator itr); -2441: # 1009 "../../src/CO_Tree_defs.hh" -2441: void init(dimension_type n); -2441: # 1018 "../../src/CO_Tree_defs.hh" -2441: void destroy(); -2441: -2441: -2441: bool structure_OK() const; -2441: -2441: -2441: bool OK() const; -2441: # 1033 "../../src/CO_Tree_defs.hh" -2441: static unsigned integer_log2(dimension_type n); -2441: # 1051 "../../src/CO_Tree_defs.hh" -2441: static bool is_less_than_ratio(dimension_type numer, dimension_type denom, -2441: dimension_type ratio); -2441: # 1071 "../../src/CO_Tree_defs.hh" -2441: static bool is_greater_than_ratio(dimension_type numer, dimension_type denom, -2441: dimension_type ratio); -2441: -2441: -2441: -2441: -2441: -2441: -2441: static void dump_subtree(tree_iterator itr); -2441: # 1088 "../../src/CO_Tree_defs.hh" -2441: void rebuild_bigger_tree(); -2441: # 1100 "../../src/CO_Tree_defs.hh" -2441: void rebuild_smaller_tree(); -2441: # 1109 "../../src/CO_Tree_defs.hh" -2441: void refresh_cached_iterators(); -2441: # 1133 "../../src/CO_Tree_defs.hh" -2441: tree_iterator rebalance(tree_iterator itr, dimension_type key, -2441: data_type_const_reference value); -2441: # 1160 "../../src/CO_Tree_defs.hh" -2441: dimension_type compact_elements_in_the_rightmost_end( -2441: dimension_type last_in_subtree, dimension_type subtree_size, -2441: dimension_type key, data_type_const_reference value, -2441: bool add_element); -2441: # 1191 "../../src/CO_Tree_defs.hh" -2441: void redistribute_elements_in_subtree(dimension_type root_index, -2441: dimension_type subtree_size, -2441: dimension_type last_used, -2441: dimension_type key, -2441: data_type_const_reference value, -2441: bool add_element); -2441: # 1208 "../../src/CO_Tree_defs.hh" -2441: void move_data_from(CO_Tree& tree); -2441: # 1221 "../../src/CO_Tree_defs.hh" -2441: void copy_data_from(const CO_Tree& tree); -2441: # 1231 "../../src/CO_Tree_defs.hh" -2441: static dimension_type count_used_in_subtree(tree_iterator itr); -2441: # 1249 "../../src/CO_Tree_defs.hh" -2441: static void move_data_element(data_type& to, data_type& from); -2441: -2441: -2441: -2441: -2441: -2441: static const dimension_type max_density_percent = 91; -2441: -2441: -2441: -2441: -2441: -2441: static const dimension_type min_density_percent = 38; -2441: # 1271 "../../src/CO_Tree_defs.hh" -2441: static const dimension_type min_leaf_density_percent = 1; -2441: -2441: -2441: -2441: -2441: -2441: static const dimension_type unused_index = C_Integer::max; -2441: -2441: -2441: -2441: -2441: -2441: iterator cached_end; -2441: -2441: -2441: -2441: -2441: -2441: const_iterator cached_const_end; -2441: -2441: -2441: height_t max_depth; -2441: # 1302 "../../src/CO_Tree_defs.hh" -2441: dimension_type* indexes; -2441: -2441: -2441: std::allocator data_allocator; -2441: # 1316 "../../src/CO_Tree_defs.hh" -2441: data_type* data; -2441: -2441: -2441: -2441: -2441: -2441: -2441: dimension_type reserved_size; -2441: -2441: -2441: dimension_type size_; -2441: }; -2441: -2441: class CO_Tree::tree_iterator { -2441: -2441: public: -2441: # 1341 "../../src/CO_Tree_defs.hh" -2441: explicit tree_iterator(CO_Tree& tree); -2441: # 1353 "../../src/CO_Tree_defs.hh" -2441: tree_iterator(CO_Tree& tree, dimension_type i); -2441: # 1365 "../../src/CO_Tree_defs.hh" -2441: tree_iterator(const iterator& itr, CO_Tree& tree); -2441: -2441: -2441: -2441: -2441: -2441: -2441: tree_iterator& operator=(const tree_iterator& itr); -2441: -2441: -2441: -2441: -2441: -2441: -2441: tree_iterator& operator=(const iterator& itr); -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool operator==(const tree_iterator& itr) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool operator!=(const tree_iterator& itr) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void get_root(); -2441: -2441: -2441: -2441: -2441: -2441: void get_left_child(); -2441: -2441: -2441: -2441: -2441: -2441: void get_right_child(); -2441: -2441: -2441: -2441: -2441: -2441: void get_parent(); -2441: # 1433 "../../src/CO_Tree_defs.hh" -2441: void go_down_searching_key(dimension_type key); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void follow_left_children_with_value(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void follow_right_children_with_value(); -2441: -2441: -2441: -2441: -2441: -2441: bool is_root() const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_right_child() const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_leaf() const; -2441: -2441: -2441: data_type& operator*(); -2441: -2441: -2441: Coefficient_traits::const_reference operator*() const; -2441: -2441: -2441: -2441: -2441: -2441: dimension_type& index(); -2441: -2441: -2441: -2441: -2441: -2441: dimension_type index() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: dimension_type key() const; -2441: -2441: -2441: CO_Tree& tree; -2441: -2441: -2441: -2441: -2441: -2441: dimension_type dfs_index() const; -2441: # 1512 "../../src/CO_Tree_defs.hh" -2441: dimension_type get_offset() const; -2441: -2441: -2441: -2441: -2441: -2441: height_t depth() const; -2441: -2441: private: -2441: -2441: bool OK() const; -2441: -2441: -2441: dimension_type i; -2441: # 1534 "../../src/CO_Tree_defs.hh" -2441: dimension_type offset; -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: void swap(CO_Tree& x, CO_Tree& y); -2441: -2441: -2441: -2441: -2441: -2441: void swap(CO_Tree::const_iterator& x, CO_Tree::const_iterator& y); -2441: -2441: -2441: -2441: -2441: -2441: void swap(CO_Tree::iterator& x, CO_Tree::iterator& y); -2441: -2441: } -2441: -2441: # 1 "../../src/CO_Tree_inlines.hh" 1 -2441: # 29 "../../src/CO_Tree_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: inline dimension_type -2441: CO_Tree::dfs_index(const_iterator itr) const { -2441: ((void) 0); -2441: ((void) 0); -2441: ((void) 0); -2441: const std::ptrdiff_t index = itr.current_index - indexes; -2441: return static_cast(index); -2441: } -2441: -2441: inline dimension_type -2441: CO_Tree::dfs_index(iterator itr) const { -2441: ((void) 0); -2441: ((void) 0); -2441: ((void) 0); -2441: const std::ptrdiff_t index = itr.current_index - indexes; -2441: return static_cast(index); -2441: } -2441: -2441: inline -2441: CO_Tree::CO_Tree() { -2441: init(0); -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: CO_Tree::CO_Tree(const CO_Tree& y) { -2441: ((void) 0); -2441: data_allocator = y.data_allocator; -2441: init(y.reserved_size); -2441: copy_data_from(y); -2441: } -2441: -2441: inline CO_Tree& -2441: CO_Tree::operator=(const CO_Tree& y) { -2441: if (this != &y) { -2441: destroy(); -2441: data_allocator = y.data_allocator; -2441: init(y.reserved_size); -2441: copy_data_from(y); -2441: } -2441: return *this; -2441: } -2441: -2441: inline void -2441: CO_Tree::clear() { -2441: *this = CO_Tree(); -2441: } -2441: -2441: inline -2441: CO_Tree::~CO_Tree() { -2441: -2441: destroy(); -2441: } -2441: -2441: inline bool -2441: CO_Tree::empty() const { -2441: return size_ == 0; -2441: } -2441: -2441: inline dimension_type -2441: CO_Tree::size() const { -2441: return size_; -2441: } -2441: -2441: inline dimension_type -2441: CO_Tree::max_size() { -2441: return C_Integer::max/100; -2441: } -2441: -2441: inline void -2441: CO_Tree::dump_tree() const { -2441: if (empty()) { -2441: std::cout << "(empty tree)" << std::endl; -2441: } -2441: else { -2441: dump_subtree(tree_iterator(*const_cast(this))); -2441: } -2441: } -2441: -2441: inline CO_Tree::iterator -2441: CO_Tree::insert(const dimension_type key) { -2441: if (empty()) { -2441: return insert(key, Coefficient_zero()); -2441: } -2441: else { -2441: tree_iterator itr(*this); -2441: itr.go_down_searching_key(key); -2441: if (itr.index() == key) { -2441: return iterator(itr); -2441: } -2441: else { -2441: return iterator(insert_precise(key, Coefficient_zero(), itr)); -2441: } -2441: } -2441: } -2441: -2441: inline CO_Tree::iterator -2441: CO_Tree::insert(dimension_type key, data_type_const_reference data1) { -2441: if (empty()) { -2441: insert_in_empty_tree(key, data1); -2441: tree_iterator itr(*this); -2441: ((void) 0); -2441: return iterator(itr); -2441: } -2441: else { -2441: tree_iterator itr(*this); -2441: itr.go_down_searching_key(key); -2441: return iterator(insert_precise(key, data1, itr)); -2441: } -2441: } -2441: -2441: inline CO_Tree::iterator -2441: CO_Tree::erase(dimension_type key) { -2441: ((void) 0); -2441: -2441: if (empty()) { -2441: return end(); -2441: } -2441: -2441: tree_iterator itr(*this); -2441: itr.go_down_searching_key(key); -2441: -2441: if (itr.index() == key) { -2441: return erase(itr); -2441: } -2441: -2441: iterator result(itr); -2441: if (result.index() < key) { -2441: ++result; -2441: } -2441: -2441: ((void) 0); -2441: -2441: -2441: -2441: -2441: -2441: -2441: return result; -2441: } -2441: -2441: inline CO_Tree::iterator -2441: CO_Tree::erase(iterator itr) { -2441: ((void) 0); -2441: return erase(tree_iterator(itr, *this)); -2441: } -2441: -2441: inline void -2441: CO_Tree::m_swap(CO_Tree& x) { -2441: using std::swap; -2441: swap(max_depth, x.max_depth); -2441: swap(indexes, x.indexes); -2441: swap(data_allocator, x.data_allocator); -2441: swap(data, x.data); -2441: swap(reserved_size, x.reserved_size); -2441: swap(size_, x.size_); -2441: -2441: -2441: refresh_cached_iterators(); -2441: x.refresh_cached_iterators(); -2441: ((void) 0); -2441: ((void) 0); -2441: } -2441: -2441: inline CO_Tree::iterator -2441: CO_Tree::begin() { -2441: return iterator(*this); -2441: } -2441: -2441: inline const CO_Tree::iterator& -2441: CO_Tree::end() { -2441: return cached_end; -2441: } -2441: -2441: inline CO_Tree::const_iterator -2441: CO_Tree::begin() const { -2441: return const_iterator(*this); -2441: } -2441: -2441: inline const CO_Tree::const_iterator& -2441: CO_Tree::end() const { -2441: return cached_const_end; -2441: } -2441: -2441: inline CO_Tree::const_iterator -2441: CO_Tree::cbegin() const { -2441: return const_iterator(*this); -2441: } -2441: -2441: inline const CO_Tree::const_iterator& -2441: CO_Tree::cend() const { -2441: return cached_const_end; -2441: } -2441: -2441: inline CO_Tree::iterator -2441: CO_Tree::bisect(dimension_type key) { -2441: if (empty()) { -2441: return end(); -2441: } -2441: iterator last = end(); -2441: --last; -2441: return bisect_in(begin(), last, key); -2441: } -2441: -2441: inline CO_Tree::const_iterator -2441: CO_Tree::bisect(dimension_type key) const { -2441: if (empty()) { -2441: return end(); -2441: } -2441: const_iterator last = end(); -2441: --last; -2441: return bisect_in(begin(), last, key); -2441: } -2441: -2441: inline CO_Tree::iterator -2441: CO_Tree::bisect_in(iterator first, iterator last, dimension_type key) { -2441: ((void) 0); -2441: ((void) 0); -2441: const dimension_type index -2441: = bisect_in(dfs_index(first), dfs_index(last), key); -2441: return iterator(*this, index); -2441: } -2441: -2441: inline CO_Tree::const_iterator -2441: CO_Tree::bisect_in(const_iterator first, const_iterator last, -2441: dimension_type key) const { -2441: ((void) 0); -2441: ((void) 0); -2441: const dimension_type index -2441: = bisect_in(dfs_index(first), dfs_index(last), key); -2441: return const_iterator(*this, index); -2441: } -2441: -2441: inline CO_Tree::iterator -2441: CO_Tree::bisect_near(iterator hint, dimension_type key) { -2441: if (hint == end()) { -2441: return bisect(key); -2441: } -2441: const dimension_type index -2441: = bisect_near(dfs_index(hint), key); -2441: return iterator(*this, index); -2441: } -2441: -2441: inline CO_Tree::const_iterator -2441: CO_Tree::bisect_near(const_iterator hint, dimension_type key) const { -2441: if (hint == end()) { -2441: return bisect(key); -2441: } -2441: const dimension_type index = bisect_near(dfs_index(hint), key); -2441: return const_iterator(*this, index); -2441: } -2441: -2441: inline void -2441: CO_Tree::fast_shift(dimension_type i, iterator itr) { -2441: ((void) 0); -2441: ((void) 0); -2441: indexes[dfs_index(itr)] = i; -2441: ((void) 0); -2441: } -2441: -2441: inline void -2441: CO_Tree::insert_in_empty_tree(dimension_type key, -2441: data_type_const_reference data1) { -2441: ((void) 0); -2441: rebuild_bigger_tree(); -2441: tree_iterator itr(*this); -2441: ((void) 0); -2441: new(&(*itr)) data_type(data1); -2441: -2441: -2441: itr.index() = key; -2441: ++size_; -2441: -2441: ((void) 0); -2441: } -2441: -2441: inline bool -2441: CO_Tree::is_less_than_ratio(dimension_type numer, dimension_type denom, -2441: dimension_type ratio) { -2441: ((void) 0); -2441: -2441: ((void) 0); -2441: ((void) 0); -2441: return 100*numer < ratio*denom; -2441: } -2441: -2441: inline bool -2441: CO_Tree::is_greater_than_ratio(dimension_type numer, dimension_type denom, -2441: dimension_type ratio) { -2441: ((void) 0); -2441: -2441: ((void) 0); -2441: ((void) 0); -2441: return 100*numer > ratio*denom; -2441: } -2441: -2441: inline void -2441: CO_Tree::rebuild_smaller_tree() { -2441: ((void) 0); -2441: CO_Tree new_tree; -2441: new_tree.init(reserved_size / 2); -2441: new_tree.move_data_from(*this); -2441: m_swap(new_tree); -2441: ((void) 0); -2441: ((void) 0); -2441: } -2441: -2441: inline void -2441: CO_Tree::refresh_cached_iterators() { -2441: cached_end = iterator(*this, reserved_size + 1); -2441: cached_const_end = const_iterator(*this, reserved_size + 1); -2441: } -2441: -2441: inline void -2441: CO_Tree::move_data_element(data_type& to, data_type& from) { -2441: # 354 "../../src/CO_Tree_inlines.hh" -2441: std::memcpy(&to, &from, sizeof(data_type)); -2441: } -2441: -2441: -2441: inline -2441: CO_Tree::const_iterator::const_iterator() -2441: : current_index(0), current_data(0) { -2441: -2441: -2441: -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: CO_Tree::const_iterator::const_iterator(const CO_Tree& tree1) -2441: : current_index(&(tree1.indexes[1])), current_data(&(tree1.data[1])) { -2441: -2441: -2441: -2441: if (!tree1.empty()) { -2441: while (*current_index == unused_index) { -2441: ++current_index; -2441: ++current_data; -2441: } -2441: } -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: CO_Tree::const_iterator::const_iterator(const CO_Tree& tree1, -2441: dimension_type i) -2441: : current_index(&(tree1.indexes[i])), current_data(&(tree1.data[i])) { -2441: -2441: -2441: -2441: ((void) 0); -2441: ((void) 0); -2441: ((void) 0); -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: CO_Tree::const_iterator::const_iterator(const const_iterator& itr2) { -2441: (*this) = itr2; -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: CO_Tree::const_iterator::const_iterator(const iterator& itr2) { -2441: (*this) = itr2; -2441: ((void) 0); -2441: } -2441: -2441: inline void -2441: CO_Tree::const_iterator::m_swap(const_iterator& itr) { -2441: using std::swap; -2441: swap(current_data, itr.current_data); -2441: swap(current_index, itr.current_index); -2441: -2441: -2441: -2441: ((void) 0); -2441: ((void) 0); -2441: } -2441: -2441: inline CO_Tree::const_iterator& -2441: CO_Tree::const_iterator::operator=(const const_iterator& itr2) { -2441: current_index = itr2.current_index; -2441: current_data = itr2.current_data; -2441: -2441: -2441: -2441: ((void) 0); -2441: return *this; -2441: } -2441: -2441: inline CO_Tree::const_iterator& -2441: CO_Tree::const_iterator::operator=(const iterator& itr2) { -2441: current_index = itr2.current_index; -2441: current_data = itr2.current_data; -2441: -2441: -2441: -2441: ((void) 0); -2441: return *this; -2441: } -2441: -2441: inline CO_Tree::const_iterator& -2441: CO_Tree::const_iterator::operator++() { -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: -2441: -2441: ++current_index; -2441: ++current_data; -2441: while (*current_index == unused_index) { -2441: ++current_index; -2441: ++current_data; -2441: } -2441: ((void) 0); -2441: return *this; -2441: } -2441: -2441: inline CO_Tree::const_iterator& -2441: CO_Tree::const_iterator::operator--() { -2441: ((void) 0); -2441: ((void) 0); -2441: --current_index; -2441: --current_data; -2441: while (*current_index == unused_index) { -2441: --current_index; -2441: --current_data; -2441: } -2441: ((void) 0); -2441: return *this; -2441: } -2441: -2441: inline CO_Tree::const_iterator -2441: CO_Tree::const_iterator::operator++(int) { -2441: const_iterator itr(*this); -2441: ++(*this); -2441: return itr; -2441: } -2441: -2441: inline CO_Tree::const_iterator -2441: CO_Tree::const_iterator::operator--(int) { -2441: const_iterator itr(*this); -2441: --(*this); -2441: return itr; -2441: } -2441: -2441: inline Coefficient_traits::const_reference -2441: CO_Tree::const_iterator::operator*() const { -2441: ((void) 0); -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: -2441: -2441: return *current_data; -2441: } -2441: -2441: inline dimension_type -2441: CO_Tree::const_iterator::index() const { -2441: ((void) 0); -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: -2441: -2441: return *current_index; -2441: } -2441: -2441: inline bool -2441: CO_Tree::const_iterator::operator==(const const_iterator& x) const { -2441: ((void) 0) -2441: ; -2441: ((void) 0); -2441: return (current_index == x.current_index); -2441: } -2441: -2441: inline bool -2441: CO_Tree::const_iterator::operator!=(const const_iterator& x) const { -2441: return !(*this == x); -2441: } -2441: -2441: -2441: inline -2441: CO_Tree::iterator::iterator() -2441: : current_index(0), current_data(0) { -2441: -2441: -2441: -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: CO_Tree::iterator::iterator(CO_Tree& tree1) -2441: : current_index(&(tree1.indexes[1])), current_data(&(tree1.data[1])) { -2441: -2441: -2441: -2441: if (!tree1.empty()) { -2441: while (*current_index == unused_index) { -2441: ++current_index; -2441: ++current_data; -2441: } -2441: } -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: CO_Tree::iterator::iterator(CO_Tree& tree1, dimension_type i) -2441: : current_index(&(tree1.indexes[i])), current_data(&(tree1.data[i])) { -2441: -2441: -2441: -2441: ((void) 0); -2441: ((void) 0); -2441: ((void) 0); -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: CO_Tree::iterator::iterator(const tree_iterator& itr) { -2441: *this = itr; -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: CO_Tree::iterator::iterator(const iterator& itr2) { -2441: (*this) = itr2; -2441: ((void) 0); -2441: } -2441: -2441: inline void -2441: CO_Tree::iterator::m_swap(iterator& itr) { -2441: using std::swap; -2441: swap(current_data, itr.current_data); -2441: swap(current_index, itr.current_index); -2441: -2441: -2441: -2441: ((void) 0); -2441: ((void) 0); -2441: } -2441: -2441: inline CO_Tree::iterator& -2441: CO_Tree::iterator::operator=(const tree_iterator& itr) { -2441: current_index = &(itr.tree.indexes[itr.dfs_index()]); -2441: current_data = &(itr.tree.data[itr.dfs_index()]); -2441: -2441: -2441: -2441: ((void) 0); -2441: return *this; -2441: } -2441: -2441: inline CO_Tree::iterator& -2441: CO_Tree::iterator::operator=(const iterator& itr2) { -2441: current_index = itr2.current_index; -2441: current_data = itr2.current_data; -2441: -2441: -2441: -2441: ((void) 0); -2441: return *this; -2441: } -2441: -2441: inline CO_Tree::iterator& -2441: CO_Tree::iterator::operator++() { -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: -2441: -2441: ++current_index; -2441: ++current_data; -2441: while (*current_index == unused_index) { -2441: ++current_index; -2441: ++current_data; -2441: } -2441: -2441: ((void) 0); -2441: return *this; -2441: } -2441: -2441: inline CO_Tree::iterator& -2441: CO_Tree::iterator::operator--() { -2441: ((void) 0); -2441: ((void) 0); -2441: --current_index; -2441: --current_data; -2441: while (*current_index == unused_index) { -2441: --current_index; -2441: --current_data; -2441: } -2441: -2441: ((void) 0); -2441: return *this; -2441: } -2441: -2441: inline CO_Tree::iterator -2441: CO_Tree::iterator::operator++(int) { -2441: iterator itr(*this); -2441: ++(*this); -2441: return itr; -2441: } -2441: -2441: inline CO_Tree::iterator -2441: CO_Tree::iterator::operator--(int) { -2441: iterator itr(*this); -2441: --(*this); -2441: return itr; -2441: } -2441: -2441: inline CO_Tree::data_type& -2441: CO_Tree::iterator::operator*() { -2441: ((void) 0); -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: -2441: -2441: return *current_data; -2441: } -2441: -2441: inline Coefficient_traits::const_reference -2441: CO_Tree::iterator::operator*() const { -2441: ((void) 0); -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: -2441: -2441: return *current_data; -2441: } -2441: -2441: inline dimension_type -2441: CO_Tree::iterator::index() const { -2441: ((void) 0); -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: -2441: -2441: return *current_index; -2441: } -2441: -2441: inline bool -2441: CO_Tree::iterator::operator==(const iterator& x) const { -2441: ((void) 0) -2441: ; -2441: ((void) 0); -2441: return (current_index == x.current_index); -2441: } -2441: -2441: inline bool -2441: CO_Tree::iterator::operator!=(const iterator& x) const { -2441: return !(*this == x); -2441: } -2441: -2441: -2441: inline -2441: CO_Tree::tree_iterator::tree_iterator(CO_Tree& tree1) -2441: : tree(tree1) { -2441: ((void) 0); -2441: get_root(); -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: CO_Tree::tree_iterator::tree_iterator(CO_Tree& tree1, dimension_type i1) -2441: : tree(tree1) { -2441: ((void) 0); -2441: ((void) 0); -2441: i = i1; -2441: offset = least_significant_one_mask(i); -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: CO_Tree::tree_iterator::tree_iterator(const iterator& itr, CO_Tree& tree1) -2441: : tree(tree1) { -2441: ((void) 0); -2441: *this = itr; -2441: ((void) 0); -2441: } -2441: -2441: inline CO_Tree::tree_iterator& -2441: CO_Tree::tree_iterator::operator=(const tree_iterator& itr) { -2441: ((void) 0); -2441: i = itr.i; -2441: offset = itr.offset; -2441: return *this; -2441: } -2441: -2441: inline CO_Tree::tree_iterator& -2441: CO_Tree::tree_iterator::operator=(const iterator& itr) { -2441: ((void) 0); -2441: i = tree.dfs_index(itr); -2441: offset = least_significant_one_mask(i); -2441: return *this; -2441: } -2441: -2441: inline bool -2441: CO_Tree::tree_iterator::operator==(const tree_iterator& itr) const { -2441: return i == itr.i; -2441: } -2441: -2441: inline bool -2441: CO_Tree::tree_iterator::operator!=(const tree_iterator& itr) const { -2441: return !(*this == itr); -2441: } -2441: -2441: inline void -2441: CO_Tree::tree_iterator::get_root() { -2441: i = tree.reserved_size / 2 + 1; -2441: offset = i; -2441: ((void) 0); -2441: } -2441: -2441: inline void -2441: CO_Tree::tree_iterator::get_left_child() { -2441: ((void) 0); -2441: ((void) 0); -2441: offset /= 2; -2441: i -= offset; -2441: ((void) 0); -2441: } -2441: -2441: inline void -2441: CO_Tree::tree_iterator::get_right_child() { -2441: ((void) 0); -2441: ((void) 0); -2441: offset /= 2; -2441: i += offset; -2441: ((void) 0); -2441: } -2441: -2441: inline void -2441: CO_Tree::tree_iterator::get_parent() { -2441: ((void) 0); -2441: ((void) 0); -2441: i &= ~offset; -2441: offset *= 2; -2441: i |= offset; -2441: ((void) 0); -2441: } -2441: -2441: inline void -2441: CO_Tree::tree_iterator::follow_left_children_with_value() { -2441: ((void) 0); -2441: const dimension_type* p = tree.indexes; -2441: p += i; -2441: p -= (offset - 1); -2441: while (*p == unused_index) { -2441: ++p; -2441: } -2441: const std::ptrdiff_t distance = p - tree.indexes; -2441: ((void) 0); -2441: i = static_cast(distance); -2441: offset = least_significant_one_mask(i); -2441: ((void) 0); -2441: } -2441: -2441: inline void -2441: CO_Tree::tree_iterator::follow_right_children_with_value() { -2441: ((void) 0); -2441: const dimension_type* p = tree.indexes; -2441: p += i; -2441: p += (offset - 1); -2441: while (*p == unused_index) { -2441: --p; -2441: } -2441: const std::ptrdiff_t distance = p - tree.indexes; -2441: ((void) 0); -2441: i = static_cast(distance); -2441: offset = least_significant_one_mask(i); -2441: ((void) 0); -2441: } -2441: -2441: inline bool -2441: CO_Tree::tree_iterator::is_root() const { -2441: -2441: ((void) 0); -2441: return offset == (tree.reserved_size / 2 + 1); -2441: } -2441: -2441: inline bool -2441: CO_Tree::tree_iterator::is_right_child() const { -2441: if (is_root()) { -2441: return false; -2441: } -2441: return (i & (2*offset)) != 0; -2441: } -2441: -2441: inline bool -2441: CO_Tree::tree_iterator::is_leaf() const { -2441: return offset == 1; -2441: } -2441: -2441: inline CO_Tree::data_type& -2441: CO_Tree::tree_iterator::operator*() { -2441: return tree.data[i]; -2441: } -2441: -2441: inline Coefficient_traits::const_reference -2441: CO_Tree::tree_iterator::operator*() const { -2441: return tree.data[i]; -2441: } -2441: -2441: inline dimension_type& -2441: CO_Tree::tree_iterator::index() { -2441: return tree.indexes[i]; -2441: } -2441: -2441: inline dimension_type -2441: CO_Tree::tree_iterator::index() const { -2441: return tree.indexes[i]; -2441: } -2441: -2441: inline dimension_type -2441: CO_Tree::tree_iterator::dfs_index() const { -2441: return i; -2441: } -2441: -2441: inline dimension_type -2441: CO_Tree::tree_iterator::get_offset() const { -2441: return offset; -2441: } -2441: -2441: inline CO_Tree::height_t -2441: CO_Tree::tree_iterator::depth() const { -2441: return integer_log2((tree.reserved_size + 1) / offset); -2441: } -2441: -2441: inline void -2441: swap(CO_Tree& x, CO_Tree& y) { -2441: x.m_swap(y); -2441: } -2441: -2441: inline void -2441: swap(CO_Tree::const_iterator& x, CO_Tree::const_iterator& y) { -2441: x.m_swap(y); -2441: } -2441: -2441: inline void -2441: swap(CO_Tree::iterator& x, CO_Tree::iterator& y) { -2441: x.m_swap(y); -2441: } -2441: -2441: } -2441: # 1558 "../../src/CO_Tree_defs.hh" 2 -2441: # 1 "../../src/CO_Tree_templates.hh" 1 -2441: # 27 "../../src/CO_Tree_templates.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: CO_Tree::CO_Tree(Iterator i, dimension_type n) { -2441: -2441: if (n == 0) { -2441: init(0); -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: const dimension_type new_max_depth = integer_log2(n) + 1; -2441: reserved_size = (static_cast(1) << new_max_depth) - 1; -2441: -2441: if (is_greater_than_ratio(n, reserved_size, max_density_percent) -2441: && reserved_size != 3) { -2441: reserved_size = reserved_size*2 + 1; -2441: } -2441: -2441: init(reserved_size); -2441: -2441: tree_iterator root(*this); -2441: # 57 "../../src/CO_Tree_templates.hh" -2441: static std::pair -2441: stack[4U * ((sizeof(dimension_type)) * static_cast(8)) + 1U]; -2441: -2441: dimension_type stack_first_empty = 0; -2441: # 71 "../../src/CO_Tree_templates.hh" -2441: stack[0].first = n; -2441: stack[0].second = 3; -2441: ++stack_first_empty; -2441: -2441: while (stack_first_empty != 0) { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: const dimension_type top_n = stack[stack_first_empty - 1].first; -2441: const signed char top_operation = stack[stack_first_empty - 1].second; -2441: -2441: switch (top_operation) { -2441: -2441: case 0: -2441: root.get_parent(); -2441: --stack_first_empty; -2441: continue; -2441: -2441: case 1: -2441: root.get_left_child(); -2441: break; -2441: -2441: case 2: -2441: root.get_right_child(); -2441: break; -2441: # 108 "../../src/CO_Tree_templates.hh" -2441: } -2441: -2441: -2441: -2441: if (top_n == 0) { -2441: --stack_first_empty; -2441: } -2441: else { -2441: if (top_n == 1) { -2441: ((void) 0); -2441: root.index() = i.index(); -2441: new(&(*root)) data_type(*i); -2441: ++i; -2441: --stack_first_empty; -2441: } -2441: else { -2441: ((void) 0); -2441: -2441: const dimension_type half = (top_n + 1) / 2; -2441: stack[stack_first_empty - 1].second = 0; -2441: stack[stack_first_empty ] = std::make_pair(top_n - half, 2); -2441: stack[stack_first_empty + 1] = std::make_pair(1, 3); -2441: stack[stack_first_empty + 2].second = 0; -2441: stack[stack_first_empty + 3] = std::make_pair(half - 1, 1); -2441: stack_first_empty += 4; -2441: } -2441: } -2441: } -2441: size_ = n; -2441: ((void) 0); -2441: } -2441: -2441: } -2441: # 1559 "../../src/CO_Tree_defs.hh" 2 -2441: # 30 "../../src/Sparse_Row_defs.hh" 2 -2441: # 58 "../../src/Sparse_Row_defs.hh" -2441: class Parma_Polyhedra_Library::Sparse_Row { -2441: -2441: public: -2441: -2441: -2441: -2441: -2441: -2441: -2441: typedef CO_Tree::iterator iterator; -2441: -2441: -2441: -2441: -2441: -2441: -2441: typedef CO_Tree::const_iterator const_iterator; -2441: # 85 "../../src/Sparse_Row_defs.hh" -2441: explicit Sparse_Row(dimension_type n = 0); -2441: # 99 "../../src/Sparse_Row_defs.hh" -2441: Sparse_Row(dimension_type n, dimension_type capacity); -2441: -2441: -2441: -2441: -2441: -2441: -2441: Sparse_Row(const Sparse_Row& y, dimension_type capacity); -2441: -2441: -2441: -2441: -2441: -2441: Sparse_Row(const Sparse_Row& y, dimension_type sz, dimension_type capacity); -2441: # 122 "../../src/Sparse_Row_defs.hh" -2441: explicit Sparse_Row(const Dense_Row& row); -2441: -2441: -2441: -2441: -2441: -2441: Sparse_Row(const Dense_Row& y, dimension_type sz, dimension_type capacity); -2441: -2441: Sparse_Row& operator=(const Dense_Row& row); -2441: # 139 "../../src/Sparse_Row_defs.hh" -2441: void m_swap(Sparse_Row& x); -2441: -2441: -2441: -2441: -2441: -2441: dimension_type size() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: dimension_type num_stored_elements() const; -2441: # 164 "../../src/Sparse_Row_defs.hh" -2441: void resize(dimension_type n); -2441: # 176 "../../src/Sparse_Row_defs.hh" -2441: void expand_within_capacity(dimension_type n); -2441: # 189 "../../src/Sparse_Row_defs.hh" -2441: void shrink(dimension_type n); -2441: # 205 "../../src/Sparse_Row_defs.hh" -2441: void delete_element_and_shift(dimension_type i); -2441: # 226 "../../src/Sparse_Row_defs.hh" -2441: void add_zeroes_and_shift(dimension_type n, dimension_type i); -2441: -2441: -2441: -2441: -2441: -2441: iterator begin(); -2441: # 243 "../../src/Sparse_Row_defs.hh" -2441: const iterator& end(); -2441: -2441: -2441: const_iterator begin() const; -2441: -2441: -2441: const const_iterator& end() const; -2441: -2441: -2441: -2441: -2441: -2441: const_iterator cbegin() const; -2441: # 266 "../../src/Sparse_Row_defs.hh" -2441: const const_iterator& cend() const; -2441: -2441: -2441: static dimension_type max_size(); -2441: -2441: -2441: -2441: -2441: -2441: void clear(); -2441: # 293 "../../src/Sparse_Row_defs.hh" -2441: Coefficient& operator[](dimension_type i); -2441: -2441: -2441: -2441: -2441: -2441: Coefficient_traits::const_reference operator[](dimension_type i) const; -2441: # 311 "../../src/Sparse_Row_defs.hh" -2441: Coefficient_traits::const_reference get(dimension_type i) const; -2441: # 323 "../../src/Sparse_Row_defs.hh" -2441: iterator find(dimension_type i); -2441: # 341 "../../src/Sparse_Row_defs.hh" -2441: iterator find(iterator itr, dimension_type i); -2441: # 353 "../../src/Sparse_Row_defs.hh" -2441: const_iterator find(dimension_type i) const; -2441: # 371 "../../src/Sparse_Row_defs.hh" -2441: const_iterator find(const_iterator itr, dimension_type i) const; -2441: # 387 "../../src/Sparse_Row_defs.hh" -2441: iterator lower_bound(dimension_type i); -2441: # 409 "../../src/Sparse_Row_defs.hh" -2441: iterator lower_bound(iterator itr, dimension_type i); -2441: # 426 "../../src/Sparse_Row_defs.hh" -2441: const_iterator lower_bound(dimension_type i) const; -2441: # 448 "../../src/Sparse_Row_defs.hh" -2441: const_iterator lower_bound(const_iterator itr, dimension_type i) const; -2441: # 465 "../../src/Sparse_Row_defs.hh" -2441: iterator insert(dimension_type i, Coefficient_traits::const_reference x); -2441: # 488 "../../src/Sparse_Row_defs.hh" -2441: iterator insert(iterator itr, dimension_type i, -2441: Coefficient_traits::const_reference x); -2441: # 503 "../../src/Sparse_Row_defs.hh" -2441: iterator insert(dimension_type i); -2441: # 523 "../../src/Sparse_Row_defs.hh" -2441: iterator insert(iterator itr, dimension_type i); -2441: # 537 "../../src/Sparse_Row_defs.hh" -2441: void swap_coefficients(dimension_type i, dimension_type j); -2441: # 547 "../../src/Sparse_Row_defs.hh" -2441: void fast_swap(dimension_type i, iterator itr); -2441: # 559 "../../src/Sparse_Row_defs.hh" -2441: void swap_coefficients(iterator i, iterator j); -2441: # 574 "../../src/Sparse_Row_defs.hh" -2441: iterator reset(iterator i); -2441: # 592 "../../src/Sparse_Row_defs.hh" -2441: iterator reset(iterator first, iterator last); -2441: # 606 "../../src/Sparse_Row_defs.hh" -2441: void reset(dimension_type i); -2441: # 621 "../../src/Sparse_Row_defs.hh" -2441: void reset_after(dimension_type i); -2441: # 630 "../../src/Sparse_Row_defs.hh" -2441: void normalize(); -2441: # 655 "../../src/Sparse_Row_defs.hh" -2441: template -2441: void combine_needs_first(const Sparse_Row& y, -2441: const Func1& f, const Func2& g); -2441: # 683 "../../src/Sparse_Row_defs.hh" -2441: template -2441: void combine_needs_second(const Sparse_Row& y, -2441: const Func1& g, const Func2& h); -2441: # 715 "../../src/Sparse_Row_defs.hh" -2441: template -2441: void combine(const Sparse_Row& y, -2441: const Func1& f, const Func2& g, const Func3& h); -2441: # 744 "../../src/Sparse_Row_defs.hh" -2441: void linear_combine(const Sparse_Row& y, -2441: Coefficient_traits::const_reference coeff1, -2441: Coefficient_traits::const_reference coeff2); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void linear_combine(const Sparse_Row& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2, -2441: dimension_type start, dimension_type end); -2441: -2441: void ascii_dump() const; void ascii_dump(std::ostream& s) const; void print() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool ascii_load(std::istream& s); -2441: -2441: -2441: -2441: -2441: -2441: memory_size_type external_memory_in_bytes() const; -2441: # 783 "../../src/Sparse_Row_defs.hh" -2441: memory_size_type external_memory_in_bytes(dimension_type capacity) const; -2441: -2441: -2441: -2441: -2441: -2441: memory_size_type total_memory_in_bytes() const; -2441: # 800 "../../src/Sparse_Row_defs.hh" -2441: memory_size_type total_memory_in_bytes(dimension_type capacity) const; -2441: -2441: -2441: bool OK() const; -2441: # 812 "../../src/Sparse_Row_defs.hh" -2441: bool OK(dimension_type capacity) const; -2441: -2441: private: -2441: -2441: CO_Tree tree; -2441: -2441: -2441: -2441: -2441: -2441: dimension_type size_; -2441: }; -2441: -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: -2441: -2441: void swap(Parma_Polyhedra_Library::Sparse_Row& x, -2441: Parma_Polyhedra_Library::Sparse_Row& y); -2441: -2441: void swap(Parma_Polyhedra_Library::Sparse_Row& x, -2441: Parma_Polyhedra_Library::Dense_Row& y); -2441: -2441: void swap(Parma_Polyhedra_Library::Dense_Row& x, -2441: Parma_Polyhedra_Library::Sparse_Row& y); -2441: -2441: -2441: -2441: -2441: -2441: bool operator==(const Sparse_Row& x, const Sparse_Row& y); -2441: -2441: -2441: -2441: -2441: -2441: bool operator!=(const Sparse_Row& x, const Sparse_Row& y); -2441: -2441: bool operator==(const Dense_Row& x, const Sparse_Row& y); -2441: bool operator!=(const Dense_Row& x, const Sparse_Row& y); -2441: -2441: bool operator==(const Sparse_Row& x, const Dense_Row& y); -2441: bool operator!=(const Sparse_Row& x, const Dense_Row& y); -2441: -2441: -2441: -2441: -2441: -2441: -2441: void linear_combine(Sparse_Row& x, const Dense_Row& y, -2441: Coefficient_traits::const_reference coeff1, -2441: Coefficient_traits::const_reference coeff2); -2441: # 876 "../../src/Sparse_Row_defs.hh" -2441: void linear_combine(Sparse_Row& x, const Dense_Row& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2, -2441: dimension_type start, dimension_type end); -2441: -2441: -2441: -2441: -2441: -2441: -2441: void linear_combine(Dense_Row& x, const Sparse_Row& y, -2441: Coefficient_traits::const_reference coeff1, -2441: Coefficient_traits::const_reference coeff2); -2441: # 898 "../../src/Sparse_Row_defs.hh" -2441: void linear_combine(Dense_Row& x, const Sparse_Row& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2, -2441: dimension_type start, dimension_type end); -2441: -2441: -2441: -2441: -2441: -2441: -2441: void linear_combine(Sparse_Row& x, const Sparse_Row& y, -2441: Coefficient_traits::const_reference coeff1, -2441: Coefficient_traits::const_reference coeff2); -2441: # 920 "../../src/Sparse_Row_defs.hh" -2441: void linear_combine(Sparse_Row& x, const Sparse_Row& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2, -2441: dimension_type start, dimension_type end); -2441: -2441: } -2441: -2441: # 1 "../../src/Sparse_Row_inlines.hh" 1 -2441: # 29 "../../src/Sparse_Row_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: inline -2441: Sparse_Row::Sparse_Row(dimension_type n) -2441: : size_(n) { -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: Sparse_Row::Sparse_Row(dimension_type n, dimension_type) -2441: : size_(n) { -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: Sparse_Row::Sparse_Row(const Sparse_Row& y, dimension_type) -2441: : tree(y.tree), size_(y.size_) { -2441: } -2441: -2441: inline -2441: Sparse_Row::Sparse_Row(const Sparse_Row& y, dimension_type sz, dimension_type) -2441: : tree(y.begin(), -2441: std::distance(y.begin(), y.lower_bound(std::min(y.size(), sz)))), -2441: size_(sz) { -2441: ((void) 0); -2441: } -2441: -2441: inline void -2441: Sparse_Row::m_swap(Sparse_Row& x) { -2441: using std::swap; -2441: swap(tree, x.tree); -2441: swap(size_, x.size_); -2441: ((void) 0); -2441: ((void) 0); -2441: } -2441: -2441: inline dimension_type -2441: Sparse_Row::size() const { -2441: return size_; -2441: } -2441: -2441: inline dimension_type -2441: Sparse_Row::num_stored_elements() const { -2441: return tree.size(); -2441: } -2441: -2441: inline void -2441: Sparse_Row::resize(dimension_type n) { -2441: if (n < size_) { -2441: reset_after(n); -2441: } -2441: size_ = n; -2441: ((void) 0); -2441: } -2441: -2441: inline void -2441: Sparse_Row::shrink(dimension_type n) { -2441: ((void) 0); -2441: resize(n); -2441: } -2441: -2441: inline void -2441: Sparse_Row::expand_within_capacity(dimension_type n) { -2441: ((void) 0); -2441: resize(n); -2441: } -2441: -2441: inline void -2441: Sparse_Row::delete_element_and_shift(dimension_type i) { -2441: ((void) 0); -2441: tree.erase_element_and_shift_left(i); -2441: --size_; -2441: ((void) 0); -2441: } -2441: -2441: inline void -2441: Sparse_Row::add_zeroes_and_shift(dimension_type n, dimension_type i) { -2441: ((void) 0); -2441: tree.increase_keys_from(i, n); -2441: size_ += n; -2441: ((void) 0); -2441: } -2441: -2441: inline Sparse_Row::iterator -2441: Sparse_Row::begin() { -2441: return tree.begin(); -2441: } -2441: -2441: inline const Sparse_Row::iterator& -2441: Sparse_Row::end() { -2441: return tree.end(); -2441: } -2441: -2441: inline Sparse_Row::const_iterator -2441: Sparse_Row::begin() const { -2441: return tree.cbegin(); -2441: } -2441: -2441: inline const Sparse_Row::const_iterator& -2441: Sparse_Row::end() const { -2441: return tree.cend(); -2441: } -2441: -2441: inline Sparse_Row::const_iterator -2441: Sparse_Row::cbegin() const { -2441: return tree.cbegin(); -2441: } -2441: -2441: inline const Sparse_Row::const_iterator& -2441: Sparse_Row::cend() const { -2441: return tree.cend(); -2441: } -2441: -2441: inline dimension_type -2441: Sparse_Row::max_size() { -2441: return CO_Tree::max_size(); -2441: } -2441: -2441: inline void -2441: Sparse_Row::clear() { -2441: tree.clear(); -2441: } -2441: -2441: inline Coefficient& -2441: Sparse_Row::operator[](dimension_type i) { -2441: ((void) 0); -2441: iterator itr = insert(i); -2441: return *itr; -2441: } -2441: -2441: inline Coefficient_traits::const_reference -2441: Sparse_Row::operator[](dimension_type i) const { -2441: return get(i); -2441: } -2441: -2441: inline Coefficient_traits::const_reference -2441: Sparse_Row::get(dimension_type i) const { -2441: ((void) 0); -2441: if (tree.empty()) { -2441: return Coefficient_zero(); -2441: } -2441: const_iterator itr = find(i); -2441: if (itr != end()) { -2441: return *itr; -2441: } -2441: else { -2441: return Coefficient_zero(); -2441: } -2441: } -2441: -2441: inline Sparse_Row::iterator -2441: Sparse_Row::find(dimension_type i) { -2441: ((void) 0); -2441: -2441: iterator itr = tree.bisect(i); -2441: -2441: if (itr != end() && itr.index() == i) { -2441: return itr; -2441: } -2441: return end(); -2441: } -2441: -2441: inline Sparse_Row::iterator -2441: Sparse_Row::find(iterator hint, dimension_type i) { -2441: ((void) 0); -2441: -2441: iterator itr = tree.bisect_near(hint, i); -2441: -2441: if (itr != end() && itr.index() == i) { -2441: return itr; -2441: } -2441: return end(); -2441: } -2441: -2441: inline Sparse_Row::const_iterator -2441: Sparse_Row::find(dimension_type i) const { -2441: ((void) 0); -2441: -2441: const_iterator itr = tree.bisect(i); -2441: -2441: if (itr != end() && itr.index() == i) { -2441: return itr; -2441: } -2441: -2441: return end(); -2441: } -2441: -2441: inline Sparse_Row::const_iterator -2441: Sparse_Row::find(const_iterator hint, dimension_type i) const { -2441: ((void) 0); -2441: -2441: const_iterator itr = tree.bisect_near(hint, i); -2441: -2441: if (itr != end() && itr.index() == i) { -2441: return itr; -2441: } -2441: return end(); -2441: } -2441: -2441: inline Sparse_Row::iterator -2441: Sparse_Row::lower_bound(dimension_type i) { -2441: ((void) 0); -2441: -2441: iterator itr = tree.bisect(i); -2441: -2441: if (itr == end()) { -2441: return end(); -2441: } -2441: -2441: if (itr.index() < i) { -2441: ++itr; -2441: } -2441: -2441: ((void) 0); -2441: -2441: return itr; -2441: } -2441: -2441: inline Sparse_Row::iterator -2441: Sparse_Row::lower_bound(iterator hint, dimension_type i) { -2441: ((void) 0); -2441: -2441: iterator itr = tree.bisect_near(hint, i); -2441: -2441: if (itr == end()) { -2441: return end(); -2441: } -2441: -2441: if (itr.index() < i) { -2441: ++itr; -2441: } -2441: -2441: ((void) 0); -2441: -2441: return itr; -2441: } -2441: -2441: inline Sparse_Row::const_iterator -2441: Sparse_Row::lower_bound(dimension_type i) const { -2441: ((void) 0); -2441: -2441: const_iterator itr = tree.bisect(i); -2441: -2441: if (itr == end()) { -2441: return end(); -2441: } -2441: -2441: if (itr.index() < i) { -2441: ++itr; -2441: } -2441: -2441: ((void) 0); -2441: -2441: return itr; -2441: } -2441: -2441: inline Sparse_Row::const_iterator -2441: Sparse_Row::lower_bound(const_iterator hint, dimension_type i) const { -2441: ((void) 0); -2441: -2441: const_iterator itr = tree.bisect_near(hint, i); -2441: -2441: if (itr == end()) { -2441: return end(); -2441: } -2441: -2441: if (itr.index() < i) { -2441: ++itr; -2441: } -2441: -2441: ((void) 0); -2441: -2441: return itr; -2441: } -2441: -2441: inline Sparse_Row::iterator -2441: Sparse_Row::insert(dimension_type i, Coefficient_traits::const_reference x) { -2441: ((void) 0); -2441: return tree.insert(i, x); -2441: } -2441: -2441: inline Sparse_Row::iterator -2441: Sparse_Row::insert(iterator itr, dimension_type i, -2441: Coefficient_traits::const_reference x) { -2441: ((void) 0); -2441: return tree.insert(itr, i, x); -2441: } -2441: -2441: inline Sparse_Row::iterator -2441: Sparse_Row::insert(dimension_type i) { -2441: ((void) 0); -2441: return tree.insert(i); -2441: } -2441: -2441: inline Sparse_Row::iterator -2441: Sparse_Row::insert(iterator itr, dimension_type i) { -2441: ((void) 0); -2441: return tree.insert(itr, i); -2441: } -2441: -2441: inline void -2441: Sparse_Row::swap_coefficients(iterator i, iterator j) { -2441: ((void) 0); -2441: ((void) 0); -2441: using std::swap; -2441: swap(*i, *j); -2441: ((void) 0); -2441: } -2441: -2441: inline void -2441: Sparse_Row::fast_swap(dimension_type i, iterator itr) { -2441: ((void) 0); -2441: ((void) 0); -2441: tree.fast_shift(i, itr); -2441: ((void) 0); -2441: } -2441: -2441: inline Sparse_Row::iterator -2441: Sparse_Row::reset(iterator i) { -2441: iterator res = tree.erase(i); -2441: ((void) 0); -2441: return res; -2441: } -2441: -2441: inline void -2441: Sparse_Row::reset(dimension_type i) { -2441: ((void) 0); -2441: -2441: tree.erase(i); -2441: ((void) 0); -2441: } -2441: -2441: inline memory_size_type -2441: Sparse_Row::external_memory_in_bytes() const { -2441: return tree.external_memory_in_bytes(); -2441: } -2441: -2441: inline memory_size_type -2441: Sparse_Row::external_memory_in_bytes(dimension_type ) const { -2441: return external_memory_in_bytes(); -2441: } -2441: -2441: inline memory_size_type -2441: Sparse_Row::total_memory_in_bytes() const { -2441: return external_memory_in_bytes() + sizeof(*this); -2441: } -2441: -2441: inline memory_size_type -2441: Sparse_Row::total_memory_in_bytes(dimension_type ) const { -2441: return total_memory_in_bytes(); -2441: } -2441: -2441: -2441: -2441: -2441: inline void -2441: swap(Sparse_Row& x, Sparse_Row& y) { -2441: x.m_swap(y); -2441: } -2441: -2441: } -2441: # 928 "../../src/Sparse_Row_defs.hh" 2 -2441: # 1 "../../src/Sparse_Row_templates.hh" 1 -2441: # 27 "../../src/Sparse_Row_templates.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: template -2441: void -2441: Sparse_Row::combine_needs_first(const Sparse_Row& y, -2441: const Func1& f, const Func2& g) { -2441: if (this == &y) { -2441: for (iterator i = begin(), i_end = end(); i != i_end; ++i) { -2441: g(*i, *i); -2441: } -2441: } -2441: else { -2441: iterator i = begin(); -2441: -2441: -2441: -2441: const iterator& i_end = end(); -2441: const_iterator j = y.begin(); -2441: const_iterator j_end = y.end(); -2441: while (i != i_end && j != j_end) { -2441: if (i.index() == j.index()) { -2441: g(*i, *j); -2441: if (*i == 0) { -2441: i = reset(i); -2441: } -2441: else { -2441: ++i; -2441: } -2441: ++j; -2441: } -2441: else -2441: if (i.index() < j.index()) { -2441: f(*i); -2441: if (*i == 0) { -2441: i = reset(i); -2441: } -2441: else { -2441: ++i; -2441: } -2441: } -2441: else { -2441: j = y.lower_bound(j, i.index()); -2441: } -2441: } -2441: while (i != i_end) { -2441: f(*i); -2441: if (*i == 0) { -2441: i = reset(i); -2441: } -2441: else { -2441: ++i; -2441: } -2441: } -2441: } -2441: } -2441: -2441: template -2441: void -2441: Sparse_Row::combine_needs_second(const Sparse_Row& y, -2441: const Func1& g, -2441: const Func2& ) { -2441: iterator i = begin(); -2441: for (const_iterator j = y.begin(), j_end = y.end(); j != j_end; ++j) { -2441: i = insert(i, j.index()); -2441: g(*i, *j); -2441: if (*i == 0) { -2441: i = reset(i); -2441: } -2441: } -2441: } -2441: -2441: template -2441: void -2441: Sparse_Row::combine(const Sparse_Row& y, const Func1& f, -2441: const Func2& g, const Func3& h) { -2441: if (this == &y) { -2441: for (iterator i = begin(), i_end = end(); i != i_end; ++i) { -2441: g(*i, *i); -2441: } -2441: } -2441: else { -2441: iterator i = begin(); -2441: -2441: -2441: -2441: const iterator& i_end = end(); -2441: const_iterator j = y.begin(); -2441: const_iterator j_end = y.end(); -2441: while (i != i_end && j != j_end) { -2441: if (i.index() == j.index()) { -2441: g(*i, *j); -2441: if (*i == 0) { -2441: i = reset(i); -2441: } -2441: else { -2441: ++i; -2441: } -2441: ++j; -2441: } -2441: else -2441: if (i.index() < j.index()) { -2441: f(*i); -2441: if (*i == 0) { -2441: i = reset(i); -2441: } -2441: else { -2441: ++i; -2441: } -2441: } -2441: else { -2441: ((void) 0); -2441: i = insert(i, j.index()); -2441: h(*i, *j); -2441: if (*i == 0) { -2441: i = reset(i); -2441: } -2441: else { -2441: ++i; -2441: } -2441: ++j; -2441: } -2441: } -2441: ((void) 0); -2441: while (i != i_end) { -2441: f(*i); -2441: if (*i == 0) { -2441: i = reset(i); -2441: } -2441: else { -2441: ++i; -2441: } -2441: } -2441: while (j != j_end) { -2441: i = insert(i, j.index()); -2441: h(*i, *j); -2441: if (*i == 0) { -2441: i = reset(i); -2441: } -2441: ++j; -2441: } -2441: } -2441: } -2441: -2441: } -2441: # 929 "../../src/Sparse_Row_defs.hh" 2 -2441: # 34 "../../src/Linear_Expression_Impl_defs.hh" 2 -2441: -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: namespace IO_Operators { -2441: -2441: -2441: -2441: -2441: -2441: template -2441: std::ostream& -2441: operator<<(std::ostream& s, const Linear_Expression_Impl& e); -2441: -2441: } -2441: -2441: } -2441: # 102 "../../src/Linear_Expression_Impl_defs.hh" -2441: template -2441: class Parma_Polyhedra_Library::Linear_Expression_Impl -2441: : public Linear_Expression_Interface { -2441: public: -2441: -2441: Linear_Expression_Impl(); -2441: -2441: -2441: Linear_Expression_Impl(const Linear_Expression_Impl& e); -2441: -2441: -2441: template -2441: Linear_Expression_Impl(const Linear_Expression_Impl& e); -2441: -2441: -2441: Linear_Expression_Impl(const Linear_Expression_Interface& e); -2441: -2441: -2441: virtual ~Linear_Expression_Impl(); -2441: -2441: -2441: virtual bool OK() const; -2441: -2441: -2441: -2441: -2441: -2441: explicit Linear_Expression_Impl(Coefficient_traits::const_reference n); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: Linear_Expression_Impl(Variable v); -2441: -2441: -2441: virtual Representation representation() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: class const_iterator: public const_iterator_interface { -2441: public: -2441: explicit const_iterator(const Row& row, dimension_type i); -2441: -2441: -2441: -2441: -2441: virtual const_iterator_interface* clone() const; -2441: -2441: -2441: -2441: -2441: virtual void operator++(); -2441: -2441: -2441: -2441: -2441: virtual void operator--(); -2441: -2441: -2441: virtual reference operator*() const; -2441: -2441: -2441: -2441: -2441: -2441: virtual Variable variable() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual bool operator==(const const_iterator_interface& x) const; -2441: -2441: private: -2441: -2441: void skip_zeroes_forward(); -2441: void skip_zeroes_backward(); -2441: -2441: const Row* row; -2441: typename Row::const_iterator itr; -2441: }; -2441: -2441: -2441: -2441: virtual const_iterator_interface* begin() const; -2441: -2441: -2441: -2441: virtual const_iterator_interface* end() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual const_iterator_interface* lower_bound(Variable v) const; -2441: -2441: -2441: static dimension_type max_space_dimension(); -2441: -2441: -2441: virtual dimension_type space_dimension() const; -2441: -2441: -2441: virtual void set_space_dimension(dimension_type n); -2441: -2441: -2441: virtual Coefficient_traits::const_reference coefficient(Variable v) const; -2441: -2441: -2441: virtual void set_coefficient(Variable v, -2441: Coefficient_traits::const_reference n); -2441: -2441: -2441: virtual Coefficient_traits::const_reference inhomogeneous_term() const; -2441: -2441: -2441: virtual void set_inhomogeneous_term(Coefficient_traits::const_reference n); -2441: # 243 "../../src/Linear_Expression_Impl_defs.hh" -2441: virtual void linear_combine(const Linear_Expression_Interface& y, Variable v); -2441: -2441: -2441: -2441: virtual void linear_combine(const Linear_Expression_Interface& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2); -2441: -2441: -2441: -2441: virtual void linear_combine_lax(const Linear_Expression_Interface& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2); -2441: -2441: -2441: virtual void swap_space_dimensions(Variable v1, Variable v2); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual void remove_space_dimensions(const Variables_Set& vars); -2441: -2441: -2441: -2441: virtual void shift_space_dimensions(Variable v, dimension_type n); -2441: # 284 "../../src/Linear_Expression_Impl_defs.hh" -2441: virtual void permute_space_dimensions(const std::vector& cycle); -2441: -2441: -2441: virtual bool is_zero() const; -2441: -2441: -2441: -2441: -2441: -2441: virtual bool all_homogeneous_terms_are_zero() const; -2441: -2441: -2441: -2441: -2441: -2441: virtual memory_size_type total_memory_in_bytes() const; -2441: -2441: -2441: virtual memory_size_type external_memory_in_bytes() const; -2441: -2441: -2441: virtual void ascii_dump(std::ostream& s) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual bool ascii_load(std::istream& s); -2441: -2441: -2441: Linear_Expression_Impl(const Linear_Expression_Interface& e, -2441: dimension_type space_dim); -2441: -2441: -2441: -2441: virtual bool is_equal_to(const Linear_Expression_Interface& x) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual void normalize(); -2441: -2441: -2441: -2441: virtual void sign_normalize(); -2441: -2441: -2441: -2441: -2441: -2441: virtual void negate(dimension_type first, dimension_type last); -2441: -2441: virtual Linear_Expression_Impl& -2441: operator+=(Coefficient_traits::const_reference n); -2441: virtual Linear_Expression_Impl& -2441: operator-=(Coefficient_traits::const_reference n); -2441: # 357 "../../src/Linear_Expression_Impl_defs.hh" -2441: virtual int compare(const Linear_Expression_Interface& y) const; -2441: -2441: virtual Linear_Expression_Impl& -2441: operator+=(const Linear_Expression_Interface& e2); -2441: virtual Linear_Expression_Impl& operator+=(const Variable v); -2441: virtual Linear_Expression_Impl& -2441: operator-=(const Linear_Expression_Interface& e2); -2441: virtual Linear_Expression_Impl& operator-=(const Variable v); -2441: virtual Linear_Expression_Impl& -2441: operator*=(Coefficient_traits::const_reference n); -2441: virtual Linear_Expression_Impl& -2441: operator/=(Coefficient_traits::const_reference n); -2441: -2441: virtual void negate(); -2441: -2441: virtual Linear_Expression_Impl& -2441: add_mul_assign(Coefficient_traits::const_reference n, const Variable v); -2441: -2441: virtual Linear_Expression_Impl& -2441: sub_mul_assign(Coefficient_traits::const_reference n, const Variable v); -2441: -2441: virtual void add_mul_assign(Coefficient_traits::const_reference factor, -2441: const Linear_Expression_Interface& e2); -2441: -2441: virtual void sub_mul_assign(Coefficient_traits::const_reference factor, -2441: const Linear_Expression_Interface& e2); -2441: -2441: virtual void print(std::ostream& s) const; -2441: -2441: -2441: -2441: -2441: -2441: virtual bool all_zeroes(const Variables_Set& vars) const; -2441: -2441: -2441: -2441: virtual bool have_a_common_variable(const Linear_Expression_Interface& x, -2441: Variable first, Variable last) const; -2441: -2441: -2441: -2441: -2441: -2441: virtual Coefficient_traits::const_reference get(dimension_type i) const; -2441: -2441: -2441: -2441: -2441: -2441: virtual void set(dimension_type i, Coefficient_traits::const_reference n); -2441: # 416 "../../src/Linear_Expression_Impl_defs.hh" -2441: virtual bool all_zeroes(dimension_type start, dimension_type end) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual dimension_type num_zeroes(dimension_type start, dimension_type end) const; -2441: # 433 "../../src/Linear_Expression_Impl_defs.hh" -2441: virtual Coefficient gcd(dimension_type start, dimension_type end) const; -2441: -2441: -2441: -2441: -2441: virtual void exact_div_assign(Coefficient_traits::const_reference c, -2441: dimension_type start, dimension_type end); -2441: -2441: -2441: -2441: -2441: -2441: virtual void mul_assign(Coefficient_traits::const_reference n, -2441: dimension_type start, dimension_type end); -2441: # 466 "../../src/Linear_Expression_Impl_defs.hh" -2441: virtual void -2441: linear_combine(const Linear_Expression_Interface& y, dimension_type i); -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual void linear_combine(const Linear_Expression_Interface& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2, -2441: dimension_type start, dimension_type end); -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual void linear_combine_lax(const Linear_Expression_Interface& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2, -2441: dimension_type start, dimension_type end); -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual dimension_type last_nonzero() const; -2441: # 503 "../../src/Linear_Expression_Impl_defs.hh" -2441: virtual bool -2441: all_zeroes_except(const Variables_Set& vars, -2441: dimension_type start, dimension_type end) const; -2441: -2441: -2441: -2441: -2441: -2441: virtual void -2441: scalar_product_assign(Coefficient& result, -2441: const Linear_Expression_Interface& y, -2441: dimension_type start, dimension_type end) const; -2441: -2441: -2441: -2441: -2441: -2441: virtual int -2441: scalar_product_sign(const Linear_Expression_Interface& y, -2441: dimension_type start, dimension_type end) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual dimension_type -2441: first_nonzero(dimension_type first, dimension_type last) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual dimension_type -2441: last_nonzero(dimension_type first, dimension_type last) const; -2441: -2441: -2441: -2441: -2441: -2441: virtual void has_a_free_dimension_helper(std::set& x) const; -2441: -2441: -2441: -2441: -2441: -2441: virtual bool is_equal_to(const Linear_Expression_Interface& x, -2441: dimension_type start, dimension_type end) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: virtual bool is_equal_to(const Linear_Expression_Interface& x, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2, -2441: dimension_type start, dimension_type end) const; -2441: -2441: -2441: -2441: -2441: -2441: virtual void get_row(Dense_Row& r) const; -2441: -2441: -2441: -2441: -2441: -2441: virtual void get_row(Sparse_Row& r) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: Linear_Expression_Impl(dimension_type space_dim, bool); -2441: # 597 "../../src/Linear_Expression_Impl_defs.hh" -2441: template -2441: void linear_combine(const Linear_Expression_Impl& y, Variable v); -2441: -2441: -2441: -2441: template -2441: void linear_combine(const Linear_Expression_Impl& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2); -2441: -2441: -2441: -2441: template -2441: void linear_combine_lax(const Linear_Expression_Impl& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2); -2441: -2441: -2441: -2441: template -2441: bool is_equal_to(const Linear_Expression_Impl& x) const; -2441: -2441: template -2441: Linear_Expression_Impl& operator+=(const Linear_Expression_Impl& e2); -2441: template -2441: Linear_Expression_Impl& operator-=(const Linear_Expression_Impl& e2); -2441: -2441: template -2441: Linear_Expression_Impl& -2441: sub_mul_assign(Coefficient_traits::const_reference n, -2441: const Linear_Expression_Impl& y, -2441: dimension_type start, dimension_type end); -2441: -2441: template -2441: void add_mul_assign(Coefficient_traits::const_reference factor, -2441: const Linear_Expression_Impl& e2); -2441: -2441: template -2441: void sub_mul_assign(Coefficient_traits::const_reference factor, -2441: const Linear_Expression_Impl& e2); -2441: # 653 "../../src/Linear_Expression_Impl_defs.hh" -2441: template -2441: void linear_combine(const Linear_Expression_Impl& y, dimension_type i); -2441: -2441: -2441: -2441: template -2441: void linear_combine(const Linear_Expression_Impl& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2, -2441: dimension_type start, dimension_type end); -2441: -2441: -2441: -2441: template -2441: void linear_combine_lax(const Linear_Expression_Impl& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2, -2441: dimension_type start, dimension_type end); -2441: # 684 "../../src/Linear_Expression_Impl_defs.hh" -2441: template -2441: int compare(const Linear_Expression_Impl& y) const; -2441: -2441: -2441: template -2441: void -2441: scalar_product_assign(Coefficient& result, -2441: const Linear_Expression_Impl& y, -2441: dimension_type start, dimension_type end) const; -2441: -2441: -2441: -2441: template -2441: int scalar_product_sign(const Linear_Expression_Impl& y, -2441: dimension_type start, dimension_type end) const; -2441: -2441: -2441: template -2441: bool is_equal_to(const Linear_Expression_Impl& x, -2441: dimension_type start, dimension_type end) const; -2441: -2441: -2441: -2441: template -2441: bool is_equal_to(const Linear_Expression_Impl& x, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2, -2441: dimension_type start, dimension_type end) const; -2441: -2441: -2441: -2441: template -2441: bool have_a_common_variable(const Linear_Expression_Impl& x, -2441: Variable first, Variable last) const; -2441: -2441: private: -2441: -2441: void construct(const Linear_Expression_Interface& e); -2441: void construct(const Linear_Expression_Interface& e, -2441: dimension_type space_dim); -2441: -2441: template -2441: void construct(const Linear_Expression_Impl& e); -2441: template -2441: void construct(const Linear_Expression_Impl& e, -2441: dimension_type space_dim); -2441: -2441: Row row; -2441: -2441: template -2441: friend class Linear_Expression_Impl; -2441: -2441: }; -2441: -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: template <> -2441: bool -2441: Linear_Expression_Impl::OK() const; -2441: template <> -2441: bool -2441: Linear_Expression_Impl::OK() const; -2441: -2441: template <> -2441: bool -2441: Linear_Expression_Impl::all_homogeneous_terms_are_zero() const; -2441: template <> -2441: bool -2441: Linear_Expression_Impl::all_homogeneous_terms_are_zero() const; -2441: -2441: template <> -2441: bool -2441: Linear_Expression_Impl::all_zeroes(dimension_type start, -2441: dimension_type end) const; -2441: template <> -2441: bool -2441: Linear_Expression_Impl::all_zeroes(dimension_type start, -2441: dimension_type end) const; -2441: -2441: template <> -2441: bool -2441: Linear_Expression_Impl -2441: ::all_zeroes(const Variables_Set& vars) const; -2441: template <> -2441: bool -2441: Linear_Expression_Impl -2441: ::all_zeroes(const Variables_Set& vars) const; -2441: -2441: template <> -2441: bool -2441: Linear_Expression_Impl -2441: ::all_zeroes_except(const Variables_Set& vars, -2441: dimension_type start, dimension_type end) const; -2441: template <> -2441: bool -2441: Linear_Expression_Impl -2441: ::all_zeroes_except(const Variables_Set& vars, -2441: dimension_type start, dimension_type end) const; -2441: -2441: template <> -2441: dimension_type -2441: Linear_Expression_Impl -2441: ::first_nonzero(dimension_type first, dimension_type last) const; -2441: template <> -2441: dimension_type -2441: Linear_Expression_Impl -2441: ::first_nonzero(dimension_type first, dimension_type last) const; -2441: -2441: template <> -2441: Coefficient -2441: Linear_Expression_Impl::gcd(dimension_type start, -2441: dimension_type end) const; -2441: template <> -2441: Coefficient -2441: Linear_Expression_Impl::gcd(dimension_type start, -2441: dimension_type end) const; -2441: -2441: template <> -2441: void -2441: Linear_Expression_Impl -2441: ::has_a_free_dimension_helper(std::set& x) const; -2441: template <> -2441: void -2441: Linear_Expression_Impl -2441: ::has_a_free_dimension_helper(std::set& x) const; -2441: -2441: template <> -2441: template <> -2441: bool -2441: Linear_Expression_Impl -2441: ::have_a_common_variable(const Linear_Expression_Impl& y, -2441: Variable first, Variable last) const; -2441: template <> -2441: template <> -2441: bool -2441: Linear_Expression_Impl -2441: ::have_a_common_variable(const Linear_Expression_Impl& y, -2441: Variable first, Variable last) const; -2441: template <> -2441: template <> -2441: bool -2441: Linear_Expression_Impl -2441: ::have_a_common_variable(const Linear_Expression_Impl& y, -2441: Variable first, Variable last) const; -2441: template <> -2441: template <> -2441: bool -2441: Linear_Expression_Impl -2441: ::have_a_common_variable(const Linear_Expression_Impl& y, -2441: Variable first, Variable last) const; -2441: -2441: template <> -2441: bool -2441: Linear_Expression_Impl::is_zero() const; -2441: template <> -2441: bool -2441: Linear_Expression_Impl::is_zero() const; -2441: -2441: template <> -2441: dimension_type -2441: Linear_Expression_Impl::last_nonzero() const; -2441: template <> -2441: dimension_type -2441: Linear_Expression_Impl::last_nonzero() const; -2441: -2441: template <> -2441: dimension_type -2441: Linear_Expression_Impl -2441: ::last_nonzero(dimension_type first, dimension_type last) const; -2441: template <> -2441: dimension_type -2441: Linear_Expression_Impl -2441: ::last_nonzero(dimension_type first, dimension_type last) const; -2441: -2441: template <> -2441: dimension_type -2441: Linear_Expression_Impl::num_zeroes(dimension_type start, -2441: dimension_type end) const; -2441: template <> -2441: dimension_type -2441: Linear_Expression_Impl::num_zeroes(dimension_type start, -2441: dimension_type end) const; -2441: -2441: template <> -2441: void -2441: Linear_Expression_Impl -2441: ::remove_space_dimensions(const Variables_Set& vars); -2441: template <> -2441: void -2441: Linear_Expression_Impl -2441: ::remove_space_dimensions(const Variables_Set& vars); -2441: -2441: template <> -2441: Representation -2441: Linear_Expression_Impl::representation() const; -2441: template <> -2441: Representation -2441: Linear_Expression_Impl::representation() const; -2441: -2441: template <> -2441: void -2441: Linear_Expression_Impl::const_iterator::skip_zeroes_backward(); -2441: template <> -2441: void -2441: Linear_Expression_Impl::const_iterator::skip_zeroes_backward(); -2441: -2441: template <> -2441: void -2441: Linear_Expression_Impl::const_iterator::skip_zeroes_forward(); -2441: template <> -2441: void -2441: Linear_Expression_Impl::const_iterator::skip_zeroes_forward(); -2441: -2441: } -2441: -2441: -2441: # 1 "../../src/Linear_Expression_Impl_inlines.hh" 1 -2441: # 27 "../../src/Linear_Expression_Impl_inlines.hh" -2441: # 1 "../../src/math_utilities_defs.hh" 1 -2441: # 31 "../../src/math_utilities_defs.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: -2441: template -2441: typename Enable_If::value, void>::type -2441: numer_denom(const T& from, -2441: Coefficient& numer, Coefficient& denom); -2441: -2441: -2441: -2441: -2441: template -2441: typename Enable_If::value, void>::type -2441: div_round_up(T& to, -2441: Coefficient_traits::const_reference x, -2441: Coefficient_traits::const_reference y); -2441: -2441: -2441: -2441: -2441: template -2441: void -2441: min_assign(N& x, const N& y); -2441: -2441: -2441: -2441: -2441: template -2441: void -2441: max_assign(N& x, const N& y); -2441: -2441: -2441: -2441: -2441: template -2441: typename Enable_If::value, bool>::type -2441: is_even(const T& x); -2441: -2441: -2441: -2441: -2441: template -2441: typename Enable_If::value, bool>::type -2441: is_additive_inverse(const T& x, const T& y); -2441: # 88 "../../src/math_utilities_defs.hh" -2441: void -2441: normalize2(Coefficient_traits::const_reference x, -2441: Coefficient_traits::const_reference y, -2441: Coefficient& n_x, Coefficient& n_y); -2441: -2441: -2441: -2441: -2441: bool -2441: is_canonical(const mpq_class& x); -2441: -2441: -2441: -2441: -2441: template -2441: T -2441: low_bits_mask(unsigned n); -2441: -2441: } -2441: -2441: # 1 "../../src/math_utilities_inlines.hh" 1 -2441: # 31 "../../src/math_utilities_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: inline void -2441: normalize2(Coefficient_traits::const_reference x, -2441: Coefficient_traits::const_reference y, -2441: Coefficient& n_x, Coefficient& n_y) { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_gcd; Parma_Polyhedra_Library::Coefficient& gcd = holder_gcd.item(); -2441: gcd_assign(gcd, x, y); -2441: exact_div_assign(n_x, x, gcd); -2441: exact_div_assign(n_y, y, gcd); -2441: } -2441: -2441: template -2441: inline T -2441: low_bits_mask(const unsigned n) { -2441: ((void) 0); -2441: return ~((~static_cast(0)) << n); -2441: } -2441: -2441: template -2441: inline typename Enable_If::value, void>::type -2441: numer_denom(const T& from, -2441: Coefficient& numer, Coefficient& denom) { -2441: ((void) 0) -2441: -2441: ; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_q; mpq_class& q = holder_q.item(); -2441: assign_r(q, from, ROUND_NOT_NEEDED); -2441: numer = q.get_num(); -2441: denom = q.get_den(); -2441: } -2441: -2441: template -2441: inline typename Enable_If::value, void>::type -2441: div_round_up(T& to, -2441: Coefficient_traits::const_reference x, -2441: Coefficient_traits::const_reference y) { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_q_x; mpq_class& q_x = holder_q_x.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_q_y; mpq_class& q_y = holder_q_y.item(); -2441: -2441: -2441: assign_r(q_x, x, ROUND_NOT_NEEDED); -2441: assign_r(q_y, y, ROUND_NOT_NEEDED); -2441: div_assign_r(q_x, q_x, q_y, ROUND_NOT_NEEDED); -2441: assign_r(to, q_x, ROUND_UP); -2441: } -2441: -2441: template -2441: inline void -2441: min_assign(N& x, const N& y) { -2441: if (x > y) { -2441: x = y; -2441: } -2441: } -2441: -2441: template -2441: inline void -2441: max_assign(N& x, const N& y) { -2441: if (x < y) { -2441: x = y; -2441: } -2441: } -2441: -2441: template -2441: inline typename Enable_If::value, bool>::type -2441: is_even(const T& x) { -2441: T mod; -2441: return umod_2exp_assign_r(mod, x, 1, ROUND_DIRECT | ROUND_STRICT_RELATION) == V_EQ -2441: && mod == 0; -2441: } -2441: -2441: template -2441: inline typename Enable_If::value, bool>::type -2441: is_additive_inverse(const T& x, const T& y) { -2441: T negated_x; -2441: return neg_assign_r(negated_x, x, ROUND_DIRECT | ROUND_STRICT_RELATION) == V_EQ -2441: && negated_x == y; -2441: } -2441: -2441: inline bool -2441: is_canonical(const mpq_class& x) { -2441: if (x.get_den() <= 0) { -2441: return false; -2441: } -2441: Parma_Polyhedra_Library::Dirty_Temp holder_temp; mpq_class& temp = holder_temp.item(); -2441: temp = x; -2441: temp.canonicalize(); -2441: return temp.get_num() == x.get_num(); -2441: } -2441: -2441: } -2441: # 109 "../../src/math_utilities_defs.hh" 2 -2441: # 28 "../../src/Linear_Expression_Impl_inlines.hh" 2 -2441: -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: inline dimension_type -2441: Linear_Expression_Impl::max_space_dimension() { -2441: return Row::max_size() - 1; -2441: } -2441: -2441: template -2441: inline -2441: Linear_Expression_Impl::Linear_Expression_Impl() -2441: : row(1) { -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline -2441: Linear_Expression_Impl -2441: ::Linear_Expression_Impl(dimension_type space_dim, bool) -2441: : row(space_dim + 1) { -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline -2441: Linear_Expression_Impl::~Linear_Expression_Impl() { -2441: } -2441: -2441: template -2441: inline -2441: Linear_Expression_Impl -2441: ::Linear_Expression_Impl(Coefficient_traits::const_reference n) -2441: : row(1) { -2441: if (n != 0) { -2441: row.insert(0, n); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline dimension_type -2441: Linear_Expression_Impl::space_dimension() const { -2441: return row.size() - 1; -2441: } -2441: -2441: template -2441: inline void -2441: Linear_Expression_Impl::set_space_dimension(dimension_type n) { -2441: row.resize(n + 1); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline Coefficient_traits::const_reference -2441: Linear_Expression_Impl::coefficient(Variable v) const { -2441: if (v.space_dimension() > space_dimension()) { -2441: return Coefficient_zero(); -2441: } -2441: return row.get(v.id() + 1); -2441: } -2441: -2441: template -2441: inline void -2441: Linear_Expression_Impl -2441: ::set_coefficient(Variable v, Coefficient_traits::const_reference n) { -2441: ((void) 0); -2441: const dimension_type i = v.space_dimension(); -2441: if (n == 0) { -2441: row.reset(i); -2441: } -2441: else { -2441: row.insert(i, n); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline Coefficient_traits::const_reference -2441: Linear_Expression_Impl::inhomogeneous_term() const { -2441: return row.get(0); -2441: } -2441: -2441: template -2441: inline void -2441: Linear_Expression_Impl -2441: ::set_inhomogeneous_term(Coefficient_traits::const_reference n) { -2441: if (n == 0) { -2441: row.reset(0); -2441: } -2441: else { -2441: row.insert(0, n); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline void -2441: Linear_Expression_Impl::swap_space_dimensions(Variable v1, Variable v2) { -2441: row.swap_coefficients(v1.space_dimension(), v2.space_dimension()); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline void -2441: Linear_Expression_Impl::shift_space_dimensions(Variable v, -2441: dimension_type n) { -2441: row.add_zeroes_and_shift(n, v.space_dimension()); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline memory_size_type -2441: Linear_Expression_Impl::external_memory_in_bytes() const { -2441: return row.external_memory_in_bytes(); -2441: } -2441: -2441: template -2441: inline memory_size_type -2441: Linear_Expression_Impl::total_memory_in_bytes() const { -2441: return external_memory_in_bytes() + sizeof(*this); -2441: } -2441: -2441: template -2441: inline Linear_Expression_Impl& -2441: Linear_Expression_Impl::operator+=(Coefficient_traits::const_reference n) { -2441: typename Row::iterator itr = row.insert(0); -2441: (*itr) += n; -2441: if (*itr == 0) { -2441: row.reset(itr); -2441: } -2441: ((void) 0); -2441: return *this; -2441: } -2441: -2441: template -2441: inline Linear_Expression_Impl& -2441: Linear_Expression_Impl::operator-=(Coefficient_traits::const_reference n) { -2441: typename Row::iterator itr = row.insert(0); -2441: (*itr) -= n; -2441: if (*itr == 0) { -2441: row.reset(itr); -2441: } -2441: ((void) 0); -2441: return *this; -2441: } -2441: -2441: template -2441: inline void -2441: Linear_Expression_Impl::normalize() { -2441: row.normalize(); -2441: ((void) 0); -2441: } -2441: -2441: template <> -2441: inline bool -2441: Linear_Expression_Impl::is_zero() const { -2441: return row.num_stored_elements() == 0; -2441: } -2441: -2441: template <> -2441: inline bool -2441: Linear_Expression_Impl::all_homogeneous_terms_are_zero() const { -2441: return row.lower_bound(1) == row.end(); -2441: } -2441: -2441: template <> -2441: inline bool -2441: Linear_Expression_Impl::all_zeroes(dimension_type start, -2441: dimension_type end) const { -2441: return row.lower_bound(start) == row.lower_bound(end); -2441: } -2441: -2441: template <> -2441: inline dimension_type -2441: Linear_Expression_Impl::num_zeroes(dimension_type start, -2441: dimension_type end) const { -2441: ((void) 0); -2441: return (end - start) -2441: - std::distance(row.lower_bound(start), row.lower_bound(end)); -2441: } -2441: -2441: template <> -2441: inline dimension_type -2441: Linear_Expression_Impl::last_nonzero() const { -2441: if (row.num_stored_elements() == 0) { -2441: return 0; -2441: } -2441: Sparse_Row::const_iterator i = row.end(); -2441: --i; -2441: return i.index(); -2441: } -2441: -2441: template <> -2441: inline dimension_type -2441: Linear_Expression_Impl -2441: ::first_nonzero(dimension_type first, dimension_type last) const { -2441: ((void) 0); -2441: ((void) 0); -2441: Sparse_Row::const_iterator i = row.lower_bound(first); -2441: -2441: if (i != row.end() && i.index() < last) { -2441: return i.index(); -2441: } -2441: else { -2441: return last; -2441: } -2441: } -2441: -2441: template <> -2441: inline dimension_type -2441: Linear_Expression_Impl -2441: ::last_nonzero(dimension_type first, dimension_type last) const { -2441: ((void) 0); -2441: ((void) 0); -2441: Sparse_Row::const_iterator itr1 = row.lower_bound(first); -2441: Sparse_Row::const_iterator itr2 = row.lower_bound(last); -2441: -2441: if (itr1 == itr2) { -2441: return last; -2441: } -2441: -2441: --itr2; -2441: return itr2.index(); -2441: } -2441: -2441: template <> -2441: inline Representation -2441: Linear_Expression_Impl::representation() const { -2441: return DENSE; -2441: } -2441: -2441: template <> -2441: inline Representation -2441: Linear_Expression_Impl::representation() const { -2441: return SPARSE; -2441: } -2441: -2441: template <> -2441: inline void -2441: Linear_Expression_Impl::const_iterator -2441: ::skip_zeroes_forward() { -2441: -2441: } -2441: -2441: template <> -2441: inline void -2441: Linear_Expression_Impl::const_iterator -2441: ::skip_zeroes_backward() { -2441: -2441: } -2441: -2441: namespace IO_Operators { -2441: -2441: template -2441: inline std::ostream& -2441: operator<<(std::ostream& s, const Linear_Expression_Impl& e) { -2441: e.print(s); -2441: return s; -2441: } -2441: -2441: } -2441: -2441: } -2441: # 904 "../../src/Linear_Expression_Impl_defs.hh" 2 -2441: # 1 "../../src/Linear_Expression_Impl_templates.hh" 1 -2441: # 30 "../../src/Linear_Expression_Impl_templates.hh" -2441: # 1 "../../src/Constraint_defs.hh" 1 -2441: # 27 "../../src/Constraint_defs.hh" -2441: # 1 "../../src/Constraint_types.hh" 1 -2441: # 16 "../../src/Constraint_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: class Constraint; -2441: -2441: } -2441: # 28 "../../src/Constraint_defs.hh" 2 -2441: -2441: # 1 "../../src/Congruence_types.hh" 1 -2441: # 16 "../../src/Congruence_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: class Congruence; -2441: -2441: } -2441: # 30 "../../src/Constraint_defs.hh" 2 -2441: -2441: # 1 "../../src/Polyhedron_types.hh" 1 -2441: # 16 "../../src/Polyhedron_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: class Polyhedron; -2441: -2441: } -2441: # 32 "../../src/Constraint_defs.hh" 2 -2441: # 1 "../../src/termination_types.hh" 1 -2441: # 16 "../../src/termination_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: class Termination_Helpers; -2441: -2441: } -2441: # 33 "../../src/Constraint_defs.hh" 2 -2441: # 1 "../../src/Octagonal_Shape_types.hh" 1 -2441: # 16 "../../src/Octagonal_Shape_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: class Octagonal_Shape; -2441: -2441: class Octagonal_Shape_Helper; -2441: -2441: } -2441: # 34 "../../src/Constraint_defs.hh" 2 -2441: # 1 "../../src/Grid_types.hh" 1 -2441: # 16 "../../src/Grid_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: class Grid; -2441: -2441: } -2441: # 35 "../../src/Constraint_defs.hh" 2 -2441: -2441: # 1 "../../src/Linear_Expression_defs.hh" 1 -2441: # 30 "../../src/Linear_Expression_defs.hh" -2441: # 1 "../../src/Generator_types.hh" 1 -2441: # 16 "../../src/Generator_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: class Generator; -2441: -2441: } -2441: # 31 "../../src/Linear_Expression_defs.hh" 2 -2441: -2441: # 1 "../../src/Grid_Generator_types.hh" 1 -2441: # 16 "../../src/Grid_Generator_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: class Grid_Generator; -2441: -2441: } -2441: # 33 "../../src/Linear_Expression_defs.hh" 2 -2441: # 1 "../../src/Linear_System_types.hh" 1 -2441: # 16 "../../src/Linear_System_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: class Linear_System; -2441: -2441: template -2441: class Linear_System_With_Bit_Matrix_iterator; -2441: -2441: } -2441: # 34 "../../src/Linear_Expression_defs.hh" 2 -2441: # 1 "../../src/Constraint_System_types.hh" 1 -2441: # 16 "../../src/Constraint_System_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: class Constraint_System; -2441: class Constraint_System_const_iterator; -2441: -2441: } -2441: # 35 "../../src/Linear_Expression_defs.hh" 2 -2441: # 1 "../../src/Congruence_System_types.hh" 1 -2441: # 16 "../../src/Congruence_System_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: class Congruence_System; -2441: -2441: } -2441: # 36 "../../src/Linear_Expression_defs.hh" 2 -2441: -2441: -2441: -2441: # 1 "../../src/PIP_Problem_types.hh" 1 -2441: # 16 "../../src/PIP_Problem_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: enum PIP_Problem_Status { -2441: -2441: UNFEASIBLE_PIP_PROBLEM, -2441: -2441: OPTIMIZED_PIP_PROBLEM -2441: }; -2441: -2441: class PIP_Problem; -2441: -2441: } -2441: # 40 "../../src/Linear_Expression_defs.hh" 2 -2441: # 1 "../../src/BHRZ03_Certificate_types.hh" 1 -2441: # 16 "../../src/BHRZ03_Certificate_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: class BHRZ03_Certificate; -2441: -2441: } -2441: # 41 "../../src/Linear_Expression_defs.hh" 2 -2441: # 1 "../../src/Scalar_Products_types.hh" 1 -2441: # 16 "../../src/Scalar_Products_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: class Scalar_Products; -2441: class Topology_Adjusted_Scalar_Product_Sign; -2441: class Topology_Adjusted_Scalar_Product_Assign; -2441: -2441: } -2441: # 42 "../../src/Linear_Expression_defs.hh" 2 -2441: # 1 "../../src/MIP_Problem_types.hh" 1 -2441: # 16 "../../src/MIP_Problem_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: enum MIP_Problem_Status { -2441: -2441: UNFEASIBLE_MIP_PROBLEM, -2441: -2441: UNBOUNDED_MIP_PROBLEM, -2441: -2441: OPTIMIZED_MIP_PROBLEM -2441: }; -2441: -2441: class MIP_Problem; -2441: -2441: } -2441: # 43 "../../src/Linear_Expression_defs.hh" 2 -2441: -2441: # 1 "../../src/BD_Shape_types.hh" 1 -2441: # 16 "../../src/BD_Shape_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: class BD_Shape; -2441: -2441: class BD_Shape_Helpers; -2441: -2441: } -2441: # 45 "../../src/Linear_Expression_defs.hh" 2 -2441: -2441: -2441: -2441: # 1 "../../src/Expression_Adapter_defs.hh" 1 -2441: # 27 "../../src/Expression_Adapter_defs.hh" -2441: # 1 "../../src/Expression_Adapter_types.hh" 1 -2441: # 16 "../../src/Expression_Adapter_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: class Expression_Adapter_Base; -2441: -2441: template -2441: class Expression_Adapter; -2441: -2441: template -2441: class Expression_Adapter_Transparent; -2441: -2441: } -2441: # 28 "../../src/Expression_Adapter_defs.hh" 2 -2441: # 36 "../../src/Expression_Adapter_defs.hh" -2441: class Parma_Polyhedra_Library::Expression_Adapter_Base { -2441: }; -2441: # 55 "../../src/Expression_Adapter_defs.hh" -2441: template -2441: class Parma_Polyhedra_Library::Expression_Adapter -2441: : public Expression_Adapter_Base { -2441: public: -2441: -2441: typedef Expression_Adapter const_reference; -2441: -2441: typedef typename T::const_reference inner_type; -2441: -2441: typedef typename T::raw_type raw_type; -2441: -2441: -2441: inner_type inner() const; -2441: -2441: -2441: typedef typename raw_type::const_iterator const_iterator; -2441: -2441: -2441: Representation representation() const; -2441: -2441: -2441: const_iterator begin() const; -2441: -2441: -2441: const_iterator end() const; -2441: -2441: -2441: -2441: const_iterator lower_bound(Variable v) const; -2441: -2441: -2441: dimension_type space_dimension() const; -2441: -2441: -2441: Coefficient_traits::const_reference coefficient(Variable v) const; -2441: -2441: -2441: Coefficient_traits::const_reference inhomogeneous_term() const; -2441: -2441: -2441: bool is_zero() const; -2441: -2441: -2441: -2441: -2441: -2441: bool all_homogeneous_terms_are_zero() const; -2441: -2441: -2441: -2441: -2441: -2441: template -2441: bool is_equal_to(const Expression& y) const; -2441: -2441: -2441: -2441: -2441: -2441: bool all_zeroes(const Variables_Set& vars) const; -2441: -2441: -2441: Coefficient_traits::const_reference get(dimension_type i) const; -2441: -2441: -2441: Coefficient_traits::const_reference get(Variable v) const; -2441: -2441: -2441: -2441: -2441: -2441: bool all_zeroes(dimension_type start, dimension_type end) const; -2441: -2441: -2441: dimension_type num_zeroes(dimension_type start, dimension_type end) const; -2441: -2441: -2441: -2441: -2441: -2441: Coefficient gcd(dimension_type start, dimension_type end) const; -2441: -2441: -2441: -2441: dimension_type last_nonzero() const; -2441: -2441: -2441: -2441: dimension_type last_nonzero(dimension_type first, dimension_type last) const; -2441: -2441: -2441: -2441: dimension_type first_nonzero(dimension_type first, dimension_type last) const; -2441: -2441: -2441: -2441: -2441: -2441: bool all_zeroes_except(const Variables_Set& vars, -2441: dimension_type start, dimension_type end) const; -2441: -2441: -2441: void has_a_free_dimension_helper(std::set& x) const; -2441: -2441: -2441: -2441: template -2441: bool is_equal_to(const Expression& y, -2441: dimension_type start, dimension_type end) const; -2441: -2441: -2441: -2441: template -2441: bool is_equal_to(const Expression& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2, -2441: dimension_type start, dimension_type end) const; -2441: -2441: -2441: void get_row(Dense_Row& r) const; -2441: -2441: -2441: void get_row(Sparse_Row& r) const; -2441: -2441: -2441: -2441: template -2441: bool have_a_common_variable(const Expression& y, -2441: Variable first, Variable last) const; -2441: -2441: protected: -2441: -2441: explicit Expression_Adapter(const raw_type& expr); -2441: -2441: const raw_type& raw_; -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: class Parma_Polyhedra_Library::Expression_Adapter_Transparent -2441: : public Expression_Adapter { -2441: typedef Expression_Adapter base_type; -2441: public: -2441: -2441: typedef Expression_Adapter_Transparent const_reference; -2441: -2441: typedef typename base_type::inner_type inner_type; -2441: -2441: typedef typename base_type::raw_type raw_type; -2441: -2441: -2441: typedef typename base_type::const_iterator const_iterator; -2441: -2441: -2441: explicit Expression_Adapter_Transparent(const raw_type& expr); -2441: }; -2441: -2441: # 1 "../../src/Expression_Adapter_inlines.hh" 1 -2441: # 29 "../../src/Expression_Adapter_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: inline -2441: Expression_Adapter::Expression_Adapter(const raw_type& expr) -2441: : raw_(expr) { -2441: } -2441: -2441: template -2441: inline typename Expression_Adapter::inner_type -2441: Expression_Adapter::inner() const { -2441: return inner_type(raw_); -2441: } -2441: -2441: template -2441: inline Representation -2441: Expression_Adapter::representation() const { -2441: return inner().representation(); -2441: } -2441: -2441: template -2441: inline typename Expression_Adapter::const_iterator -2441: Expression_Adapter::begin() const { -2441: return inner().begin(); -2441: } -2441: -2441: template -2441: inline typename Expression_Adapter::const_iterator -2441: Expression_Adapter::end() const { -2441: return inner().end(); -2441: } -2441: -2441: template -2441: inline typename Expression_Adapter::const_iterator -2441: Expression_Adapter::lower_bound(Variable v) const { -2441: return inner().lower_bound(v); -2441: } -2441: -2441: template -2441: inline dimension_type -2441: Expression_Adapter::space_dimension() const { -2441: return inner().space_dimension(); -2441: } -2441: -2441: template -2441: inline Coefficient_traits::const_reference -2441: Expression_Adapter::coefficient(Variable v) const { -2441: return inner().coefficient(v); -2441: } -2441: -2441: template -2441: inline Coefficient_traits::const_reference -2441: Expression_Adapter::inhomogeneous_term() const { -2441: return inner().inhomogeneous_term(); -2441: } -2441: -2441: template -2441: inline bool -2441: Expression_Adapter::is_zero() const { -2441: return inner().is_zero(); -2441: } -2441: -2441: template -2441: inline bool -2441: Expression_Adapter::all_homogeneous_terms_are_zero() const { -2441: return inner().all_homogeneous_terms_are_zero(); -2441: } -2441: -2441: template -2441: template -2441: inline bool -2441: Expression_Adapter::is_equal_to(const Expression& y) const { -2441: return inner().is_equal_to(y); -2441: } -2441: -2441: template -2441: inline bool -2441: Expression_Adapter -2441: ::all_zeroes(const Variables_Set& vars) const { -2441: return inner().all_zeroes(vars); -2441: } -2441: -2441: template -2441: inline Coefficient_traits::const_reference -2441: Expression_Adapter::get(dimension_type i) const { -2441: return inner().get(i); -2441: } -2441: -2441: template -2441: inline Coefficient_traits::const_reference -2441: Expression_Adapter::get(Variable v) const { -2441: return inner().get(v); -2441: } -2441: -2441: template -2441: inline bool -2441: Expression_Adapter::all_zeroes(dimension_type start, -2441: dimension_type end) const { -2441: return inner().all_zeroes(start, end); -2441: } -2441: -2441: template -2441: inline dimension_type -2441: Expression_Adapter::num_zeroes(dimension_type start, -2441: dimension_type end) const { -2441: return inner().num_zeroes(start, end); -2441: } -2441: -2441: template -2441: inline Coefficient -2441: Expression_Adapter::gcd(dimension_type start, -2441: dimension_type end) const { -2441: return inner().gcd(start, end); -2441: } -2441: -2441: template -2441: inline dimension_type -2441: Expression_Adapter::last_nonzero() const { -2441: return inner().last_nonzero(); -2441: } -2441: -2441: template -2441: inline dimension_type -2441: Expression_Adapter::last_nonzero(dimension_type first, -2441: dimension_type last) const { -2441: return inner().last_nonzero(first, last); -2441: } -2441: -2441: template -2441: inline dimension_type -2441: Expression_Adapter::first_nonzero(dimension_type first, -2441: dimension_type last) const { -2441: return inner().first_nonzero(first, last); -2441: } -2441: -2441: template -2441: inline bool -2441: Expression_Adapter -2441: ::all_zeroes_except(const Variables_Set& vars, -2441: dimension_type start, dimension_type end) const { -2441: return inner().all_zeroes_except(vars, start, end); -2441: } -2441: -2441: template -2441: inline void -2441: Expression_Adapter -2441: ::has_a_free_dimension_helper(std::set& x) const { -2441: inner().has_a_free_dimension_helper(x); -2441: } -2441: -2441: template -2441: template -2441: inline bool -2441: Expression_Adapter -2441: ::is_equal_to(const Expression& y, -2441: dimension_type start, dimension_type end) const { -2441: return inner().is_equal_to(y, start, end); -2441: } -2441: -2441: template -2441: template -2441: inline bool -2441: Expression_Adapter -2441: ::is_equal_to(const Expression& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2, -2441: dimension_type start, dimension_type end) const { -2441: return inner().is_equal_to(y, c1, c2, start, end); -2441: } -2441: -2441: template -2441: inline void -2441: Expression_Adapter::get_row(Dense_Row& r) const { -2441: inner().get_row(r); -2441: } -2441: -2441: template -2441: inline void -2441: Expression_Adapter::get_row(Sparse_Row& r) const { -2441: inner().get_row(r); -2441: } -2441: -2441: template -2441: template -2441: inline bool -2441: Expression_Adapter -2441: ::have_a_common_variable(const Expression& y, -2441: Variable first, Variable last) const { -2441: return inner().have_a_common_variable(y, first, last); -2441: } -2441: -2441: template -2441: inline -2441: Expression_Adapter_Transparent -2441: ::Expression_Adapter_Transparent(const raw_type& expr) -2441: : base_type(expr) { -2441: } -2441: -2441: } -2441: # 215 "../../src/Expression_Adapter_defs.hh" 2 -2441: # 49 "../../src/Linear_Expression_defs.hh" 2 -2441: # 1 "../../src/Expression_Hide_Inhomo_types.hh" 1 -2441: # 16 "../../src/Expression_Hide_Inhomo_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: class Expression_Hide_Inhomo; -2441: -2441: } -2441: # 50 "../../src/Linear_Expression_defs.hh" 2 -2441: # 1 "../../src/Expression_Hide_Last_types.hh" 1 -2441: # 16 "../../src/Expression_Hide_Last_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: class Expression_Hide_Last; -2441: -2441: } -2441: # 51 "../../src/Linear_Expression_defs.hh" 2 -2441: -2441: -2441: -2441: -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: -2441: -2441: Linear_Expression -2441: operator+(const Linear_Expression& e1, const Linear_Expression& e2); -2441: -2441: -2441: -2441: Linear_Expression -2441: operator+(Variable v, Variable w); -2441: -2441: -2441: -2441: Linear_Expression -2441: operator+(Variable v, const Linear_Expression& e); -2441: -2441: -2441: -2441: Linear_Expression -2441: operator+(const Linear_Expression& e, Variable v); -2441: -2441: -2441: -2441: Linear_Expression -2441: operator+(Coefficient_traits::const_reference n, const Linear_Expression& e); -2441: -2441: -2441: -2441: Linear_Expression -2441: operator+(const Linear_Expression& e, Coefficient_traits::const_reference n); -2441: -2441: -2441: -2441: Linear_Expression -2441: operator+(const Linear_Expression& e); -2441: -2441: -2441: -2441: Linear_Expression -2441: operator-(const Linear_Expression& e); -2441: -2441: -2441: -2441: Linear_Expression -2441: operator-(const Linear_Expression& e1, const Linear_Expression& e2); -2441: -2441: -2441: -2441: Linear_Expression -2441: operator-(Variable v, Variable w); -2441: -2441: -2441: -2441: Linear_Expression -2441: operator-(Variable v, const Linear_Expression& e); -2441: -2441: -2441: -2441: Linear_Expression -2441: operator-(const Linear_Expression& e, Variable v); -2441: -2441: -2441: -2441: Linear_Expression -2441: operator-(Coefficient_traits::const_reference n, const Linear_Expression& e); -2441: -2441: -2441: -2441: Linear_Expression -2441: operator-(const Linear_Expression& e, Coefficient_traits::const_reference n); -2441: -2441: -2441: -2441: Linear_Expression -2441: operator*(Coefficient_traits::const_reference n, const Linear_Expression& e); -2441: -2441: -2441: -2441: Linear_Expression -2441: operator*(const Linear_Expression& e, Coefficient_traits::const_reference n); -2441: -2441: -2441: -2441: Linear_Expression& -2441: operator+=(Linear_Expression& e1, const Linear_Expression& e2); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: Linear_Expression& -2441: operator+=(Linear_Expression& e, Variable v); -2441: -2441: -2441: -2441: Linear_Expression& -2441: operator+=(Linear_Expression& e, Coefficient_traits::const_reference n); -2441: -2441: -2441: -2441: Linear_Expression& -2441: operator-=(Linear_Expression& e1, const Linear_Expression& e2); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: Linear_Expression& -2441: operator-=(Linear_Expression& e, Variable v); -2441: -2441: -2441: -2441: Linear_Expression& -2441: operator-=(Linear_Expression& e, Coefficient_traits::const_reference n); -2441: -2441: -2441: -2441: Linear_Expression& -2441: operator*=(Linear_Expression& e, Coefficient_traits::const_reference n); -2441: -2441: -2441: -2441: Linear_Expression& -2441: operator/=(Linear_Expression& e, Coefficient_traits::const_reference n); -2441: -2441: -2441: -2441: void -2441: neg_assign(Linear_Expression& e); -2441: -2441: -2441: -2441: Linear_Expression& -2441: add_mul_assign(Linear_Expression& e, -2441: Coefficient_traits::const_reference n, Variable v); -2441: -2441: -2441: -2441: void add_mul_assign(Linear_Expression& e1, -2441: Coefficient_traits::const_reference factor, -2441: const Linear_Expression& e2); -2441: -2441: -2441: -2441: void sub_mul_assign(Linear_Expression& e1, -2441: Coefficient_traits::const_reference factor, -2441: const Linear_Expression& e2); -2441: -2441: -2441: -2441: Linear_Expression& -2441: sub_mul_assign(Linear_Expression& e, -2441: Coefficient_traits::const_reference n, Variable v); -2441: # 230 "../../src/Linear_Expression_defs.hh" -2441: int compare(const Linear_Expression& x, const Linear_Expression& y); -2441: -2441: namespace IO_Operators { -2441: -2441: -2441: -2441: std::ostream& operator<<(std::ostream& s, const Linear_Expression& e); -2441: -2441: } -2441: -2441: } -2441: # 289 "../../src/Linear_Expression_defs.hh" -2441: class Parma_Polyhedra_Library::Linear_Expression { -2441: public: -2441: static const Representation default_representation = SPARSE; -2441: -2441: -2441: explicit Linear_Expression(Representation r = default_representation); -2441: -2441: -2441: -2441: -2441: -2441: -2441: Linear_Expression(const Linear_Expression& e); -2441: -2441: -2441: Linear_Expression(const Linear_Expression& e, Representation r); -2441: -2441: -2441: typedef const Linear_Expression& const_reference; -2441: typedef Linear_Expression raw_type; -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: explicit -2441: Linear_Expression(const LE_Adapter& e, -2441: typename -2441: Enable_If::value, -2441: void*>::type = 0); -2441: -2441: -2441: -2441: -2441: template -2441: Linear_Expression(const LE_Adapter& e, -2441: Representation r, -2441: typename -2441: Enable_If::value, -2441: void*>::type = 0); -2441: # 341 "../../src/Linear_Expression_defs.hh" -2441: template -2441: explicit -2441: Linear_Expression(const LE_Adapter& e, -2441: dimension_type space_dim, -2441: typename -2441: Enable_If::value, -2441: void*>::type = 0); -2441: -2441: -2441: -2441: -2441: -2441: template -2441: Linear_Expression(const LE_Adapter& e, -2441: dimension_type space_dim, -2441: Representation r, -2441: typename -2441: Enable_If::value, -2441: void*>::type = 0); -2441: -2441: -2441: Linear_Expression& operator=(const Linear_Expression& e); -2441: -2441: -2441: ~Linear_Expression(); -2441: -2441: -2441: -2441: -2441: -2441: explicit Linear_Expression(Coefficient_traits::const_reference n, -2441: Representation r = default_representation); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: Linear_Expression(Variable v, Representation r = default_representation); -2441: -2441: -2441: Representation representation() const; -2441: -2441: -2441: void set_representation(Representation r); -2441: -2441: -2441: -2441: -2441: -2441: -2441: class const_iterator { -2441: private: -2441: public: -2441: typedef std::bidirectional_iterator_tag iterator_category; -2441: typedef const Coefficient value_type; -2441: typedef std::ptrdiff_t difference_type; -2441: typedef value_type* pointer; -2441: typedef Coefficient_traits::const_reference reference; -2441: -2441: -2441: -2441: -2441: -2441: explicit const_iterator(); -2441: # 417 "../../src/Linear_Expression_defs.hh" -2441: const_iterator(const const_iterator& i); -2441: -2441: ~const_iterator(); -2441: # 428 "../../src/Linear_Expression_defs.hh" -2441: void m_swap(const_iterator& i); -2441: # 437 "../../src/Linear_Expression_defs.hh" -2441: const_iterator& operator=(const const_iterator& i); -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_iterator& operator++(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_iterator& operator--(); -2441: -2441: -2441: reference operator*() const; -2441: -2441: -2441: -2441: -2441: -2441: Variable variable() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool operator==(const const_iterator& i) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool operator!=(const const_iterator& i) const; -2441: -2441: private: -2441: -2441: -2441: const_iterator(Linear_Expression_Interface::const_iterator_interface* i); -2441: -2441: Linear_Expression_Interface::const_iterator_interface* itr; -2441: -2441: friend class Linear_Expression; -2441: }; -2441: -2441: -2441: -2441: const_iterator begin() const; -2441: -2441: -2441: -2441: const_iterator end() const; -2441: -2441: -2441: -2441: const_iterator lower_bound(Variable v) const; -2441: -2441: -2441: static dimension_type max_space_dimension(); -2441: -2441: -2441: dimension_type space_dimension() const; -2441: -2441: -2441: void set_space_dimension(dimension_type n); -2441: -2441: -2441: Coefficient_traits::const_reference coefficient(Variable v) const; -2441: -2441: -2441: void set_coefficient(Variable v, -2441: Coefficient_traits::const_reference n); -2441: -2441: -2441: Coefficient_traits::const_reference inhomogeneous_term() const; -2441: -2441: -2441: void set_inhomogeneous_term(Coefficient_traits::const_reference n); -2441: # 535 "../../src/Linear_Expression_defs.hh" -2441: void linear_combine(const Linear_Expression& y, Variable v); -2441: -2441: -2441: -2441: void linear_combine(const Linear_Expression& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2); -2441: -2441: -2441: -2441: void linear_combine_lax(const Linear_Expression& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2); -2441: -2441: -2441: void swap_space_dimensions(Variable v1, Variable v2); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void remove_space_dimensions(const Variables_Set& vars); -2441: -2441: -2441: -2441: void shift_space_dimensions(Variable v, dimension_type n); -2441: # 576 "../../src/Linear_Expression_defs.hh" -2441: void permute_space_dimensions(const std::vector& cycle); -2441: -2441: -2441: bool is_zero() const; -2441: -2441: -2441: -2441: -2441: -2441: bool all_homogeneous_terms_are_zero() const; -2441: -2441: -2441: static void initialize(); -2441: -2441: -2441: static void finalize(); -2441: -2441: -2441: static const Linear_Expression& zero(); -2441: -2441: -2441: -2441: -2441: -2441: memory_size_type total_memory_in_bytes() const; -2441: -2441: -2441: memory_size_type external_memory_in_bytes() const; -2441: -2441: -2441: bool OK() const; -2441: -2441: void ascii_dump() const; void ascii_dump(std::ostream& s) const; void print() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool ascii_load(std::istream& s); -2441: -2441: -2441: void m_swap(Linear_Expression& y); -2441: -2441: -2441: Linear_Expression(const Linear_Expression& e, dimension_type space_dim); -2441: -2441: -2441: Linear_Expression(const Linear_Expression& e, dimension_type space_dim, -2441: Representation r); -2441: -2441: -2441: -2441: bool is_equal_to(const Linear_Expression& x) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void normalize(); -2441: -2441: -2441: -2441: void sign_normalize(); -2441: -2441: -2441: -2441: -2441: -2441: bool all_zeroes(const Variables_Set& vars) const; -2441: -2441: private: -2441: -2441: -2441: -2441: -2441: static const Linear_Expression* zero_p; -2441: -2441: Linear_Expression_Interface* impl; -2441: -2441: -2441: -2441: -2441: -2441: -2441: Linear_Expression(dimension_type space_dim, bool, -2441: Representation r = default_representation); -2441: -2441: -2441: -2441: -2441: -2441: Coefficient_traits::const_reference get(dimension_type i) const; -2441: -2441: -2441: -2441: -2441: -2441: void set(dimension_type i, Coefficient_traits::const_reference n); -2441: -2441: -2441: -2441: -2441: -2441: Coefficient_traits::const_reference get(Variable v) const; -2441: -2441: -2441: -2441: -2441: -2441: void set(Variable v, Coefficient_traits::const_reference n); -2441: -2441: -2441: -2441: -2441: -2441: bool all_zeroes(dimension_type start, dimension_type end) const; -2441: -2441: -2441: -2441: -2441: dimension_type num_zeroes(dimension_type start, dimension_type end) const; -2441: -2441: -2441: -2441: -2441: -2441: Coefficient gcd(dimension_type start, dimension_type end) const; -2441: -2441: void exact_div_assign(Coefficient_traits::const_reference c, -2441: dimension_type start, dimension_type end); -2441: # 725 "../../src/Linear_Expression_defs.hh" -2441: void linear_combine(const Linear_Expression& y, dimension_type i); -2441: -2441: -2441: -2441: void linear_combine(const Linear_Expression& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2, -2441: dimension_type start, dimension_type end); -2441: -2441: -2441: -2441: void linear_combine_lax(const Linear_Expression& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2, -2441: dimension_type start, dimension_type end); -2441: -2441: -2441: void mul_assign(Coefficient_traits::const_reference n, -2441: dimension_type start, dimension_type end); -2441: -2441: -2441: -2441: dimension_type last_nonzero() const; -2441: -2441: -2441: -2441: dimension_type last_nonzero(dimension_type first, dimension_type last) const; -2441: -2441: -2441: -2441: dimension_type first_nonzero(dimension_type first, dimension_type last) const; -2441: -2441: -2441: -2441: -2441: -2441: bool all_zeroes_except(const Variables_Set& vars, -2441: dimension_type start, dimension_type end) const; -2441: -2441: -2441: void scalar_product_assign(Coefficient& result, -2441: const Linear_Expression& y) const; -2441: -2441: -2441: void scalar_product_assign(Coefficient& result, const Linear_Expression& y, -2441: dimension_type start, dimension_type end) const; -2441: -2441: -2441: int scalar_product_sign(const Linear_Expression& y) const; -2441: -2441: -2441: -2441: int scalar_product_sign(const Linear_Expression& y, -2441: dimension_type start, dimension_type end) const; -2441: -2441: -2441: void has_a_free_dimension_helper(std::set& x) const; -2441: -2441: -2441: bool is_equal_to(const Linear_Expression& x, -2441: dimension_type start, dimension_type end) const; -2441: -2441: -2441: -2441: bool is_equal_to(const Linear_Expression& x, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2, -2441: dimension_type start, dimension_type end) const; -2441: -2441: -2441: void get_row(Dense_Row& r) const; -2441: -2441: -2441: void get_row(Sparse_Row& r) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool have_a_common_variable(const Linear_Expression& x, -2441: Variable first, Variable last) const; -2441: -2441: -2441: -2441: -2441: -2441: void negate(dimension_type first, dimension_type last); -2441: -2441: template -2441: friend class Linear_Expression_Impl; -2441: -2441: -2441: -2441: -2441: -2441: -2441: friend class Grid; -2441: friend class Congruence; -2441: friend class Polyhedron; -2441: friend class PIP_Tree_Node; -2441: friend class Grid_Generator; -2441: friend class Generator; -2441: friend class Constraint; -2441: friend class Constraint_System; -2441: friend class PIP_Problem; -2441: friend class BHRZ03_Certificate; -2441: friend class Scalar_Products; -2441: friend class MIP_Problem; -2441: friend class Box_Helpers; -2441: friend class Congruence_System; -2441: friend class BD_Shape_Helpers; -2441: friend class Octagonal_Shape_Helper; -2441: friend class Termination_Helpers; -2441: template -2441: friend class BD_Shape; -2441: template -2441: friend class Octagonal_Shape; -2441: template -2441: friend class Linear_System; -2441: template -2441: friend class Box; -2441: template -2441: friend class Expression_Adapter; -2441: template -2441: friend class Expression_Hide_Inhomo; -2441: template -2441: friend class Expression_Hide_Last; -2441: -2441: friend Linear_Expression -2441: operator+(const Linear_Expression& e1, const Linear_Expression& e2); -2441: friend Linear_Expression -2441: operator+(Coefficient_traits::const_reference n, const Linear_Expression& e); -2441: friend Linear_Expression -2441: operator+(const Linear_Expression& e, Coefficient_traits::const_reference n); -2441: friend Linear_Expression -2441: operator+(Variable v, const Linear_Expression& e); -2441: friend Linear_Expression -2441: operator+(Variable v, Variable w); -2441: -2441: friend Linear_Expression -2441: operator-(const Linear_Expression& e); -2441: -2441: friend Linear_Expression -2441: operator-(const Linear_Expression& e1, const Linear_Expression& e2); -2441: friend Linear_Expression -2441: operator-(Variable v, Variable w); -2441: friend Linear_Expression -2441: operator-(Coefficient_traits::const_reference n, const Linear_Expression& e); -2441: friend Linear_Expression -2441: operator-(const Linear_Expression& e, Coefficient_traits::const_reference n); -2441: friend Linear_Expression -2441: operator-(Variable v, const Linear_Expression& e); -2441: friend Linear_Expression -2441: operator-(const Linear_Expression& e, Variable v); -2441: -2441: friend Linear_Expression -2441: operator*(Coefficient_traits::const_reference n, const Linear_Expression& e); -2441: friend Linear_Expression -2441: operator*(const Linear_Expression& e, Coefficient_traits::const_reference n); -2441: -2441: friend Linear_Expression& -2441: operator+=(Linear_Expression& e1, const Linear_Expression& e2); -2441: friend Linear_Expression& -2441: operator+=(Linear_Expression& e, Variable v); -2441: friend Linear_Expression& -2441: operator+=(Linear_Expression& e, Coefficient_traits::const_reference n); -2441: -2441: friend Linear_Expression& -2441: operator-=(Linear_Expression& e1, const Linear_Expression& e2); -2441: friend Linear_Expression& -2441: operator-=(Linear_Expression& e, Variable v); -2441: friend Linear_Expression& -2441: operator-=(Linear_Expression& e, Coefficient_traits::const_reference n); -2441: -2441: friend Linear_Expression& -2441: operator*=(Linear_Expression& e, Coefficient_traits::const_reference n); -2441: friend Linear_Expression& -2441: operator/=(Linear_Expression& e, Coefficient_traits::const_reference n); -2441: -2441: friend void -2441: neg_assign(Linear_Expression& e); -2441: -2441: friend Linear_Expression& -2441: add_mul_assign(Linear_Expression& e, -2441: Coefficient_traits::const_reference n, Variable v); -2441: friend Linear_Expression& -2441: sub_mul_assign(Linear_Expression& e, -2441: Coefficient_traits::const_reference n, Variable v); -2441: -2441: friend void -2441: add_mul_assign(Linear_Expression& e1, -2441: Coefficient_traits::const_reference factor, -2441: const Linear_Expression& e2); -2441: friend void -2441: sub_mul_assign(Linear_Expression& e1, -2441: Coefficient_traits::const_reference factor, -2441: const Linear_Expression& e2); -2441: -2441: friend int -2441: compare(const Linear_Expression& x, const Linear_Expression& y); -2441: -2441: friend std::ostream& -2441: Parma_Polyhedra_Library::IO_Operators -2441: ::operator<<(std::ostream& s, const Linear_Expression& e); -2441: }; -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: void swap(Linear_Expression& x, Linear_Expression& y); -2441: -2441: -2441: -2441: void swap(Linear_Expression::const_iterator& x, -2441: Linear_Expression::const_iterator& y); -2441: -2441: } -2441: -2441: # 1 "../../src/Linear_Expression_inlines.hh" 1 -2441: # 29 "../../src/Linear_Expression_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: inline Linear_Expression& -2441: Linear_Expression::operator=(const Linear_Expression& e) { -2441: Linear_Expression tmp = e; -2441: swap(*this, tmp); -2441: return *this; -2441: } -2441: -2441: inline -2441: Linear_Expression::~Linear_Expression() { -2441: delete impl; -2441: } -2441: -2441: inline Representation -2441: Linear_Expression::representation() const { -2441: return impl->representation(); -2441: } -2441: -2441: inline dimension_type -2441: Linear_Expression::space_dimension() const { -2441: return impl->space_dimension(); -2441: } -2441: -2441: inline void -2441: Linear_Expression::set_space_dimension(dimension_type n) { -2441: impl->set_space_dimension(n); -2441: } -2441: -2441: inline Coefficient_traits::const_reference -2441: Linear_Expression::coefficient(Variable v) const { -2441: return impl->coefficient(v); -2441: } -2441: -2441: inline void -2441: Linear_Expression -2441: ::set_coefficient(Variable v, Coefficient_traits::const_reference n) { -2441: impl->set_coefficient(v, n); -2441: } -2441: -2441: inline Coefficient_traits::const_reference -2441: Linear_Expression::inhomogeneous_term() const { -2441: return impl->inhomogeneous_term(); -2441: } -2441: -2441: inline void -2441: Linear_Expression -2441: ::set_inhomogeneous_term(Coefficient_traits::const_reference n) { -2441: impl->set_inhomogeneous_term(n); -2441: } -2441: -2441: inline void -2441: Linear_Expression::swap_space_dimensions(Variable v1, Variable v2) { -2441: impl->swap_space_dimensions(v1, v2); -2441: } -2441: -2441: inline void -2441: Linear_Expression::shift_space_dimensions(Variable v, dimension_type n) { -2441: impl->shift_space_dimensions(v, n); -2441: } -2441: -2441: inline bool -2441: Linear_Expression::is_zero() const { -2441: return impl->is_zero(); -2441: } -2441: -2441: inline bool -2441: Linear_Expression::all_homogeneous_terms_are_zero() const { -2441: return impl->all_homogeneous_terms_are_zero(); -2441: } -2441: -2441: inline const Linear_Expression& -2441: Linear_Expression::zero() { -2441: ((void) 0); -2441: return *zero_p; -2441: } -2441: -2441: inline memory_size_type -2441: Linear_Expression::external_memory_in_bytes() const { -2441: return impl->total_memory_in_bytes(); -2441: } -2441: -2441: inline memory_size_type -2441: Linear_Expression::total_memory_in_bytes() const { -2441: return external_memory_in_bytes() + sizeof(*this); -2441: } -2441: -2441: -2441: inline Linear_Expression -2441: operator+(const Linear_Expression& e) { -2441: return e; -2441: } -2441: -2441: -2441: inline Linear_Expression -2441: operator+(const Linear_Expression& e, Coefficient_traits::const_reference n) { -2441: Linear_Expression x = e; -2441: x += n; -2441: return x; -2441: } -2441: -2441: -2441: inline Linear_Expression -2441: operator+(const Linear_Expression& e, const Variable v) { -2441: Linear_Expression x = e; -2441: x += v; -2441: return x; -2441: } -2441: -2441: -2441: inline Linear_Expression -2441: operator-(const Linear_Expression& e, Coefficient_traits::const_reference n) { -2441: Linear_Expression x = e; -2441: x -= n; -2441: return x; -2441: } -2441: -2441: -2441: inline Linear_Expression -2441: operator-(const Variable v, const Variable w) { -2441: const dimension_type v_space_dim = v.space_dimension(); -2441: const dimension_type w_space_dim = w.space_dimension(); -2441: const dimension_type space_dim = std::max(v_space_dim, w_space_dim); -2441: if (space_dim > Linear_Expression::max_space_dimension()) { -2441: throw std::length_error("Linear_Expression " -2441: "PPL::operator+(v, w):\n" -2441: "v or w exceed the maximum allowed " -2441: "space dimension."); -2441: } -2441: if (v_space_dim >= w_space_dim) { -2441: Linear_Expression e(v); -2441: e -= w; -2441: return e; -2441: } -2441: else { -2441: Linear_Expression e(w.space_dimension(), true); -2441: e -= w; -2441: e += v; -2441: return e; -2441: } -2441: } -2441: -2441: -2441: inline Linear_Expression -2441: operator*(const Linear_Expression& e, Coefficient_traits::const_reference n) { -2441: Linear_Expression x = e; -2441: x *= n; -2441: return x; -2441: } -2441: -2441: -2441: inline Linear_Expression& -2441: operator+=(Linear_Expression& e, Coefficient_traits::const_reference n) { -2441: *e.impl += n; -2441: return e; -2441: } -2441: -2441: -2441: inline Linear_Expression& -2441: operator-=(Linear_Expression& e, Coefficient_traits::const_reference n) { -2441: *e.impl -= n; -2441: return e; -2441: } -2441: -2441: inline void -2441: Linear_Expression::m_swap(Linear_Expression& y) { -2441: using std::swap; -2441: swap(impl, y.impl); -2441: } -2441: -2441: inline void -2441: Linear_Expression::normalize() { -2441: impl->normalize(); -2441: } -2441: -2441: inline void -2441: Linear_Expression::ascii_dump(std::ostream& s) const { -2441: impl->ascii_dump(s); -2441: } -2441: -2441: inline bool -2441: Linear_Expression::ascii_load(std::istream& s) { -2441: return impl->ascii_load(s); -2441: } -2441: -2441: inline void -2441: Linear_Expression::remove_space_dimensions(const Variables_Set& vars) { -2441: impl->remove_space_dimensions(vars); -2441: } -2441: -2441: inline void -2441: Linear_Expression::permute_space_dimensions(const std::vector& cycle) { -2441: impl->permute_space_dimensions(cycle); -2441: } -2441: -2441: -2441: inline Linear_Expression -2441: operator+(const Linear_Expression& e1, const Linear_Expression& e2) { -2441: if (e1.space_dimension() >= e2.space_dimension()) { -2441: Linear_Expression e = e1; -2441: e += e2; -2441: return e; -2441: } -2441: else { -2441: Linear_Expression e = e2; -2441: e += e1; -2441: return e; -2441: } -2441: } -2441: -2441: -2441: inline Linear_Expression -2441: operator+(const Variable v, const Linear_Expression& e) { -2441: return e + v; -2441: } -2441: -2441: -2441: inline Linear_Expression -2441: operator+(Coefficient_traits::const_reference n, -2441: const Linear_Expression& e) { -2441: return e + n; -2441: } -2441: -2441: -2441: inline Linear_Expression -2441: operator+(const Variable v, const Variable w) { -2441: const dimension_type v_space_dim = v.space_dimension(); -2441: const dimension_type w_space_dim = w.space_dimension(); -2441: const dimension_type space_dim = std::max(v_space_dim, w_space_dim); -2441: if (space_dim > Linear_Expression::max_space_dimension()) { -2441: throw std::length_error("Linear_Expression " -2441: "PPL::operator+(v, w):\n" -2441: "v or w exceed the maximum allowed " -2441: "space dimension."); -2441: } -2441: if (v_space_dim >= w_space_dim) { -2441: Linear_Expression e(v); -2441: e += w; -2441: return e; -2441: } -2441: else { -2441: Linear_Expression e(w); -2441: e += v; -2441: return e; -2441: } -2441: } -2441: -2441: -2441: inline Linear_Expression -2441: operator-(const Linear_Expression& e) { -2441: Linear_Expression r(e); -2441: neg_assign(r); -2441: return r; -2441: } -2441: -2441: -2441: inline Linear_Expression -2441: operator-(const Linear_Expression& e1, const Linear_Expression& e2) { -2441: if (e1.space_dimension() >= e2.space_dimension()) { -2441: Linear_Expression e = e1; -2441: e -= e2; -2441: return e; -2441: } -2441: else { -2441: Linear_Expression e = e2; -2441: neg_assign(e); -2441: e += e1; -2441: return e; -2441: } -2441: } -2441: -2441: -2441: inline Linear_Expression -2441: operator-(const Variable v, const Linear_Expression& e) { -2441: Linear_Expression result(e, std::max(v.space_dimension(), e.space_dimension())); -2441: result.negate(0, e.space_dimension() + 1); -2441: result += v; -2441: return result; -2441: } -2441: -2441: -2441: inline Linear_Expression -2441: operator-(const Linear_Expression& e, const Variable v) { -2441: Linear_Expression result(e, std::max(v.space_dimension(), e.space_dimension())); -2441: result -= v; -2441: return result; -2441: } -2441: -2441: -2441: inline Linear_Expression -2441: operator-(Coefficient_traits::const_reference n, -2441: const Linear_Expression& e) { -2441: Linear_Expression result(e); -2441: neg_assign(result); -2441: result += n; -2441: return result; -2441: } -2441: -2441: -2441: inline Linear_Expression -2441: operator*(Coefficient_traits::const_reference n, -2441: const Linear_Expression& e) { -2441: return e * n; -2441: } -2441: -2441: -2441: inline Linear_Expression& -2441: operator+=(Linear_Expression& e1, const Linear_Expression& e2) { -2441: *e1.impl += *e2.impl; -2441: return e1; -2441: } -2441: -2441: -2441: inline Linear_Expression& -2441: operator+=(Linear_Expression& e, const Variable v) { -2441: *e.impl += v; -2441: return e; -2441: } -2441: -2441: -2441: inline Linear_Expression& -2441: operator-=(Linear_Expression& e1, const Linear_Expression& e2) { -2441: *e1.impl -= *e2.impl; -2441: return e1; -2441: } -2441: -2441: -2441: inline Linear_Expression& -2441: operator-=(Linear_Expression& e, const Variable v) { -2441: *e.impl -= v; -2441: return e; -2441: } -2441: -2441: -2441: inline Linear_Expression& -2441: operator*=(Linear_Expression& e, Coefficient_traits::const_reference n) { -2441: *e.impl *= n; -2441: return e; -2441: } -2441: -2441: -2441: inline Linear_Expression& -2441: operator/=(Linear_Expression& e, Coefficient_traits::const_reference n) { -2441: *e.impl /= n; -2441: return e; -2441: } -2441: -2441: -2441: inline void -2441: neg_assign(Linear_Expression& e) { -2441: e.impl->negate(); -2441: } -2441: -2441: -2441: inline Linear_Expression& -2441: add_mul_assign(Linear_Expression& e, -2441: Coefficient_traits::const_reference n, -2441: const Variable v) { -2441: e.impl->add_mul_assign(n, v); -2441: return e; -2441: } -2441: -2441: -2441: inline Linear_Expression& -2441: sub_mul_assign(Linear_Expression& e, -2441: Coefficient_traits::const_reference n, -2441: const Variable v) { -2441: e.impl->sub_mul_assign(n, v); -2441: return e; -2441: } -2441: -2441: inline void -2441: add_mul_assign(Linear_Expression& e1, -2441: Coefficient_traits::const_reference factor, -2441: const Linear_Expression& e2) { -2441: e1.impl->add_mul_assign(factor, *e2.impl); -2441: } -2441: -2441: inline void -2441: sub_mul_assign(Linear_Expression& e1, -2441: Coefficient_traits::const_reference factor, -2441: const Linear_Expression& e2) { -2441: e1.impl->sub_mul_assign(factor, *e2.impl); -2441: } -2441: -2441: inline Coefficient_traits::const_reference -2441: Linear_Expression::get(dimension_type i) const { -2441: return impl->get(i); -2441: } -2441: -2441: inline void -2441: Linear_Expression::set(dimension_type i, -2441: Coefficient_traits::const_reference n) { -2441: impl->set(i, n); -2441: } -2441: -2441: inline Coefficient_traits::const_reference -2441: Linear_Expression::get(Variable v) const { -2441: return impl->get(v.space_dimension()); -2441: } -2441: -2441: inline void -2441: Linear_Expression::set(Variable v, -2441: Coefficient_traits::const_reference n) { -2441: impl->set(v.space_dimension(), n); -2441: } -2441: -2441: inline bool -2441: Linear_Expression::all_zeroes(dimension_type start, dimension_type end) const { -2441: return impl->all_zeroes(start, end); -2441: } -2441: -2441: inline dimension_type -2441: Linear_Expression::num_zeroes(dimension_type start, dimension_type end) const { -2441: return impl->num_zeroes(start, end); -2441: } -2441: -2441: inline Coefficient -2441: Linear_Expression::gcd(dimension_type start, dimension_type end) const { -2441: return impl->gcd(start, end); -2441: } -2441: -2441: inline void -2441: Linear_Expression -2441: ::exact_div_assign(Coefficient_traits::const_reference c, -2441: dimension_type start, dimension_type end) { -2441: impl->exact_div_assign(c, start, end); -2441: } -2441: -2441: inline void -2441: Linear_Expression -2441: ::mul_assign(Coefficient_traits::const_reference c, -2441: dimension_type start, dimension_type end) { -2441: impl->mul_assign(c, start, end); -2441: } -2441: -2441: inline void -2441: Linear_Expression::sign_normalize() { -2441: impl->sign_normalize(); -2441: } -2441: -2441: inline void -2441: Linear_Expression::negate(dimension_type first, dimension_type last) { -2441: impl->negate(first, last); -2441: } -2441: -2441: inline bool -2441: Linear_Expression::all_zeroes(const Variables_Set& vars) const { -2441: return impl->all_zeroes(vars); -2441: } -2441: -2441: inline bool -2441: Linear_Expression::all_zeroes_except(const Variables_Set& vars, -2441: dimension_type start, -2441: dimension_type end) const { -2441: return impl->all_zeroes_except(vars, start, end); -2441: } -2441: -2441: inline dimension_type -2441: Linear_Expression::last_nonzero() const { -2441: return impl->last_nonzero(); -2441: } -2441: -2441: inline void -2441: Linear_Expression -2441: ::scalar_product_assign(Coefficient& result, const Linear_Expression& y) const { -2441: scalar_product_assign(result, y, 0, space_dimension() + 1); -2441: } -2441: -2441: inline void -2441: Linear_Expression -2441: ::scalar_product_assign(Coefficient& result, const Linear_Expression& y, -2441: dimension_type start, dimension_type end) const { -2441: impl->scalar_product_assign(result, *(y.impl), start, end); -2441: } -2441: -2441: inline int -2441: Linear_Expression -2441: ::scalar_product_sign(const Linear_Expression& y) const { -2441: return scalar_product_sign(y, 0, space_dimension() + 1); -2441: } -2441: -2441: inline int -2441: Linear_Expression -2441: ::scalar_product_sign(const Linear_Expression& y, -2441: dimension_type start, dimension_type end) const { -2441: return impl->scalar_product_sign(*(y.impl), start, end); -2441: } -2441: -2441: inline dimension_type -2441: Linear_Expression -2441: ::first_nonzero(dimension_type first, dimension_type last) const { -2441: return impl->first_nonzero(first, last); -2441: } -2441: -2441: inline dimension_type -2441: Linear_Expression -2441: ::last_nonzero(dimension_type first, dimension_type last) const { -2441: return impl->last_nonzero(first, last); -2441: } -2441: -2441: inline void -2441: Linear_Expression -2441: ::has_a_free_dimension_helper(std::set& x) const { -2441: return impl->has_a_free_dimension_helper(x); -2441: } -2441: -2441: inline bool -2441: Linear_Expression -2441: ::is_equal_to(const Linear_Expression& x, -2441: dimension_type start, dimension_type end) const { -2441: return impl->is_equal_to(*(x.impl), start, end); -2441: } -2441: -2441: inline bool -2441: Linear_Expression -2441: ::is_equal_to(const Linear_Expression& x, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2, -2441: dimension_type start, dimension_type end) const { -2441: return impl->is_equal_to(*(x.impl), c1, c2, start, end); -2441: } -2441: -2441: inline void -2441: Linear_Expression -2441: ::get_row(Dense_Row& r) const { -2441: return impl->get_row(r); -2441: } -2441: -2441: inline void -2441: Linear_Expression -2441: ::get_row(Sparse_Row& r) const { -2441: return impl->get_row(r); -2441: } -2441: -2441: inline void -2441: Linear_Expression -2441: ::linear_combine(const Linear_Expression& y, dimension_type i) { -2441: impl->linear_combine(*y.impl, i); -2441: } -2441: -2441: inline void -2441: Linear_Expression -2441: ::linear_combine(const Linear_Expression& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2) { -2441: impl->linear_combine(*y.impl, c1, c2); -2441: } -2441: -2441: inline void -2441: Linear_Expression -2441: ::linear_combine_lax(const Linear_Expression& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2) { -2441: impl->linear_combine_lax(*y.impl, c1, c2); -2441: } -2441: -2441: inline int -2441: compare(const Linear_Expression& x, const Linear_Expression& y) { -2441: return x.impl->compare(*y.impl); -2441: } -2441: -2441: inline bool -2441: Linear_Expression::is_equal_to(const Linear_Expression& x) const { -2441: return impl->is_equal_to(*x.impl); -2441: } -2441: -2441: inline void -2441: Linear_Expression::linear_combine(const Linear_Expression& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2, -2441: dimension_type start, -2441: dimension_type end) { -2441: impl->linear_combine(*y.impl, c1, c2, start, end); -2441: } -2441: -2441: inline void -2441: Linear_Expression::linear_combine_lax(const Linear_Expression& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2, -2441: dimension_type start, -2441: dimension_type end) { -2441: impl->linear_combine_lax(*y.impl, c1, c2, start, end); -2441: } -2441: -2441: inline bool -2441: Linear_Expression -2441: ::have_a_common_variable(const Linear_Expression& x, -2441: Variable first, Variable last) const { -2441: return impl->have_a_common_variable(*(x.impl), first, last); -2441: } -2441: -2441: inline -2441: Linear_Expression::const_iterator -2441: ::const_iterator() -2441: : itr( -2441: # 624 "../../src/Linear_Expression_inlines.hh" 3 4 -2441: __null -2441: # 624 "../../src/Linear_Expression_inlines.hh" -2441: ) { -2441: } -2441: -2441: inline -2441: Linear_Expression::const_iterator -2441: ::const_iterator(const const_iterator& i) -2441: : itr(i.itr->clone()) { -2441: } -2441: -2441: inline -2441: Linear_Expression::const_iterator -2441: ::~const_iterator() { -2441: -2441: delete itr; -2441: } -2441: -2441: inline void -2441: Linear_Expression::const_iterator::m_swap(const_iterator& i) { -2441: using std::swap; -2441: swap(itr, i.itr); -2441: } -2441: -2441: inline Linear_Expression::const_iterator& -2441: Linear_Expression::const_iterator -2441: ::operator=(const const_iterator& i) { -2441: const_iterator tmp = i; -2441: using std::swap; -2441: swap(*this, tmp); -2441: return *this; -2441: } -2441: -2441: inline Linear_Expression::const_iterator& -2441: Linear_Expression::const_iterator -2441: ::operator++() { -2441: ((void) 0); -2441: ++(*itr); -2441: return *this; -2441: } -2441: -2441: inline Linear_Expression::const_iterator& -2441: Linear_Expression::const_iterator -2441: ::operator--() { -2441: ((void) 0); -2441: --(*itr); -2441: return *this; -2441: } -2441: -2441: inline Linear_Expression::const_iterator::reference -2441: Linear_Expression::const_iterator -2441: ::operator*() const { -2441: ((void) 0); -2441: return *(*itr); -2441: } -2441: -2441: inline Variable -2441: Linear_Expression::const_iterator -2441: ::variable() const { -2441: ((void) 0); -2441: return itr->variable(); -2441: } -2441: -2441: inline bool -2441: Linear_Expression::const_iterator -2441: ::operator==(const const_iterator& i) const { -2441: ((void) 0); -2441: ((void) 0); -2441: return *itr == *(i.itr); -2441: } -2441: -2441: inline bool -2441: Linear_Expression::const_iterator -2441: ::operator!=(const const_iterator& i) const { -2441: return !(*this == i); -2441: } -2441: -2441: inline -2441: Linear_Expression::const_iterator -2441: ::const_iterator(Linear_Expression_Interface::const_iterator_interface* i) -2441: : itr(i) { -2441: ((void) 0); -2441: } -2441: -2441: inline Linear_Expression::const_iterator -2441: Linear_Expression -2441: ::begin() const { -2441: return const_iterator(impl->begin()); -2441: } -2441: -2441: inline Linear_Expression::const_iterator -2441: Linear_Expression -2441: ::end() const { -2441: return const_iterator(impl->end()); -2441: } -2441: -2441: inline Linear_Expression::const_iterator -2441: Linear_Expression -2441: ::lower_bound(Variable v) const { -2441: return const_iterator(impl->lower_bound(v)); -2441: } -2441: -2441: template -2441: inline -2441: Linear_Expression -2441: ::Linear_Expression(const LE_Adapter& e, -2441: typename Enable_If::value, -2441: void*>::type) -2441: : impl( -2441: # 731 "../../src/Linear_Expression_inlines.hh" 3 4 -2441: __null -2441: # 731 "../../src/Linear_Expression_inlines.hh" -2441: ) { -2441: Linear_Expression tmp(e.representation()); -2441: tmp.set_space_dimension(e.space_dimension()); -2441: tmp.set_inhomogeneous_term(e.inhomogeneous_term()); -2441: for (typename LE_Adapter::const_iterator i = e.begin(), -2441: i_end = e.end(); i != i_end; ++i) { -2441: add_mul_assign(tmp, *i, i.variable()); -2441: } -2441: using std::swap; -2441: swap(impl, tmp.impl); -2441: } -2441: -2441: template -2441: inline -2441: Linear_Expression -2441: ::Linear_Expression(const LE_Adapter& e, -2441: Representation r, -2441: typename Enable_If::value, -2441: void*>::type) -2441: : impl( -2441: # 751 "../../src/Linear_Expression_inlines.hh" 3 4 -2441: __null -2441: # 751 "../../src/Linear_Expression_inlines.hh" -2441: ) { -2441: Linear_Expression tmp(r); -2441: tmp.set_space_dimension(e.space_dimension()); -2441: tmp.set_inhomogeneous_term(e.inhomogeneous_term()); -2441: for (typename LE_Adapter::const_iterator i = e.begin(), -2441: i_end = e.end(); i != i_end; ++i) { -2441: add_mul_assign(tmp, *i, i.variable()); -2441: } -2441: using std::swap; -2441: swap(impl, tmp.impl); -2441: } -2441: -2441: template -2441: inline -2441: Linear_Expression -2441: ::Linear_Expression(const LE_Adapter& e, -2441: dimension_type space_dim, -2441: typename Enable_If::value, -2441: void*>::type) -2441: : impl( -2441: # 771 "../../src/Linear_Expression_inlines.hh" 3 4 -2441: __null -2441: # 771 "../../src/Linear_Expression_inlines.hh" -2441: ) { -2441: Linear_Expression tmp(e.representation()); -2441: tmp.set_space_dimension(space_dim); -2441: tmp.set_inhomogeneous_term(e.inhomogeneous_term()); -2441: typedef typename LE_Adapter::const_iterator itr_t; -2441: itr_t i_end; -2441: if (space_dim <= e.space_dimension()) { -2441: i_end = e.lower_bound(Variable(space_dim)); -2441: } -2441: else { -2441: i_end = e.end(); -2441: } -2441: for (itr_t i = e.begin(); i != i_end; ++i) { -2441: add_mul_assign(tmp, *i, i.variable()); -2441: } -2441: using std::swap; -2441: swap(impl, tmp.impl); -2441: } -2441: -2441: template -2441: inline -2441: Linear_Expression -2441: ::Linear_Expression(const LE_Adapter& e, -2441: dimension_type space_dim, -2441: Representation r, -2441: typename Enable_If::value, -2441: void*>::type) -2441: : impl( -2441: # 799 "../../src/Linear_Expression_inlines.hh" 3 4 -2441: __null -2441: # 799 "../../src/Linear_Expression_inlines.hh" -2441: ) { -2441: Linear_Expression tmp(r); -2441: tmp.set_space_dimension(space_dim); -2441: tmp.set_inhomogeneous_term(e.inhomogeneous_term()); -2441: typedef typename LE_Adapter::const_iterator itr_t; -2441: itr_t i_end; -2441: if (space_dim <= e.space_dimension()) { -2441: i_end = e.lower_bound(Variable(space_dim)); -2441: } -2441: else { -2441: i_end = e.end(); -2441: } -2441: for (itr_t i = e.begin(); i != i_end; ++i) { -2441: add_mul_assign(tmp, *i, i.variable()); -2441: } -2441: using std::swap; -2441: swap(impl, tmp.impl); -2441: } -2441: -2441: namespace IO_Operators { -2441: -2441: -2441: inline std::ostream& -2441: operator<<(std::ostream& s, const Linear_Expression& e) { -2441: e.impl->print(s); -2441: return s; -2441: } -2441: -2441: } -2441: -2441: -2441: inline void -2441: swap(Linear_Expression& x, Linear_Expression& y) { -2441: x.m_swap(y); -2441: } -2441: -2441: -2441: inline void -2441: swap(Linear_Expression::const_iterator& x, -2441: Linear_Expression::const_iterator& y) { -2441: x.m_swap(y); -2441: } -2441: -2441: } -2441: # 946 "../../src/Linear_Expression_defs.hh" 2 -2441: # 37 "../../src/Constraint_defs.hh" 2 -2441: -2441: # 1 "../../src/Topology_types.hh" 1 -2441: # 16 "../../src/Topology_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: -2441: -2441: enum Topology { -2441: NECESSARILY_CLOSED = 0, -2441: NOT_NECESSARILY_CLOSED = 1 -2441: }; -2441: -2441: } -2441: # 39 "../../src/Constraint_defs.hh" 2 -2441: # 1 "../../src/Expression_Hide_Last_defs.hh" 1 -2441: # 36 "../../src/Expression_Hide_Last_defs.hh" -2441: template -2441: class Parma_Polyhedra_Library::Expression_Hide_Last -2441: : public Expression_Adapter { -2441: typedef Expression_Adapter base_type; -2441: public: -2441: -2441: typedef Expression_Hide_Last const_reference; -2441: -2441: typedef typename base_type::inner_type inner_type; -2441: -2441: typedef typename base_type::raw_type raw_type; -2441: -2441: -2441: typedef typename base_type::const_iterator const_iterator; -2441: -2441: -2441: explicit Expression_Hide_Last(const raw_type& expr, bool hide_last); -2441: -2441: -2441: const_iterator end() const; -2441: -2441: -2441: -2441: const_iterator lower_bound(Variable v) const; -2441: -2441: -2441: dimension_type space_dimension() const; -2441: -2441: -2441: Coefficient_traits::const_reference coefficient(Variable v) const; -2441: -2441: -2441: bool is_zero() const; -2441: -2441: -2441: -2441: -2441: -2441: bool all_homogeneous_terms_are_zero() const; -2441: -2441: -2441: -2441: -2441: -2441: template -2441: bool is_equal_to(const Expression& y) const; -2441: -2441: -2441: -2441: -2441: -2441: bool all_zeroes(const Variables_Set& vars) const; -2441: -2441: -2441: Coefficient_traits::const_reference get(dimension_type i) const; -2441: -2441: -2441: Coefficient_traits::const_reference get(Variable v) const; -2441: -2441: -2441: -2441: -2441: -2441: bool all_zeroes(dimension_type start, dimension_type end) const; -2441: -2441: -2441: dimension_type num_zeroes(dimension_type start, dimension_type end) const; -2441: -2441: -2441: -2441: -2441: -2441: Coefficient gcd(dimension_type start, dimension_type end) const; -2441: -2441: -2441: -2441: dimension_type last_nonzero() const; -2441: -2441: -2441: -2441: dimension_type last_nonzero(dimension_type first, dimension_type last) const; -2441: -2441: -2441: -2441: dimension_type first_nonzero(dimension_type first, dimension_type last) const; -2441: -2441: -2441: -2441: -2441: -2441: bool all_zeroes_except(const Variables_Set& vars, -2441: dimension_type start, dimension_type end) const; -2441: -2441: -2441: void has_a_free_dimension_helper(std::set& x) const; -2441: -2441: -2441: -2441: template -2441: bool is_equal_to(const Expression& y, -2441: dimension_type start, dimension_type end) const; -2441: -2441: -2441: -2441: template -2441: bool is_equal_to(const Expression& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2, -2441: dimension_type start, dimension_type end) const; -2441: -2441: -2441: void get_row(Dense_Row& r) const; -2441: -2441: -2441: void get_row(Sparse_Row& r) const; -2441: -2441: -2441: -2441: template -2441: bool have_a_common_variable(const Expression& y, -2441: Variable first, Variable last) const; -2441: -2441: private: -2441: -2441: const bool hide_last_; -2441: }; -2441: -2441: # 1 "../../src/Expression_Hide_Last_inlines.hh" 1 -2441: # 29 "../../src/Expression_Hide_Last_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: inline -2441: Expression_Hide_Last::Expression_Hide_Last(const raw_type& expr, -2441: const bool hide_last) -2441: : base_type(expr), hide_last_(hide_last) { -2441: } -2441: -2441: template -2441: inline dimension_type -2441: Expression_Hide_Last::space_dimension() const { -2441: dimension_type dim = this->inner().space_dimension(); -2441: if (hide_last_) { -2441: ((void) 0); -2441: --dim; -2441: } -2441: return dim; -2441: } -2441: -2441: template -2441: inline typename Expression_Hide_Last::const_iterator -2441: Expression_Hide_Last::end() const { -2441: if (hide_last_) { -2441: return this->inner().lower_bound(Variable(space_dimension())); -2441: } -2441: else { -2441: return this->inner().end(); -2441: } -2441: } -2441: -2441: template -2441: inline typename Expression_Hide_Last::const_iterator -2441: Expression_Hide_Last::lower_bound(Variable v) const { -2441: ((void) 0); -2441: return this->inner().lower_bound(v); -2441: } -2441: -2441: template -2441: inline Coefficient_traits::const_reference -2441: Expression_Hide_Last::coefficient(Variable v) const { -2441: ((void) 0); -2441: return this->inner().coefficient(v); -2441: } -2441: -2441: template -2441: inline bool -2441: Expression_Hide_Last::is_zero() const { -2441: return this->inner().all_zeroes(0, space_dimension() + 1); -2441: } -2441: -2441: template -2441: inline bool -2441: Expression_Hide_Last::all_homogeneous_terms_are_zero() const { -2441: return this->inner().all_zeroes(1, space_dimension() + 1); -2441: } -2441: -2441: template -2441: template -2441: inline bool -2441: Expression_Hide_Last -2441: ::is_equal_to(const Expression& y) const { -2441: const dimension_type x_dim = space_dimension(); -2441: const dimension_type y_dim = y.space_dimension(); -2441: if (x_dim != y_dim) { -2441: return false; -2441: } -2441: return is_equal_to(y, 0, x_dim + 1); -2441: } -2441: -2441: template -2441: inline bool -2441: Expression_Hide_Last::all_zeroes(const Variables_Set& vars) const { -2441: ((void) 0); -2441: return this->inner().all_zeroes(vars); -2441: } -2441: -2441: template -2441: inline Coefficient_traits::const_reference -2441: Expression_Hide_Last::get(dimension_type i) const { -2441: ((void) 0); -2441: return this->inner().get(i); -2441: } -2441: -2441: template -2441: inline Coefficient_traits::const_reference -2441: Expression_Hide_Last::get(Variable v) const { -2441: ((void) 0); -2441: return this->inner().get(v); -2441: } -2441: -2441: template -2441: inline bool -2441: Expression_Hide_Last::all_zeroes(dimension_type start, -2441: dimension_type end) const { -2441: ((void) 0); -2441: return this->inner().all_zeroes(start, end); -2441: } -2441: -2441: template -2441: inline dimension_type -2441: Expression_Hide_Last::num_zeroes(dimension_type start, -2441: dimension_type end) const { -2441: ((void) 0); -2441: return this->inner().num_zeroes(start, end); -2441: } -2441: -2441: template -2441: inline Coefficient -2441: Expression_Hide_Last::gcd(dimension_type start, -2441: dimension_type end) const { -2441: ((void) 0); -2441: return this->inner().gcd(start, end); -2441: } -2441: -2441: template -2441: inline dimension_type -2441: Expression_Hide_Last::last_nonzero() const { -2441: return this->inner().last_nonzero(0, space_dimension() + 1); -2441: } -2441: -2441: template -2441: inline dimension_type -2441: Expression_Hide_Last::last_nonzero(dimension_type first, -2441: dimension_type last) const { -2441: ((void) 0); -2441: return this->inner().last_nonzero(first, last); -2441: } -2441: -2441: template -2441: inline dimension_type -2441: Expression_Hide_Last::first_nonzero(dimension_type first, -2441: dimension_type last) const { -2441: ((void) 0); -2441: return this->inner().first_nonzero(first, last); -2441: } -2441: -2441: template -2441: inline bool -2441: Expression_Hide_Last -2441: ::all_zeroes_except(const Variables_Set& vars, -2441: dimension_type start, dimension_type end) const { -2441: ((void) 0); -2441: return this->inner().all_zeroes_except(vars, start, end); -2441: } -2441: -2441: template -2441: inline void -2441: Expression_Hide_Last -2441: ::has_a_free_dimension_helper(std::set& x) const { -2441: if (x.empty()) { -2441: return; -2441: } -2441: ((void) 0); -2441: this->inner().has_a_free_dimension_helper(x); -2441: } -2441: -2441: template -2441: template -2441: inline bool -2441: Expression_Hide_Last -2441: ::is_equal_to(const Expression& y, -2441: dimension_type start, dimension_type end) const { -2441: ((void) 0); -2441: ((void) 0); -2441: return this->inner().is_equal_to(y, start, end); -2441: } -2441: -2441: template -2441: template -2441: inline bool -2441: Expression_Hide_Last -2441: ::is_equal_to(const Expression& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2, -2441: dimension_type start, dimension_type end) const { -2441: ((void) 0); -2441: ((void) 0); -2441: return this->inner().is_equal_to(y, c1, c2, start, end); -2441: } -2441: -2441: template -2441: inline void -2441: Expression_Hide_Last::get_row(Dense_Row& r) const { -2441: this->inner().get_row(r); -2441: if (hide_last_) { -2441: ((void) 0); -2441: r.resize(r.size() - 1); -2441: } -2441: } -2441: -2441: template -2441: inline void -2441: Expression_Hide_Last::get_row(Sparse_Row& r) const { -2441: this->inner().get_row(r); -2441: if (hide_last_) { -2441: ((void) 0); -2441: r.resize(r.size() - 1); -2441: } -2441: } -2441: -2441: template -2441: template -2441: inline bool -2441: Expression_Hide_Last -2441: ::have_a_common_variable(const Expression& y, -2441: Variable first, Variable last) const { -2441: ((void) 0); -2441: ((void) 0); -2441: return this->inner().have_a_common_variable(y, first, last); -2441: } -2441: -2441: } -2441: # 164 "../../src/Expression_Hide_Last_defs.hh" 2 -2441: # 40 "../../src/Constraint_defs.hh" 2 -2441: -2441: -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: Constraint -2441: operator<(const Linear_Expression& e1, const Linear_Expression& e2); -2441: -2441: -2441: -2441: Constraint -2441: operator<(Variable v1, Variable v2); -2441: -2441: -2441: -2441: Constraint -2441: operator<(const Linear_Expression& e, Coefficient_traits::const_reference n); -2441: -2441: -2441: -2441: Constraint -2441: operator<(Coefficient_traits::const_reference n, const Linear_Expression& e); -2441: -2441: -2441: -2441: Constraint -2441: operator>(const Linear_Expression& e1, const Linear_Expression& e2); -2441: -2441: -2441: -2441: Constraint -2441: operator>(Variable v1, Variable v2); -2441: -2441: -2441: -2441: Constraint -2441: operator>(const Linear_Expression& e, Coefficient_traits::const_reference n); -2441: -2441: -2441: -2441: Constraint -2441: operator>(Coefficient_traits::const_reference n, const Linear_Expression& e); -2441: -2441: -2441: -2441: Constraint -2441: operator==(const Linear_Expression& e1, const Linear_Expression& e2); -2441: -2441: -2441: -2441: Constraint -2441: operator==(Variable v1, Variable v2); -2441: -2441: -2441: -2441: Constraint -2441: operator==(const Linear_Expression& e, Coefficient_traits::const_reference n); -2441: -2441: -2441: -2441: Constraint -2441: operator==(Coefficient_traits::const_reference n, const Linear_Expression& e); -2441: -2441: -2441: -2441: Constraint -2441: operator<=(const Linear_Expression& e1, const Linear_Expression& e2); -2441: -2441: -2441: -2441: Constraint -2441: operator<=(Variable v1, Variable v2); -2441: -2441: -2441: -2441: Constraint -2441: operator<=(const Linear_Expression& e, Coefficient_traits::const_reference n); -2441: -2441: -2441: -2441: Constraint -2441: operator<=(Coefficient_traits::const_reference n, const Linear_Expression& e); -2441: -2441: -2441: -2441: Constraint -2441: operator>=(const Linear_Expression& e1, const Linear_Expression& e2); -2441: -2441: -2441: -2441: Constraint -2441: operator>=(Variable v1, Variable v2); -2441: -2441: -2441: -2441: Constraint -2441: operator>=(const Linear_Expression& e, Coefficient_traits::const_reference n); -2441: -2441: -2441: -2441: Constraint -2441: operator>=(Coefficient_traits::const_reference n, const Linear_Expression& e); -2441: # 182 "../../src/Constraint_defs.hh" -2441: int compare(const Constraint& x, const Constraint& y); -2441: -2441: } -2441: # 284 "../../src/Constraint_defs.hh" -2441: class Parma_Polyhedra_Library::Constraint { -2441: public: -2441: -2441: -2441: enum Type { -2441: -2441: EQUALITY, -2441: -2441: NONSTRICT_INEQUALITY, -2441: -2441: STRICT_INEQUALITY -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: static const Representation default_representation = SPARSE; -2441: -2441: -2441: explicit Constraint(Representation r = default_representation); -2441: -2441: -2441: -2441: -2441: -2441: -2441: Constraint(const Constraint& c); -2441: -2441: -2441: -2441: -2441: -2441: -2441: Constraint(const Constraint& c, dimension_type space_dim); -2441: -2441: -2441: Constraint(const Constraint& c, Representation r); -2441: -2441: -2441: Constraint(const Constraint& c, dimension_type space_dim, -2441: Representation r); -2441: -2441: -2441: -2441: -2441: -2441: -2441: explicit Constraint(const Congruence& cg, -2441: Representation r = default_representation); -2441: -2441: -2441: ~Constraint(); -2441: -2441: -2441: Representation representation() const; -2441: -2441: -2441: void set_representation(Representation r); -2441: -2441: -2441: Constraint& operator=(const Constraint& c); -2441: -2441: -2441: static dimension_type max_space_dimension(); -2441: -2441: -2441: dimension_type space_dimension() const; -2441: -2441: -2441: -2441: void set_space_dimension(dimension_type space_dim); -2441: -2441: -2441: void swap_space_dimensions(Variable v1, Variable v2); -2441: # 371 "../../src/Constraint_defs.hh" -2441: bool remove_space_dimensions(const Variables_Set& vars); -2441: # 385 "../../src/Constraint_defs.hh" -2441: void permute_space_dimensions(const std::vector& cycle); -2441: -2441: -2441: -2441: void shift_space_dimensions(Variable v, dimension_type n); -2441: -2441: -2441: Type type() const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_equality() const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_inequality() const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_nonstrict_inequality() const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_strict_inequality() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: Coefficient_traits::const_reference coefficient(Variable v) const; -2441: -2441: -2441: Coefficient_traits::const_reference inhomogeneous_term() const; -2441: -2441: -2441: static void initialize(); -2441: -2441: -2441: static void finalize(); -2441: -2441: -2441: static const Constraint& zero_dim_false(); -2441: -2441: -2441: -2441: -2441: -2441: static const Constraint& zero_dim_positivity(); -2441: -2441: -2441: -2441: -2441: -2441: memory_size_type total_memory_in_bytes() const; -2441: -2441: -2441: memory_size_type external_memory_in_bytes() const; -2441: # 463 "../../src/Constraint_defs.hh" -2441: bool is_tautological() const; -2441: # 477 "../../src/Constraint_defs.hh" -2441: bool is_inconsistent() const; -2441: # 487 "../../src/Constraint_defs.hh" -2441: bool is_equivalent_to(const Constraint& y) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool is_equal_to(const Constraint& y) const; -2441: -2441: -2441: bool OK() const; -2441: -2441: void ascii_dump() const; void ascii_dump(std::ostream& s) const; void print() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool ascii_load(std::istream& s); -2441: -2441: -2441: void m_swap(Constraint& y); -2441: -2441: -2441: static const Constraint& epsilon_geq_zero(); -2441: -2441: -2441: -2441: -2441: -2441: static const Constraint& epsilon_leq_one(); -2441: -2441: -2441: typedef Expression_Hide_Last expr_type; -2441: -2441: expr_type expression() const; -2441: -2441: private: -2441: -2441: -2441: enum Kind { -2441: LINE_OR_EQUALITY = 0, -2441: RAY_OR_POINT_OR_INEQUALITY = 1 -2441: }; -2441: -2441: Linear_Expression expr; -2441: -2441: Kind kind_; -2441: -2441: Topology topology_; -2441: -2441: -2441: -2441: -2441: -2441: static const Constraint* zero_dim_false_p; -2441: -2441: -2441: -2441: -2441: -2441: -2441: static const Constraint* zero_dim_positivity_p; -2441: -2441: -2441: -2441: -2441: -2441: static const Constraint* epsilon_geq_zero_p; -2441: -2441: -2441: -2441: -2441: -2441: -2441: static const Constraint* epsilon_leq_one_p; -2441: -2441: -2441: Constraint(dimension_type space_dim, Kind kind, Topology topology, -2441: Representation r = default_representation); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: Constraint(Linear_Expression& e, Kind kind, Topology topology); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: Constraint(Linear_Expression& e, Type type, Topology topology); -2441: -2441: -2441: -2441: -2441: -2441: bool is_line_or_equality() const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_ray_or_point_or_inequality() const; -2441: -2441: -2441: void set_is_line_or_equality(); -2441: -2441: -2441: void set_is_ray_or_point_or_inequality(); -2441: -2441: -2441: -2441: -2441: Topology topology() const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_not_necessarily_closed() const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_necessarily_closed() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void set_topology(Topology x); -2441: -2441: -2441: void set_necessarily_closed(); -2441: -2441: -2441: void set_not_necessarily_closed(); -2441: # 642 "../../src/Constraint_defs.hh" -2441: void set_space_dimension_no_ok(dimension_type space_dim); -2441: -2441: -2441: -2441: -2441: -2441: void -2441: throw_invalid_argument(const char* method, const char* message) const; -2441: -2441: -2441: -2441: -2441: -2441: void -2441: throw_dimension_incompatible(const char* method, -2441: const char* name_var, -2441: Variable v) const; -2441: -2441: -2441: Coefficient_traits::const_reference epsilon_coefficient() const; -2441: -2441: -2441: void set_epsilon_coefficient(Coefficient_traits::const_reference n); -2441: -2441: -2441: -2441: -2441: -2441: -2441: void mark_as_necessarily_closed(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: void mark_as_not_necessarily_closed(); -2441: -2441: -2441: void set_is_equality(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void set_is_inequality(); -2441: # 703 "../../src/Constraint_defs.hh" -2441: void linear_combine(const Constraint& y, dimension_type i); -2441: -2441: -2441: -2441: -2441: -2441: void sign_normalize(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void strong_normalize(); -2441: -2441: -2441: -2441: -2441: -2441: bool check_strong_normalized() const; -2441: -2441: -2441: -2441: -2441: -2441: static Constraint construct_epsilon_geq_zero(); -2441: -2441: friend int -2441: compare(const Constraint& x, const Constraint& y); -2441: -2441: friend class Linear_System; -2441: friend class Constraint_System; -2441: friend class Polyhedron; -2441: friend class Scalar_Products; -2441: friend class Topology_Adjusted_Scalar_Product_Sign; -2441: friend class Termination_Helpers; -2441: friend class Grid; -2441: template -2441: friend class Octagonal_Shape; -2441: -2441: friend Constraint -2441: operator<(const Linear_Expression& e1, const Linear_Expression& e2); -2441: -2441: friend Constraint -2441: operator<(Variable v1, Variable v2); -2441: -2441: friend Constraint -2441: operator<(const Linear_Expression& e, Coefficient_traits::const_reference n); -2441: -2441: friend Constraint -2441: operator<(Coefficient_traits::const_reference n, const Linear_Expression& e); -2441: -2441: friend Constraint -2441: operator>(const Linear_Expression& e1, const Linear_Expression& e2); -2441: -2441: friend Constraint -2441: operator>(Variable v1, Variable v2); -2441: -2441: friend Constraint -2441: operator>(const Linear_Expression& e, Coefficient_traits::const_reference n); -2441: -2441: friend Constraint -2441: operator>(Coefficient_traits::const_reference n, const Linear_Expression& e); -2441: -2441: friend Constraint -2441: operator==(const Linear_Expression& e1, const Linear_Expression& e2); -2441: -2441: friend Constraint -2441: operator==(Variable v1, Variable v2); -2441: -2441: friend Constraint -2441: operator==(const Linear_Expression& e, Coefficient_traits::const_reference n); -2441: -2441: friend Constraint -2441: operator==(Coefficient_traits::const_reference n, const Linear_Expression& e); -2441: -2441: friend Constraint -2441: operator<=(const Linear_Expression& e1, const Linear_Expression& e2); -2441: -2441: friend Constraint -2441: operator<=(Variable v1, Variable v2); -2441: -2441: friend Constraint -2441: operator<=(const Linear_Expression& e, Coefficient_traits::const_reference n); -2441: -2441: friend Constraint -2441: operator<=(Coefficient_traits::const_reference n, const Linear_Expression& e); -2441: -2441: friend Constraint -2441: operator>=(const Linear_Expression& e1, const Linear_Expression& e2); -2441: -2441: friend Constraint -2441: operator>=(Variable v1, Variable v2); -2441: -2441: friend Constraint -2441: operator>=(const Linear_Expression& e, Coefficient_traits::const_reference n); -2441: -2441: friend Constraint -2441: operator>=(Coefficient_traits::const_reference n, const Linear_Expression& e); -2441: }; -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: namespace IO_Operators { -2441: -2441: -2441: -2441: std::ostream& operator<<(std::ostream& s, const Constraint& c); -2441: -2441: -2441: -2441: std::ostream& operator<<(std::ostream& s, const Constraint::Type& t); -2441: -2441: } -2441: -2441: -2441: -2441: bool -2441: operator==(const Constraint& x, const Constraint& y); -2441: -2441: -2441: -2441: bool -2441: operator!=(const Constraint& x, const Constraint& y); -2441: -2441: -2441: void swap(Constraint& x, Constraint& y); -2441: -2441: } -2441: -2441: # 1 "../../src/Constraint_inlines.hh" 1 -2441: # 29 "../../src/Constraint_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: inline bool -2441: Constraint::is_necessarily_closed() const { -2441: return (topology_ == NECESSARILY_CLOSED); -2441: } -2441: -2441: inline bool -2441: Constraint::is_not_necessarily_closed() const { -2441: return !is_necessarily_closed(); -2441: } -2441: -2441: inline Constraint::expr_type -2441: Constraint::expression() const { -2441: return expr_type(expr, is_not_necessarily_closed()); -2441: } -2441: -2441: inline dimension_type -2441: Constraint::space_dimension() const { -2441: return expression().space_dimension(); -2441: } -2441: -2441: inline void -2441: Constraint::shift_space_dimensions(Variable v, dimension_type n) { -2441: expr.shift_space_dimensions(v, n); -2441: } -2441: -2441: inline bool -2441: Constraint::is_line_or_equality() const { -2441: return (kind_ == LINE_OR_EQUALITY); -2441: } -2441: -2441: inline bool -2441: Constraint::is_ray_or_point_or_inequality() const { -2441: return (kind_ == RAY_OR_POINT_OR_INEQUALITY); -2441: } -2441: -2441: inline Topology -2441: Constraint::topology() const { -2441: return topology_; -2441: } -2441: -2441: inline void -2441: Constraint::set_is_line_or_equality() { -2441: kind_ = LINE_OR_EQUALITY; -2441: } -2441: -2441: inline void -2441: Constraint::set_is_ray_or_point_or_inequality() { -2441: kind_ = RAY_OR_POINT_OR_INEQUALITY; -2441: } -2441: -2441: inline void -2441: Constraint::set_topology(Topology x) { -2441: if (topology() == x) { -2441: return; -2441: } -2441: if (topology() == NECESSARILY_CLOSED) { -2441: -2441: expr.set_space_dimension(expr.space_dimension() + 1); -2441: } -2441: else { -2441: ((void) 0); -2441: expr.set_space_dimension(expr.space_dimension() - 1); -2441: } -2441: topology_ = x; -2441: } -2441: -2441: inline void -2441: Constraint::mark_as_necessarily_closed() { -2441: ((void) 0); -2441: topology_ = NECESSARILY_CLOSED; -2441: } -2441: -2441: inline void -2441: Constraint::mark_as_not_necessarily_closed() { -2441: ((void) 0); -2441: topology_ = NOT_NECESSARILY_CLOSED; -2441: } -2441: -2441: inline void -2441: Constraint::set_necessarily_closed() { -2441: set_topology(NECESSARILY_CLOSED); -2441: } -2441: -2441: inline void -2441: Constraint::set_not_necessarily_closed() { -2441: set_topology(NOT_NECESSARILY_CLOSED); -2441: } -2441: -2441: inline -2441: Constraint::Constraint(Representation r) -2441: : expr(r), -2441: kind_(RAY_OR_POINT_OR_INEQUALITY), -2441: topology_(NECESSARILY_CLOSED) { -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: Constraint::Constraint(dimension_type space_dim, Kind kind, Topology topology, -2441: Representation r) -2441: : expr(r), -2441: kind_(kind), -2441: topology_(topology) { -2441: expr.set_space_dimension(space_dim + 1); -2441: ((void) 0); -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: Constraint::Constraint(Linear_Expression& e, Kind kind, Topology topology) -2441: : kind_(kind), -2441: topology_(topology) { -2441: ((void) 0); -2441: swap(expr, e); -2441: if (topology == NOT_NECESSARILY_CLOSED) { -2441: -2441: expr.set_space_dimension(expr.space_dimension() + 1); -2441: } -2441: strong_normalize(); -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: Constraint::Constraint(Linear_Expression& e, Type type, Topology topology) -2441: : topology_(topology) { -2441: ((void) 0); -2441: swap(expr, e); -2441: if (topology == NOT_NECESSARILY_CLOSED) { -2441: expr.set_space_dimension(expr.space_dimension() + 1); -2441: } -2441: if (type == EQUALITY) { -2441: kind_ = LINE_OR_EQUALITY; -2441: } -2441: else { -2441: kind_ = RAY_OR_POINT_OR_INEQUALITY; -2441: } -2441: strong_normalize(); -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: Constraint::Constraint(const Constraint& c) -2441: : expr(c.expr), -2441: kind_(c.kind_), -2441: topology_(c.topology_) { -2441: -2441: } -2441: -2441: inline -2441: Constraint::Constraint(const Constraint& c, Representation r) -2441: : expr(c.expr, r), -2441: kind_(c.kind_), -2441: topology_(c.topology_) { -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: Constraint::Constraint(const Constraint& c, const dimension_type space_dim) -2441: : expr(c.expr, c.is_necessarily_closed() ? space_dim : (space_dim + 1)), -2441: kind_(c.kind_), topology_(c.topology_) { -2441: ((void) 0); -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: Constraint::Constraint(const Constraint& c, const dimension_type space_dim, -2441: Representation r) -2441: : expr(c.expr, c.is_necessarily_closed() ? space_dim : (space_dim + 1), r), -2441: kind_(c.kind_), topology_(c.topology_) { -2441: ((void) 0); -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: Constraint::~Constraint() { -2441: } -2441: -2441: inline Constraint& -2441: Constraint::operator=(const Constraint& c) { -2441: Constraint tmp = c; -2441: swap(*this, tmp); -2441: -2441: return *this; -2441: } -2441: -2441: inline Representation -2441: Constraint::representation() const { -2441: return expr.representation(); -2441: } -2441: -2441: inline void -2441: Constraint::set_representation(Representation r) { -2441: expr.set_representation(r); -2441: } -2441: -2441: inline dimension_type -2441: Constraint::max_space_dimension() { -2441: return Linear_Expression::max_space_dimension(); -2441: } -2441: -2441: inline void -2441: Constraint::set_space_dimension_no_ok(dimension_type space_dim) { -2441: const dimension_type old_expr_space_dim = expr.space_dimension(); -2441: if (topology() == NECESSARILY_CLOSED) { -2441: expr.set_space_dimension(space_dim); -2441: } -2441: else { -2441: const dimension_type old_space_dim = space_dimension(); -2441: if (space_dim > old_space_dim) { -2441: expr.set_space_dimension(space_dim + 1); -2441: expr.swap_space_dimensions(Variable(space_dim), Variable(old_space_dim)); -2441: } -2441: else { -2441: expr.swap_space_dimensions(Variable(space_dim), Variable(old_space_dim)); -2441: expr.set_space_dimension(space_dim + 1); -2441: } -2441: } -2441: ((void) 0); -2441: if (expr.space_dimension() < old_expr_space_dim) { -2441: strong_normalize(); -2441: } -2441: } -2441: -2441: inline void -2441: Constraint::set_space_dimension(dimension_type space_dim) { -2441: set_space_dimension_no_ok(space_dim); -2441: ((void) 0); -2441: } -2441: -2441: inline bool -2441: Constraint::remove_space_dimensions(const Variables_Set& vars) { -2441: expr.remove_space_dimensions(vars); -2441: return true; -2441: } -2441: -2441: inline bool -2441: Constraint::is_equality() const { -2441: return is_line_or_equality(); -2441: } -2441: -2441: inline bool -2441: Constraint::is_inequality() const { -2441: return is_ray_or_point_or_inequality(); -2441: } -2441: -2441: inline Constraint::Type -2441: Constraint::type() const { -2441: if (is_equality()) { -2441: return EQUALITY; -2441: } -2441: if (is_necessarily_closed()) { -2441: return NONSTRICT_INEQUALITY; -2441: } -2441: if (epsilon_coefficient() < 0) { -2441: return STRICT_INEQUALITY; -2441: } -2441: else { -2441: return NONSTRICT_INEQUALITY; -2441: } -2441: } -2441: -2441: inline bool -2441: Constraint::is_nonstrict_inequality() const { -2441: return type() == NONSTRICT_INEQUALITY; -2441: } -2441: -2441: inline bool -2441: Constraint::is_strict_inequality() const { -2441: return type() == STRICT_INEQUALITY; -2441: } -2441: -2441: inline void -2441: Constraint::set_is_equality() { -2441: set_is_line_or_equality(); -2441: } -2441: -2441: inline void -2441: Constraint::set_is_inequality() { -2441: set_is_ray_or_point_or_inequality(); -2441: } -2441: -2441: inline Coefficient_traits::const_reference -2441: Constraint::coefficient(const Variable v) const { -2441: if (v.space_dimension() > space_dimension()) { -2441: throw_dimension_incompatible("coefficient(v)", "v", v); -2441: } -2441: return expr.coefficient(v); -2441: } -2441: -2441: inline Coefficient_traits::const_reference -2441: Constraint::inhomogeneous_term() const { -2441: return expr.inhomogeneous_term(); -2441: } -2441: -2441: inline memory_size_type -2441: Constraint::external_memory_in_bytes() const { -2441: return expr.external_memory_in_bytes(); -2441: } -2441: -2441: inline memory_size_type -2441: Constraint::total_memory_in_bytes() const { -2441: return sizeof(*this) + external_memory_in_bytes(); -2441: } -2441: -2441: inline void -2441: Constraint::strong_normalize() { -2441: expr.normalize(); -2441: sign_normalize(); -2441: } -2441: -2441: -2441: inline bool -2441: operator==(const Constraint& x, const Constraint& y) { -2441: return x.is_equivalent_to(y); -2441: } -2441: -2441: -2441: inline bool -2441: operator!=(const Constraint& x, const Constraint& y) { -2441: return !x.is_equivalent_to(y); -2441: } -2441: -2441: -2441: inline Constraint -2441: operator==(const Linear_Expression& e1, const Linear_Expression& e2) { -2441: Linear_Expression diff(e1, -2441: std::max(e1.space_dimension(), e2.space_dimension()), -2441: Constraint::default_representation); -2441: diff -= e2; -2441: return Constraint(diff, Constraint::EQUALITY, NECESSARILY_CLOSED); -2441: } -2441: -2441: -2441: inline Constraint -2441: operator==(Variable v1, Variable v2) { -2441: if (v1.space_dimension() > v2.space_dimension()) { -2441: swap(v1, v2); -2441: } -2441: ((void) 0); -2441: -2441: Linear_Expression diff(v1, Constraint::default_representation); -2441: diff -= v2; -2441: return Constraint(diff, Constraint::EQUALITY, NECESSARILY_CLOSED); -2441: } -2441: -2441: -2441: inline Constraint -2441: operator>=(const Linear_Expression& e1, const Linear_Expression& e2) { -2441: Linear_Expression diff(e1, -2441: std::max(e1.space_dimension(), e2.space_dimension()), -2441: Constraint::default_representation); -2441: diff -= e2; -2441: return Constraint(diff, Constraint::NONSTRICT_INEQUALITY, NECESSARILY_CLOSED); -2441: } -2441: -2441: -2441: inline Constraint -2441: operator>=(const Variable v1, const Variable v2) { -2441: Linear_Expression diff(Constraint::default_representation); -2441: diff.set_space_dimension(std::max(v1.space_dimension(), -2441: v2.space_dimension())); -2441: diff += v1; -2441: diff -= v2; -2441: return Constraint(diff, Constraint::NONSTRICT_INEQUALITY, NECESSARILY_CLOSED); -2441: } -2441: -2441: -2441: inline Constraint -2441: operator>(const Linear_Expression& e1, const Linear_Expression& e2) { -2441: Linear_Expression diff(e1, Constraint::default_representation); -2441: diff -= e2; -2441: Constraint c(diff, Constraint::STRICT_INEQUALITY, NOT_NECESSARILY_CLOSED); -2441: -2441: -2441: c.set_epsilon_coefficient(-1); -2441: ((void) 0); -2441: -2441: return c; -2441: } -2441: -2441: -2441: inline Constraint -2441: operator>(const Variable v1, const Variable v2) { -2441: Linear_Expression diff(Constraint::default_representation); -2441: diff.set_space_dimension(std::max(v1.space_dimension(), -2441: v2.space_dimension())); -2441: diff += v1; -2441: diff -= v2; -2441: Constraint c(diff, Constraint::STRICT_INEQUALITY, NOT_NECESSARILY_CLOSED); -2441: -2441: c.set_epsilon_coefficient(-1); -2441: ((void) 0); -2441: -2441: return c; -2441: } -2441: -2441: -2441: inline Constraint -2441: operator==(Coefficient_traits::const_reference n, const Linear_Expression& e) { -2441: Linear_Expression diff(e, Constraint::default_representation); -2441: neg_assign(diff); -2441: diff += n; -2441: return Constraint(diff, Constraint::EQUALITY, NECESSARILY_CLOSED); -2441: } -2441: -2441: -2441: inline Constraint -2441: operator>=(Coefficient_traits::const_reference n, const Linear_Expression& e) { -2441: Linear_Expression diff(e, Constraint::default_representation); -2441: neg_assign(diff); -2441: diff += n; -2441: return Constraint(diff, Constraint::NONSTRICT_INEQUALITY, NECESSARILY_CLOSED); -2441: } -2441: -2441: -2441: inline Constraint -2441: operator>(Coefficient_traits::const_reference n, const Linear_Expression& e) { -2441: Linear_Expression diff(e, Constraint::default_representation); -2441: neg_assign(diff); -2441: diff += n; -2441: Constraint c(diff, Constraint::STRICT_INEQUALITY, NOT_NECESSARILY_CLOSED); -2441: -2441: -2441: c.set_epsilon_coefficient(-1); -2441: ((void) 0); -2441: -2441: return c; -2441: } -2441: -2441: -2441: inline Constraint -2441: operator==(const Linear_Expression& e, Coefficient_traits::const_reference n) { -2441: Linear_Expression diff(e, Constraint::default_representation); -2441: diff -= n; -2441: return Constraint(diff, Constraint::EQUALITY, NECESSARILY_CLOSED); -2441: } -2441: -2441: -2441: inline Constraint -2441: operator>=(const Linear_Expression& e, Coefficient_traits::const_reference n) { -2441: Linear_Expression diff(e, Constraint::default_representation); -2441: diff -= n; -2441: return Constraint(diff, Constraint::NONSTRICT_INEQUALITY, NECESSARILY_CLOSED); -2441: } -2441: -2441: -2441: inline Constraint -2441: operator>(const Linear_Expression& e, Coefficient_traits::const_reference n) { -2441: Linear_Expression diff(e, Constraint::default_representation); -2441: diff -= n; -2441: Constraint c(diff, Constraint::STRICT_INEQUALITY, NOT_NECESSARILY_CLOSED); -2441: -2441: -2441: c.set_epsilon_coefficient(-1); -2441: ((void) 0); -2441: -2441: return c; -2441: } -2441: -2441: -2441: inline Constraint -2441: operator<=(const Linear_Expression& e1, const Linear_Expression& e2) { -2441: return e2 >= e1; -2441: } -2441: -2441: -2441: inline Constraint -2441: operator<=(const Variable v1, const Variable v2) { -2441: return v2 >= v1; -2441: } -2441: -2441: -2441: inline Constraint -2441: operator<=(Coefficient_traits::const_reference n, const Linear_Expression& e) { -2441: return e >= n; -2441: } -2441: -2441: -2441: inline Constraint -2441: operator<=(const Linear_Expression& e, Coefficient_traits::const_reference n) { -2441: return n >= e; -2441: } -2441: -2441: -2441: inline Constraint -2441: operator<(const Linear_Expression& e1, const Linear_Expression& e2) { -2441: return e2 > e1; -2441: } -2441: -2441: -2441: inline Constraint -2441: operator<(const Variable v1, const Variable v2) { -2441: return v2 > v1; -2441: } -2441: -2441: -2441: inline Constraint -2441: operator<(Coefficient_traits::const_reference n, const Linear_Expression& e) { -2441: return e > n; -2441: } -2441: -2441: -2441: inline Constraint -2441: operator<(const Linear_Expression& e, Coefficient_traits::const_reference n) { -2441: return n > e; -2441: } -2441: -2441: inline const Constraint& -2441: Constraint::zero_dim_false() { -2441: ((void) 0); -2441: return *zero_dim_false_p; -2441: } -2441: -2441: inline const Constraint& -2441: Constraint::zero_dim_positivity() { -2441: ((void) 0); -2441: return *zero_dim_positivity_p; -2441: } -2441: -2441: inline const Constraint& -2441: Constraint::epsilon_geq_zero() { -2441: ((void) 0); -2441: return *epsilon_geq_zero_p; -2441: } -2441: -2441: inline const Constraint& -2441: Constraint::epsilon_leq_one() { -2441: ((void) 0); -2441: return *epsilon_leq_one_p; -2441: } -2441: -2441: inline void -2441: Constraint::m_swap(Constraint& y) { -2441: using std::swap; -2441: swap(expr, y.expr); -2441: swap(kind_, y.kind_); -2441: swap(topology_, y.topology_); -2441: } -2441: -2441: inline Coefficient_traits::const_reference -2441: Constraint::epsilon_coefficient() const { -2441: ((void) 0); -2441: return expr.coefficient(Variable(expr.space_dimension() - 1)); -2441: } -2441: -2441: inline void -2441: Constraint::set_epsilon_coefficient(Coefficient_traits::const_reference n) { -2441: ((void) 0); -2441: expr.set_coefficient(Variable(expr.space_dimension() - 1), n); -2441: } -2441: -2441: -2441: inline void -2441: swap(Constraint& x, Constraint& y) { -2441: x.m_swap(y); -2441: } -2441: -2441: } -2441: # 835 "../../src/Constraint_defs.hh" 2 -2441: # 31 "../../src/Linear_Expression_Impl_templates.hh" 2 -2441: # 1 "../../src/Generator_defs.hh" 1 -2441: # 31 "../../src/Generator_defs.hh" -2441: # 1 "../../src/Generator_System_types.hh" 1 -2441: # 16 "../../src/Generator_System_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: class Generator_System; -2441: class Generator_System_const_iterator; -2441: -2441: } -2441: # 32 "../../src/Generator_defs.hh" 2 -2441: -2441: -2441: -2441: # 1 "../../src/Grid_Generator_System_types.hh" 1 -2441: # 16 "../../src/Grid_Generator_System_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: class Grid_Generator_System; -2441: -2441: } -2441: # 36 "../../src/Generator_defs.hh" 2 -2441: -2441: -2441: -2441: -2441: -2441: -2441: # 1 "../../src/distances_defs.hh" 1 -2441: # 27 "../../src/distances_defs.hh" -2441: # 1 "../../src/distances_types.hh" 1 -2441: # 16 "../../src/distances_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: struct Rectilinear_Distance_Specialization; -2441: -2441: template -2441: struct Euclidean_Distance_Specialization; -2441: -2441: template -2441: struct L_Infinity_Distance_Specialization; -2441: -2441: } -2441: # 28 "../../src/distances_defs.hh" 2 -2441: -2441: -2441: template -2441: struct Parma_Polyhedra_Library::Rectilinear_Distance_Specialization { -2441: static void combine(Temp& running, const Temp& current, Rounding_Dir dir); -2441: -2441: static void finalize(Temp&, Rounding_Dir); -2441: }; -2441: -2441: template -2441: struct Parma_Polyhedra_Library::Euclidean_Distance_Specialization { -2441: static void combine(Temp& running, Temp& current, Rounding_Dir dir); -2441: -2441: static void finalize(Temp& running, Rounding_Dir dir); -2441: }; -2441: -2441: -2441: template -2441: struct Parma_Polyhedra_Library::L_Infinity_Distance_Specialization { -2441: static void combine(Temp& running, const Temp& current, Rounding_Dir); -2441: -2441: static void finalize(Temp&, Rounding_Dir); -2441: }; -2441: -2441: # 1 "../../src/distances_inlines.hh" 1 -2441: # 29 "../../src/distances_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: template -2441: struct maybe_assign_struct { -2441: static inline Result -2441: function(const To*& top, To& tmp, const From& from, Rounding_Dir dir) { -2441: -2441: -2441: top = &tmp; -2441: return assign_r(tmp, from, dir); -2441: } -2441: }; -2441: -2441: template -2441: struct maybe_assign_struct { -2441: static inline Result -2441: function(const Type*& top, Type&, const Type& from, Rounding_Dir) { -2441: -2441: top = &from; -2441: return V_EQ; -2441: } -2441: }; -2441: # 62 "../../src/distances_inlines.hh" -2441: template -2441: inline Result -2441: maybe_assign(const To*& top, To& tmp, const From& from, Rounding_Dir dir) { -2441: return maybe_assign_struct::function(top, tmp, from, dir); -2441: } -2441: -2441: template -2441: inline void -2441: Rectilinear_Distance_Specialization::combine(Temp& running, -2441: const Temp& current, -2441: Rounding_Dir dir) { -2441: add_assign_r(running, running, current, dir); -2441: } -2441: -2441: template -2441: inline void -2441: Rectilinear_Distance_Specialization::finalize(Temp&, Rounding_Dir) { -2441: } -2441: -2441: template -2441: inline void -2441: Euclidean_Distance_Specialization::combine(Temp& running, -2441: Temp& current, -2441: Rounding_Dir dir) { -2441: mul_assign_r(current, current, current, dir); -2441: add_assign_r(running, running, current, dir); -2441: } -2441: -2441: template -2441: inline void -2441: Euclidean_Distance_Specialization::finalize(Temp& running, -2441: Rounding_Dir dir) { -2441: sqrt_assign_r(running, running, dir); -2441: } -2441: -2441: template -2441: inline void -2441: L_Infinity_Distance_Specialization::combine(Temp& running, -2441: const Temp& current, -2441: Rounding_Dir) { -2441: if (current > running) { -2441: running = current; -2441: } -2441: } -2441: -2441: template -2441: inline void -2441: L_Infinity_Distance_Specialization::finalize(Temp&, Rounding_Dir) { -2441: } -2441: -2441: } -2441: # 53 "../../src/distances_defs.hh" 2 -2441: # 43 "../../src/Generator_defs.hh" 2 -2441: -2441: -2441: # 1 "../../src/Expression_Hide_Inhomo_defs.hh" 1 -2441: # 41 "../../src/Expression_Hide_Inhomo_defs.hh" -2441: template -2441: class Parma_Polyhedra_Library::Expression_Hide_Inhomo -2441: : public Expression_Adapter { -2441: typedef Expression_Adapter base_type; -2441: public: -2441: -2441: typedef Expression_Hide_Inhomo const_reference; -2441: -2441: typedef typename base_type::inner_type inner_type; -2441: -2441: typedef typename base_type::raw_type raw_type; -2441: -2441: -2441: explicit Expression_Hide_Inhomo(const raw_type& expr); -2441: -2441: public: -2441: -2441: typedef typename base_type::const_iterator const_iterator; -2441: -2441: -2441: Coefficient_traits::const_reference inhomogeneous_term() const; -2441: -2441: -2441: bool is_zero() const; -2441: -2441: -2441: -2441: -2441: -2441: template -2441: bool is_equal_to(const Expression& y) const; -2441: -2441: -2441: Coefficient_traits::const_reference get(dimension_type i) const; -2441: -2441: -2441: Coefficient_traits::const_reference get(Variable v) const; -2441: -2441: -2441: -2441: -2441: -2441: bool all_zeroes(const Variables_Set& vars) const; -2441: -2441: -2441: -2441: -2441: -2441: bool all_zeroes(dimension_type start, dimension_type end) const; -2441: -2441: -2441: -2441: -2441: dimension_type num_zeroes(dimension_type start, dimension_type end) const; -2441: -2441: -2441: -2441: -2441: -2441: Coefficient gcd(dimension_type start, dimension_type end) const; -2441: -2441: -2441: -2441: dimension_type last_nonzero() const; -2441: -2441: -2441: -2441: dimension_type last_nonzero(dimension_type first, dimension_type last) const; -2441: -2441: -2441: -2441: dimension_type first_nonzero(dimension_type first, dimension_type last) const; -2441: -2441: -2441: -2441: -2441: -2441: bool all_zeroes_except(const Variables_Set& vars, -2441: dimension_type start, dimension_type end) const; -2441: -2441: -2441: void has_a_free_dimension_helper(std::set& x) const; -2441: -2441: -2441: -2441: template -2441: bool is_equal_to(const Expression& y, -2441: dimension_type start, dimension_type end) const; -2441: -2441: -2441: -2441: template -2441: bool is_equal_to(const Expression& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2, -2441: dimension_type start, dimension_type end) const; -2441: -2441: -2441: void get_row(Dense_Row& r) const; -2441: -2441: -2441: void get_row(Sparse_Row& r) const; -2441: }; -2441: -2441: # 1 "../../src/Expression_Hide_Inhomo_inlines.hh" 1 -2441: # 29 "../../src/Expression_Hide_Inhomo_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: Expression_Hide_Inhomo::Expression_Hide_Inhomo(const raw_type& expr) -2441: : base_type(expr) { -2441: } -2441: -2441: template -2441: inline Coefficient_traits::const_reference -2441: Expression_Hide_Inhomo::inhomogeneous_term() const { -2441: -2441: return Coefficient_zero(); -2441: } -2441: -2441: template -2441: inline bool -2441: Expression_Hide_Inhomo::is_zero() const { -2441: -2441: return this->inner().all_homogeneous_terms_are_zero(); -2441: } -2441: -2441: template -2441: template -2441: inline bool -2441: Expression_Hide_Inhomo -2441: ::is_equal_to(const Expression& y) const { -2441: const dimension_type x_dim = this->space_dimension(); -2441: const dimension_type y_dim = y.space_dimension(); -2441: if (x_dim != y_dim) { -2441: return false; -2441: } -2441: if (y.inhomogeneous_term() != 0) { -2441: return false; -2441: } -2441: -2441: return this->inner().is_equal_to(y, 1, x_dim + 1); -2441: } -2441: -2441: template -2441: inline Coefficient_traits::const_reference -2441: Expression_Hide_Inhomo::get(dimension_type i) const { -2441: if (i == 0) { -2441: return Coefficient_zero(); -2441: } -2441: else { -2441: return this->inner().get(i); -2441: } -2441: } -2441: -2441: template -2441: inline Coefficient_traits::const_reference -2441: Expression_Hide_Inhomo::get(Variable v) const { -2441: return this->inner().get(v); -2441: } -2441: -2441: template -2441: inline bool -2441: Expression_Hide_Inhomo -2441: ::all_zeroes(const Variables_Set& vars) const { -2441: return this->inner().all_zeroes(vars); -2441: } -2441: -2441: template -2441: inline bool -2441: Expression_Hide_Inhomo::all_zeroes(dimension_type start, -2441: dimension_type end) const { -2441: if (start == end) { -2441: return true; -2441: } -2441: if (start == 0) { -2441: ++start; -2441: } -2441: return this->inner().all_zeroes(start, end); -2441: } -2441: -2441: template -2441: inline dimension_type -2441: Expression_Hide_Inhomo::num_zeroes(dimension_type start, -2441: dimension_type end) const { -2441: if (start == end) { -2441: return 0; -2441: } -2441: dimension_type nz = 0; -2441: if (start == 0) { -2441: ++start; -2441: ++nz; -2441: } -2441: nz += this->inner().num_zeroes(start, end); -2441: return nz; -2441: } -2441: -2441: template -2441: inline Coefficient -2441: Expression_Hide_Inhomo::gcd(dimension_type start, -2441: dimension_type end) const { -2441: if (start == end) { -2441: return Coefficient_zero(); -2441: } -2441: if (start == 0) { -2441: ++start; -2441: } -2441: return this->inner().gcd(start, end); -2441: } -2441: -2441: template -2441: inline dimension_type -2441: Expression_Hide_Inhomo::last_nonzero() const { -2441: return this->inner().last_nonzero(); -2441: } -2441: -2441: template -2441: inline dimension_type -2441: Expression_Hide_Inhomo::last_nonzero(dimension_type first, -2441: dimension_type last) const { -2441: if (first == last) { -2441: return last; -2441: } -2441: if (first == 0) { -2441: ++first; -2441: } -2441: return this->inner().last_nonzero(first, last); -2441: } -2441: -2441: template -2441: inline dimension_type -2441: Expression_Hide_Inhomo::first_nonzero(dimension_type first, -2441: dimension_type last) const { -2441: if (first == last) { -2441: return last; -2441: } -2441: if (first == 0) { -2441: ++first; -2441: } -2441: return this->inner().first_nonzero(first, last); -2441: } -2441: -2441: template -2441: inline bool -2441: Expression_Hide_Inhomo -2441: ::all_zeroes_except(const Variables_Set& vars, -2441: dimension_type start, dimension_type end) const { -2441: if (start == end) { -2441: return true; -2441: } -2441: if (start == 0) { -2441: ++start; -2441: } -2441: return this->inner().all_zeroes_except(vars, start, end); -2441: } -2441: -2441: template -2441: inline void -2441: Expression_Hide_Inhomo -2441: ::has_a_free_dimension_helper(std::set& y) const { -2441: bool had_0 = (y.count(0) == 1); -2441: this->inner().has_a_free_dimension_helper(y); -2441: if (had_0) { -2441: y.insert(0); -2441: } -2441: } -2441: -2441: template -2441: template -2441: inline bool -2441: Expression_Hide_Inhomo -2441: ::is_equal_to(const Expression& y, -2441: dimension_type start, dimension_type end) const { -2441: if (start == end) { -2441: return true; -2441: } -2441: if (start == 0) { -2441: ++start; -2441: } -2441: return this->inner().is_equal_to(y, start, end); -2441: } -2441: -2441: template -2441: template -2441: inline bool -2441: Expression_Hide_Inhomo -2441: ::is_equal_to(const Expression& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2, -2441: dimension_type start, dimension_type end) const { -2441: if (start == end) { -2441: return true; -2441: } -2441: if (start == 0) { -2441: ++start; -2441: } -2441: return this->inner().is_equal_to(y, c1, c2, start, end); -2441: } -2441: -2441: template -2441: inline void -2441: Expression_Hide_Inhomo::get_row(Dense_Row& r) const { -2441: this->inner().get_row(r); -2441: r.reset(0); -2441: } -2441: -2441: template -2441: inline void -2441: Expression_Hide_Inhomo::get_row(Sparse_Row& r) const { -2441: this->inner().get_row(r); -2441: r.reset(0); -2441: } -2441: -2441: } -2441: # 146 "../../src/Expression_Hide_Inhomo_defs.hh" 2 -2441: # 46 "../../src/Generator_defs.hh" 2 -2441: -2441: -2441: -2441: namespace Parma_Polyhedra_Library { -2441: # 90 "../../src/Generator_defs.hh" -2441: int compare(const Generator& x, const Generator& y); -2441: -2441: namespace IO_Operators { -2441: -2441: -2441: -2441: std::ostream& operator<<(std::ostream& s, const Generator& g); -2441: -2441: } -2441: -2441: -2441: -2441: void swap(Generator& x, Generator& y); -2441: -2441: } -2441: # 285 "../../src/Generator_defs.hh" -2441: class Parma_Polyhedra_Library::Generator { -2441: public: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: static const Representation default_representation = SPARSE; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: static Generator line(const Linear_Expression& e, -2441: Representation r = default_representation); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: static Generator ray(const Linear_Expression& e, -2441: Representation r = default_representation); -2441: # 322 "../../src/Generator_defs.hh" -2441: static Generator point(const Linear_Expression& e -2441: = Linear_Expression::zero(), -2441: Coefficient_traits::const_reference d -2441: = Coefficient_one(), -2441: Representation r = default_representation); -2441: -2441: -2441: static Generator point(Representation r); -2441: -2441: -2441: static Generator point(const Linear_Expression& e, -2441: Representation r); -2441: -2441: -2441: explicit Generator(Representation r = default_representation); -2441: # 346 "../../src/Generator_defs.hh" -2441: static Generator -2441: closure_point(const Linear_Expression& e = Linear_Expression::zero(), -2441: Coefficient_traits::const_reference d = Coefficient_one(), -2441: Representation r = default_representation); -2441: -2441: -2441: static Generator -2441: closure_point(Representation r); -2441: -2441: -2441: static Generator -2441: closure_point(const Linear_Expression& e, Representation r); -2441: -2441: -2441: -2441: Generator(const Generator& g); -2441: -2441: -2441: Generator(const Generator& g, Representation r); -2441: -2441: -2441: -2441: Generator(const Generator& g, dimension_type space_dim); -2441: -2441: -2441: Generator(const Generator& g, dimension_type space_dim, Representation r); -2441: -2441: -2441: ~Generator(); -2441: -2441: -2441: Generator& operator=(const Generator& g); -2441: -2441: -2441: Representation representation() const; -2441: -2441: -2441: void set_representation(Representation r); -2441: -2441: -2441: static dimension_type max_space_dimension(); -2441: -2441: -2441: dimension_type space_dimension() const; -2441: -2441: -2441: -2441: void set_space_dimension(dimension_type space_dim); -2441: -2441: -2441: void swap_space_dimensions(Variable v1, Variable v2); -2441: # 408 "../../src/Generator_defs.hh" -2441: bool remove_space_dimensions(const Variables_Set& vars); -2441: # 422 "../../src/Generator_defs.hh" -2441: void permute_space_dimensions(const std::vector& cycle); -2441: -2441: -2441: -2441: void shift_space_dimensions(Variable v, dimension_type n); -2441: -2441: -2441: enum Type { -2441: -2441: LINE, -2441: -2441: RAY, -2441: -2441: POINT, -2441: -2441: CLOSURE_POINT -2441: }; -2441: -2441: -2441: Type type() const; -2441: -2441: -2441: bool is_line() const; -2441: -2441: -2441: bool is_ray() const; -2441: -2441: -2441: -2441: -2441: bool is_line_or_ray() const; -2441: -2441: -2441: bool is_point() const; -2441: -2441: -2441: bool is_closure_point() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: Coefficient_traits::const_reference coefficient(Variable v) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: Coefficient_traits::const_reference divisor() const; -2441: -2441: -2441: static void initialize(); -2441: -2441: -2441: static void finalize(); -2441: -2441: -2441: static const Generator& zero_dim_point(); -2441: -2441: -2441: -2441: -2441: -2441: static const Generator& zero_dim_closure_point(); -2441: -2441: -2441: -2441: -2441: -2441: memory_size_type total_memory_in_bytes() const; -2441: -2441: -2441: memory_size_type external_memory_in_bytes() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool is_equivalent_to(const Generator& y) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool is_equal_to(const Generator& y) const; -2441: -2441: -2441: bool OK() const; -2441: -2441: void ascii_dump() const; void ascii_dump(std::ostream& s) const; void print() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool ascii_load(std::istream& s); -2441: -2441: -2441: void m_swap(Generator& y); -2441: -2441: -2441: typedef Expression_Hide_Last > -2441: expr_type; -2441: -2441: expr_type expression() const; -2441: -2441: private: -2441: -2441: enum Kind { -2441: LINE_OR_EQUALITY = 0, -2441: RAY_OR_POINT_OR_INEQUALITY = 1 -2441: }; -2441: -2441: -2441: Linear_Expression expr; -2441: -2441: -2441: Kind kind_; -2441: -2441: -2441: Topology topology_; -2441: -2441: -2441: -2441: -2441: -2441: static const Generator* zero_dim_point_p; -2441: -2441: -2441: -2441: -2441: -2441: static const Generator* zero_dim_closure_point_p; -2441: # 570 "../../src/Generator_defs.hh" -2441: Generator(Linear_Expression& e, Type type, Topology topology); -2441: -2441: Generator(Linear_Expression& e, Kind kind, Topology topology); -2441: -2441: Generator(dimension_type space_dim, Kind kind, Topology topology, -2441: Representation r = default_representation); -2441: -2441: -2441: -2441: -2441: -2441: bool is_line_or_equality() const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_ray_or_point_or_inequality() const; -2441: -2441: -2441: void set_is_line_or_equality(); -2441: -2441: -2441: void set_is_ray_or_point_or_inequality(); -2441: -2441: -2441: -2441: -2441: Topology topology() const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_not_necessarily_closed() const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_necessarily_closed() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: void set_topology(Topology x); -2441: -2441: -2441: void set_necessarily_closed(); -2441: -2441: -2441: void set_not_necessarily_closed(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void mark_as_necessarily_closed(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: void mark_as_not_necessarily_closed(); -2441: # 652 "../../src/Generator_defs.hh" -2441: void linear_combine(const Generator& y, dimension_type i); -2441: # 661 "../../src/Generator_defs.hh" -2441: void set_space_dimension_no_ok(dimension_type space_dim); -2441: -2441: -2441: -2441: -2441: -2441: void -2441: throw_dimension_incompatible(const char* method, -2441: const char* v_name, -2441: Variable v) const; -2441: -2441: -2441: -2441: -2441: -2441: void -2441: throw_invalid_argument(const char* method, const char* reason) const; -2441: -2441: -2441: bool is_ray_or_point() const; -2441: -2441: -2441: void set_is_line(); -2441: -2441: -2441: void set_is_ray_or_point(); -2441: # 695 "../../src/Generator_defs.hh" -2441: bool is_matching_closure_point(const Generator& p) const; -2441: -2441: -2441: Coefficient_traits::const_reference epsilon_coefficient() const; -2441: -2441: -2441: void set_epsilon_coefficient(Coefficient_traits::const_reference n); -2441: -2441: -2441: -2441: -2441: -2441: void sign_normalize(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void strong_normalize(); -2441: -2441: -2441: -2441: -2441: -2441: bool check_strong_normalized() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: void fancy_print(std::ostream& s) const; -2441: -2441: friend class Expression_Adapter; -2441: friend class Linear_System; -2441: friend class Parma_Polyhedra_Library::Scalar_Products; -2441: friend class Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign; -2441: friend class Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Assign; -2441: friend class Parma_Polyhedra_Library::Generator_System; -2441: friend class Parma_Polyhedra_Library::Generator_System_const_iterator; -2441: -2441: friend class Parma_Polyhedra_Library::Polyhedron; -2441: -2441: friend class Parma_Polyhedra_Library::Grid_Generator_System; -2441: friend class Parma_Polyhedra_Library::MIP_Problem; -2441: friend class Parma_Polyhedra_Library::Grid; -2441: -2441: friend std::ostream& -2441: Parma_Polyhedra_Library::IO_Operators::operator<<(std::ostream& s, -2441: const Generator& g); -2441: -2441: friend int -2441: compare(const Generator& x, const Generator& y); -2441: }; -2441: -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: Generator line(const Linear_Expression& e, -2441: Representation r = Generator::default_representation); -2441: -2441: -2441: -2441: Generator ray(const Linear_Expression& e, -2441: Representation r = Generator::default_representation); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: Generator -2441: point(const Linear_Expression& e = Linear_Expression::zero(), -2441: Coefficient_traits::const_reference d = Coefficient_one(), -2441: Representation r = Generator::default_representation); -2441: -2441: -2441: -2441: Generator -2441: point(Representation r); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: Generator -2441: point(const Linear_Expression& e, Representation r); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: Generator -2441: closure_point(const Linear_Expression& e = Linear_Expression::zero(), -2441: Coefficient_traits::const_reference d = Coefficient_one(), -2441: Representation r = Generator::default_representation); -2441: -2441: -2441: -2441: Generator -2441: closure_point(Representation r); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: Generator -2441: closure_point(const Linear_Expression& e, Representation r); -2441: -2441: -2441: -2441: bool operator==(const Generator& x, const Generator& y); -2441: -2441: -2441: -2441: bool operator!=(const Generator& x, const Generator& y); -2441: # 838 "../../src/Generator_defs.hh" -2441: template -2441: bool rectilinear_distance_assign(Checked_Number& r, -2441: const Generator& x, -2441: const Generator& y, -2441: Rounding_Dir dir); -2441: # 859 "../../src/Generator_defs.hh" -2441: template -2441: bool rectilinear_distance_assign(Checked_Number& r, -2441: const Generator& x, -2441: const Generator& y, -2441: Rounding_Dir dir); -2441: # 880 "../../src/Generator_defs.hh" -2441: template -2441: bool rectilinear_distance_assign(Checked_Number& r, -2441: const Generator& x, -2441: const Generator& y, -2441: Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2); -2441: # 904 "../../src/Generator_defs.hh" -2441: template -2441: bool euclidean_distance_assign(Checked_Number& r, -2441: const Generator& x, -2441: const Generator& y, -2441: Rounding_Dir dir); -2441: # 925 "../../src/Generator_defs.hh" -2441: template -2441: bool rectilinear_distance_assign(Checked_Number& r, -2441: const Generator& x, -2441: const Generator& y, -2441: Rounding_Dir dir); -2441: # 946 "../../src/Generator_defs.hh" -2441: template -2441: bool euclidean_distance_assign(Checked_Number& r, -2441: const Generator& x, -2441: const Generator& y, -2441: Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2); -2441: # 970 "../../src/Generator_defs.hh" -2441: template -2441: bool l_infinity_distance_assign(Checked_Number& r, -2441: const Generator& x, -2441: const Generator& y, -2441: Rounding_Dir dir); -2441: # 991 "../../src/Generator_defs.hh" -2441: template -2441: bool l_infinity_distance_assign(Checked_Number& r, -2441: const Generator& x, -2441: const Generator& y, -2441: Rounding_Dir dir); -2441: # 1012 "../../src/Generator_defs.hh" -2441: template -2441: bool l_infinity_distance_assign(Checked_Number& r, -2441: const Generator& x, -2441: const Generator& y, -2441: Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2); -2441: -2441: namespace IO_Operators { -2441: -2441: -2441: -2441: std::ostream& operator<<(std::ostream& s, const Generator::Type& t); -2441: -2441: } -2441: -2441: } -2441: -2441: # 1 "../../src/Generator_inlines.hh" 1 -2441: # 27 "../../src/Generator_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: inline bool -2441: Generator::is_necessarily_closed() const { -2441: return (topology() == NECESSARILY_CLOSED); -2441: } -2441: -2441: inline bool -2441: Generator::is_not_necessarily_closed() const { -2441: return (topology() == NOT_NECESSARILY_CLOSED); -2441: } -2441: -2441: inline Generator::expr_type -2441: Generator::expression() const { -2441: return expr_type(expr, is_not_necessarily_closed()); -2441: } -2441: -2441: inline dimension_type -2441: Generator::space_dimension() const { -2441: return expression().space_dimension(); -2441: } -2441: -2441: inline bool -2441: Generator::is_line_or_equality() const { -2441: return (kind_ == LINE_OR_EQUALITY); -2441: } -2441: -2441: inline bool -2441: Generator::is_ray_or_point_or_inequality() const { -2441: return (kind_ == RAY_OR_POINT_OR_INEQUALITY); -2441: } -2441: -2441: inline Topology -2441: Generator::topology() const { -2441: return topology_; -2441: } -2441: -2441: inline void -2441: Generator::set_is_line_or_equality() { -2441: kind_ = LINE_OR_EQUALITY; -2441: } -2441: -2441: inline void -2441: Generator::set_is_ray_or_point_or_inequality() { -2441: kind_ = RAY_OR_POINT_OR_INEQUALITY; -2441: } -2441: -2441: inline void -2441: Generator::set_topology(Topology x) { -2441: if (topology() == x) { -2441: return; -2441: } -2441: if (topology() == NECESSARILY_CLOSED) { -2441: -2441: expr.set_space_dimension(expr.space_dimension() + 1); -2441: } -2441: else { -2441: ((void) 0); -2441: expr.set_space_dimension(expr.space_dimension() - 1); -2441: } -2441: topology_ = x; -2441: } -2441: -2441: inline void -2441: Generator::mark_as_necessarily_closed() { -2441: ((void) 0); -2441: topology_ = NECESSARILY_CLOSED; -2441: } -2441: -2441: inline void -2441: Generator::mark_as_not_necessarily_closed() { -2441: ((void) 0); -2441: topology_ = NOT_NECESSARILY_CLOSED; -2441: } -2441: -2441: inline void -2441: Generator::set_necessarily_closed() { -2441: set_topology(NECESSARILY_CLOSED); -2441: } -2441: -2441: inline void -2441: Generator::set_not_necessarily_closed() { -2441: set_topology(NOT_NECESSARILY_CLOSED); -2441: } -2441: -2441: inline -2441: Generator::Generator(Representation r) -2441: : expr(r), -2441: kind_(RAY_OR_POINT_OR_INEQUALITY), -2441: topology_(NECESSARILY_CLOSED) { -2441: expr.set_inhomogeneous_term(Coefficient_one()); -2441: ((void) 0); -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: Generator::Generator(dimension_type space_dim, Kind kind, Topology topology, -2441: Representation r) -2441: : expr(r), -2441: kind_(kind), -2441: topology_(topology) { -2441: if (is_necessarily_closed()) { -2441: expr.set_space_dimension(space_dim); -2441: } -2441: else { -2441: expr.set_space_dimension(space_dim + 1); -2441: } -2441: ((void) 0); -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: Generator::Generator(Linear_Expression& e, Type type, Topology topology) -2441: : topology_(topology) { -2441: ((void) 0); -2441: swap(expr, e); -2441: if (topology == NOT_NECESSARILY_CLOSED) { -2441: expr.set_space_dimension(expr.space_dimension() + 1); -2441: } -2441: if (type == LINE) { -2441: kind_ = LINE_OR_EQUALITY; -2441: } -2441: else { -2441: kind_ = RAY_OR_POINT_OR_INEQUALITY; -2441: } -2441: strong_normalize(); -2441: } -2441: -2441: inline -2441: Generator::Generator(Linear_Expression& e, Kind kind, Topology topology) -2441: : kind_(kind), -2441: topology_(topology) { -2441: swap(expr, e); -2441: if (topology == NOT_NECESSARILY_CLOSED) { -2441: expr.set_space_dimension(expr.space_dimension() + 1); -2441: } -2441: strong_normalize(); -2441: } -2441: -2441: inline -2441: Generator::Generator(const Generator& g) -2441: : expr(g.expr), -2441: kind_(g.kind_), -2441: topology_(g.topology_) { -2441: } -2441: -2441: inline -2441: Generator::Generator(const Generator& g, Representation r) -2441: : expr(g.expr, r), -2441: kind_(g.kind_), -2441: topology_(g.topology_) { -2441: -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: Generator::Generator(const Generator& g, dimension_type space_dim) -2441: : expr(g.expr, g.is_necessarily_closed() ? space_dim : (space_dim + 1)), -2441: kind_(g.kind_), -2441: topology_(g.topology_) { -2441: ((void) 0); -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: Generator::Generator(const Generator& g, dimension_type space_dim, -2441: Representation r) -2441: : expr(g.expr, g.is_necessarily_closed() ? space_dim : (space_dim + 1), r), -2441: kind_(g.kind_), -2441: topology_(g.topology_) { -2441: ((void) 0); -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: Generator::~Generator() { -2441: } -2441: -2441: inline Generator& -2441: Generator::operator=(const Generator& g) { -2441: Generator tmp = g; -2441: swap(*this, tmp); -2441: -2441: return *this; -2441: } -2441: -2441: inline Representation -2441: Generator::representation() const { -2441: return expr.representation(); -2441: } -2441: -2441: inline void -2441: Generator::set_representation(Representation r) { -2441: expr.set_representation(r); -2441: } -2441: -2441: inline dimension_type -2441: Generator::max_space_dimension() { -2441: return Linear_Expression::max_space_dimension(); -2441: } -2441: -2441: inline void -2441: Generator::set_space_dimension_no_ok(dimension_type space_dim) { -2441: const dimension_type old_expr_space_dim = expr.space_dimension(); -2441: if (topology() == NECESSARILY_CLOSED) { -2441: expr.set_space_dimension(space_dim); -2441: } -2441: else { -2441: const dimension_type old_space_dim = space_dimension(); -2441: if (space_dim > old_space_dim) { -2441: expr.set_space_dimension(space_dim + 1); -2441: expr.swap_space_dimensions(Variable(space_dim), Variable(old_space_dim)); -2441: } -2441: else { -2441: expr.swap_space_dimensions(Variable(space_dim), Variable(old_space_dim)); -2441: expr.set_space_dimension(space_dim + 1); -2441: } -2441: } -2441: ((void) 0); -2441: if (expr.space_dimension() < old_expr_space_dim) { -2441: strong_normalize(); -2441: } -2441: } -2441: -2441: inline void -2441: Generator::set_space_dimension(dimension_type space_dim) { -2441: set_space_dimension_no_ok(space_dim); -2441: ((void) 0); -2441: } -2441: -2441: inline void -2441: Generator::shift_space_dimensions(Variable v, dimension_type n) { -2441: expr.shift_space_dimensions(v, n); -2441: } -2441: -2441: inline bool -2441: Generator::is_line() const { -2441: return is_line_or_equality(); -2441: } -2441: -2441: inline bool -2441: Generator::is_ray_or_point() const { -2441: return is_ray_or_point_or_inequality(); -2441: } -2441: -2441: inline bool -2441: Generator::is_line_or_ray() const { -2441: return expr.inhomogeneous_term() == 0; -2441: } -2441: -2441: inline bool -2441: Generator::is_ray() const { -2441: return is_ray_or_point() && is_line_or_ray(); -2441: } -2441: -2441: inline Generator::Type -2441: Generator::type() const { -2441: if (is_line()) { -2441: return LINE; -2441: } -2441: if (is_line_or_ray()) { -2441: return RAY; -2441: } -2441: if (is_necessarily_closed()) { -2441: return POINT; -2441: } -2441: else { -2441: -2441: if (epsilon_coefficient() == 0) { -2441: return CLOSURE_POINT; -2441: } -2441: else { -2441: return POINT; -2441: } -2441: } -2441: } -2441: -2441: inline bool -2441: Generator::is_point() const { -2441: return type() == POINT; -2441: } -2441: -2441: inline bool -2441: Generator::is_closure_point() const { -2441: return type() == CLOSURE_POINT; -2441: } -2441: -2441: inline void -2441: Generator::set_is_line() { -2441: set_is_line_or_equality(); -2441: } -2441: -2441: inline void -2441: Generator::set_is_ray_or_point() { -2441: set_is_ray_or_point_or_inequality(); -2441: } -2441: -2441: inline Coefficient_traits::const_reference -2441: Generator::coefficient(const Variable v) const { -2441: if (v.space_dimension() > space_dimension()) { -2441: throw_dimension_incompatible("coefficient(v)", "v", v); -2441: } -2441: return expr.coefficient(v); -2441: } -2441: -2441: inline Coefficient_traits::const_reference -2441: Generator::divisor() const { -2441: Coefficient_traits::const_reference d = expr.inhomogeneous_term(); -2441: if (!is_ray_or_point() || d == 0) { -2441: throw_invalid_argument("divisor()", -2441: "*this is neither a point nor a closure point"); -2441: } -2441: return d; -2441: } -2441: -2441: inline Coefficient_traits::const_reference -2441: Generator::epsilon_coefficient() const { -2441: ((void) 0); -2441: return expr.coefficient(Variable(expr.space_dimension() - 1)); -2441: } -2441: -2441: -2441: inline void -2441: Generator::set_epsilon_coefficient(Coefficient_traits::const_reference n) { -2441: ((void) 0); -2441: expr.set_coefficient(Variable(expr.space_dimension() - 1), n); -2441: } -2441: -2441: -2441: inline memory_size_type -2441: Generator::external_memory_in_bytes() const { -2441: return expr.external_memory_in_bytes(); -2441: } -2441: -2441: inline memory_size_type -2441: Generator::total_memory_in_bytes() const { -2441: return sizeof(*this) + external_memory_in_bytes(); -2441: } -2441: -2441: inline void -2441: Generator::strong_normalize() { -2441: expr.normalize(); -2441: sign_normalize(); -2441: } -2441: -2441: inline const Generator& -2441: Generator::zero_dim_point() { -2441: ((void) 0); -2441: return *zero_dim_point_p; -2441: } -2441: -2441: inline const Generator& -2441: Generator::zero_dim_closure_point() { -2441: ((void) 0); -2441: return *zero_dim_closure_point_p; -2441: } -2441: -2441: -2441: inline Generator -2441: line(const Linear_Expression& e, Representation r) { -2441: return Generator::line(e, r); -2441: } -2441: -2441: -2441: inline Generator -2441: ray(const Linear_Expression& e, Representation r) { -2441: return Generator::ray(e, r); -2441: } -2441: -2441: -2441: inline Generator -2441: point(const Linear_Expression& e, Coefficient_traits::const_reference d, -2441: Representation r) { -2441: return Generator::point(e, d, r); -2441: } -2441: -2441: -2441: inline Generator -2441: point(Representation r) { -2441: return Generator::point(r); -2441: } -2441: -2441: -2441: inline Generator -2441: point(const Linear_Expression& e, Representation r) { -2441: return Generator::point(e, r); -2441: } -2441: -2441: -2441: inline Generator -2441: closure_point(const Linear_Expression& e, -2441: Coefficient_traits::const_reference d, -2441: Representation r) { -2441: return Generator::closure_point(e, d, r); -2441: } -2441: -2441: -2441: inline Generator -2441: closure_point(Representation r) { -2441: return Generator::closure_point(r); -2441: } -2441: -2441: -2441: inline Generator -2441: closure_point(const Linear_Expression& e, -2441: Representation r) { -2441: return Generator::closure_point(e, r); -2441: } -2441: -2441: -2441: inline bool -2441: operator==(const Generator& x, const Generator& y) { -2441: return x.is_equivalent_to(y); -2441: } -2441: -2441: -2441: inline bool -2441: operator!=(const Generator& x, const Generator& y) { -2441: return !x.is_equivalent_to(y); -2441: } -2441: -2441: inline void -2441: Generator::ascii_dump(std::ostream& s) const { -2441: -2441: expr.ascii_dump(s); -2441: -2441: s << " "; -2441: -2441: switch (type()) { -2441: case Generator::LINE: -2441: s << "L "; -2441: break; -2441: case Generator::RAY: -2441: s << "R "; -2441: break; -2441: case Generator::POINT: -2441: s << "P "; -2441: break; -2441: case Generator::CLOSURE_POINT: -2441: s << "C "; -2441: break; -2441: } -2441: if (is_necessarily_closed()) { -2441: s << "(C)"; -2441: } -2441: else { -2441: s << "(NNC)"; -2441: } -2441: s << "\n"; -2441: } -2441: -2441: inline bool -2441: Generator::ascii_load(std::istream& s) { -2441: std::string str; -2441: -2441: expr.ascii_load(s); -2441: -2441: if (!(s >> str)) { -2441: return false; -2441: } -2441: if (str == "L") { -2441: set_is_line(); -2441: } -2441: else if (str == "R" || str == "P" || str == "C") { -2441: set_is_ray_or_point(); -2441: } -2441: else { -2441: return false; -2441: } -2441: -2441: std::string str2; -2441: -2441: if (!(s >> str2)) { -2441: return false; -2441: } -2441: if (str2 == "(C)") { -2441: if (is_not_necessarily_closed()) { -2441: -2441: mark_as_necessarily_closed(); -2441: } -2441: } -2441: else { -2441: if (str2 == "(NNC)") { -2441: if (is_necessarily_closed()) { -2441: -2441: mark_as_not_necessarily_closed(); -2441: } -2441: } -2441: else { -2441: return false; -2441: } -2441: } -2441: -2441: -2441: switch (type()) { -2441: case Generator::LINE: -2441: if (str != "L") { -2441: return false; -2441: } -2441: break; -2441: case Generator::RAY: -2441: if (str != "R") { -2441: return false; -2441: } -2441: break; -2441: case Generator::POINT: -2441: if (str != "P") { -2441: return false; -2441: } -2441: break; -2441: case Generator::CLOSURE_POINT: -2441: if (str != "C") { -2441: return false; -2441: } -2441: break; -2441: } -2441: -2441: return true; -2441: } -2441: -2441: inline void -2441: Generator::m_swap(Generator& y) { -2441: using std::swap; -2441: swap(expr, y.expr); -2441: swap(kind_, y.kind_); -2441: swap(topology_, y.topology_); -2441: } -2441: -2441: -2441: -2441: -2441: template -2441: inline bool -2441: l_m_distance_assign(Checked_Number& r, -2441: const Generator& x, -2441: const Generator& y, -2441: const Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2) { -2441: -2441: -2441: if (x.is_line_or_ray() || y.is_line_or_ray()) { -2441: return false; -2441: } -2441: const dimension_type x_space_dim = x.space_dimension(); -2441: -2441: if (x_space_dim != y.space_dimension()) { -2441: return false; -2441: } -2441: -2441: -2441: if (x_space_dim == 0) { -2441: assign_r(r, 0, ROUND_NOT_NEEDED); -2441: return true; -2441: } -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_x_coord; mpq_class& x_coord = holder_x_coord.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_y_coord; mpq_class& y_coord = holder_y_coord.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_x_div; mpq_class& x_div = holder_x_div.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_y_div; mpq_class& y_div = holder_y_div.item(); -2441: assign_r(x_div, x.divisor(), ROUND_NOT_NEEDED); -2441: assign_r(y_div, y.divisor(), ROUND_NOT_NEEDED); -2441: -2441: assign_r(tmp0, 0, ROUND_NOT_NEEDED); -2441: -2441: for (dimension_type i = x_space_dim; i-- > 0; ) { -2441: assign_r(x_coord, x.coefficient(Variable(i)), ROUND_NOT_NEEDED); -2441: div_assign_r(x_coord, x_coord, x_div, ROUND_NOT_NEEDED); -2441: assign_r(y_coord, y.coefficient(Variable(i)), ROUND_NOT_NEEDED); -2441: div_assign_r(y_coord, y_coord, y_div, ROUND_NOT_NEEDED); -2441: const Temp* tmp1p; -2441: const Temp* tmp2p; -2441: -2441: if (x_coord > y_coord) { -2441: maybe_assign(tmp1p, tmp1, x_coord, dir); -2441: maybe_assign(tmp2p, tmp2, y_coord, inverse(dir)); -2441: } -2441: else { -2441: maybe_assign(tmp1p, tmp1, y_coord, dir); -2441: maybe_assign(tmp2p, tmp2, x_coord, inverse(dir)); -2441: } -2441: sub_assign_r(tmp1, *tmp1p, *tmp2p, dir); -2441: ((void) 0); -2441: Specialization::combine(tmp0, tmp1, dir); -2441: } -2441: Specialization::finalize(tmp0, dir); -2441: assign_r(r, tmp0, dir); -2441: return true; -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: rectilinear_distance_assign(Checked_Number& r, -2441: const Generator& x, -2441: const Generator& y, -2441: const Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2) { -2441: return l_m_distance_assign > -2441: (r, x, y, dir, tmp0, tmp1, tmp2); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: rectilinear_distance_assign(Checked_Number& r, -2441: const Generator& x, -2441: const Generator& y, -2441: const Rounding_Dir dir) { -2441: typedef Checked_Number Checked_Temp; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp0; Checked_Temp& tmp0 = holder_tmp0.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp1; Checked_Temp& tmp1 = holder_tmp1.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp2; Checked_Temp& tmp2 = holder_tmp2.item(); -2441: return rectilinear_distance_assign(r, x, y, dir, tmp0, tmp1, tmp2); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: rectilinear_distance_assign(Checked_Number& r, -2441: const Generator& x, -2441: const Generator& y, -2441: const Rounding_Dir dir) { -2441: return rectilinear_distance_assign(r, x, y, dir); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: euclidean_distance_assign(Checked_Number& r, -2441: const Generator& x, -2441: const Generator& y, -2441: const Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2) { -2441: return l_m_distance_assign > -2441: (r, x, y, dir, tmp0, tmp1, tmp2); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: euclidean_distance_assign(Checked_Number& r, -2441: const Generator& x, -2441: const Generator& y, -2441: const Rounding_Dir dir) { -2441: typedef Checked_Number Checked_Temp; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp0; Checked_Temp& tmp0 = holder_tmp0.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp1; Checked_Temp& tmp1 = holder_tmp1.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp2; Checked_Temp& tmp2 = holder_tmp2.item(); -2441: return euclidean_distance_assign(r, x, y, dir, tmp0, tmp1, tmp2); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: euclidean_distance_assign(Checked_Number& r, -2441: const Generator& x, -2441: const Generator& y, -2441: const Rounding_Dir dir) { -2441: return euclidean_distance_assign(r, x, y, dir); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: l_infinity_distance_assign(Checked_Number& r, -2441: const Generator& x, -2441: const Generator& y, -2441: const Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2) { -2441: return l_m_distance_assign > -2441: (r, x, y, dir, tmp0, tmp1, tmp2); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: l_infinity_distance_assign(Checked_Number& r, -2441: const Generator& x, -2441: const Generator& y, -2441: const Rounding_Dir dir) { -2441: typedef Checked_Number Checked_Temp; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp0; Checked_Temp& tmp0 = holder_tmp0.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp1; Checked_Temp& tmp1 = holder_tmp1.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp2; Checked_Temp& tmp2 = holder_tmp2.item(); -2441: return l_infinity_distance_assign(r, x, y, dir, tmp0, tmp1, tmp2); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: l_infinity_distance_assign(Checked_Number& r, -2441: const Generator& x, -2441: const Generator& y, -2441: const Rounding_Dir dir) { -2441: return l_infinity_distance_assign(r, x, y, dir); -2441: } -2441: -2441: -2441: inline void -2441: swap(Generator& x, Generator& y) { -2441: x.m_swap(y); -2441: } -2441: -2441: } -2441: # 1032 "../../src/Generator_defs.hh" 2 -2441: # 32 "../../src/Linear_Expression_Impl_templates.hh" 2 -2441: # 1 "../../src/Grid_Generator_defs.hh" 1 -2441: # 43 "../../src/Grid_Generator_defs.hh" -2441: namespace Parma_Polyhedra_Library { -2441: # 84 "../../src/Grid_Generator_defs.hh" -2441: int compare(const Grid_Generator& x, const Grid_Generator& y); -2441: -2441: namespace IO_Operators { -2441: -2441: -2441: -2441: std::ostream& operator<<(std::ostream& s, const Grid_Generator& g); -2441: -2441: } -2441: -2441: -2441: -2441: void swap(Grid_Generator& x, Grid_Generator& y); -2441: -2441: } -2441: # 271 "../../src/Grid_Generator_defs.hh" -2441: class Parma_Polyhedra_Library::Grid_Generator { -2441: public: -2441: -2441: -2441: enum Kind { -2441: LINE_OR_EQUALITY = 0, -2441: RAY_OR_POINT_OR_INEQUALITY = 1 -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: static const Representation default_representation = SPARSE; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: static Grid_Generator grid_line(const Linear_Expression& e, -2441: Representation r = default_representation); -2441: # 306 "../../src/Grid_Generator_defs.hh" -2441: static Grid_Generator parameter(const Linear_Expression& e -2441: = Linear_Expression::zero(), -2441: Coefficient_traits::const_reference d -2441: = Coefficient_one(), -2441: Representation r = default_representation); -2441: -2441: -2441: -2441: static Grid_Generator parameter(Representation r); -2441: -2441: -2441: static Grid_Generator parameter(const Linear_Expression& e, -2441: Representation r); -2441: # 328 "../../src/Grid_Generator_defs.hh" -2441: static Grid_Generator grid_point(const Linear_Expression& e -2441: = Linear_Expression::zero(), -2441: Coefficient_traits::const_reference d -2441: = Coefficient_one(), -2441: Representation r = default_representation); -2441: -2441: -2441: static Grid_Generator grid_point(Representation r); -2441: -2441: -2441: static Grid_Generator grid_point(const Linear_Expression& e, -2441: Representation r); -2441: -2441: -2441: explicit Grid_Generator(Representation r = default_representation); -2441: -2441: -2441: -2441: Grid_Generator(const Grid_Generator& g); -2441: -2441: -2441: Grid_Generator(const Grid_Generator& g, Representation r); -2441: -2441: -2441: -2441: Grid_Generator(const Grid_Generator& g, dimension_type space_dim); -2441: -2441: -2441: Grid_Generator(const Grid_Generator& g, dimension_type space_dim, -2441: Representation r); -2441: -2441: -2441: ~Grid_Generator(); -2441: -2441: -2441: Grid_Generator& operator=(const Grid_Generator& g); -2441: -2441: -2441: Representation representation() const; -2441: -2441: -2441: void set_representation(Representation r); -2441: -2441: -2441: static dimension_type max_space_dimension(); -2441: -2441: -2441: dimension_type space_dimension() const; -2441: -2441: -2441: -2441: void set_space_dimension(dimension_type space_dim); -2441: -2441: -2441: void swap_space_dimensions(Variable v1, Variable v2); -2441: # 393 "../../src/Grid_Generator_defs.hh" -2441: bool remove_space_dimensions(const Variables_Set& vars); -2441: # 407 "../../src/Grid_Generator_defs.hh" -2441: void permute_space_dimensions(const std::vector& cycle); -2441: -2441: -2441: -2441: void shift_space_dimensions(Variable v, dimension_type n); -2441: -2441: -2441: enum Type { -2441: -2441: LINE, -2441: -2441: PARAMETER, -2441: -2441: POINT -2441: }; -2441: -2441: -2441: Type type() const; -2441: -2441: -2441: bool is_line() const; -2441: -2441: -2441: bool is_parameter() const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_line_or_parameter() const; -2441: -2441: -2441: bool is_point() const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_parameter_or_point() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: Coefficient_traits::const_reference coefficient(Variable v) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: Coefficient_traits::const_reference divisor() const; -2441: -2441: -2441: static void initialize(); -2441: -2441: -2441: static void finalize(); -2441: -2441: -2441: static const Grid_Generator& zero_dim_point(); -2441: -2441: -2441: -2441: -2441: -2441: memory_size_type total_memory_in_bytes() const; -2441: -2441: -2441: memory_size_type external_memory_in_bytes() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool is_equivalent_to(const Grid_Generator& y) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool is_equal_to(const Grid_Generator& y) const; -2441: -2441: -2441: -2441: -2441: -2441: bool all_homogeneous_terms_are_zero() const; -2441: -2441: -2441: bool OK() const; -2441: -2441: void ascii_dump() const; void ascii_dump(std::ostream& s) const; void print() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool ascii_load(std::istream& s); -2441: -2441: -2441: void m_swap(Grid_Generator& y); -2441: # 524 "../../src/Grid_Generator_defs.hh" -2441: void scale_to_divisor(Coefficient_traits::const_reference d); -2441: -2441: -2441: -2441: -2441: -2441: -2441: void set_divisor(Coefficient_traits::const_reference d); -2441: -2441: -2441: typedef Expression_Hide_Last > -2441: expr_type; -2441: -2441: expr_type expression() const; -2441: -2441: private: -2441: Linear_Expression expr; -2441: -2441: Kind kind_; -2441: -2441: -2441: -2441: -2441: -2441: static const Grid_Generator* zero_dim_point_p; -2441: -2441: -2441: -2441: Grid_Generator(dimension_type space_dim, Kind kind, Topology topology, -2441: Representation r = default_representation); -2441: # 565 "../../src/Grid_Generator_defs.hh" -2441: Grid_Generator(Linear_Expression& e, Type t); -2441: # 574 "../../src/Grid_Generator_defs.hh" -2441: void set_space_dimension_no_ok(dimension_type space_dim); -2441: -2441: -2441: -2441: -2441: -2441: bool is_equal_at_dimension(dimension_type dim, -2441: const Grid_Generator& gg) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: void fancy_print(std::ostream& s) const; -2441: -2441: -2441: void set_is_parameter(); -2441: -2441: -2441: void set_is_line(); -2441: -2441: -2441: void set_is_parameter_or_point(); -2441: -2441: -2441: -2441: -2441: Topology topology() const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_not_necessarily_closed() const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_necessarily_closed() const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_line_or_equality() const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_ray_or_point_or_inequality() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: void set_topology(Topology x); -2441: -2441: -2441: void set_necessarily_closed(); -2441: -2441: -2441: void set_not_necessarily_closed(); -2441: -2441: -2441: void set_is_line_or_equality(); -2441: -2441: -2441: void set_is_ray_or_point_or_inequality(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: void sign_normalize(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void strong_normalize(); -2441: -2441: -2441: -2441: -2441: -2441: bool check_strong_normalized() const; -2441: # 680 "../../src/Grid_Generator_defs.hh" -2441: void linear_combine(const Grid_Generator& y, dimension_type i); -2441: -2441: -2441: -2441: -2441: -2441: void -2441: throw_dimension_incompatible(const char* method, -2441: const char* name_var, -2441: const Variable v) const; -2441: -2441: -2441: -2441: -2441: -2441: void -2441: throw_invalid_argument(const char* method, const char* reason) const; -2441: -2441: friend std::ostream& -2441: IO_Operators::operator<<(std::ostream& s, const Grid_Generator& g); -2441: -2441: friend int -2441: compare(const Grid_Generator& x, const Grid_Generator& y); -2441: -2441: friend class Expression_Adapter; -2441: friend class Grid_Generator_System; -2441: friend class Grid; -2441: friend class Linear_System; -2441: friend class Scalar_Products; -2441: friend class Topology_Adjusted_Scalar_Product_Sign; -2441: }; -2441: -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: Grid_Generator -2441: grid_line(const Linear_Expression& e, -2441: Representation r = Grid_Generator::default_representation); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: Grid_Generator -2441: parameter(const Linear_Expression& e = Linear_Expression::zero(), -2441: Coefficient_traits::const_reference d = Coefficient_one(), -2441: Representation r = Grid_Generator::default_representation); -2441: -2441: -2441: -2441: Grid_Generator -2441: parameter(Representation r); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: Grid_Generator -2441: parameter(const Linear_Expression& e, Representation r); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: Grid_Generator -2441: grid_point(const Linear_Expression& e = Linear_Expression::zero(), -2441: Coefficient_traits::const_reference d = Coefficient_one(), -2441: Representation r = Grid_Generator::default_representation); -2441: -2441: -2441: -2441: Grid_Generator -2441: grid_point(Representation r); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: Grid_Generator -2441: grid_point(const Linear_Expression& e, Representation r); -2441: -2441: -2441: -2441: bool operator==(const Grid_Generator& x, const Grid_Generator& y); -2441: -2441: -2441: -2441: bool operator!=(const Grid_Generator& x, const Grid_Generator& y); -2441: -2441: -2441: namespace IO_Operators { -2441: -2441: -2441: -2441: std::ostream& operator<<(std::ostream& s, const Grid_Generator::Type& t); -2441: -2441: } -2441: -2441: } -2441: -2441: # 1 "../../src/Grid_Generator_inlines.hh" 1 -2441: # 27 "../../src/Grid_Generator_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: inline bool -2441: Grid_Generator::is_necessarily_closed() const { -2441: return true; -2441: } -2441: -2441: inline bool -2441: Grid_Generator::is_not_necessarily_closed() const { -2441: return false; -2441: } -2441: -2441: inline bool -2441: Grid_Generator::is_line_or_equality() const { -2441: return (kind_ == LINE_OR_EQUALITY); -2441: } -2441: -2441: inline bool -2441: Grid_Generator::is_ray_or_point_or_inequality() const { -2441: return (kind_ == RAY_OR_POINT_OR_INEQUALITY); -2441: } -2441: -2441: inline Topology -2441: Grid_Generator::topology() const { -2441: return NECESSARILY_CLOSED; -2441: } -2441: -2441: inline void -2441: Grid_Generator::set_is_line_or_equality() { -2441: kind_ = LINE_OR_EQUALITY; -2441: } -2441: -2441: inline void -2441: Grid_Generator::set_is_ray_or_point_or_inequality() { -2441: kind_ = RAY_OR_POINT_OR_INEQUALITY; -2441: } -2441: -2441: inline void -2441: Grid_Generator::set_topology(Topology x) { -2441: (void)(x); -2441: ((void) 0); -2441: } -2441: -2441: inline void -2441: Grid_Generator::set_necessarily_closed() { -2441: set_topology(NECESSARILY_CLOSED); -2441: } -2441: -2441: inline void -2441: Grid_Generator::set_not_necessarily_closed() { -2441: set_topology(NOT_NECESSARILY_CLOSED); -2441: } -2441: -2441: inline -2441: Grid_Generator::Grid_Generator(Linear_Expression& e, Type type) { -2441: swap(expr, e); -2441: if (type == LINE) { -2441: kind_ = LINE_OR_EQUALITY; -2441: } -2441: else { -2441: kind_ = RAY_OR_POINT_OR_INEQUALITY; -2441: } -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: Grid_Generator::Grid_Generator(Representation r) -2441: : expr(Coefficient_one(), r), -2441: kind_(RAY_OR_POINT_OR_INEQUALITY) { -2441: expr.set_space_dimension(1); -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: Grid_Generator::Grid_Generator(const Grid_Generator& g) -2441: : expr(g.expr), -2441: kind_(g.kind_) { -2441: } -2441: -2441: inline -2441: Grid_Generator::Grid_Generator(const Grid_Generator& g, Representation r) -2441: : expr(g.expr, r), -2441: kind_(g.kind_) { -2441: } -2441: -2441: inline -2441: Grid_Generator::Grid_Generator(dimension_type space_dim, Kind kind, -2441: Topology topology, Representation r) -2441: : expr(r), -2441: kind_(kind) { -2441: (void)(topology); -2441: ((void) 0); -2441: expr.set_space_dimension(space_dim + 1); -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: Grid_Generator::Grid_Generator(const Grid_Generator& g, -2441: dimension_type space_dim) -2441: : expr(g.expr, space_dim + 1), -2441: kind_(g.kind_) { -2441: ((void) 0); -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: Grid_Generator::Grid_Generator(const Grid_Generator& g, -2441: dimension_type space_dim, Representation r) -2441: : expr(g.expr, space_dim + 1, r), -2441: kind_(g.kind_) { -2441: ((void) 0); -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: Grid_Generator::~Grid_Generator() { -2441: } -2441: -2441: inline Grid_Generator::expr_type -2441: Grid_Generator::expression() const { -2441: return expr_type(expr, true); -2441: } -2441: -2441: inline Representation -2441: Grid_Generator::representation() const { -2441: return expr.representation(); -2441: } -2441: -2441: inline void -2441: Grid_Generator::set_representation(Representation r) { -2441: expr.set_representation(r); -2441: } -2441: -2441: inline dimension_type -2441: Grid_Generator::max_space_dimension() { -2441: return Linear_Expression::max_space_dimension() - 1; -2441: } -2441: -2441: inline dimension_type -2441: Grid_Generator::space_dimension() const { -2441: return expression().space_dimension(); -2441: } -2441: -2441: inline void -2441: Grid_Generator::set_space_dimension(dimension_type space_dim) { -2441: const dimension_type old_space_dim = space_dimension(); -2441: if (space_dim > old_space_dim) { -2441: expr.set_space_dimension(space_dim + 1); -2441: expr.swap_space_dimensions(Variable(space_dim), Variable(old_space_dim)); -2441: } -2441: else { -2441: expr.swap_space_dimensions(Variable(space_dim), Variable(old_space_dim)); -2441: expr.set_space_dimension(space_dim + 1); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: inline void -2441: Grid_Generator::set_space_dimension_no_ok(dimension_type space_dim) { -2441: set_space_dimension(space_dim); -2441: } -2441: -2441: inline void -2441: Grid_Generator::shift_space_dimensions(Variable v, dimension_type n) { -2441: expr.shift_space_dimensions(v, n); -2441: } -2441: -2441: inline Grid_Generator::Type -2441: Grid_Generator::type() const { -2441: if (is_line()) { -2441: return LINE; -2441: } -2441: return is_point() ? POINT : PARAMETER; -2441: } -2441: -2441: inline bool -2441: Grid_Generator::is_line() const { -2441: return is_line_or_equality(); -2441: } -2441: -2441: inline bool -2441: Grid_Generator::is_parameter() const { -2441: return is_parameter_or_point() && is_line_or_parameter(); -2441: } -2441: -2441: inline bool -2441: Grid_Generator::is_line_or_parameter() const { -2441: return expr.inhomogeneous_term() == 0; -2441: } -2441: -2441: inline bool -2441: Grid_Generator::is_point() const { -2441: return !is_line_or_parameter(); -2441: } -2441: -2441: inline bool -2441: Grid_Generator::is_parameter_or_point() const { -2441: return is_ray_or_point_or_inequality(); -2441: } -2441: -2441: inline void -2441: Grid_Generator::set_divisor(Coefficient_traits::const_reference d) { -2441: ((void) 0); -2441: if (is_line_or_parameter()) { -2441: expr.set_coefficient(Variable(space_dimension()), d); -2441: } -2441: else { -2441: expr.set_inhomogeneous_term(d); -2441: } -2441: } -2441: -2441: inline Coefficient_traits::const_reference -2441: Grid_Generator::divisor() const { -2441: if (is_line()) { -2441: throw_invalid_argument("divisor()", "*this is a line"); -2441: } -2441: if (is_line_or_parameter()) { -2441: return expr.coefficient(Variable(space_dimension())); -2441: } -2441: else { -2441: return expr.inhomogeneous_term(); -2441: } -2441: } -2441: -2441: inline bool -2441: Grid_Generator::is_equal_at_dimension(dimension_type dim, -2441: const Grid_Generator& y) const { -2441: const Grid_Generator& x = *this; -2441: return x.expr.get(dim) * y.divisor() == y.expr.get(dim) * x.divisor(); -2441: } -2441: -2441: inline void -2441: Grid_Generator::set_is_line() { -2441: set_is_line_or_equality(); -2441: } -2441: -2441: inline void -2441: Grid_Generator::set_is_parameter_or_point() { -2441: set_is_ray_or_point_or_inequality(); -2441: } -2441: -2441: inline Grid_Generator& -2441: Grid_Generator::operator=(const Grid_Generator& g) { -2441: Grid_Generator tmp = g; -2441: swap(*this, tmp); -2441: -2441: return *this; -2441: } -2441: -2441: inline Coefficient_traits::const_reference -2441: Grid_Generator::coefficient(const Variable v) const { -2441: if (v.space_dimension() > space_dimension()) { -2441: throw_dimension_incompatible("coefficient(v)", "v", v); -2441: } -2441: return expr.coefficient(v); -2441: } -2441: -2441: inline memory_size_type -2441: Grid_Generator::total_memory_in_bytes() const { -2441: return sizeof(*this) + external_memory_in_bytes(); -2441: } -2441: -2441: inline memory_size_type -2441: Grid_Generator::external_memory_in_bytes() const { -2441: return expr.external_memory_in_bytes(); -2441: } -2441: -2441: inline const Grid_Generator& -2441: Grid_Generator::zero_dim_point() { -2441: ((void) 0); -2441: return *zero_dim_point_p; -2441: } -2441: -2441: inline void -2441: Grid_Generator::strong_normalize() { -2441: ((void) 0); -2441: expr.normalize(); -2441: sign_normalize(); -2441: } -2441: -2441: inline void -2441: Grid_Generator::m_swap(Grid_Generator& y) { -2441: using std::swap; -2441: swap(expr, y.expr); -2441: swap(kind_, y.kind_); -2441: } -2441: -2441: -2441: inline bool -2441: operator==(const Grid_Generator& x, const Grid_Generator& y) { -2441: return x.is_equivalent_to(y); -2441: } -2441: -2441: -2441: inline bool -2441: operator!=(const Grid_Generator& x, const Grid_Generator& y) { -2441: return !(x == y); -2441: } -2441: -2441: -2441: inline Grid_Generator -2441: grid_line(const Linear_Expression& e, Representation r) { -2441: return Grid_Generator::grid_line(e, r); -2441: } -2441: -2441: -2441: inline Grid_Generator -2441: parameter(const Linear_Expression& e, -2441: Coefficient_traits::const_reference d, Representation r) { -2441: return Grid_Generator::parameter(e, d, r); -2441: } -2441: -2441: -2441: inline Grid_Generator -2441: parameter(Representation r) { -2441: return Grid_Generator::parameter(r); -2441: } -2441: -2441: -2441: inline Grid_Generator -2441: parameter(const Linear_Expression& e, Representation r) { -2441: return Grid_Generator::parameter(e, r); -2441: } -2441: -2441: -2441: inline Grid_Generator -2441: grid_point(const Linear_Expression& e, -2441: Coefficient_traits::const_reference d, Representation r) { -2441: return Grid_Generator::grid_point(e, d, r); -2441: } -2441: -2441: -2441: inline Grid_Generator -2441: grid_point(Representation r) { -2441: return Grid_Generator::grid_point(r); -2441: } -2441: -2441: -2441: inline Grid_Generator -2441: grid_point(const Linear_Expression& e, Representation r) { -2441: return Grid_Generator::grid_point(e, r); -2441: } -2441: -2441: -2441: inline void -2441: swap(Grid_Generator& x, Grid_Generator& y) { -2441: x.m_swap(y); -2441: } -2441: -2441: } -2441: # 795 "../../src/Grid_Generator_defs.hh" 2 -2441: # 33 "../../src/Linear_Expression_Impl_templates.hh" 2 -2441: # 1 "../../src/Congruence_defs.hh" 1 -2441: # 42 "../../src/Congruence_defs.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: bool -2441: operator==(const Congruence& x, const Congruence& y); -2441: -2441: -2441: -2441: bool -2441: operator!=(const Congruence& x, const Congruence& y); -2441: -2441: } -2441: # 161 "../../src/Congruence_defs.hh" -2441: class Parma_Polyhedra_Library::Congruence { -2441: public: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: static const Representation default_representation = SPARSE; -2441: -2441: -2441: explicit Congruence(Representation r = default_representation); -2441: -2441: -2441: -2441: -2441: -2441: -2441: Congruence(const Congruence& cg); -2441: -2441: -2441: Congruence(const Congruence& cg, Representation r); -2441: -2441: -2441: -2441: -2441: -2441: -2441: explicit Congruence(const Constraint& c, -2441: Representation r = default_representation); -2441: -2441: -2441: ~Congruence(); -2441: -2441: -2441: Congruence& operator=(const Congruence& y); -2441: -2441: -2441: Representation representation() const; -2441: -2441: -2441: void set_representation(Representation r); -2441: -2441: -2441: static dimension_type max_space_dimension(); -2441: -2441: -2441: dimension_type space_dimension() const; -2441: -2441: void permute_space_dimensions(const std::vector& cycles); -2441: -2441: -2441: typedef Expression_Adapter_Transparent expr_type; -2441: -2441: expr_type expression() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: Coefficient_traits::const_reference coefficient(Variable v) const; -2441: -2441: -2441: Coefficient_traits::const_reference inhomogeneous_term() const; -2441: -2441: -2441: Coefficient_traits::const_reference modulus() const; -2441: -2441: -2441: -2441: void set_modulus(Coefficient_traits::const_reference m); -2441: -2441: -2441: void scale(Coefficient_traits::const_reference factor); -2441: -2441: -2441: void affine_preimage(Variable v, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference denominator); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: Congruence& -2441: operator/=(Coefficient_traits::const_reference k); -2441: # 261 "../../src/Congruence_defs.hh" -2441: bool is_tautological() const; -2441: # 273 "../../src/Congruence_defs.hh" -2441: bool is_inconsistent() const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_proper_congruence() const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_equality() const; -2441: -2441: -2441: static void initialize(); -2441: -2441: -2441: static void finalize(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: static const Congruence& zero_dim_integrality(); -2441: -2441: -2441: -2441: -2441: -2441: static const Congruence& zero_dim_false(); -2441: -2441: -2441: static Congruence -2441: create(const Linear_Expression& e1, const Linear_Expression& e2, -2441: Representation r = default_representation); -2441: -2441: -2441: static Congruence -2441: create(const Linear_Expression& e, Coefficient_traits::const_reference n, -2441: Representation r = default_representation); -2441: -2441: -2441: static Congruence -2441: create(Coefficient_traits::const_reference n, const Linear_Expression& e, -2441: Representation r = default_representation); -2441: -2441: -2441: -2441: -2441: -2441: memory_size_type total_memory_in_bytes() const; -2441: -2441: -2441: memory_size_type external_memory_in_bytes() const; -2441: -2441: -2441: bool OK() const; -2441: -2441: void ascii_dump() const; void ascii_dump(std::ostream& s) const; void print() const; -2441: -2441: -2441: -2441: -2441: -2441: bool ascii_load(std::istream& s); -2441: -2441: -2441: void m_swap(Congruence& y); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: Congruence(const Congruence& cg, dimension_type new_space_dimension); -2441: -2441: -2441: Congruence(const Congruence& cg, dimension_type new_space_dimension, -2441: Representation r); -2441: -2441: -2441: -2441: Congruence(const Constraint& cg, dimension_type new_space_dimension, -2441: Representation r = default_representation); -2441: # 374 "../../src/Congruence_defs.hh" -2441: Congruence(Linear_Expression& le, -2441: Coefficient_traits::const_reference m, Recycle_Input); -2441: -2441: -2441: void swap_space_dimensions(Variable v1, Variable v2); -2441: -2441: -2441: -2441: void set_space_dimension(dimension_type n); -2441: -2441: -2441: -2441: void shift_space_dimensions(Variable v, dimension_type n); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void sign_normalize(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: void normalize(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: void strong_normalize(); -2441: -2441: private: -2441: -2441: -2441: -2441: -2441: static const Congruence* zero_dim_false_p; -2441: -2441: -2441: -2441: -2441: -2441: -2441: static const Congruence* zero_dim_integrality_p; -2441: -2441: Linear_Expression expr; -2441: -2441: Coefficient modulus_; -2441: -2441: -2441: -2441: -2441: -2441: bool is_equal_at_dimension(Variable v, -2441: const Congruence& cg) const; -2441: -2441: -2441: -2441: -2441: -2441: void -2441: throw_invalid_argument(const char* method, const char* message) const; -2441: -2441: -2441: -2441: -2441: -2441: void -2441: throw_dimension_incompatible(const char* method, -2441: const char* v_name, -2441: Variable v) const; -2441: -2441: friend bool -2441: operator==(const Congruence& x, const Congruence& y); -2441: -2441: friend bool -2441: operator!=(const Congruence& x, const Congruence& y); -2441: -2441: friend class Scalar_Products; -2441: friend class Grid; -2441: }; -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: namespace IO_Operators { -2441: -2441: -2441: -2441: -2441: std::ostream& -2441: operator<<(std::ostream& s, const Congruence& c); -2441: -2441: } -2441: -2441: -2441: -2441: Congruence -2441: operator%=(const Linear_Expression& e1, const Linear_Expression& e2); -2441: -2441: -2441: -2441: Congruence -2441: operator%=(const Linear_Expression& e, Coefficient_traits::const_reference n); -2441: # 490 "../../src/Congruence_defs.hh" -2441: Congruence -2441: operator/(const Congruence& cg, Coefficient_traits::const_reference k); -2441: -2441: -2441: -2441: Congruence -2441: operator/(const Constraint& c, Coefficient_traits::const_reference m); -2441: -2441: -2441: void -2441: swap(Congruence& x, Congruence& y); -2441: -2441: } -2441: -2441: # 1 "../../src/Congruence_inlines.hh" 1 -2441: # 29 "../../src/Congruence_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: inline -2441: Congruence::Congruence(Representation r) -2441: : expr(r) { -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: Congruence::Congruence(const Congruence& cg) -2441: : expr(cg.expr), modulus_(cg.modulus_) { -2441: } -2441: -2441: inline -2441: Congruence::Congruence(const Congruence& cg, Representation r) -2441: : expr(cg.expr, r), modulus_(cg.modulus_) { -2441: } -2441: -2441: inline -2441: Congruence::Congruence(const Congruence& cg, -2441: dimension_type new_space_dimension) -2441: : expr(cg.expr, new_space_dimension), modulus_(cg.modulus_) { -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: Congruence::Congruence(const Congruence& cg, -2441: dimension_type new_space_dimension, -2441: Representation r) -2441: : expr(cg.expr, new_space_dimension, r), modulus_(cg.modulus_) { -2441: ((void) 0); -2441: } -2441: -2441: inline Representation -2441: Congruence::representation() const { -2441: return expr.representation(); -2441: } -2441: -2441: inline void -2441: Congruence::set_representation(Representation r) { -2441: expr.set_representation(r); -2441: } -2441: -2441: inline Congruence::expr_type -2441: Congruence::expression() const { -2441: return expr_type(expr); -2441: } -2441: -2441: inline void -2441: Congruence::set_space_dimension(dimension_type n) { -2441: expr.set_space_dimension(n); -2441: ((void) 0); -2441: } -2441: -2441: inline void -2441: Congruence::shift_space_dimensions(Variable v, dimension_type n) { -2441: expr.shift_space_dimensions(v, n); -2441: } -2441: -2441: inline -2441: Congruence::~Congruence() { -2441: } -2441: -2441: inline -2441: Congruence::Congruence(Linear_Expression& le, -2441: Coefficient_traits::const_reference m, -2441: Recycle_Input) -2441: : modulus_(m) { -2441: ((void) 0); -2441: swap(expr, le); -2441: -2441: ((void) 0); -2441: } -2441: -2441: inline Congruence -2441: Congruence::create(const Linear_Expression& e, -2441: Coefficient_traits::const_reference n, -2441: Representation r) { -2441: Linear_Expression diff(e, r); -2441: diff -= n; -2441: const Congruence cg(diff, 1, Recycle_Input()); -2441: return cg; -2441: } -2441: -2441: inline Congruence -2441: Congruence::create(Coefficient_traits::const_reference n, -2441: const Linear_Expression& e, -2441: Representation r) { -2441: Linear_Expression diff(e, r); -2441: diff -= n; -2441: const Congruence cg(diff, 1, Recycle_Input()); -2441: return cg; -2441: } -2441: -2441: -2441: inline Congruence -2441: operator%=(const Linear_Expression& e1, const Linear_Expression& e2) { -2441: return Congruence::create(e1, e2); -2441: } -2441: -2441: -2441: inline Congruence -2441: operator%=(const Linear_Expression& e, Coefficient_traits::const_reference n) { -2441: return Congruence::create(e, n); -2441: } -2441: -2441: -2441: inline Congruence -2441: operator/(const Congruence& cg, Coefficient_traits::const_reference k) { -2441: Congruence ret = cg; -2441: ret /= k; -2441: return ret; -2441: } -2441: -2441: inline const Congruence& -2441: Congruence::zero_dim_integrality() { -2441: return *zero_dim_integrality_p; -2441: } -2441: -2441: inline const Congruence& -2441: Congruence::zero_dim_false() { -2441: return *zero_dim_false_p; -2441: } -2441: -2441: inline Congruence& -2441: Congruence::operator=(const Congruence& y) { -2441: Congruence tmp = y; -2441: swap(*this, tmp); -2441: return *this; -2441: } -2441: -2441: -2441: inline Congruence -2441: operator/(const Constraint& c, Coefficient_traits::const_reference m) { -2441: Congruence ret(c); -2441: ret /= m; -2441: return ret; -2441: } -2441: -2441: inline Congruence& -2441: Congruence::operator/=(Coefficient_traits::const_reference k) { -2441: if (k >= 0) { -2441: modulus_ *= k; -2441: } -2441: else { -2441: modulus_ *= -k; -2441: } -2441: return *this; -2441: } -2441: -2441: -2441: inline bool -2441: operator==(const Congruence& x, const Congruence& y) { -2441: if (x.space_dimension() != y.space_dimension()) { -2441: return false; -2441: } -2441: Congruence x_temp(x); -2441: Congruence y_temp(y); -2441: x_temp.strong_normalize(); -2441: y_temp.strong_normalize(); -2441: return x_temp.expr.is_equal_to(y_temp.expr) -2441: && x_temp.modulus() == y_temp.modulus(); -2441: } -2441: -2441: -2441: inline bool -2441: operator!=(const Congruence& x, const Congruence& y) { -2441: return !(x == y); -2441: } -2441: -2441: inline dimension_type -2441: Congruence::max_space_dimension() { -2441: return Linear_Expression::max_space_dimension(); -2441: } -2441: -2441: inline dimension_type -2441: Congruence::space_dimension() const { -2441: return expr.space_dimension(); -2441: } -2441: -2441: inline Coefficient_traits::const_reference -2441: Congruence::coefficient(const Variable v) const { -2441: if (v.space_dimension() > space_dimension()) { -2441: throw_dimension_incompatible("coefficient(v)", "v", v); -2441: } -2441: return expr.coefficient(v); -2441: } -2441: -2441: inline void -2441: Congruence::permute_space_dimensions(const std::vector& cycles) { -2441: expr.permute_space_dimensions(cycles); -2441: } -2441: -2441: inline Coefficient_traits::const_reference -2441: Congruence::inhomogeneous_term() const { -2441: return expr.inhomogeneous_term(); -2441: } -2441: -2441: inline Coefficient_traits::const_reference -2441: Congruence::modulus() const { -2441: return modulus_; -2441: } -2441: -2441: inline void -2441: Congruence::set_modulus(Coefficient_traits::const_reference m) { -2441: modulus_ = m; -2441: ((void) 0); -2441: } -2441: -2441: inline bool -2441: Congruence::is_proper_congruence() const { -2441: return modulus() > 0; -2441: } -2441: -2441: inline bool -2441: Congruence::is_equality() const { -2441: return modulus() == 0; -2441: } -2441: -2441: inline bool -2441: Congruence::is_equal_at_dimension(Variable v, -2441: const Congruence& cg) const { -2441: return coefficient(v) * cg.modulus() == cg.coefficient(v) * modulus(); -2441: } -2441: -2441: inline memory_size_type -2441: Congruence::external_memory_in_bytes() const { -2441: return expr.external_memory_in_bytes() -2441: + Parma_Polyhedra_Library::external_memory_in_bytes(modulus_); -2441: } -2441: -2441: inline memory_size_type -2441: Congruence::total_memory_in_bytes() const { -2441: return external_memory_in_bytes() + sizeof(*this); -2441: } -2441: -2441: inline void -2441: Congruence::m_swap(Congruence& y) { -2441: using std::swap; -2441: swap(expr, y.expr); -2441: swap(modulus_, y.modulus_); -2441: } -2441: -2441: inline void -2441: Congruence::swap_space_dimensions(Variable v1, Variable v2) { -2441: expr.swap_space_dimensions(v1, v2); -2441: } -2441: -2441: -2441: inline void -2441: swap(Congruence& x, Congruence& y) { -2441: x.m_swap(y); -2441: } -2441: -2441: } -2441: # 505 "../../src/Congruence_defs.hh" 2 -2441: # 34 "../../src/Linear_Expression_Impl_templates.hh" 2 -2441: -2441: -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: Linear_Expression_Impl -2441: ::Linear_Expression_Impl(const Linear_Expression_Impl& e) { -2441: construct(e); -2441: } -2441: -2441: template -2441: template -2441: Linear_Expression_Impl -2441: ::Linear_Expression_Impl(const Linear_Expression_Impl& e) { -2441: construct(e); -2441: } -2441: -2441: template -2441: Linear_Expression_Impl -2441: ::Linear_Expression_Impl(const Linear_Expression_Interface& e) { -2441: typedef const Linear_Expression_Impl* Dense_Ptr; -2441: typedef const Linear_Expression_Impl* Sparse_Ptr; -2441: if (const Dense_Ptr p = dynamic_cast(&e)) { -2441: construct(*p); -2441: } -2441: else if (const Sparse_Ptr p = dynamic_cast(&e)) { -2441: construct(*p); -2441: } -2441: else { -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: } -2441: } -2441: -2441: template -2441: Linear_Expression_Impl -2441: ::Linear_Expression_Impl(const Linear_Expression_Interface& e, -2441: dimension_type space_dim) { -2441: typedef const Linear_Expression_Impl* Dense_Ptr; -2441: typedef const Linear_Expression_Impl* Sparse_Ptr; -2441: if (const Dense_Ptr p = dynamic_cast(&e)) { -2441: construct(*p, space_dim); -2441: } -2441: else if (const Sparse_Ptr p = dynamic_cast(&e)) { -2441: construct(*p, space_dim); -2441: } -2441: else { -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: } -2441: } -2441: -2441: template -2441: template -2441: void -2441: Linear_Expression_Impl -2441: ::linear_combine(const Linear_Expression_Impl& y, Variable i) { -2441: ((void) 0); -2441: ((void) 0); -2441: linear_combine(y, i.space_dimension()); -2441: } -2441: -2441: template -2441: template -2441: void -2441: Linear_Expression_Impl -2441: ::linear_combine(const Linear_Expression_Impl& y, dimension_type i) { -2441: const Linear_Expression_Impl& x = *this; -2441: ((void) 0); -2441: ((void) 0); -2441: Coefficient_traits::const_reference x_i = x.row.get(i); -2441: Coefficient_traits::const_reference y_i = y.row.get(i); -2441: ((void) 0); -2441: ((void) 0); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_normalized_x_v; Parma_Polyhedra_Library::Coefficient& normalized_x_v = holder_normalized_x_v.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_normalized_y_v; Parma_Polyhedra_Library::Coefficient& normalized_y_v = holder_normalized_y_v.item(); -2441: normalize2(x_i, y_i, normalized_x_v, normalized_y_v); -2441: neg_assign(normalized_x_v); -2441: linear_combine(y, normalized_y_v, normalized_x_v); -2441: -2441: -2441: -2441: # 116 "../../src/Linear_Expression_Impl_templates.hh" 3 4 -2441: (static_cast (0)) -2441: # 116 "../../src/Linear_Expression_Impl_templates.hh" -2441: ; -2441: ((void) 0); -2441: } -2441: -2441: template -2441: template -2441: void -2441: Linear_Expression_Impl -2441: ::linear_combine(const Linear_Expression_Impl& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2) { -2441: ((void) 0); -2441: ((void) 0); -2441: if (space_dimension() < y.space_dimension()) { -2441: set_space_dimension(y.space_dimension()); -2441: } -2441: linear_combine(y, c1, c2, 0, y.space_dimension() + 1); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: template -2441: void -2441: Linear_Expression_Impl -2441: ::linear_combine_lax(const Linear_Expression_Impl& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2) { -2441: if (space_dimension() < y.space_dimension()) { -2441: set_space_dimension(y.space_dimension()); -2441: } -2441: linear_combine_lax(y, c1, c2, 0, y.space_dimension() + 1); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: template -2441: int -2441: Linear_Expression_Impl -2441: ::compare(const Linear_Expression_Impl& y) const { -2441: const Linear_Expression_Impl& x = *this; -2441: -2441: -2441: typename Row::const_iterator i = x.row.lower_bound(1); -2441: typename Row::const_iterator i_end = x.row.end(); -2441: typename Row2::const_iterator j = y.row.lower_bound(1); -2441: typename Row2::const_iterator j_end = y.row.end(); -2441: while (i != i_end && j != j_end) { -2441: if (i.index() < j.index()) { -2441: const int s = sgn(*i); -2441: if (s != 0) { -2441: return 2*s; -2441: } -2441: ++i; -2441: continue; -2441: } -2441: if (i.index() > j.index()) { -2441: const int s = sgn(*j); -2441: if (s != 0) { -2441: return -2*s; -2441: } -2441: ++j; -2441: continue; -2441: } -2441: ((void) 0); -2441: const int s = cmp(*i, *j); -2441: if (s < 0) { -2441: return -2; -2441: } -2441: if (s > 0) { -2441: return 2; -2441: } -2441: ((void) 0); -2441: ++i; -2441: ++j; -2441: } -2441: for ( ; i != i_end; ++i) { -2441: const int s = sgn(*i); -2441: if (s != 0) { -2441: return 2*s; -2441: } -2441: } -2441: for ( ; j != j_end; ++j) { -2441: const int s = sgn(*j); -2441: if (s != 0) { -2441: return -2*s; -2441: } -2441: } -2441: -2441: -2441: -2441: -2441: const int comp = cmp(x.row.get(0), y.row.get(0)); -2441: if (comp > 0) { -2441: return 1; -2441: } -2441: if (comp < 0) { -2441: return -1; -2441: } -2441: ((void) 0); -2441: -2441: -2441: return 0; -2441: } -2441: -2441: template -2441: Linear_Expression_Impl::Linear_Expression_Impl(const Variable v) { -2441: if (v.space_dimension() > max_space_dimension()) { -2441: throw std::length_error("Linear_Expression_Impl::" -2441: "Linear_Expression_Impl(v):\n" -2441: "v exceeds the maximum allowed " -2441: "space dimension."); -2441: } -2441: set_space_dimension(v.space_dimension()); -2441: (*this) += v; -2441: ((void) 0); -2441: } -2441: -2441: template -2441: template -2441: bool -2441: Linear_Expression_Impl -2441: ::is_equal_to(const Linear_Expression_Impl& x) const { -2441: return row == x.row; -2441: } -2441: -2441: template -2441: void -2441: Linear_Expression_Impl::get_row(Dense_Row& r) const { -2441: r = this->row; -2441: } -2441: -2441: template -2441: void -2441: Linear_Expression_Impl::get_row(Sparse_Row& r) const { -2441: r = this->row; -2441: } -2441: -2441: template -2441: void -2441: Linear_Expression_Impl -2441: ::permute_space_dimensions(const std::vector& cycle) { -2441: const dimension_type n = cycle.size(); -2441: if (n < 2) { -2441: return; -2441: } -2441: -2441: if (n == 2) { -2441: row.swap_coefficients(cycle[0].space_dimension(), -2441: cycle[1].space_dimension()); -2441: } -2441: else { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp; Parma_Polyhedra_Library::Coefficient& tmp = holder_tmp.item(); -2441: tmp = row.get(cycle.back().space_dimension()); -2441: for (dimension_type i = n - 1; i-- > 0; ) { -2441: row.swap_coefficients(cycle[i + 1].space_dimension(), -2441: cycle[i].space_dimension()); -2441: } -2441: if (tmp == 0) { -2441: row.reset(cycle[0].space_dimension()); -2441: } -2441: else { -2441: using std::swap; -2441: swap(tmp, row[cycle[0].space_dimension()]); -2441: } -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: template -2441: Linear_Expression_Impl& -2441: Linear_Expression_Impl::operator+=(const Linear_Expression_Impl& e) { -2441: linear_combine(e, Coefficient_one(), Coefficient_one()); -2441: return *this; -2441: } -2441: -2441: -2441: template -2441: Linear_Expression_Impl& -2441: Linear_Expression_Impl::operator+=(const Variable v) { -2441: const dimension_type v_space_dim = v.space_dimension(); -2441: if (v_space_dim > Linear_Expression_Impl::max_space_dimension()) { -2441: throw std::length_error("Linear_Expression_Impl& " -2441: "operator+=(e, v):\n" -2441: "v exceeds the maximum allowed space dimension."); -2441: } -2441: if (space_dimension() < v_space_dim) { -2441: set_space_dimension(v_space_dim); -2441: } -2441: typename Row::iterator itr = row.insert(v_space_dim); -2441: ++(*itr); -2441: if (*itr == 0) { -2441: row.reset(itr); -2441: } -2441: ((void) 0); -2441: return *this; -2441: } -2441: -2441: -2441: template -2441: template -2441: Linear_Expression_Impl& -2441: Linear_Expression_Impl::operator-=(const Linear_Expression_Impl& e2) { -2441: linear_combine(e2, Coefficient_one(), -1); -2441: return *this; -2441: } -2441: -2441: -2441: template -2441: Linear_Expression_Impl& -2441: Linear_Expression_Impl::operator-=(const Variable v) { -2441: const dimension_type v_space_dim = v.space_dimension(); -2441: if (v_space_dim > Linear_Expression_Impl::max_space_dimension()) { -2441: throw std::length_error("Linear_Expression_Impl& " -2441: "operator-=(e, v):\n" -2441: "v exceeds the maximum allowed space dimension."); -2441: } -2441: if (space_dimension() < v_space_dim) { -2441: set_space_dimension(v_space_dim); -2441: } -2441: typename Row::iterator itr = row.insert(v_space_dim); -2441: --(*itr); -2441: if (*itr == 0) { -2441: row.reset(itr); -2441: } -2441: ((void) 0); -2441: return *this; -2441: } -2441: -2441: -2441: template -2441: Linear_Expression_Impl& -2441: Linear_Expression_Impl::operator*=(Coefficient_traits::const_reference n) { -2441: if (n == 0) { -2441: row.clear(); -2441: ((void) 0); -2441: return *this; -2441: } -2441: for (typename Row::iterator i = row.begin(), -2441: i_end = row.end(); i != i_end; ++i) { -2441: (*i) *= n; -2441: } -2441: ((void) 0); -2441: return *this; -2441: } -2441: -2441: -2441: template -2441: Linear_Expression_Impl& -2441: Linear_Expression_Impl::operator/=(Coefficient_traits::const_reference n) { -2441: typename Row::iterator i = row.begin(); -2441: const typename Row::iterator& i_end = row.end(); -2441: while (i != i_end) { -2441: (*i) /= n; -2441: if (*i == 0) { -2441: i = row.reset(i); -2441: } -2441: else { -2441: ++i; -2441: } -2441: } -2441: ((void) 0); -2441: return *this; -2441: } -2441: -2441: -2441: template -2441: void -2441: Linear_Expression_Impl::negate() { -2441: for (typename Row::iterator i = row.begin(), -2441: i_end = row.end(); i != i_end; ++i) { -2441: neg_assign(*i); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: -2441: template -2441: Linear_Expression_Impl& -2441: Linear_Expression_Impl::add_mul_assign(Coefficient_traits::const_reference n, -2441: const Variable v) { -2441: const dimension_type v_space_dim = v.space_dimension(); -2441: if (v_space_dim > Linear_Expression_Impl::max_space_dimension()) { -2441: throw std::length_error("Linear_Expression_Impl& " -2441: "add_mul_assign(e, n, v):\n" -2441: "v exceeds the maximum allowed space dimension."); -2441: } -2441: if (space_dimension() < v_space_dim) { -2441: set_space_dimension(v_space_dim); -2441: } -2441: if (n == 0) { -2441: return *this; -2441: } -2441: typename Row::iterator itr = row.insert(v_space_dim); -2441: (*itr) += n; -2441: if (*itr == 0) { -2441: row.reset(itr); -2441: } -2441: ((void) 0); -2441: return *this; -2441: } -2441: -2441: -2441: template -2441: Linear_Expression_Impl& -2441: Linear_Expression_Impl -2441: ::sub_mul_assign(Coefficient_traits::const_reference n, -2441: const Variable v) { -2441: const dimension_type v_space_dim = v.space_dimension(); -2441: if (v_space_dim > Linear_Expression_Impl::max_space_dimension()) { -2441: throw std::length_error("Linear_Expression_Impl& " -2441: "sub_mul_assign(e, n, v):\n" -2441: "v exceeds the maximum allowed space dimension."); -2441: } -2441: if (space_dimension() < v_space_dim) { -2441: set_space_dimension(v_space_dim); -2441: } -2441: if (n == 0) { -2441: return *this; -2441: } -2441: typename Row::iterator itr = row.insert(v_space_dim); -2441: (*itr) -= n; -2441: if (*itr == 0) { -2441: row.reset(itr); -2441: } -2441: ((void) 0); -2441: return *this; -2441: } -2441: -2441: template -2441: template -2441: void -2441: Linear_Expression_Impl -2441: ::add_mul_assign(Coefficient_traits::const_reference factor, -2441: const Linear_Expression_Impl& y) { -2441: if (factor != 0) { -2441: linear_combine(y, Coefficient_one(), factor); -2441: } -2441: } -2441: -2441: template -2441: template -2441: void -2441: Linear_Expression_Impl -2441: ::sub_mul_assign(Coefficient_traits::const_reference factor, -2441: const Linear_Expression_Impl& y) { -2441: if (factor != 0) { -2441: linear_combine(y, Coefficient_one(), -factor); -2441: } -2441: } -2441: -2441: template -2441: void -2441: Linear_Expression_Impl::print(std::ostream& s) const { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_ev; Parma_Polyhedra_Library::Coefficient& ev = holder_ev.item(); -2441: bool first = true; -2441: for (typename Row::const_iterator i = row.lower_bound(1), i_end = row.end(); -2441: i != i_end; ++i) { -2441: ev = *i; -2441: if (ev == 0) { -2441: continue; -2441: } -2441: if (!first) { -2441: if (ev > 0) { -2441: s << " + "; -2441: } -2441: else { -2441: s << " - "; -2441: neg_assign(ev); -2441: } -2441: } -2441: else { -2441: first = false; -2441: } -2441: if (ev == -1) { -2441: s << "-"; -2441: } -2441: else if (ev != 1) { -2441: s << ev << "*"; -2441: } -2441: IO_Operators::operator<<(s, Variable(i.index() - 1)); -2441: } -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_it; Parma_Polyhedra_Library::Coefficient& it = holder_it.item(); -2441: it = row[0]; -2441: if (it != 0) { -2441: if (!first) { -2441: if (it > 0) { -2441: s << " + "; -2441: } -2441: else { -2441: s << " - "; -2441: neg_assign(it); -2441: } -2441: } -2441: else { -2441: first = false; -2441: } -2441: s << it; -2441: } -2441: -2441: if (first) { -2441: -2441: s << Coefficient_zero(); -2441: } -2441: } -2441: -2441: template -2441: Coefficient_traits::const_reference -2441: Linear_Expression_Impl::get(dimension_type i) const { -2441: return row.get(i); -2441: } -2441: -2441: template -2441: void -2441: Linear_Expression_Impl -2441: ::set(dimension_type i, Coefficient_traits::const_reference n) { -2441: if (n == 0) { -2441: row.reset(i); -2441: } -2441: else { -2441: row.insert(i, n); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Linear_Expression_Impl -2441: ::exact_div_assign(Coefficient_traits::const_reference c, -2441: dimension_type start, dimension_type end) { -2441: -2441: -2441: -2441: for (typename Row::iterator i = row.lower_bound(start), -2441: i_end = row.lower_bound(end); i != i_end; ++i) { -2441: Parma_Polyhedra_Library::exact_div_assign(*i, *i, c); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Linear_Expression_Impl -2441: ::mul_assign(Coefficient_traits::const_reference c, -2441: dimension_type start, dimension_type end) { -2441: if (c == 0) { -2441: typename Row::iterator i = row.lower_bound(start); -2441: const typename Row::iterator& i_end = row.end(); -2441: while (i != i_end && i.index() < end) { -2441: i = row.reset(i); -2441: } -2441: } -2441: else { -2441: for (typename Row::iterator -2441: i = row.lower_bound(start), i_end = row.lower_bound(end); -2441: i != i_end; ++i) { -2441: (*i) *= c; -2441: } -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: template -2441: void -2441: Linear_Expression_Impl -2441: ::linear_combine(const Linear_Expression_Impl& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2, -2441: dimension_type start, dimension_type end) { -2441: Parma_Polyhedra_Library::linear_combine(row, y.row, c1, c2, start, end); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: template -2441: void -2441: Linear_Expression_Impl -2441: ::linear_combine_lax(const Linear_Expression_Impl& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2, -2441: dimension_type start, dimension_type end) { -2441: ((void) 0); -2441: ((void) 0); -2441: ((void) 0); -2441: if (c1 == 0) { -2441: if (c2 == 0) { -2441: ((void) 0); -2441: ((void) 0); -2441: typename Row::iterator i = row.lower_bound(start); -2441: const typename Row::iterator& i_end = row.end(); -2441: while (i != i_end && i.index() < end) { -2441: i = row.reset(i); -2441: } -2441: } -2441: else { -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: typename Row::iterator i = row.lower_bound(start); -2441: const typename Row::iterator& i_end = row.end(); -2441: typename Row2::const_iterator j = y.row.lower_bound(start); -2441: typename Row2::const_iterator j_last = y.row.lower_bound(end); -2441: -2441: while (i != i_end && i.index() < end && j != j_last) { -2441: if (i.index() < j.index()) { -2441: i = row.reset(i); -2441: continue; -2441: } -2441: if (i.index() > j.index()) { -2441: i = row.insert(i, j.index(), *j); -2441: (*i) *= c2; -2441: ++i; -2441: ++j; -2441: continue; -2441: } -2441: ((void) 0); -2441: (*i) = (*j); -2441: (*i) *= c2; -2441: ++i; -2441: ++j; -2441: } -2441: while (i != i_end && i.index() < end) { -2441: i = row.reset(i); -2441: } -2441: while (j != j_last) { -2441: i = row.insert(i, j.index(), *j); -2441: (*i) *= c2; -2441: -2441: ++j; -2441: } -2441: } -2441: } -2441: else { -2441: if (c2 == 0) { -2441: ((void) 0); -2441: ((void) 0); -2441: for (typename Row::iterator i = row.lower_bound(start), -2441: i_end = row.lower_bound(end); i != i_end; ++i) { -2441: (*i) *= c1; -2441: } -2441: } -2441: else { -2441: ((void) 0); -2441: ((void) 0); -2441: Parma_Polyhedra_Library::linear_combine(row, y.row, c1, c2, start, end); -2441: } -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Linear_Expression_Impl::sign_normalize() { -2441: typename Row::iterator i = row.lower_bound(1); -2441: typename Row::iterator i_end = row.end(); -2441: -2441: for ( ; i != i_end; ++i) { -2441: if (*i != 0) { -2441: break; -2441: } -2441: } -2441: -2441: if (i != i_end && *i < 0) { -2441: for ( ; i != i_end; ++i) { -2441: neg_assign(*i); -2441: } -2441: -2441: typename Row::iterator first = row.begin(); -2441: if (first != row.end() && first.index() == 0) { -2441: neg_assign(*first); -2441: } -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Linear_Expression_Impl::negate(dimension_type first, dimension_type last) { -2441: ((void) 0); -2441: ((void) 0); -2441: typename Row::iterator i = row.lower_bound(first); -2441: typename Row::iterator i_end = row.lower_bound(last); -2441: for ( ; i != i_end; ++i) { -2441: neg_assign(*i); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: template -2441: void -2441: Linear_Expression_Impl::construct(const Linear_Expression_Impl& e) { -2441: row = e.row; -2441: ((void) 0); -2441: } -2441: -2441: template -2441: template -2441: void -2441: Linear_Expression_Impl::construct(const Linear_Expression_Impl& e, -2441: dimension_type space_dim) { -2441: Row x(e.row, space_dim + 1, space_dim + 1); -2441: swap(row, x); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: template -2441: void -2441: Linear_Expression_Impl -2441: ::scalar_product_assign(Coefficient& result, -2441: const Linear_Expression_Impl& y, -2441: dimension_type start, dimension_type end) const { -2441: const Linear_Expression_Impl& x = *this; -2441: ((void) 0); -2441: ((void) 0); -2441: ((void) 0); -2441: result = 0; -2441: typename Row ::const_iterator x_i = x.row.lower_bound(start); -2441: typename Row ::const_iterator x_end = x.row.lower_bound(end); -2441: typename Row2::const_iterator y_i = y.row.lower_bound(start); -2441: typename Row2::const_iterator y_end = y.row.lower_bound(end); -2441: while (x_i != x_end && y_i != y_end) { -2441: if (x_i.index() == y_i.index()) { -2441: Parma_Polyhedra_Library::add_mul_assign(result, *x_i, *y_i); -2441: ++x_i; -2441: ++y_i; -2441: } -2441: else { -2441: if (x_i.index() < y_i.index()) { -2441: ((void) 0); -2441: -2441: ++x_i; -2441: } -2441: else { -2441: ((void) 0); -2441: -2441: ++y_i; -2441: } -2441: } -2441: } -2441: -2441: -2441: } -2441: -2441: template -2441: template -2441: int -2441: Linear_Expression_Impl -2441: ::scalar_product_sign(const Linear_Expression_Impl& y, -2441: dimension_type start, dimension_type end) const { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_result; Parma_Polyhedra_Library::Coefficient& result = holder_result.item(); -2441: scalar_product_assign(result, y, start, end); -2441: return sgn(result); -2441: } -2441: -2441: template -2441: template -2441: bool -2441: Linear_Expression_Impl -2441: ::is_equal_to(const Linear_Expression_Impl& y, -2441: dimension_type start, dimension_type end) const { -2441: const Linear_Expression_Impl& x = *this; -2441: ((void) 0); -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: typename Row::const_iterator i = x.row.lower_bound(start); -2441: typename Row::const_iterator i_end = x.row.lower_bound(end); -2441: typename Row2::const_iterator j = y.row.lower_bound(start); -2441: typename Row2::const_iterator j_end = y.row.lower_bound(end); -2441: while (i != i_end && j != j_end) { -2441: if (i.index() == j.index()) { -2441: if (*i != *j) { -2441: return false; -2441: } -2441: ++i; -2441: ++j; -2441: } -2441: else { -2441: if (i.index() < j.index()) { -2441: if (*i != 0) { -2441: return false; -2441: } -2441: ++i; -2441: } -2441: else { -2441: ((void) 0); -2441: if (*j != 0) { -2441: return false; -2441: } -2441: ++j; -2441: } -2441: } -2441: } -2441: for ( ; i != i_end; ++i) { -2441: if (*i != 0) { -2441: return false; -2441: } -2441: } -2441: for ( ; j != j_end; ++j) { -2441: if (*j != 0) { -2441: return false; -2441: } -2441: } -2441: return true; -2441: } -2441: -2441: template -2441: template -2441: bool -2441: Linear_Expression_Impl -2441: ::is_equal_to(const Linear_Expression_Impl& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2, -2441: dimension_type start, dimension_type end) const { -2441: const Linear_Expression_Impl& x = *this; -2441: ((void) 0); -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: -2441: if (c1 == 0) { -2441: if (c2 == 0) { -2441: return true; -2441: } -2441: else { -2441: return y.all_zeroes(start, end); -2441: } -2441: } -2441: if (c2 == 0) { -2441: return x.all_zeroes(start, end); -2441: } -2441: -2441: ((void) 0); -2441: ((void) 0); -2441: typename Row::const_iterator i = x.row.lower_bound(start); -2441: typename Row::const_iterator i_end = x.row.lower_bound(end); -2441: typename Row2::const_iterator j = y.row.lower_bound(start); -2441: typename Row2::const_iterator j_end = y.row.lower_bound(end); -2441: while (i != i_end && j != j_end) { -2441: if (i.index() == j.index()) { -2441: if ((*i) * c1 != (*j) * c2) { -2441: return false; -2441: } -2441: ++i; -2441: ++j; -2441: } -2441: else { -2441: if (i.index() < j.index()) { -2441: if (*i != 0) { -2441: return false; -2441: } -2441: ++i; -2441: } -2441: else { -2441: ((void) 0); -2441: if (*j != 0) { -2441: return false; -2441: } -2441: ++j; -2441: } -2441: } -2441: } -2441: for ( ; i != i_end; ++i) { -2441: if (*i != 0) { -2441: return false; -2441: } -2441: } -2441: for ( ; j != j_end; ++j) { -2441: if (*j != 0) { -2441: return false; -2441: } -2441: } -2441: return true; -2441: } -2441: -2441: template -2441: void -2441: Linear_Expression_Impl -2441: ::linear_combine(const Linear_Expression_Interface& y, Variable v) { -2441: typedef const Linear_Expression_Impl* Dense_Ptr; -2441: typedef const Linear_Expression_Impl* Sparse_Ptr; -2441: if (const Dense_Ptr p = dynamic_cast(&y)) { -2441: linear_combine(*p, v); -2441: } -2441: else if (const Sparse_Ptr p = dynamic_cast(&y)) { -2441: linear_combine(*p, v); -2441: } -2441: else { -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: } -2441: } -2441: -2441: template -2441: void -2441: Linear_Expression_Impl -2441: ::linear_combine(const Linear_Expression_Interface& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2) { -2441: typedef const Linear_Expression_Impl* Dense_Ptr; -2441: typedef const Linear_Expression_Impl* Sparse_Ptr; -2441: if (const Dense_Ptr p = dynamic_cast(&y)) { -2441: linear_combine(*p, c1, c2); -2441: } -2441: else if (const Sparse_Ptr p = dynamic_cast(&y)) { -2441: linear_combine(*p, c1, c2); -2441: } -2441: else { -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: } -2441: } -2441: -2441: template -2441: void -2441: Linear_Expression_Impl -2441: ::linear_combine_lax(const Linear_Expression_Interface& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2) { -2441: typedef const Linear_Expression_Impl* Dense_Ptr; -2441: typedef const Linear_Expression_Impl* Sparse_Ptr; -2441: if (const Dense_Ptr p = dynamic_cast(&y)) { -2441: linear_combine_lax(*p, c1, c2); -2441: } -2441: else if (const Sparse_Ptr p = dynamic_cast(&y)) { -2441: linear_combine_lax(*p, c1, c2); -2441: } -2441: else { -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: } -2441: } -2441: -2441: template -2441: bool -2441: Linear_Expression_Impl -2441: ::is_equal_to(const Linear_Expression_Interface& y) const { -2441: typedef const Linear_Expression_Impl* Dense_Ptr; -2441: typedef const Linear_Expression_Impl* Sparse_Ptr; -2441: if (const Dense_Ptr p = dynamic_cast(&y)) { -2441: return is_equal_to(*p); -2441: } -2441: else if (const Sparse_Ptr p = dynamic_cast(&y)) { -2441: return is_equal_to(*p); -2441: } -2441: else { -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return false; -2441: } -2441: } -2441: -2441: template -2441: Linear_Expression_Impl& -2441: Linear_Expression_Impl -2441: ::operator+=(const Linear_Expression_Interface& y) { -2441: typedef const Linear_Expression_Impl* Dense_Ptr; -2441: typedef const Linear_Expression_Impl* Sparse_Ptr; -2441: if (const Dense_Ptr p = dynamic_cast(&y)) { -2441: return operator+=(*p); -2441: } -2441: else if (const Sparse_Ptr p = dynamic_cast(&y)) { -2441: return operator+=(*p); -2441: } -2441: else { -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return *this; -2441: } -2441: } -2441: -2441: template -2441: Linear_Expression_Impl& -2441: Linear_Expression_Impl -2441: ::operator-=(const Linear_Expression_Interface& y) { -2441: typedef const Linear_Expression_Impl* Dense_Ptr; -2441: typedef const Linear_Expression_Impl* Sparse_Ptr; -2441: if (const Dense_Ptr p = dynamic_cast(&y)) { -2441: return operator-=(*p); -2441: } -2441: else if (const Sparse_Ptr p = dynamic_cast(&y)) { -2441: return operator-=(*p); -2441: } -2441: else { -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return *this; -2441: } -2441: } -2441: -2441: template -2441: void -2441: Linear_Expression_Impl -2441: ::add_mul_assign(Coefficient_traits::const_reference factor, -2441: const Linear_Expression_Interface& y) { -2441: typedef const Linear_Expression_Impl* Dense_Ptr; -2441: typedef const Linear_Expression_Impl* Sparse_Ptr; -2441: if (const Dense_Ptr p = dynamic_cast(&y)) { -2441: add_mul_assign(factor, *p); -2441: } -2441: else if (const Sparse_Ptr p = dynamic_cast(&y)) { -2441: add_mul_assign(factor, *p); -2441: } -2441: else { -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: } -2441: } -2441: -2441: template -2441: void -2441: Linear_Expression_Impl -2441: ::sub_mul_assign(Coefficient_traits::const_reference factor, -2441: const Linear_Expression_Interface& y) { -2441: typedef const Linear_Expression_Impl* Dense_Ptr; -2441: typedef const Linear_Expression_Impl* Sparse_Ptr; -2441: if (const Dense_Ptr p = dynamic_cast(&y)) { -2441: sub_mul_assign(factor, *p); -2441: } -2441: else if (const Sparse_Ptr p = dynamic_cast(&y)) { -2441: sub_mul_assign(factor, *p); -2441: } -2441: else { -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: } -2441: } -2441: -2441: template -2441: void -2441: Linear_Expression_Impl -2441: ::linear_combine(const Linear_Expression_Interface& y, dimension_type i) { -2441: typedef const Linear_Expression_Impl* Dense_Ptr; -2441: typedef const Linear_Expression_Impl* Sparse_Ptr; -2441: if (const Dense_Ptr p = dynamic_cast(&y)) { -2441: linear_combine(*p, i); -2441: } -2441: else if (const Sparse_Ptr p = dynamic_cast(&y)) { -2441: linear_combine(*p, i); -2441: } -2441: else { -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: } -2441: } -2441: -2441: template -2441: void -2441: Linear_Expression_Impl -2441: ::linear_combine(const Linear_Expression_Interface& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2, -2441: dimension_type start, dimension_type end) { -2441: typedef const Linear_Expression_Impl* Dense_Ptr; -2441: typedef const Linear_Expression_Impl* Sparse_Ptr; -2441: if (const Dense_Ptr p = dynamic_cast(&y)) { -2441: linear_combine(*p, c1, c2, start, end); -2441: } -2441: else if (const Sparse_Ptr p = dynamic_cast(&y)) { -2441: linear_combine(*p, c1, c2, start, end); -2441: } -2441: else { -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: } -2441: } -2441: -2441: template -2441: void -2441: Linear_Expression_Impl -2441: ::linear_combine_lax(const Linear_Expression_Interface& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2, -2441: dimension_type start, dimension_type end) { -2441: typedef const Linear_Expression_Impl* Dense_Ptr; -2441: typedef const Linear_Expression_Impl* Sparse_Ptr; -2441: if (const Dense_Ptr p = dynamic_cast(&y)) { -2441: linear_combine_lax(*p, c1, c2, start, end); -2441: } -2441: else if (const Sparse_Ptr p = dynamic_cast(&y)) { -2441: linear_combine_lax(*p, c1, c2, start, end); -2441: } -2441: else { -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: } -2441: } -2441: -2441: template -2441: int -2441: Linear_Expression_Impl -2441: ::compare(const Linear_Expression_Interface& y) const { -2441: typedef const Linear_Expression_Impl* Dense_Ptr; -2441: typedef const Linear_Expression_Impl* Sparse_Ptr; -2441: if (const Dense_Ptr p = dynamic_cast(&y)) { -2441: return compare(*p); -2441: } -2441: else if (const Sparse_Ptr p = dynamic_cast(&y)) { -2441: return compare(*p); -2441: } -2441: else { -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return 0; -2441: } -2441: } -2441: -2441: -2441: template -2441: void -2441: Linear_Expression_Impl::construct(const Linear_Expression_Interface& y) { -2441: typedef const Linear_Expression_Impl* Dense_Ptr; -2441: typedef const Linear_Expression_Impl* Sparse_Ptr; -2441: if (const Dense_Ptr p = dynamic_cast(&y)) { -2441: return construct(*p); -2441: } -2441: else if (const Sparse_Ptr p = dynamic_cast(&y)) { -2441: return construct(*p); -2441: } -2441: else { -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: } -2441: } -2441: -2441: template -2441: void -2441: Linear_Expression_Impl::construct(const Linear_Expression_Interface& y, -2441: dimension_type space_dim) { -2441: typedef const Linear_Expression_Impl* Dense_Ptr; -2441: typedef const Linear_Expression_Impl* Sparse_Ptr; -2441: if (const Dense_Ptr p = dynamic_cast(&y)) { -2441: return construct(*p, space_dim); -2441: } -2441: else if (const Sparse_Ptr p = dynamic_cast(&y)) { -2441: return construct(*p, space_dim); -2441: } -2441: else { -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: } -2441: } -2441: -2441: template -2441: void -2441: Linear_Expression_Impl -2441: ::scalar_product_assign(Coefficient& result, -2441: const Linear_Expression_Interface& y, -2441: dimension_type start, dimension_type end) const { -2441: typedef const Linear_Expression_Impl* Dense_Ptr; -2441: typedef const Linear_Expression_Impl* Sparse_Ptr; -2441: if (const Dense_Ptr p = dynamic_cast(&y)) { -2441: scalar_product_assign(result, *p, start, end); -2441: } -2441: else if (const Sparse_Ptr p = dynamic_cast(&y)) { -2441: scalar_product_assign(result, *p, start, end); -2441: } -2441: else { -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: } -2441: } -2441: -2441: template -2441: int -2441: Linear_Expression_Impl -2441: ::scalar_product_sign(const Linear_Expression_Interface& y, -2441: dimension_type start, dimension_type end) const { -2441: typedef const Linear_Expression_Impl* Dense_Ptr; -2441: typedef const Linear_Expression_Impl* Sparse_Ptr; -2441: if (const Dense_Ptr p = dynamic_cast(&y)) { -2441: return scalar_product_sign(*p, start, end); -2441: } -2441: else if (const Sparse_Ptr p = dynamic_cast(&y)) { -2441: return scalar_product_sign(*p, start, end); -2441: } -2441: else { -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return 0; -2441: } -2441: } -2441: -2441: template -2441: bool -2441: Linear_Expression_Impl -2441: ::is_equal_to(const Linear_Expression_Interface& y, -2441: dimension_type start, dimension_type end) const { -2441: typedef const Linear_Expression_Impl* Dense_Ptr; -2441: typedef const Linear_Expression_Impl* Sparse_Ptr; -2441: if (const Dense_Ptr p = dynamic_cast(&y)) { -2441: return is_equal_to(*p, start, end); -2441: } -2441: else if (const Sparse_Ptr p = dynamic_cast(&y)) { -2441: return is_equal_to(*p, start, end); -2441: } -2441: else { -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return false; -2441: } -2441: } -2441: -2441: template -2441: bool -2441: Linear_Expression_Impl -2441: ::is_equal_to(const Linear_Expression_Interface& y, -2441: Coefficient_traits::const_reference c1, -2441: Coefficient_traits::const_reference c2, -2441: dimension_type start, dimension_type end) const { -2441: typedef const Linear_Expression_Impl* Dense_Ptr; -2441: typedef const Linear_Expression_Impl* Sparse_Ptr; -2441: if (const Dense_Ptr p = dynamic_cast(&y)) { -2441: return is_equal_to(*p, c1, c2, start, end); -2441: } -2441: else if (const Sparse_Ptr p = dynamic_cast(&y)) { -2441: return is_equal_to(*p, c1, c2, start, end); -2441: } -2441: else { -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return false; -2441: } -2441: } -2441: -2441: template -2441: bool -2441: Linear_Expression_Impl -2441: ::have_a_common_variable(const Linear_Expression_Interface& y, -2441: Variable first, Variable last) const { -2441: typedef const Linear_Expression_Impl* Dense_Ptr; -2441: typedef const Linear_Expression_Impl* Sparse_Ptr; -2441: if (const Dense_Ptr p = dynamic_cast(&y)) { -2441: return have_a_common_variable(*p, first, last); -2441: } -2441: else if (const Sparse_Ptr p = dynamic_cast(&y)) { -2441: return have_a_common_variable(*p, first, last); -2441: } -2441: else { -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return false; -2441: } -2441: } -2441: -2441: template -2441: Linear_Expression_Interface::const_iterator_interface* -2441: Linear_Expression_Impl::begin() const { -2441: return new const_iterator(row, 1); -2441: } -2441: -2441: template -2441: Linear_Expression_Interface::const_iterator_interface* -2441: Linear_Expression_Impl::end() const { -2441: return new const_iterator(row, row.size()); -2441: } -2441: -2441: template -2441: Linear_Expression_Interface::const_iterator_interface* -2441: Linear_Expression_Impl::lower_bound(Variable v) const { -2441: return new const_iterator(row, v.space_dimension()); -2441: } -2441: -2441: template -2441: Linear_Expression_Impl::const_iterator -2441: ::const_iterator(const Row& r, dimension_type i) -2441: : row(&r), itr(r.lower_bound(i)) { -2441: skip_zeroes_forward(); -2441: } -2441: -2441: template -2441: Linear_Expression_Interface::const_iterator_interface* -2441: Linear_Expression_Impl::const_iterator -2441: ::clone() const { -2441: return new const_iterator(*this); -2441: } -2441: -2441: template -2441: void -2441: Linear_Expression_Impl::const_iterator -2441: ::operator++() { -2441: ++itr; -2441: skip_zeroes_forward(); -2441: } -2441: -2441: template -2441: void -2441: Linear_Expression_Impl::const_iterator -2441: ::operator--() { -2441: --itr; -2441: skip_zeroes_backward(); -2441: } -2441: -2441: template -2441: typename Linear_Expression_Impl::const_iterator::reference -2441: Linear_Expression_Impl::const_iterator -2441: ::operator*() const { -2441: return *itr; -2441: } -2441: -2441: template -2441: Variable -2441: Linear_Expression_Impl::const_iterator -2441: ::variable() const { -2441: const dimension_type i = itr.index(); -2441: ((void) 0); -2441: return Variable(i - 1); -2441: } -2441: -2441: template -2441: bool -2441: Linear_Expression_Impl::const_iterator -2441: ::operator==(const const_iterator_interface& x) const { -2441: const const_iterator* const p = dynamic_cast(&x); -2441: -2441: ((void) 0); -2441: ((void) 0); -2441: return itr == p->itr; -2441: } -2441: -2441: template -2441: void -2441: Linear_Expression_Impl::ascii_dump(std::ostream& s) const { -2441: s << "size " << (space_dimension() + 1) << " "; -2441: for (dimension_type i = 0; i < row.size(); ++i) { -2441: s << row.get(i); -2441: if (i != row.size() - 1) { -2441: s << ' '; -2441: } -2441: } -2441: } -2441: -2441: template -2441: bool -2441: Linear_Expression_Impl::ascii_load(std::istream& s) { -2441: std::string str; -2441: -2441: if (!(s >> str)) { -2441: return false; -2441: } -2441: if (str != "size") { -2441: return false; -2441: } -2441: -2441: dimension_type new_size; -2441: if (!(s >> new_size)) { -2441: return false; -2441: } -2441: -2441: row.resize(0); -2441: row.resize(new_size); -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_c; Parma_Polyhedra_Library::Coefficient& c = holder_c.item(); -2441: -2441: for (dimension_type j = 0; j < new_size; ++j) { -2441: if (!(s >> c)) { -2441: return false; -2441: } -2441: if (c != 0) { -2441: row.insert(j, c); -2441: } -2441: } -2441: -2441: ((void) 0); -2441: return true; -2441: } -2441: -2441: template -2441: bool -2441: Linear_Expression_Impl::OK() const { -2441: return row.OK(); -2441: } -2441: -2441: } -2441: # 905 "../../src/Linear_Expression_Impl_defs.hh" 2 -2441: # 9 "../../src/ppl_include_files.hh" 2 -2441: # 1 "../../src/Linear_Form_templates.hh" 1 -2441: # 29 "../../src/Linear_Form_templates.hh" -2441: # 1 "../../src/Box_defs.hh" 1 -2441: # 42 "../../src/Box_defs.hh" -2441: # 1 "../../src/Poly_Con_Relation_types.hh" 1 -2441: # 16 "../../src/Poly_Con_Relation_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: class Poly_Con_Relation; -2441: -2441: } -2441: # 43 "../../src/Box_defs.hh" 2 -2441: # 1 "../../src/Poly_Gen_Relation_types.hh" 1 -2441: # 16 "../../src/Poly_Gen_Relation_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: class Poly_Gen_Relation; -2441: -2441: } -2441: # 44 "../../src/Box_defs.hh" 2 -2441: -2441: -2441: # 1 "../../src/Partially_Reduced_Product_types.hh" 1 -2441: # 16 "../../src/Partially_Reduced_Product_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: class Smash_Reduction; -2441: -2441: template -2441: class Constraints_Reduction; -2441: -2441: template -2441: class Congruences_Reduction; -2441: -2441: template -2441: class Shape_Preserving_Reduction; -2441: -2441: template -2441: class No_Reduction; -2441: -2441: template -2441: class Partially_Reduced_Product; -2441: -2441: } -2441: # 47 "../../src/Box_defs.hh" 2 -2441: -2441: -2441: -2441: -2441: -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: struct Interval_Base; -2441: -2441: -2441: -2441: template -2441: void swap(Box& x, Box& y); -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: bool operator==(const Box& x, const Box& y); -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: bool operator!=(const Box& x, const Box& y); -2441: -2441: namespace IO_Operators { -2441: -2441: -2441: -2441: template -2441: std::ostream& operator<<(std::ostream& s, const Box& box); -2441: -2441: } -2441: # 98 "../../src/Box_defs.hh" -2441: template -2441: bool -2441: rectilinear_distance_assign(Checked_Number& r, -2441: const Box& x, -2441: const Box& y, -2441: Rounding_Dir dir); -2441: # 116 "../../src/Box_defs.hh" -2441: template -2441: bool -2441: rectilinear_distance_assign(Checked_Number& r, -2441: const Box& x, -2441: const Box& y, -2441: Rounding_Dir dir); -2441: # 134 "../../src/Box_defs.hh" -2441: template -2441: bool -2441: rectilinear_distance_assign(Checked_Number& r, -2441: const Box& x, -2441: const Box& y, -2441: Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2); -2441: # 155 "../../src/Box_defs.hh" -2441: template -2441: bool -2441: euclidean_distance_assign(Checked_Number& r, -2441: const Box& x, -2441: const Box& y, -2441: Rounding_Dir dir); -2441: # 173 "../../src/Box_defs.hh" -2441: template -2441: bool -2441: euclidean_distance_assign(Checked_Number& r, -2441: const Box& x, -2441: const Box& y, -2441: Rounding_Dir dir); -2441: # 191 "../../src/Box_defs.hh" -2441: template -2441: bool -2441: euclidean_distance_assign(Checked_Number& r, -2441: const Box& x, -2441: const Box& y, -2441: Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2); -2441: # 212 "../../src/Box_defs.hh" -2441: template -2441: bool -2441: l_infinity_distance_assign(Checked_Number& r, -2441: const Box& x, -2441: const Box& y, -2441: Rounding_Dir dir); -2441: # 230 "../../src/Box_defs.hh" -2441: template -2441: bool -2441: l_infinity_distance_assign(Checked_Number& r, -2441: const Box& x, -2441: const Box& y, -2441: Rounding_Dir dir); -2441: # 248 "../../src/Box_defs.hh" -2441: template -2441: bool -2441: l_infinity_distance_assign(Checked_Number& r, -2441: const Box& x, -2441: const Box& y, -2441: Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2); -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: bool -2441: l_m_distance_assign(Checked_Number& r, -2441: const Box& x, const Box& y, -2441: Rounding_Dir dir, -2441: Temp& tmp0, Temp& tmp1, Temp& tmp2); -2441: -2441: } -2441: # 298 "../../src/Box_defs.hh" -2441: template -2441: class Parma_Polyhedra_Library::Box { -2441: public: -2441: -2441: typedef ITV interval_type; -2441: -2441: -2441: static dimension_type max_space_dimension(); -2441: -2441: -2441: -2441: -2441: static bool can_recycle_constraint_systems(); -2441: -2441: -2441: -2441: -2441: static bool can_recycle_congruence_systems(); -2441: # 328 "../../src/Box_defs.hh" -2441: explicit Box(dimension_type num_dimensions = 0, -2441: Degenerate_Element kind = UNIVERSE); -2441: -2441: -2441: -2441: -2441: -2441: Box(const Box& y, -2441: Complexity_Class complexity = ANY_COMPLEXITY); -2441: -2441: -2441: -2441: -2441: -2441: template -2441: explicit Box(const Box& y, -2441: Complexity_Class complexity = ANY_COMPLEXITY); -2441: # 356 "../../src/Box_defs.hh" -2441: explicit Box(const Constraint_System& cs); -2441: # 372 "../../src/Box_defs.hh" -2441: Box(const Constraint_System& cs, Recycle_Input dummy); -2441: # 382 "../../src/Box_defs.hh" -2441: explicit Box(const Generator_System& gs); -2441: # 399 "../../src/Box_defs.hh" -2441: Box(const Generator_System& gs, Recycle_Input dummy); -2441: # 411 "../../src/Box_defs.hh" -2441: explicit Box(const Congruence_System& cgs); -2441: # 427 "../../src/Box_defs.hh" -2441: Box(const Congruence_System& cgs, Recycle_Input dummy); -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: explicit Box(const BD_Shape& bds, -2441: Complexity_Class complexity = POLYNOMIAL_COMPLEXITY); -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: explicit Box(const Octagonal_Shape& oct, -2441: Complexity_Class complexity = POLYNOMIAL_COMPLEXITY); -2441: # 454 "../../src/Box_defs.hh" -2441: explicit Box(const Polyhedron& ph, -2441: Complexity_Class complexity = ANY_COMPLEXITY); -2441: -2441: -2441: -2441: -2441: -2441: -2441: explicit Box(const Grid& gr, -2441: Complexity_Class complexity = POLYNOMIAL_COMPLEXITY); -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: explicit Box(const Partially_Reduced_Product& dp, -2441: Complexity_Class complexity = ANY_COMPLEXITY); -2441: -2441: -2441: -2441: -2441: -2441: Box& operator=(const Box& y); -2441: -2441: -2441: -2441: -2441: -2441: void m_swap(Box& y); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: dimension_type space_dimension() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: dimension_type affine_dimension() const; -2441: -2441: -2441: bool is_empty() const; -2441: -2441: -2441: bool is_universe() const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_topologically_closed() const; -2441: -2441: -2441: bool is_discrete() const; -2441: -2441: -2441: bool is_bounded() const; -2441: -2441: -2441: -2441: -2441: -2441: bool contains_integer_point() const; -2441: # 532 "../../src/Box_defs.hh" -2441: bool constrains(Variable var) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: Poly_Con_Relation relation_with(const Constraint& c) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: Poly_Con_Relation relation_with(const Congruence& cg) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: Poly_Gen_Relation relation_with(const Generator& g) const; -2441: # 562 "../../src/Box_defs.hh" -2441: bool bounds_from_above(const Linear_Expression& expr) const; -2441: # 571 "../../src/Box_defs.hh" -2441: bool bounds_from_below(const Linear_Expression& expr) const; -2441: # 597 "../../src/Box_defs.hh" -2441: bool maximize(const Linear_Expression& expr, -2441: Coefficient& sup_n, Coefficient& sup_d, bool& maximum) const; -2441: # 628 "../../src/Box_defs.hh" -2441: bool maximize(const Linear_Expression& expr, -2441: Coefficient& sup_n, Coefficient& sup_d, bool& maximum, -2441: Generator& g) const; -2441: # 656 "../../src/Box_defs.hh" -2441: bool minimize(const Linear_Expression& expr, -2441: Coefficient& inf_n, Coefficient& inf_d, bool& minimum) const; -2441: # 687 "../../src/Box_defs.hh" -2441: bool minimize(const Linear_Expression& expr, -2441: Coefficient& inf_n, Coefficient& inf_d, bool& minimum, -2441: Generator& g) const; -2441: # 719 "../../src/Box_defs.hh" -2441: bool frequency(const Linear_Expression& expr, -2441: Coefficient& freq_n, Coefficient& freq_d, -2441: Coefficient& val_n, Coefficient& val_d) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool contains(const Box& y) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool strictly_contains(const Box& y) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool is_disjoint_from(const Box& y) const; -2441: -2441: -2441: -2441: -2441: -2441: bool OK() const; -2441: # 769 "../../src/Box_defs.hh" -2441: void add_constraint(const Constraint& c); -2441: # 783 "../../src/Box_defs.hh" -2441: void add_constraints(const Constraint_System& cs); -2441: # 801 "../../src/Box_defs.hh" -2441: void add_recycled_constraints(Constraint_System& cs); -2441: # 813 "../../src/Box_defs.hh" -2441: void add_congruence(const Congruence& cg); -2441: # 826 "../../src/Box_defs.hh" -2441: void add_congruences(const Congruence_System& cgs); -2441: # 844 "../../src/Box_defs.hh" -2441: void add_recycled_congruences(Congruence_System& cgs); -2441: # 855 "../../src/Box_defs.hh" -2441: void refine_with_constraint(const Constraint& c); -2441: # 876 "../../src/Box_defs.hh" -2441: void refine_with_constraints(const Constraint_System& cs); -2441: # 887 "../../src/Box_defs.hh" -2441: void refine_with_congruence(const Congruence& cg); -2441: # 898 "../../src/Box_defs.hh" -2441: void refine_with_congruences(const Congruence_System& cgs); -2441: # 909 "../../src/Box_defs.hh" -2441: void propagate_constraint(const Constraint& c); -2441: # 928 "../../src/Box_defs.hh" -2441: void propagate_constraints(const Constraint_System& cs, -2441: dimension_type max_iterations = 0); -2441: # 941 "../../src/Box_defs.hh" -2441: void unconstrain(Variable var); -2441: # 955 "../../src/Box_defs.hh" -2441: void unconstrain(const Variables_Set& vars); -2441: -2441: -2441: -2441: -2441: -2441: -2441: void intersection_assign(const Box& y); -2441: # 971 "../../src/Box_defs.hh" -2441: void upper_bound_assign(const Box& y); -2441: # 981 "../../src/Box_defs.hh" -2441: bool upper_bound_assign_if_exact(const Box& y); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void difference_assign(const Box& y); -2441: # 999 "../../src/Box_defs.hh" -2441: bool simplify_using_context_assign(const Box& y); -2441: # 1022 "../../src/Box_defs.hh" -2441: void affine_image(Variable var, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference denominator -2441: = Coefficient_one()); -2441: # 1048 "../../src/Box_defs.hh" -2441: void affine_form_image(Variable var, -2441: const Linear_Form& lf); -2441: # 1071 "../../src/Box_defs.hh" -2441: void affine_preimage(Variable var, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference denominator -2441: = Coefficient_one()); -2441: # 1100 "../../src/Box_defs.hh" -2441: void generalized_affine_image(Variable var, -2441: Relation_Symbol relsym, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference denominator -2441: = Coefficient_one()); -2441: # 1130 "../../src/Box_defs.hh" -2441: void -2441: generalized_affine_preimage(Variable var, -2441: Relation_Symbol relsym, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference denominator -2441: = Coefficient_one()); -2441: # 1155 "../../src/Box_defs.hh" -2441: void generalized_affine_image(const Linear_Expression& lhs, -2441: Relation_Symbol relsym, -2441: const Linear_Expression& rhs); -2441: # 1177 "../../src/Box_defs.hh" -2441: void generalized_affine_preimage(const Linear_Expression& lhs, -2441: Relation_Symbol relsym, -2441: const Linear_Expression& rhs); -2441: # 1206 "../../src/Box_defs.hh" -2441: void bounded_affine_image(Variable var, -2441: const Linear_Expression& lb_expr, -2441: const Linear_Expression& ub_expr, -2441: Coefficient_traits::const_reference denominator -2441: = Coefficient_one()); -2441: # 1237 "../../src/Box_defs.hh" -2441: void bounded_affine_preimage(Variable var, -2441: const Linear_Expression& lb_expr, -2441: const Linear_Expression& ub_expr, -2441: Coefficient_traits::const_reference denominator -2441: = Coefficient_one()); -2441: # 1250 "../../src/Box_defs.hh" -2441: void time_elapse_assign(const Box& y); -2441: -2441: -2441: void topological_closure_assign(); -2441: # 1295 "../../src/Box_defs.hh" -2441: void wrap_assign(const Variables_Set& vars, -2441: Bounded_Integer_Type_Width w, -2441: Bounded_Integer_Type_Representation r, -2441: Bounded_Integer_Type_Overflow o, -2441: const Constraint_System* cs_p = 0, -2441: unsigned complexity_threshold = 16, -2441: bool wrap_individually = true); -2441: # 1314 "../../src/Box_defs.hh" -2441: void drop_some_non_integer_points(Complexity_Class complexity -2441: = ANY_COMPLEXITY); -2441: # 1332 "../../src/Box_defs.hh" -2441: void drop_some_non_integer_points(const Variables_Set& vars, -2441: Complexity_Class complexity -2441: = ANY_COMPLEXITY); -2441: # 1351 "../../src/Box_defs.hh" -2441: template -2441: typename Enable_If::value -2441: && Is_Same_Or_Derived::value, -2441: void>::type -2441: CC76_widening_assign(const T& y, unsigned* tp = 0); -2441: # 1373 "../../src/Box_defs.hh" -2441: template -2441: typename Enable_If::value -2441: && Is_Same_Or_Derived::value, -2441: void>::type -2441: CC76_widening_assign(const T& y, -2441: Iterator first, Iterator last); -2441: -2441: -2441: void widening_assign(const Box& y, unsigned* tp = 0); -2441: # 1403 "../../src/Box_defs.hh" -2441: void limited_CC76_extrapolation_assign(const Box& y, -2441: const Constraint_System& cs, -2441: unsigned* tp = 0); -2441: # 1426 "../../src/Box_defs.hh" -2441: template -2441: typename Enable_If::value -2441: && Is_Same_Or_Derived::value, -2441: void>::type -2441: CC76_narrowing_assign(const T& y); -2441: # 1455 "../../src/Box_defs.hh" -2441: void add_space_dimensions_and_embed(dimension_type m); -2441: # 1478 "../../src/Box_defs.hh" -2441: void add_space_dimensions_and_project(dimension_type m); -2441: # 1503 "../../src/Box_defs.hh" -2441: void concatenate_assign(const Box& y); -2441: # 1514 "../../src/Box_defs.hh" -2441: void remove_space_dimensions(const Variables_Set& vars); -2441: # 1524 "../../src/Box_defs.hh" -2441: void remove_higher_space_dimensions(dimension_type new_dimension); -2441: # 1563 "../../src/Box_defs.hh" -2441: template -2441: void map_space_dimensions(const Partial_Function& pfunc); -2441: # 1587 "../../src/Box_defs.hh" -2441: void expand_space_dimension(Variable var, dimension_type m); -2441: # 1612 "../../src/Box_defs.hh" -2441: void fold_space_dimensions(const Variables_Set& vars, Variable dest); -2441: # 1622 "../../src/Box_defs.hh" -2441: const ITV& get_interval(Variable var) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void set_interval(Variable var, const ITV& i); -2441: # 1663 "../../src/Box_defs.hh" -2441: bool has_lower_bound(Variable var, -2441: Coefficient& n, Coefficient& d, bool& closed) const; -2441: # 1697 "../../src/Box_defs.hh" -2441: bool has_upper_bound(Variable var, -2441: Coefficient& n, Coefficient& d, bool& closed) const; -2441: -2441: -2441: Constraint_System constraints() const; -2441: -2441: -2441: Constraint_System minimized_constraints() const; -2441: -2441: -2441: Congruence_System congruences() const; -2441: -2441: -2441: Congruence_System minimized_congruences() const; -2441: -2441: -2441: memory_size_type total_memory_in_bytes() const; -2441: -2441: -2441: memory_size_type external_memory_in_bytes() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: int32_t hash_code() const; -2441: -2441: void ascii_dump() const; void ascii_dump(std::ostream& s) const; void print() const; -2441: # 1735 "../../src/Box_defs.hh" -2441: bool ascii_load(std::istream& s); -2441: -2441: private: -2441: template -2441: friend class Parma_Polyhedra_Library::Box; -2441: -2441: friend bool -2441: operator==(const Box& x, const Box& y); -2441: -2441: friend std::ostream& -2441: Parma_Polyhedra_Library -2441: ::IO_Operators::operator<<<>(std::ostream& s, const Box& box); -2441: -2441: template -2441: friend bool Parma_Polyhedra_Library -2441: ::l_m_distance_assign(Checked_Number& r, -2441: const Box& x, const Box& y, -2441: const Rounding_Dir dir, -2441: Temp& tmp0, Temp& tmp1, Temp& tmp2); -2441: -2441: -2441: typedef std::vector Sequence; -2441: -2441: -2441: -2441: -2441: -2441: typedef ITV Tmp_Interval_Type; -2441: -2441: -2441: Sequence seq; -2441: -2441: -2441: # 1 "../../src/Box_Status_idefs.hh" 1 -2441: # 43 "../../src/Box_Status_idefs.hh" -2441: class Status; -2441: -2441: class Status { -2441: public: -2441: -2441: Status(); -2441: -2441: -2441: Status(const Status& y); -2441: -2441: -2441: template -2441: Status(const typename Box::Status& y); -2441: -2441: -2441: -2441: bool test_empty_up_to_date() const; -2441: void reset_empty_up_to_date(); -2441: void set_empty_up_to_date(); -2441: -2441: bool test_empty() const; -2441: void reset_empty(); -2441: void set_empty(); -2441: -2441: bool test_universe() const; -2441: void reset_universe(); -2441: void set_universe(); -2441: -2441: -2441: -2441: bool OK() const; -2441: -2441: void ascii_dump() const; void ascii_dump(std::ostream& s) const; void print() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool ascii_load(std::istream& s); -2441: -2441: private: -2441: -2441: typedef unsigned int flags_t; -2441: -2441: -2441: -2441: static const flags_t NONE = 0U; -2441: static const flags_t EMPTY_UP_TO_DATE = 1U << 0; -2441: static const flags_t EMPTY = 1U << 1; -2441: static const flags_t UNIVERSE = 1U << 2; -2441: -2441: -2441: -2441: flags_t flags; -2441: -2441: -2441: Status(flags_t mask); -2441: -2441: -2441: bool test_all(flags_t mask) const; -2441: -2441: -2441: bool test_any(flags_t mask) const; -2441: -2441: -2441: void set(flags_t mask); -2441: -2441: -2441: void reset(flags_t mask); -2441: }; -2441: # 1769 "../../src/Box_defs.hh" 2 -2441: -2441: -2441: -2441: Status status; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool marked_empty() const; -2441: -2441: public: -2441: -2441: void set_empty(); -2441: -2441: private: -2441: -2441: void set_nonempty(); -2441: -2441: -2441: void set_empty_up_to_date(); -2441: -2441: -2441: void reset_empty_up_to_date(); -2441: -2441: -2441: -2441: -2441: -2441: bool check_empty() const; -2441: -2441: -2441: -2441: -2441: -2441: const ITV& operator[](dimension_type k) const; -2441: -2441: -2441: -2441: -2441: static I_Result -2441: refine_interval_no_check(ITV& itv, -2441: Constraint::Type type, -2441: Coefficient_traits::const_reference numer, -2441: Coefficient_traits::const_reference denom); -2441: -2441: -2441: -2441: -2441: void -2441: add_interval_constraint_no_check(dimension_type var_id, -2441: Constraint::Type type, -2441: Coefficient_traits::const_reference numer, -2441: Coefficient_traits::const_reference denom); -2441: -2441: -2441: -2441: -2441: void add_constraint_no_check(const Constraint& c); -2441: -2441: -2441: -2441: -2441: void add_constraints_no_check(const Constraint_System& cs); -2441: -2441: -2441: -2441: -2441: void add_congruence_no_check(const Congruence& cg); -2441: -2441: -2441: -2441: -2441: void add_congruences_no_check(const Congruence_System& cgs); -2441: # 1856 "../../src/Box_defs.hh" -2441: void refine_no_check(const Constraint& c); -2441: # 1870 "../../src/Box_defs.hh" -2441: void refine_no_check(const Constraint_System& cs); -2441: # 1883 "../../src/Box_defs.hh" -2441: void refine_no_check(const Congruence& cg); -2441: # 1896 "../../src/Box_defs.hh" -2441: void refine_no_check(const Congruence_System& cgs); -2441: # 2058 "../../src/Box_defs.hh" -2441: void propagate_constraint_no_check(const Constraint& c); -2441: # 2078 "../../src/Box_defs.hh" -2441: void propagate_constraints_no_check(const Constraint_System& cs, -2441: dimension_type max_iterations); -2441: # 2098 "../../src/Box_defs.hh" -2441: bool bounds(const Linear_Expression& expr, bool from_above) const; -2441: # 2130 "../../src/Box_defs.hh" -2441: bool max_min(const Linear_Expression& expr, -2441: bool maximize, -2441: Coefficient& ext_n, Coefficient& ext_d, bool& included, -2441: Generator& g) const; -2441: # 2160 "../../src/Box_defs.hh" -2441: bool max_min(const Linear_Expression& expr, -2441: bool maximize, -2441: Coefficient& ext_n, Coefficient& ext_d, bool& included) const; -2441: -2441: -2441: -2441: -2441: -2441: void get_limiting_box(const Constraint_System& cs, -2441: Box& limiting_box) const; -2441: -2441: -2441: -2441: void throw_dimension_incompatible(const char* method, -2441: const Box& y) const; -2441: -2441: void throw_dimension_incompatible(const char* method, -2441: dimension_type required_dim) const; -2441: -2441: void throw_dimension_incompatible(const char* method, -2441: const Constraint& c) const; -2441: -2441: void throw_dimension_incompatible(const char* method, -2441: const Congruence& cg) const; -2441: -2441: void throw_dimension_incompatible(const char* method, -2441: const Constraint_System& cs) const; -2441: -2441: void throw_dimension_incompatible(const char* method, -2441: const Congruence_System& cgs) const; -2441: -2441: void throw_dimension_incompatible(const char* method, -2441: const Generator& g) const; -2441: -2441: void throw_dimension_incompatible(const char* method, -2441: const char* le_name, -2441: const Linear_Expression& le) const; -2441: -2441: template -2441: void throw_dimension_incompatible(const char* method, -2441: const char* lf_name, -2441: const Linear_Form& lf) const; -2441: -2441: static void throw_constraint_incompatible(const char* method); -2441: -2441: static void throw_expression_too_complex(const char* method, -2441: const Linear_Expression& le); -2441: -2441: static void throw_invalid_argument(const char* method, const char* reason); -2441: -2441: }; -2441: -2441: namespace Parma_Polyhedra_Library { -2441: # 2237 "../../src/Box_defs.hh" -2441: template -2441: Poly_Con_Relation -2441: interval_relation(const ITV& i, -2441: const Constraint::Type constraint_type, -2441: Coefficient_traits::const_reference numer, -2441: Coefficient_traits::const_reference denom -2441: = Coefficient_one()); -2441: -2441: class Box_Helpers { -2441: public: -2441: # 2271 "../../src/Box_defs.hh" -2441: static bool extract_interval_constraint(const Constraint& c, -2441: dimension_type& c_num_vars, -2441: dimension_type& c_only_var); -2441: -2441: -2441: -2441: static bool extract_interval_congruence(const Congruence& cg, -2441: dimension_type& cg_num_vars, -2441: dimension_type& cg_only_var); -2441: }; -2441: -2441: } -2441: -2441: # 1 "../../src/Box_Status_inlines.hh" 1 -2441: # 29 "../../src/Box_Status_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: inline -2441: Box::Status::Status(flags_t mask) -2441: : flags(mask) { -2441: } -2441: -2441: template -2441: inline -2441: Box::Status::Status(const Status& y) -2441: : flags(y.flags) { -2441: } -2441: -2441: template -2441: template -2441: inline -2441: Box::Status::Status(const typename Box::Status& y) -2441: : flags(y.flags) { -2441: } -2441: -2441: template -2441: inline -2441: Box::Status::Status() -2441: : flags(NONE) { -2441: } -2441: -2441: template -2441: inline bool -2441: Box::Status::test_all(flags_t mask) const { -2441: return (flags & mask) == mask; -2441: } -2441: -2441: template -2441: inline bool -2441: Box::Status::test_any(flags_t mask) const { -2441: return (flags & mask) != 0; -2441: } -2441: -2441: template -2441: inline void -2441: Box::Status::set(flags_t mask) { -2441: flags |= mask; -2441: } -2441: -2441: template -2441: inline void -2441: Box::Status::reset(flags_t mask) { -2441: flags &= ~mask; -2441: } -2441: -2441: template -2441: inline bool -2441: Box::Status::test_empty_up_to_date() const { -2441: return test_any(EMPTY_UP_TO_DATE); -2441: } -2441: -2441: template -2441: inline void -2441: Box::Status::reset_empty_up_to_date() { -2441: reset(EMPTY_UP_TO_DATE); -2441: } -2441: -2441: template -2441: inline void -2441: Box::Status::set_empty_up_to_date() { -2441: set(EMPTY_UP_TO_DATE); -2441: } -2441: -2441: template -2441: inline bool -2441: Box::Status::test_empty() const { -2441: return test_any(EMPTY); -2441: } -2441: -2441: template -2441: inline void -2441: Box::Status::reset_empty() { -2441: reset(EMPTY); -2441: } -2441: -2441: template -2441: inline void -2441: Box::Status::set_empty() { -2441: set(EMPTY); -2441: } -2441: -2441: template -2441: inline bool -2441: Box::Status::test_universe() const { -2441: return test_any(UNIVERSE); -2441: } -2441: -2441: template -2441: inline void -2441: Box::Status::reset_universe() { -2441: reset(UNIVERSE); -2441: } -2441: -2441: template -2441: inline void -2441: Box::Status::set_universe() { -2441: set(UNIVERSE); -2441: } -2441: -2441: template -2441: bool -2441: Box::Status::OK() const { -2441: if (test_empty_up_to_date() -2441: && test_empty() -2441: && test_universe()) { -2441: -2441: -2441: -2441: -2441: -2441: return false; -2441: } -2441: -2441: -2441: return true; -2441: } -2441: -2441: -2441: namespace Implementation { -2441: -2441: namespace Boxes { -2441: -2441: -2441: extern const char* empty_up_to_date; -2441: extern const char* empty; -2441: extern const char* universe; -2441: const char yes = '+'; -2441: const char no = '-'; -2441: const char separator = ' '; -2441: # 172 "../../src/Box_Status_inlines.hh" -2441: inline bool -2441: get_field(std::istream& s, const char* keyword, bool& positive) { -2441: std::string str; -2441: if (!(s >> str) -2441: || (str[0] != yes && str[0] != no) -2441: || str.substr(1) != keyword) { -2441: return false; -2441: } -2441: positive = (str[0] == yes); -2441: return true; -2441: } -2441: -2441: } -2441: -2441: } -2441: -2441: template -2441: void -2441: Box::Status::ascii_dump(std::ostream& s) const { -2441: using namespace Implementation::Boxes; -2441: s << (test_empty_up_to_date() ? yes : no) << empty_up_to_date << separator -2441: << (test_empty() ? yes : no) << empty << separator -2441: << (test_universe() ? yes : no) << universe << separator; -2441: } -2441: -2441: template void Box::Status::ascii_dump() const { ascii_dump(std::cerr); } template void Box::Status::print() const { std::cerr << "No user level output operator defined " << "for " "Box::Status" << "." << std::endl; } -2441: -2441: template -2441: bool -2441: Box::Status::ascii_load(std::istream& s) { -2441: using namespace Implementation::Boxes; -2441: bool positive = Suppress_Uninitialized_Warnings_Type::synonym(); -2441: -2441: if (!get_field(s, Implementation::Boxes::empty_up_to_date, positive)) { -2441: return false; -2441: } -2441: if (positive) { -2441: set_empty_up_to_date(); -2441: } -2441: -2441: if (!get_field(s, Implementation::Boxes::empty, positive)) { -2441: return false; -2441: } -2441: if (positive) { -2441: set_empty(); -2441: } -2441: if (!get_field(s, universe, positive)) { -2441: return false; -2441: } -2441: if (positive) { -2441: set_universe(); -2441: } -2441: else { -2441: reset_universe(); -2441: } -2441: -2441: -2441: ((void) 0); -2441: return true; -2441: } -2441: -2441: } -2441: # 2285 "../../src/Box_defs.hh" 2 -2441: # 1 "../../src/Box_inlines.hh" 1 -2441: # 28 "../../src/Box_inlines.hh" -2441: # 1 "../../src/Constraint_System_defs.hh" 1 -2441: # 29 "../../src/Constraint_System_defs.hh" -2441: # 1 "../../src/Linear_System_defs.hh" 1 -2441: # 29 "../../src/Linear_System_defs.hh" -2441: # 1 "../../src/Swapping_Vector_defs.hh" 1 -2441: # 27 "../../src/Swapping_Vector_defs.hh" -2441: # 1 "../../src/Swapping_Vector_types.hh" 1 -2441: # 16 "../../src/Swapping_Vector_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: class Swapping_Vector; -2441: -2441: } -2441: # 28 "../../src/Swapping_Vector_defs.hh" 2 -2441: -2441: -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: -2441: -2441: template -2441: class Swapping_Vector { -2441: -2441: public: -2441: typedef typename std::vector::const_iterator const_iterator; -2441: typedef typename std::vector::iterator iterator; -2441: typedef typename std::vector::size_type size_type; -2441: -2441: Swapping_Vector(); -2441: explicit Swapping_Vector(dimension_type new_size); -2441: Swapping_Vector(dimension_type new_size, const T& x); -2441: -2441: void clear(); -2441: void reserve(dimension_type new_capacity); -2441: void resize(dimension_type new_size); -2441: void resize(dimension_type new_size, const T& x); -2441: -2441: dimension_type size() const; -2441: dimension_type capacity() const; -2441: bool empty() const; -2441: -2441: void m_swap(Swapping_Vector& v); -2441: -2441: T& operator[](dimension_type i); -2441: const T& operator[](dimension_type i) const; -2441: -2441: T& back(); -2441: const T& back() const; -2441: -2441: void push_back(const T& x); -2441: void pop_back(); -2441: -2441: iterator begin(); -2441: iterator end(); -2441: const_iterator begin() const; -2441: const_iterator end() const; -2441: -2441: iterator erase(iterator itr); -2441: iterator erase(iterator first, iterator last); -2441: -2441: -2441: memory_size_type external_memory_in_bytes() const; -2441: -2441: dimension_type max_num_rows(); -2441: -2441: private: -2441: std::vector impl; -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: void swap(Swapping_Vector& x, Swapping_Vector& y); -2441: -2441: } -2441: -2441: # 1 "../../src/Swapping_Vector_inlines.hh" 1 -2441: # 29 "../../src/Swapping_Vector_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: inline -2441: Swapping_Vector::Swapping_Vector() -2441: : impl() { -2441: } -2441: -2441: template -2441: inline -2441: Swapping_Vector::Swapping_Vector(dimension_type i) -2441: : impl() { -2441: -2441: -2441: resize(i); -2441: } -2441: -2441: template -2441: inline -2441: Swapping_Vector::Swapping_Vector(dimension_type new_size, const T& x) -2441: : impl() { -2441: resize(new_size, x); -2441: } -2441: -2441: template -2441: inline void -2441: Swapping_Vector::clear() { -2441: impl.clear(); -2441: } -2441: -2441: template -2441: inline void -2441: Swapping_Vector::reserve(dimension_type new_capacity) { -2441: if (impl.capacity() < new_capacity) { -2441: -2441: std::vector new_impl; -2441: -2441: new_impl.reserve(compute_capacity(new_capacity, max_num_rows())); -2441: new_impl.resize(impl.size()); -2441: -2441: using std::swap; -2441: -2441: -2441: for (dimension_type i = impl.size(); i-- > 0; ) { -2441: swap(new_impl[i], impl[i]); -2441: } -2441: -2441: -2441: swap(impl, new_impl); -2441: } -2441: } -2441: -2441: template -2441: inline void -2441: Swapping_Vector::resize(dimension_type new_size) { -2441: reserve(new_size); -2441: impl.resize(new_size); -2441: } -2441: -2441: template -2441: inline void -2441: Swapping_Vector::resize(dimension_type new_size, const T& x) { -2441: reserve(new_size); -2441: impl.resize(new_size, x); -2441: } -2441: -2441: template -2441: inline dimension_type -2441: Swapping_Vector::size() const { -2441: return impl.size(); -2441: } -2441: -2441: template -2441: inline dimension_type -2441: Swapping_Vector::capacity() const { -2441: return impl.capacity(); -2441: } -2441: -2441: template -2441: inline bool -2441: Swapping_Vector::empty() const { -2441: return impl.empty(); -2441: } -2441: -2441: template -2441: inline void -2441: Swapping_Vector::m_swap(Swapping_Vector& v) { -2441: using std::swap; -2441: swap(impl, v.impl); -2441: } -2441: -2441: template -2441: inline T& -2441: Swapping_Vector::operator[](dimension_type i) { -2441: return impl[i]; -2441: } -2441: -2441: template -2441: inline const T& -2441: Swapping_Vector::operator[](dimension_type i) const { -2441: return impl[i]; -2441: } -2441: -2441: template -2441: inline T& -2441: Swapping_Vector::back() { -2441: return impl.back(); -2441: } -2441: -2441: template -2441: inline const T& -2441: Swapping_Vector::back() const { -2441: return impl.back(); -2441: } -2441: -2441: template -2441: inline void -2441: Swapping_Vector::push_back(const T& x) { -2441: reserve(size() + 1); -2441: impl.push_back(x); -2441: } -2441: -2441: template -2441: inline void -2441: Swapping_Vector::pop_back() { -2441: impl.pop_back(); -2441: } -2441: -2441: template -2441: inline memory_size_type -2441: Swapping_Vector::external_memory_in_bytes() const { -2441: -2441: memory_size_type n = impl.capacity() * sizeof(T); -2441: for (const_iterator i = begin(), i_end = end(); i != i_end; ++i) { -2441: n += i->external_memory_in_bytes(); -2441: } -2441: return n; -2441: } -2441: -2441: template -2441: inline typename Swapping_Vector::iterator -2441: Swapping_Vector::begin() { -2441: return impl.begin(); -2441: } -2441: -2441: template -2441: inline typename Swapping_Vector::iterator -2441: Swapping_Vector::end() { -2441: return impl.end(); -2441: } -2441: -2441: template -2441: inline typename Swapping_Vector::const_iterator -2441: Swapping_Vector::begin() const { -2441: return impl.begin(); -2441: } -2441: -2441: template -2441: inline typename Swapping_Vector::const_iterator -2441: Swapping_Vector::end() const { -2441: return impl.end(); -2441: } -2441: -2441: template -2441: inline typename Swapping_Vector::iterator -2441: Swapping_Vector::erase(iterator itr) { -2441: ((void) 0); -2441: ((void) 0); -2441: const dimension_type old_i = itr - begin(); -2441: dimension_type i = old_i; -2441: ++i; -2441: while (i != size()) { -2441: swap(impl[i-1], impl[i]); -2441: } -2441: impl.pop_back(); -2441: return begin() + old_i; -2441: } -2441: -2441: template -2441: inline typename Swapping_Vector::iterator -2441: Swapping_Vector::erase(iterator first, iterator last) { -2441: ((void) 0); -2441: ((void) 0); -2441: ((void) 0); -2441: const iterator old_first = first; -2441: typedef typename std::iterator_traits::difference_type diff_t; -2441: const diff_t k = last - first; -2441: const dimension_type n = static_cast(end() - last); -2441: using std::swap; -2441: for (dimension_type i = 0; i < n; ++i, ++first) { -2441: swap(*first, *(first + k)); -2441: } -2441: impl.erase(end() - k, end()); -2441: return old_first; -2441: } -2441: -2441: template -2441: inline dimension_type -2441: Swapping_Vector::max_num_rows() { -2441: return impl.max_size(); -2441: } -2441: -2441: template -2441: inline void -2441: swap(Swapping_Vector& vec1, Swapping_Vector& vec2) { -2441: vec1.m_swap(vec2); -2441: } -2441: -2441: } -2441: # 95 "../../src/Swapping_Vector_defs.hh" 2 -2441: # 30 "../../src/Linear_System_defs.hh" 2 -2441: -2441: -2441: -2441: -2441: -2441: # 1 "../../src/Bit_Row_types.hh" 1 -2441: # 16 "../../src/Bit_Row_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: class Bit_Row; -2441: -2441: } -2441: # 36 "../../src/Linear_System_defs.hh" 2 -2441: # 1 "../../src/Bit_Matrix_types.hh" 1 -2441: # 16 "../../src/Bit_Matrix_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: class Bit_Matrix; -2441: -2441: } -2441: # 37 "../../src/Linear_System_defs.hh" 2 -2441: # 60 "../../src/Linear_System_defs.hh" -2441: template -2441: class Parma_Polyhedra_Library::Linear_System { -2441: public: -2441: -2441: -2441: typedef typename Swapping_Vector::const_iterator iterator; -2441: typedef typename Swapping_Vector::const_iterator const_iterator; -2441: -2441: -2441: -2441: -2441: -2441: Linear_System(Topology topol, Representation r); -2441: # 88 "../../src/Linear_System_defs.hh" -2441: Linear_System(Topology topol, dimension_type space_dim, Representation r); -2441: # 98 "../../src/Linear_System_defs.hh" -2441: struct With_Pending { -2441: }; -2441: -2441: -2441: Linear_System(const Linear_System& y); -2441: -2441: -2441: -2441: Linear_System(const Linear_System& y, Representation r); -2441: -2441: -2441: Linear_System(const Linear_System& y, With_Pending); -2441: -2441: -2441: Linear_System(const Linear_System& y, Representation r, With_Pending); -2441: -2441: -2441: Linear_System& operator=(const Linear_System& y); -2441: -2441: -2441: void assign_with_pending(const Linear_System& y); -2441: -2441: -2441: void m_swap(Linear_System& y); -2441: -2441: -2441: Representation representation() const; -2441: -2441: -2441: void set_representation(Representation r); -2441: -2441: -2441: static dimension_type max_space_dimension(); -2441: # 141 "../../src/Linear_System_defs.hh" -2441: dimension_type space_dimension() const; -2441: -2441: -2441: void set_space_dimension(dimension_type space_dim); -2441: -2441: -2441: void remove_trailing_rows(dimension_type n); -2441: # 157 "../../src/Linear_System_defs.hh" -2441: void remove_row(dimension_type i, bool keep_sorted = false); -2441: # 167 "../../src/Linear_System_defs.hh" -2441: void remove_rows(dimension_type first, dimension_type last, -2441: bool keep_sorted = false); -2441: # 177 "../../src/Linear_System_defs.hh" -2441: void remove_rows(const std::vector& indexes); -2441: # 186 "../../src/Linear_System_defs.hh" -2441: void remove_space_dimensions(const Variables_Set& vars); -2441: -2441: -2441: -2441: void shift_space_dimensions(Variable v, dimension_type n); -2441: # 205 "../../src/Linear_System_defs.hh" -2441: void permute_space_dimensions(const std::vector& cycle); -2441: -2441: -2441: void swap_space_dimensions(Variable v1, Variable v2); -2441: -2441: -2441: -2441: -2441: const Row& operator[](dimension_type k) const; -2441: -2441: -2441: iterator begin(); -2441: iterator end(); -2441: const_iterator begin() const; -2441: const_iterator end() const; -2441: -2441: bool has_no_rows() const; -2441: dimension_type num_rows() const; -2441: -2441: -2441: void strong_normalize(); -2441: -2441: -2441: void sign_normalize(); -2441: -2441: -2441: -2441: -2441: Topology topology() const; -2441: -2441: -2441: bool is_sorted() const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_necessarily_closed() const; -2441: -2441: -2441: -2441: -2441: -2441: dimension_type num_lines_or_equalities() const; -2441: -2441: -2441: dimension_type first_pending_row() const; -2441: -2441: -2441: dimension_type num_pending_rows() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool check_sorted() const; -2441: -2441: -2441: void set_topology(Topology t); -2441: -2441: -2441: void set_necessarily_closed(); -2441: -2441: -2441: void set_not_necessarily_closed(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void mark_as_necessarily_closed(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void mark_as_not_necessarily_closed(); -2441: -2441: -2441: void unset_pending_rows(); -2441: -2441: -2441: void set_index_first_pending_row(dimension_type i); -2441: -2441: -2441: void set_sorted(bool b); -2441: # 310 "../../src/Linear_System_defs.hh" -2441: void add_universe_rows_and_space_dimensions(dimension_type n); -2441: -2441: -2441: -2441: -2441: -2441: void insert(const Row& r); -2441: -2441: -2441: -2441: -2441: -2441: void insert_pending(const Row& r); -2441: -2441: -2441: -2441: -2441: -2441: void insert(Row& r, Recycle_Input); -2441: -2441: -2441: -2441: -2441: -2441: void insert_pending(Row& r, Recycle_Input); -2441: -2441: -2441: -2441: -2441: -2441: void insert(const Linear_System& y); -2441: -2441: -2441: void insert_pending(const Linear_System& r); -2441: -2441: -2441: -2441: -2441: -2441: void insert(Linear_System& r, Recycle_Input); -2441: -2441: -2441: -2441: void insert_pending(Linear_System& r, Recycle_Input); -2441: -2441: -2441: -2441: -2441: -2441: void sort_rows(); -2441: -2441: -2441: -2441: -2441: -2441: void sort_rows(dimension_type first_row, dimension_type last_row); -2441: # 375 "../../src/Linear_System_defs.hh" -2441: void merge_rows_assign(const Linear_System& y); -2441: -2441: -2441: -2441: -2441: -2441: void sort_pending_and_remove_duplicates(); -2441: # 390 "../../src/Linear_System_defs.hh" -2441: void sort_and_remove_with_sat(Bit_Matrix& sat); -2441: # 404 "../../src/Linear_System_defs.hh" -2441: dimension_type gauss(dimension_type n_lines_or_equalities); -2441: # 416 "../../src/Linear_System_defs.hh" -2441: void back_substitute(dimension_type n_lines_or_equalities); -2441: -2441: -2441: -2441: -2441: -2441: void simplify(); -2441: -2441: -2441: void clear(); -2441: -2441: void ascii_dump() const; void ascii_dump(std::ostream& s) const; void print() const; -2441: # 439 "../../src/Linear_System_defs.hh" -2441: bool ascii_load(std::istream& s); -2441: -2441: -2441: memory_size_type total_memory_in_bytes() const; -2441: -2441: -2441: memory_size_type external_memory_in_bytes() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: Swapping_Vector rows; -2441: -2441: -2441: bool OK() const; -2441: -2441: private: -2441: # 469 "../../src/Linear_System_defs.hh" -2441: void remove_row_no_ok(dimension_type i, bool keep_sorted = false); -2441: # 478 "../../src/Linear_System_defs.hh" -2441: void insert_pending_no_ok(Row& r, Recycle_Input); -2441: # 487 "../../src/Linear_System_defs.hh" -2441: void insert_no_ok(Row& r, Recycle_Input); -2441: -2441: -2441: -2441: -2441: -2441: -2441: void set_space_dimension_no_ok(dimension_type space_dim); -2441: # 506 "../../src/Linear_System_defs.hh" -2441: void swap_row_intervals(dimension_type first, dimension_type last, -2441: dimension_type offset); -2441: -2441: -2441: -2441: dimension_type space_dimension_; -2441: -2441: -2441: -2441: Topology row_topology; -2441: -2441: -2441: dimension_type index_first_pending; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool sorted; -2441: -2441: Representation representation_; -2441: -2441: -2441: struct Row_Less_Than { -2441: bool operator()(const Row& x, const Row& y) const; -2441: }; -2441: -2441: -2441: struct Unique_Compare { -2441: Unique_Compare(const Swapping_Vector& cont, -2441: dimension_type base = 0); -2441: -2441: bool operator()(dimension_type i, dimension_type j) const; -2441: -2441: const Swapping_Vector& container; -2441: const dimension_type base_index; -2441: }; -2441: -2441: friend class Polyhedron; -2441: friend class Generator_System; -2441: }; -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: -2441: -2441: template -2441: void swap(Parma_Polyhedra_Library::Linear_System& x, -2441: Parma_Polyhedra_Library::Linear_System& y); -2441: -2441: } -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: -2441: -2441: template -2441: bool operator==(const Linear_System& x, const Linear_System& y); -2441: -2441: -2441: -2441: -2441: -2441: template -2441: bool operator!=(const Linear_System& x, const Linear_System& y); -2441: -2441: } -2441: -2441: # 1 "../../src/Linear_System_inlines.hh" 1 -2441: # 27 "../../src/Linear_System_inlines.hh" -2441: # 1 "../../src/Bit_Row_defs.hh" 1 -2441: # 33 "../../src/Bit_Row_defs.hh" -2441: namespace Parma_Polyhedra_Library { -2441: # 45 "../../src/Bit_Row_defs.hh" -2441: void -2441: iter_swap(std::vector::iterator x, -2441: std::vector::iterator y); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool operator==(const Bit_Row& x, const Bit_Row& y); -2441: -2441: -2441: -2441: -2441: -2441: bool operator!=(const Bit_Row& x, const Bit_Row& y); -2441: # 77 "../../src/Bit_Row_defs.hh" -2441: int compare(const Bit_Row& x, const Bit_Row& y); -2441: -2441: -2441: -2441: -2441: -2441: bool subset_or_equal(const Bit_Row& x, const Bit_Row& y); -2441: # 93 "../../src/Bit_Row_defs.hh" -2441: bool subset_or_equal(const Bit_Row& x, const Bit_Row& y, -2441: bool& strict_subset); -2441: -2441: -2441: -2441: -2441: -2441: bool strict_subset(const Bit_Row& x, const Bit_Row& y); -2441: -2441: } -2441: -2441: -2441: -2441: -2441: -2441: class Parma_Polyhedra_Library::Bit_Row { -2441: public: -2441: -2441: Bit_Row(); -2441: -2441: -2441: Bit_Row(const Bit_Row& y); -2441: -2441: -2441: -2441: -2441: -2441: Bit_Row(const Bit_Row& y, const Bit_Row& z); -2441: -2441: -2441: ~Bit_Row(); -2441: -2441: -2441: Bit_Row& operator=(const Bit_Row& y); -2441: -2441: -2441: void m_swap(Bit_Row& y); -2441: -2441: -2441: bool operator[](unsigned long k) const; -2441: -2441: -2441: void set(unsigned long k); -2441: -2441: -2441: void set_until(unsigned long k); -2441: -2441: -2441: void clear(unsigned long k); -2441: -2441: -2441: void clear_from(unsigned long k); -2441: -2441: -2441: void clear(); -2441: -2441: -2441: void union_assign(const Bit_Row& x, const Bit_Row& y); -2441: -2441: -2441: void intersection_assign(const Bit_Row& x, const Bit_Row& y); -2441: -2441: -2441: void difference_assign(const Bit_Row& x, const Bit_Row& y); -2441: -2441: -2441: friend int compare(const Bit_Row& x, const Bit_Row& y); -2441: friend bool operator==(const Bit_Row& x, const Bit_Row& y); -2441: friend bool operator!=(const Bit_Row& x, const Bit_Row& y); -2441: friend bool subset_or_equal(const Bit_Row& x, const Bit_Row& y); -2441: friend bool subset_or_equal(const Bit_Row& x, const Bit_Row& y, -2441: bool& strict_subset); -2441: friend bool strict_subset(const Bit_Row& x, const Bit_Row& y); -2441: -2441: -2441: unsigned long first() const; -2441: -2441: -2441: -2441: -2441: -2441: unsigned long next(unsigned long position) const; -2441: -2441: -2441: unsigned long last() const; -2441: -2441: -2441: -2441: -2441: -2441: unsigned long prev(unsigned long position) const; -2441: -2441: -2441: unsigned long count_ones() const; -2441: -2441: -2441: bool empty() const; -2441: -2441: -2441: memory_size_type total_memory_in_bytes() const; -2441: -2441: -2441: memory_size_type external_memory_in_bytes() const; -2441: -2441: -2441: bool OK() const; -2441: -2441: private: -2441: -2441: mpz_t vec; -2441: -2441: -2441: -2441: -2441: -2441: -2441: void union_helper(const Bit_Row& y, const Bit_Row& z); -2441: }; -2441: -2441: # 1 "../../src/Bit_Row_inlines.hh" 1 -2441: # 40 "../../src/Bit_Row_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: inline -2441: Bit_Row::Bit_Row() { -2441: -2441: # 44 "../../src/Bit_Row_inlines.hh" 3 4 -2441: __gmpz_init -2441: # 44 "../../src/Bit_Row_inlines.hh" -2441: (vec); -2441: } -2441: -2441: inline -2441: Bit_Row::Bit_Row(const Bit_Row& y) { -2441: -2441: # 49 "../../src/Bit_Row_inlines.hh" 3 4 -2441: __gmpz_init_set -2441: # 49 "../../src/Bit_Row_inlines.hh" -2441: (vec, y.vec); -2441: } -2441: -2441: inline -2441: Bit_Row::Bit_Row(const Bit_Row& y, const Bit_Row& z) { -2441: const mp_size_t y_size = y.vec->_mp_size; -2441: ((void) 0); -2441: const mp_size_t z_size = z.vec->_mp_size; -2441: ((void) 0); -2441: if (y_size < z_size) { -2441: ((void) 0) -2441: ; -2441: -2441: # 61 "../../src/Bit_Row_inlines.hh" 3 4 -2441: __gmpz_init2 -2441: # 61 "../../src/Bit_Row_inlines.hh" -2441: (vec, static_cast(z_size) * ((4) * static_cast(8))); -2441: union_helper(y, z); -2441: } -2441: else { -2441: ((void) 0) -2441: ; -2441: -2441: # 67 "../../src/Bit_Row_inlines.hh" 3 4 -2441: __gmpz_init2 -2441: # 67 "../../src/Bit_Row_inlines.hh" -2441: (vec, static_cast(y_size) * ((4) * static_cast(8))); -2441: union_helper(z, y); -2441: } -2441: } -2441: -2441: inline -2441: Bit_Row::~Bit_Row() { -2441: -2441: # 74 "../../src/Bit_Row_inlines.hh" 3 4 -2441: __gmpz_clear -2441: # 74 "../../src/Bit_Row_inlines.hh" -2441: (vec); -2441: } -2441: -2441: inline Bit_Row& -2441: Bit_Row::operator=(const Bit_Row& y) { -2441: -2441: # 79 "../../src/Bit_Row_inlines.hh" 3 4 -2441: __gmpz_set -2441: # 79 "../../src/Bit_Row_inlines.hh" -2441: (vec, y.vec); -2441: return *this; -2441: } -2441: -2441: inline void -2441: Bit_Row::set(const unsigned long k) { -2441: -2441: # 85 "../../src/Bit_Row_inlines.hh" 3 4 -2441: __gmpz_setbit -2441: # 85 "../../src/Bit_Row_inlines.hh" -2441: (vec, k); -2441: } -2441: -2441: inline void -2441: Bit_Row::clear(const unsigned long k) { -2441: -2441: # 90 "../../src/Bit_Row_inlines.hh" 3 4 -2441: __gmpz_clrbit -2441: # 90 "../../src/Bit_Row_inlines.hh" -2441: (vec, k); -2441: } -2441: -2441: inline void -2441: Bit_Row::clear_from(const unsigned long k) { -2441: -2441: # 95 "../../src/Bit_Row_inlines.hh" 3 4 -2441: __gmpz_tdiv_r_2exp -2441: # 95 "../../src/Bit_Row_inlines.hh" -2441: (vec, vec, k); -2441: } -2441: -2441: inline unsigned long -2441: Bit_Row::count_ones() const { -2441: const mp_size_t x_size = vec->_mp_size; -2441: ((void) 0); -2441: return (x_size == 0) ? 0 : -2441: # 102 "../../src/Bit_Row_inlines.hh" 3 4 -2441: __gmpn_popcount -2441: # 102 "../../src/Bit_Row_inlines.hh" -2441: (vec->_mp_d, x_size); -2441: } -2441: -2441: inline bool -2441: Bit_Row::empty() const { -2441: return -2441: # 107 "../../src/Bit_Row_inlines.hh" 3 4 -2441: (( -2441: # 107 "../../src/Bit_Row_inlines.hh" -2441: vec -2441: # 107 "../../src/Bit_Row_inlines.hh" 3 4 -2441: )->_mp_size < 0 ? -1 : ( -2441: # 107 "../../src/Bit_Row_inlines.hh" -2441: vec -2441: # 107 "../../src/Bit_Row_inlines.hh" 3 4 -2441: )->_mp_size > 0) -2441: # 107 "../../src/Bit_Row_inlines.hh" -2441: == 0; -2441: } -2441: -2441: inline void -2441: Bit_Row::m_swap(Bit_Row& y) { -2441: -2441: # 112 "../../src/Bit_Row_inlines.hh" 3 4 -2441: __gmpz_swap -2441: # 112 "../../src/Bit_Row_inlines.hh" -2441: (vec, y.vec); -2441: } -2441: -2441: inline void -2441: Bit_Row::clear() { -2441: -2441: # 117 "../../src/Bit_Row_inlines.hh" 3 4 -2441: __gmpz_set_ui -2441: # 117 "../../src/Bit_Row_inlines.hh" -2441: (vec, 0UL); -2441: } -2441: -2441: inline memory_size_type -2441: Bit_Row::external_memory_in_bytes() const { -2441: return static_cast(vec[0]._mp_alloc) * 4; -2441: } -2441: -2441: inline memory_size_type -2441: Bit_Row::total_memory_in_bytes() const { -2441: return sizeof(*this) + external_memory_in_bytes(); -2441: } -2441: -2441: inline void -2441: Bit_Row::union_assign(const Bit_Row& x, const Bit_Row& y) { -2441: const mp_size_t x_size = x.vec->_mp_size; -2441: ((void) 0); -2441: const mp_size_t y_size = y.vec->_mp_size; -2441: ((void) 0); -2441: if (x_size < y_size) { -2441: ((void) 0) -2441: ; -2441: -2441: # 139 "../../src/Bit_Row_inlines.hh" 3 4 -2441: __gmpz_realloc2 -2441: # 139 "../../src/Bit_Row_inlines.hh" -2441: (vec, static_cast(y_size) * ((4) * static_cast(8))); -2441: union_helper(x, y); -2441: } -2441: else { -2441: ((void) 0) -2441: ; -2441: -2441: # 145 "../../src/Bit_Row_inlines.hh" 3 4 -2441: __gmpz_realloc2 -2441: # 145 "../../src/Bit_Row_inlines.hh" -2441: (vec, static_cast(x_size) * ((4) * static_cast(8))); -2441: union_helper(y, x); -2441: } -2441: } -2441: -2441: inline void -2441: Bit_Row::intersection_assign(const Bit_Row& x, const Bit_Row& y) { -2441: -2441: # 152 "../../src/Bit_Row_inlines.hh" 3 4 -2441: __gmpz_and -2441: # 152 "../../src/Bit_Row_inlines.hh" -2441: (vec, x.vec, y.vec); -2441: } -2441: -2441: inline void -2441: Bit_Row::difference_assign(const Bit_Row& x, const Bit_Row& y) { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_complement_y; mpz_class& complement_y = holder_complement_y.item(); -2441: -2441: # 158 "../../src/Bit_Row_inlines.hh" 3 4 -2441: __gmpz_com -2441: # 158 "../../src/Bit_Row_inlines.hh" -2441: (complement_y.get_mpz_t(), y.vec); -2441: -2441: # 159 "../../src/Bit_Row_inlines.hh" 3 4 -2441: __gmpz_and -2441: # 159 "../../src/Bit_Row_inlines.hh" -2441: (vec, x.vec, complement_y.get_mpz_t()); -2441: } -2441: -2441: namespace Implementation { -2441: -2441: -2441: -2441: -2441: inline unsigned int -2441: first_one(unsigned int u) { -2441: return ctz(u); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: inline unsigned int -2441: first_one(unsigned long ul) { -2441: return ctz(ul); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: inline unsigned int -2441: first_one(unsigned long long ull) { -2441: return ctz(ull); -2441: } -2441: -2441: -2441: -2441: -2441: inline unsigned int -2441: last_one(unsigned int u) { -2441: return static_cast(((sizeof(u)) * static_cast(8))) -2441: - 1U - clz(u); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: inline unsigned int -2441: last_one(unsigned long ul) { -2441: return static_cast(((sizeof(ul)) * static_cast(8))) -2441: - 1U - clz(ul); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: inline unsigned int -2441: last_one(unsigned long long ull) { -2441: return static_cast(((sizeof(ull)) * static_cast(8))) -2441: - 1U - clz(ull); -2441: } -2441: -2441: } -2441: -2441: -2441: inline void -2441: swap(Bit_Row& x, Bit_Row& y) { -2441: x.m_swap(y); -2441: } -2441: -2441: -2441: inline void -2441: iter_swap(std::vector::iterator x, -2441: std::vector::iterator y) { -2441: swap(*x, *y); -2441: } -2441: -2441: } -2441: # 213 "../../src/Bit_Row_defs.hh" 2 -2441: # 28 "../../src/Linear_System_inlines.hh" 2 -2441: -2441: -2441: -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: inline memory_size_type -2441: Linear_System::external_memory_in_bytes() const { -2441: return rows.external_memory_in_bytes(); -2441: } -2441: -2441: template -2441: inline memory_size_type -2441: Linear_System::total_memory_in_bytes() const { -2441: return sizeof(*this) + external_memory_in_bytes(); -2441: } -2441: -2441: template -2441: inline bool -2441: Linear_System::is_sorted() const { -2441: -2441: -2441: -2441: -2441: ((void) 0); -2441: return sorted; -2441: } -2441: -2441: template -2441: inline void -2441: Linear_System::set_sorted(const bool b) { -2441: sorted = b; -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline -2441: Linear_System::Linear_System(Topology topol, Representation r) -2441: : rows(), -2441: space_dimension_(0), -2441: row_topology(topol), -2441: index_first_pending(0), -2441: sorted(true), -2441: representation_(r) { -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline -2441: Linear_System::Linear_System(Topology topol, -2441: dimension_type space_dim, -2441: Representation r) -2441: : rows(), -2441: space_dimension_(0), -2441: row_topology(topol), -2441: index_first_pending(0), -2441: sorted(true), -2441: representation_(r) { -2441: set_space_dimension(space_dim); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline dimension_type -2441: Linear_System::first_pending_row() const { -2441: return index_first_pending; -2441: } -2441: -2441: template -2441: inline dimension_type -2441: Linear_System::num_pending_rows() const { -2441: ((void) 0); -2441: return num_rows() - first_pending_row(); -2441: } -2441: -2441: template -2441: inline void -2441: Linear_System::unset_pending_rows() { -2441: index_first_pending = num_rows(); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline void -2441: Linear_System::set_index_first_pending_row(const dimension_type i) { -2441: index_first_pending = i; -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline -2441: Linear_System::Linear_System(const Linear_System& y) -2441: : rows(y.rows), -2441: space_dimension_(y.space_dimension_), -2441: row_topology(y.row_topology), -2441: representation_(y.representation_) { -2441: -2441: sorted = (y.num_pending_rows() > 0) ? false : y.sorted; -2441: unset_pending_rows(); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline -2441: Linear_System::Linear_System(const Linear_System& y, Representation r) -2441: : rows(), -2441: space_dimension_(y.space_dimension_), -2441: row_topology(y.row_topology), -2441: representation_(r) { -2441: rows.resize(y.num_rows()); -2441: for (dimension_type i = 0; i < y.num_rows(); ++i) { -2441: -2441: Row row(y.rows[i], r); -2441: swap(rows[i], row); -2441: } -2441: -2441: sorted = (y.num_pending_rows() > 0) ? false : y.sorted; -2441: unset_pending_rows(); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline -2441: Linear_System::Linear_System(const Linear_System& y, With_Pending) -2441: : rows(y.rows), -2441: space_dimension_(y.space_dimension_), -2441: row_topology(y.row_topology), -2441: index_first_pending(y.index_first_pending), -2441: sorted(y.sorted), -2441: representation_(y.representation_) { -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline -2441: Linear_System::Linear_System(const Linear_System& y, Representation r, -2441: With_Pending) -2441: : rows(), -2441: space_dimension_(y.space_dimension_), -2441: row_topology(y.row_topology), -2441: index_first_pending(y.index_first_pending), -2441: sorted(y.sorted), -2441: representation_(r) { -2441: rows.resize(y.num_rows()); -2441: for (dimension_type i = 0; i < y.num_rows(); ++i) { -2441: -2441: Row row(y.rows[i], r); -2441: swap(rows[i], row); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline Linear_System& -2441: Linear_System::operator=(const Linear_System& y) { -2441: -2441: Linear_System tmp = y; -2441: swap(*this, tmp); -2441: return *this; -2441: } -2441: -2441: template -2441: inline void -2441: Linear_System::assign_with_pending(const Linear_System& y) { -2441: Linear_System tmp(y, With_Pending()); -2441: swap(*this, tmp); -2441: } -2441: -2441: template -2441: inline void -2441: Linear_System::m_swap(Linear_System& y) { -2441: using std::swap; -2441: swap(rows, y.rows); -2441: swap(space_dimension_, y.space_dimension_); -2441: swap(row_topology, y.row_topology); -2441: swap(index_first_pending, y.index_first_pending); -2441: swap(sorted, y.sorted); -2441: swap(representation_, y.representation_); -2441: ((void) 0); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline void -2441: Linear_System::clear() { -2441: -2441: rows.clear(); -2441: index_first_pending = 0; -2441: sorted = true; -2441: space_dimension_ = 0; -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline void -2441: Linear_System::mark_as_necessarily_closed() { -2441: ((void) 0); -2441: row_topology = NECESSARILY_CLOSED; -2441: ++space_dimension_; -2441: for (dimension_type i = num_rows(); i-- > 0; ) { -2441: rows[i].mark_as_necessarily_closed(); -2441: } -2441: } -2441: -2441: template -2441: inline void -2441: Linear_System::mark_as_not_necessarily_closed() { -2441: ((void) 0); -2441: ((void) 0); -2441: row_topology = NOT_NECESSARILY_CLOSED; -2441: --space_dimension_; -2441: for (dimension_type i = num_rows(); i-- > 0; ) { -2441: rows[i].mark_as_not_necessarily_closed(); -2441: } -2441: } -2441: -2441: template -2441: inline void -2441: Linear_System::set_topology(Topology t) { -2441: if (topology() == t) { -2441: return; -2441: } -2441: for (dimension_type i = num_rows(); i-- > 0; ) { -2441: rows[i].set_topology(t); -2441: } -2441: row_topology = t; -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline void -2441: Linear_System::set_necessarily_closed() { -2441: set_topology(NECESSARILY_CLOSED); -2441: } -2441: -2441: template -2441: inline void -2441: Linear_System::set_not_necessarily_closed() { -2441: set_topology(NOT_NECESSARILY_CLOSED); -2441: } -2441: -2441: template -2441: inline bool -2441: Linear_System::is_necessarily_closed() const { -2441: return row_topology == NECESSARILY_CLOSED; -2441: } -2441: -2441: template -2441: inline const Row& -2441: Linear_System::operator[](const dimension_type k) const { -2441: return rows[k]; -2441: } -2441: -2441: template -2441: inline typename Linear_System::iterator -2441: Linear_System::begin() { -2441: return rows.begin(); -2441: } -2441: -2441: template -2441: inline typename Linear_System::iterator -2441: Linear_System::end() { -2441: return rows.end(); -2441: } -2441: -2441: template -2441: inline typename Linear_System::const_iterator -2441: Linear_System::begin() const { -2441: return rows.begin(); -2441: } -2441: -2441: template -2441: inline typename Linear_System::const_iterator -2441: Linear_System::end() const { -2441: return rows.end(); -2441: } -2441: -2441: template -2441: inline bool -2441: Linear_System::has_no_rows() const { -2441: return rows.empty(); -2441: } -2441: -2441: template -2441: inline dimension_type -2441: Linear_System::num_rows() const { -2441: return rows.size(); -2441: } -2441: -2441: template -2441: inline Topology -2441: Linear_System::topology() const { -2441: return row_topology; -2441: } -2441: -2441: template -2441: inline Representation -2441: Linear_System::representation() const { -2441: return representation_; -2441: } -2441: -2441: template -2441: inline void -2441: Linear_System::set_representation(Representation r) { -2441: representation_ = r; -2441: for (dimension_type i = 0; i < rows.size(); ++i) { -2441: rows[i].set_representation(r); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline dimension_type -2441: Linear_System::max_space_dimension() { -2441: return Row::max_space_dimension(); -2441: } -2441: -2441: template -2441: inline dimension_type -2441: Linear_System::space_dimension() const { -2441: return space_dimension_; -2441: } -2441: -2441: template -2441: inline void -2441: Linear_System::set_space_dimension_no_ok(dimension_type space_dim) { -2441: for (dimension_type i = rows.size(); i-- > 0; ) { -2441: rows[i].set_space_dimension_no_ok(space_dim); -2441: } -2441: space_dimension_ = space_dim; -2441: } -2441: -2441: template -2441: inline void -2441: Linear_System::set_space_dimension(dimension_type space_dim) { -2441: set_space_dimension_no_ok(space_dim); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline void -2441: Linear_System::remove_row_no_ok(const dimension_type i, -2441: const bool keep_sorted) { -2441: ((void) 0); -2441: const bool was_pending = (i >= index_first_pending); -2441: -2441: if (sorted && keep_sorted && !was_pending) { -2441: for (dimension_type j = i + 1; j < rows.size(); ++j) { -2441: swap(rows[j], rows[j-1]); -2441: } -2441: rows.pop_back(); -2441: } -2441: else { -2441: if (!was_pending) { -2441: sorted = false; -2441: } -2441: const bool last_row_is_pending = (num_rows() - 1 >= index_first_pending); -2441: if (was_pending == last_row_is_pending) { -2441: -2441: swap(rows[i], rows.back()); -2441: } -2441: else { -2441: -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: -2441: swap(rows[i], rows[index_first_pending - 1]); -2441: -2441: -2441: -2441: swap(rows[i], rows.back()); -2441: } -2441: rows.pop_back(); -2441: } -2441: if (!was_pending) { -2441: -2441: --index_first_pending; -2441: } -2441: } -2441: -2441: template -2441: inline void -2441: Linear_System::remove_row(const dimension_type i, bool keep_sorted) { -2441: remove_row_no_ok(i, keep_sorted); -2441: ((void) 0); -2441: } -2441: -2441: -2441: template -2441: inline void -2441: Linear_System::remove_rows(dimension_type first, -2441: dimension_type last, -2441: bool keep_sorted) { -2441: ((void) 0); -2441: ((void) 0); -2441: const dimension_type n = last - first; -2441: -2441: if (n == 0) { -2441: return; -2441: } -2441: -2441: -2441: -2441: ((void) 0); -2441: -2441: const bool were_pending = (first >= index_first_pending); -2441: -2441: -2441: if (sorted && keep_sorted && !were_pending) { -2441: -2441: for (dimension_type i = last; i < rows.size(); ++i) { -2441: swap(rows[i], rows[i - n]); -2441: } -2441: -2441: rows.resize(rows.size() - n); -2441: -2441: -2441: index_first_pending -= n; -2441: -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: -2441: -2441: -2441: const dimension_type offset = rows.size() - n - first; -2441: -2441: -2441: -2441: -2441: if (index_first_pending == num_rows()) { -2441: -2441: ((void) 0); -2441: -2441: swap_row_intervals(first, last, offset); -2441: -2441: rows.resize(rows.size() - n); -2441: -2441: -2441: index_first_pending -= n; -2441: } -2441: else { -2441: -2441: if (were_pending) { -2441: -2441: -2441: -2441: swap_row_intervals(first, last, offset); -2441: -2441: rows.resize(rows.size() - n); -2441: -2441: -2441: index_first_pending -= n; -2441: } -2441: else { -2441: ((void) 0); -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: -2441: -2441: ((void) 0); -2441: swap_row_intervals(first, last, index_first_pending - last); -2441: -2441: -2441: index_first_pending -= n; -2441: first = index_first_pending; -2441: last = first + n; -2441: -2441: -2441: swap_row_intervals(first, last, num_rows() - last); -2441: -2441: -2441: rows.resize(rows.size() - n); -2441: } -2441: } -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline void -2441: Linear_System::swap_row_intervals(dimension_type first, -2441: dimension_type last, -2441: dimension_type offset) { -2441: ((void) 0); -2441: ((void) 0); -2441: # 534 "../../src/Linear_System_inlines.hh" -2441: if (first + offset < last) { -2441: -2441: const dimension_type k = last - first - offset; -2441: last -= k; -2441: offset += k; -2441: } -2441: -2441: if (first == last) { -2441: -2441: return; -2441: } -2441: -2441: for (dimension_type i = first; i < last; ++i) { -2441: swap(rows[i], rows[i + offset]); -2441: } -2441: -2441: if (first < index_first_pending) { -2441: -2441: set_sorted(false); -2441: } -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline void -2441: Linear_System::remove_rows(const std::vector& indexes) { -2441: # 576 "../../src/Linear_System_inlines.hh" -2441: if (indexes.empty()) { -2441: return; -2441: } -2441: -2441: const dimension_type rows_size = rows.size(); -2441: typedef std::vector::const_iterator itr_t; -2441: -2441: -2441: -2441: -2441: dimension_type last_unused_row = indexes[0]; -2441: dimension_type i = indexes[0]; -2441: itr_t itr = indexes.begin(); -2441: itr_t itr_end = indexes.end(); -2441: while (itr != itr_end) { -2441: -2441: ((void) 0); -2441: if (*itr == i) { -2441: -2441: ++itr; -2441: } -2441: else { -2441: -2441: swap(rows[last_unused_row], rows[i]); -2441: ++last_unused_row; -2441: } -2441: ++i; -2441: } -2441: -2441: -2441: for ( ; i < rows_size; ++i) { -2441: swap(rows[last_unused_row], rows[i]); -2441: ++last_unused_row; -2441: } -2441: -2441: ((void) 0); -2441: -2441: -2441: -2441: rows.resize(last_unused_row); -2441: -2441: -2441: if (indexes[0] >= index_first_pending) { -2441: -2441: } -2441: else { -2441: if (indexes.back() < index_first_pending) { -2441: -2441: index_first_pending -= indexes.size(); -2441: } -2441: else { -2441: -2441: -2441: -2441: -2441: itr_t j = std::lower_bound(indexes.begin(), indexes.end(), -2441: index_first_pending); -2441: std::iterator_traits::difference_type -2441: non_pending = j - indexes.begin(); -2441: index_first_pending -= static_cast(non_pending); -2441: } -2441: } -2441: -2441: -2441: -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline void -2441: Linear_System::remove_trailing_rows(const dimension_type n) { -2441: ((void) 0); -2441: rows.resize(rows.size() - n); -2441: if (first_pending_row() > rows.size()) { -2441: index_first_pending = rows.size(); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline void -2441: Linear_System -2441: ::permute_space_dimensions(const std::vector& cycle) { -2441: for (dimension_type i = num_rows(); i-- > 0; ) { -2441: rows[i].permute_space_dimensions(cycle); -2441: } -2441: sorted = false; -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline void -2441: Linear_System -2441: ::swap_space_dimensions(Variable v1, Variable v2) { -2441: ((void) 0); -2441: ((void) 0); -2441: for (dimension_type k = num_rows(); k-- > 0; ) { -2441: rows[k].swap_space_dimensions(v1, v2); -2441: } -2441: sorted = false; -2441: ((void) 0); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: operator!=(const Linear_System& x, const Linear_System& y) { -2441: return !(x == y); -2441: } -2441: -2441: template -2441: inline bool -2441: Linear_System::Row_Less_Than::operator()(const Row& x, -2441: const Row& y) const { -2441: return compare(x, y) < 0; -2441: } -2441: -2441: template -2441: inline -2441: Linear_System::Unique_Compare -2441: ::Unique_Compare(const Swapping_Vector& cont, -2441: dimension_type base) -2441: : container(cont), base_index(base) { -2441: } -2441: -2441: template -2441: inline bool -2441: Linear_System::Unique_Compare -2441: ::operator()(dimension_type i, dimension_type j) const { -2441: return container[base_index + i].is_equal_to(container[base_index + j]); -2441: } -2441: -2441: -2441: template -2441: inline void -2441: swap(Linear_System& x, Linear_System& y) { -2441: x.m_swap(y); -2441: } -2441: -2441: } -2441: # 580 "../../src/Linear_System_defs.hh" 2 -2441: # 1 "../../src/Linear_System_templates.hh" 1 -2441: # 27 "../../src/Linear_System_templates.hh" -2441: # 1 "../../src/Bit_Matrix_defs.hh" 1 -2441: # 33 "../../src/Bit_Matrix_defs.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: } -2441: -2441: -2441: -2441: -2441: -2441: class Parma_Polyhedra_Library::Bit_Matrix { -2441: public: -2441: -2441: Bit_Matrix(); -2441: -2441: -2441: Bit_Matrix(dimension_type n_rows, dimension_type n_columns); -2441: -2441: -2441: Bit_Matrix(const Bit_Matrix& y); -2441: -2441: -2441: ~Bit_Matrix(); -2441: -2441: -2441: Bit_Matrix& operator=(const Bit_Matrix& y); -2441: -2441: -2441: void m_swap(Bit_Matrix& y); -2441: -2441: -2441: Bit_Row& operator[](dimension_type k); -2441: -2441: -2441: const Bit_Row& operator[](dimension_type k) const; -2441: -2441: -2441: void clear(); -2441: -2441: -2441: void transpose(); -2441: -2441: -2441: void transpose_assign(const Bit_Matrix& y); -2441: -2441: -2441: static dimension_type max_num_rows(); -2441: -2441: -2441: dimension_type num_columns() const; -2441: -2441: -2441: dimension_type num_rows() const; -2441: -2441: -2441: void sort_rows(); -2441: # 105 "../../src/Bit_Matrix_defs.hh" -2441: bool sorted_contains(const Bit_Row& row) const; -2441: # 114 "../../src/Bit_Matrix_defs.hh" -2441: void add_recycled_row(Bit_Row& row); -2441: -2441: -2441: void remove_trailing_rows(dimension_type n); -2441: -2441: -2441: -2441: -2441: -2441: -2441: void remove_trailing_columns(dimension_type n); -2441: -2441: -2441: void resize(dimension_type new_n_rows, dimension_type new_n_columns); -2441: -2441: -2441: bool OK() const; -2441: -2441: void ascii_dump() const; void ascii_dump(std::ostream& s) const; void print() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool ascii_load(std::istream& s); -2441: -2441: -2441: memory_size_type total_memory_in_bytes() const; -2441: -2441: -2441: memory_size_type external_memory_in_bytes() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: private: -2441: -2441: std::vector rows; -2441: -2441: -2441: dimension_type row_size; -2441: -2441: -2441: -2441: struct Bit_Row_Less_Than { -2441: bool operator()(const Bit_Row& x, const Bit_Row& y) const; -2441: }; -2441: -2441: template -2441: friend class Parma_Polyhedra_Library::Linear_System; -2441: }; -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: -2441: -2441: bool operator==(const Bit_Matrix& x, const Bit_Matrix& y); -2441: -2441: -2441: -2441: -2441: -2441: bool operator!=(const Bit_Matrix& x, const Bit_Matrix& y); -2441: -2441: } -2441: -2441: # 1 "../../src/Bit_Matrix_inlines.hh" 1 -2441: # 30 "../../src/Bit_Matrix_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: inline -2441: Bit_Matrix::Bit_Matrix() -2441: : rows(), -2441: row_size(0) { -2441: } -2441: -2441: inline dimension_type -2441: Bit_Matrix::max_num_rows() { -2441: return std::vector().max_size(); -2441: } -2441: -2441: inline -2441: Bit_Matrix::Bit_Matrix(const dimension_type n_rows, -2441: const dimension_type n_columns) -2441: : rows(n_rows), -2441: row_size(n_columns) { -2441: } -2441: -2441: inline -2441: Bit_Matrix::Bit_Matrix(const Bit_Matrix& y) -2441: : rows(y.rows), -2441: row_size(y.row_size) { -2441: } -2441: -2441: inline -2441: Bit_Matrix::~Bit_Matrix() { -2441: } -2441: -2441: inline void -2441: Bit_Matrix::remove_trailing_rows(const dimension_type n) { -2441: -2441: -2441: ((void) 0); -2441: if (n != 0) { -2441: rows.resize(rows.size() - n); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: inline void -2441: Bit_Matrix::remove_trailing_columns(const dimension_type n) { -2441: -2441: -2441: ((void) 0); -2441: row_size -= n; -2441: ((void) 0); -2441: } -2441: -2441: inline void -2441: Bit_Matrix::m_swap(Bit_Matrix& y) { -2441: std::swap(row_size, y.row_size); -2441: std::swap(rows, y.rows); -2441: } -2441: -2441: inline Bit_Row& -2441: Bit_Matrix::operator[](const dimension_type k) { -2441: ((void) 0); -2441: return rows[k]; -2441: } -2441: -2441: inline const Bit_Row& -2441: Bit_Matrix::operator[](const dimension_type k) const { -2441: ((void) 0); -2441: return rows[k]; -2441: } -2441: -2441: inline dimension_type -2441: Bit_Matrix::num_columns() const { -2441: return row_size; -2441: } -2441: -2441: inline dimension_type -2441: Bit_Matrix::num_rows() const { -2441: return rows.size(); -2441: } -2441: -2441: inline void -2441: Bit_Matrix::clear() { -2441: -2441: std::vector tmp; -2441: std::swap(tmp, rows); -2441: row_size = 0; -2441: } -2441: -2441: inline memory_size_type -2441: Bit_Matrix::total_memory_in_bytes() const { -2441: return sizeof(*this) + external_memory_in_bytes(); -2441: } -2441: -2441: inline bool -2441: Bit_Matrix::Bit_Row_Less_Than:: -2441: operator()(const Bit_Row& x, const Bit_Row& y) const { -2441: return compare(x, y) < 0; -2441: } -2441: -2441: inline bool -2441: Bit_Matrix::sorted_contains(const Bit_Row& row) const { -2441: ((void) 0); -2441: return std::binary_search(rows.begin(), rows.end(), row, -2441: Bit_Row_Less_Than()); -2441: } -2441: -2441: -2441: inline bool -2441: operator!=(const Bit_Matrix& x, const Bit_Matrix& y) { -2441: return !(x == y); -2441: } -2441: -2441: -2441: inline void -2441: swap(Bit_Matrix& x, Bit_Matrix& y) { -2441: x.m_swap(y); -2441: } -2441: -2441: } -2441: # 186 "../../src/Bit_Matrix_defs.hh" 2 -2441: # 28 "../../src/Linear_System_templates.hh" 2 -2441: -2441: # 1 "../../src/Scalar_Products_defs.hh" 1 -2441: # 44 "../../src/Scalar_Products_defs.hh" -2441: class Parma_Polyhedra_Library::Scalar_Products { -2441: public: -2441: -2441: static void assign(Coefficient& z, -2441: const Linear_Expression& x, const Linear_Expression& y); -2441: -2441: -2441: static void assign(Coefficient& z, const Constraint& c, const Generator& g); -2441: -2441: -2441: static void assign(Coefficient& z, const Generator& g, const Constraint& c); -2441: -2441: -2441: static void assign(Coefficient& z, -2441: const Constraint& c, const Grid_Generator& gg); -2441: -2441: -2441: static void assign(Coefficient& z, -2441: const Grid_Generator& gg, const Congruence& cg); -2441: -2441: -2441: static void assign(Coefficient& z, -2441: const Congruence& cg, const Grid_Generator& gg); -2441: -2441: -2441: static int sign(const Linear_Expression& x, const Linear_Expression& y); -2441: -2441: -2441: static int sign(const Constraint& c, const Generator& g); -2441: -2441: -2441: static int sign(const Generator& g, const Constraint& c); -2441: -2441: -2441: static int sign(const Constraint& c, const Grid_Generator& g); -2441: -2441: -2441: -2441: -2441: -2441: -2441: static void reduced_assign(Coefficient& z, -2441: const Linear_Expression& x, -2441: const Linear_Expression& y); -2441: -2441: -2441: -2441: -2441: -2441: -2441: static void reduced_assign(Coefficient& z, -2441: const Constraint& c, const Generator& g); -2441: -2441: -2441: -2441: -2441: -2441: -2441: static void reduced_assign(Coefficient& z, -2441: const Generator& g, const Constraint& c); -2441: -2441: -2441: -2441: -2441: -2441: static void reduced_assign(Coefficient& z, -2441: const Grid_Generator& gg, const Congruence& cg); -2441: -2441: -2441: -2441: -2441: -2441: static int reduced_sign(const Linear_Expression& x, -2441: const Linear_Expression& y); -2441: -2441: -2441: -2441: -2441: -2441: static int reduced_sign(const Constraint& c, const Generator& g); -2441: -2441: -2441: -2441: -2441: -2441: static int reduced_sign(const Generator& g, const Constraint& c); -2441: -2441: -2441: -2441: -2441: -2441: -2441: static void homogeneous_assign(Coefficient& z, -2441: const Linear_Expression& x, -2441: const Linear_Expression& y); -2441: -2441: -2441: -2441: -2441: -2441: static void homogeneous_assign(Coefficient& z, -2441: const Linear_Expression& e, -2441: const Generator& g); -2441: -2441: -2441: -2441: -2441: -2441: static void homogeneous_assign(Coefficient& z, -2441: const Grid_Generator& gg, -2441: const Constraint& c); -2441: -2441: -2441: -2441: -2441: -2441: static void homogeneous_assign(Coefficient& z, -2441: const Grid_Generator& gg, -2441: const Congruence& cg); -2441: -2441: -2441: -2441: -2441: -2441: static void homogeneous_assign(Coefficient& z, -2441: const Linear_Expression& e, -2441: const Grid_Generator& g); -2441: -2441: -2441: -2441: -2441: -2441: static int homogeneous_sign(const Linear_Expression& x, -2441: const Linear_Expression& y); -2441: -2441: -2441: -2441: -2441: -2441: static int homogeneous_sign(const Linear_Expression& e, const Generator& g); -2441: -2441: -2441: -2441: -2441: static int homogeneous_sign(const Linear_Expression& e, -2441: const Grid_Generator& g); -2441: -2441: -2441: -2441: -2441: static int homogeneous_sign(const Grid_Generator& g, const Constraint& c); -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: class Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign { -2441: public: -2441: -2441: Topology_Adjusted_Scalar_Product_Sign(const Constraint& c); -2441: -2441: -2441: Topology_Adjusted_Scalar_Product_Sign(const Generator& g); -2441: -2441: -2441: int operator()(const Constraint&, const Generator&) const; -2441: -2441: -2441: int operator()(const Generator&, const Constraint&) const; -2441: -2441: private: -2441: -2441: typedef int (* const SPS_type)(const Linear_Expression&, -2441: const Linear_Expression&); -2441: -2441: -2441: SPS_type sps_fp; -2441: }; -2441: # 30 "../../src/Linear_System_templates.hh" 2 -2441: # 1 "../../src/Scalar_Products_inlines.hh" 1 -2441: # 33 "../../src/Scalar_Products_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: inline int -2441: Scalar_Products::sign(const Linear_Expression& x, const Linear_Expression& y) { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_z; Parma_Polyhedra_Library::Coefficient& z = holder_z.item(); -2441: assign(z, x, y); -2441: return sgn(z); -2441: } -2441: -2441: inline int -2441: Scalar_Products::reduced_sign(const Linear_Expression& x, -2441: const Linear_Expression& y) { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_z; Parma_Polyhedra_Library::Coefficient& z = holder_z.item(); -2441: reduced_assign(z, x, y); -2441: return sgn(z); -2441: } -2441: -2441: inline int -2441: Scalar_Products::homogeneous_sign(const Linear_Expression& x, -2441: const Linear_Expression& y) { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_z; Parma_Polyhedra_Library::Coefficient& z = holder_z.item(); -2441: homogeneous_assign(z, x, y); -2441: return sgn(z); -2441: } -2441: -2441: inline int -2441: Scalar_Products::sign(const Constraint& c, const Generator& g) { -2441: return sign(c.expr, g.expr); -2441: } -2441: -2441: inline int -2441: Scalar_Products::sign(const Generator& g, const Constraint& c) { -2441: return sign(g.expr, c.expr); -2441: } -2441: -2441: inline int -2441: Scalar_Products::sign(const Constraint& c, const Grid_Generator& g) { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_z; Parma_Polyhedra_Library::Coefficient& z = holder_z.item(); -2441: assign(z, c, g); -2441: return sgn(z); -2441: } -2441: -2441: inline int -2441: Scalar_Products::reduced_sign(const Constraint& c, const Generator& g) { -2441: -2441: -2441: ((void) 0); -2441: return reduced_sign(c.expr, g.expr); -2441: } -2441: -2441: inline int -2441: Scalar_Products::reduced_sign(const Generator& g, const Constraint& c) { -2441: -2441: -2441: ((void) 0); -2441: return reduced_sign(g.expr, c.expr); -2441: } -2441: -2441: inline void -2441: Scalar_Products::homogeneous_assign(Coefficient& z, -2441: const Linear_Expression& e, -2441: const Generator& g) { -2441: homogeneous_assign(z, e, g.expr); -2441: } -2441: -2441: inline void -2441: Scalar_Products::homogeneous_assign(Coefficient& z, -2441: const Linear_Expression& e, -2441: const Grid_Generator& g) { -2441: homogeneous_assign(z, e, g.expr); -2441: } -2441: -2441: inline int -2441: Scalar_Products::homogeneous_sign(const Linear_Expression& e, -2441: const Generator& g) { -2441: return homogeneous_sign(e, g.expr); -2441: } -2441: -2441: inline int -2441: Scalar_Products::homogeneous_sign(const Linear_Expression& e, -2441: const Grid_Generator& g) { -2441: return homogeneous_sign(e, g.expr); -2441: } -2441: -2441: inline int -2441: Scalar_Products::homogeneous_sign(const Grid_Generator& g, -2441: const Constraint& c) { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_z; Parma_Polyhedra_Library::Coefficient& z = holder_z.item(); -2441: homogeneous_assign(z, g, c); -2441: return sgn(z); -2441: } -2441: -2441: inline -2441: Topology_Adjusted_Scalar_Product_Sign -2441: ::Topology_Adjusted_Scalar_Product_Sign(const Constraint& c) -2441: : sps_fp(c.is_necessarily_closed() -2441: ? static_cast(&Scalar_Products::sign) -2441: : static_cast(&Scalar_Products::reduced_sign)) { -2441: } -2441: -2441: inline -2441: Topology_Adjusted_Scalar_Product_Sign -2441: ::Topology_Adjusted_Scalar_Product_Sign(const Generator& g) -2441: : sps_fp(g.is_necessarily_closed() -2441: ? static_cast(&Scalar_Products::sign) -2441: : static_cast(&Scalar_Products::reduced_sign)) { -2441: } -2441: -2441: inline int -2441: Topology_Adjusted_Scalar_Product_Sign::operator()(const Constraint& c, -2441: const Generator& g) const { -2441: ((void) 0); -2441: ((void) 0) -2441: -2441: ; -2441: return sps_fp(c.expr, g.expr); -2441: } -2441: -2441: inline int -2441: Topology_Adjusted_Scalar_Product_Sign::operator()(const Generator& g, -2441: const Constraint& c) const { -2441: ((void) 0); -2441: ((void) 0) -2441: -2441: ; -2441: return sps_fp(g.expr, c.expr); -2441: } -2441: -2441: } -2441: # 31 "../../src/Linear_System_templates.hh" 2 -2441: # 1 "../../src/swapping_sort_templates.hh" 1 -2441: # 30 "../../src/swapping_sort_templates.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: namespace Implementation { -2441: -2441: template -2441: struct Indirect_Sort_Compare { -2441: typedef typename RA_Container::size_type size_type; -2441: -2441: Indirect_Sort_Compare(const RA_Container& cont, -2441: size_type base = 0, -2441: Compare comp = Compare()) -2441: : container(cont), base_index(base), compare(comp) { -2441: } -2441: -2441: bool operator()(size_type i, size_type j) const { -2441: return compare(container[base_index + i], container[base_index + j]); -2441: } -2441: -2441: const RA_Container& container; -2441: const size_type base_index; -2441: const Compare compare; -2441: }; -2441: -2441: template -2441: struct Indirect_Unique_Compare { -2441: typedef typename RA_Container::size_type size_type; -2441: -2441: Indirect_Unique_Compare(const RA_Container& cont, size_type base = 0) -2441: : container(cont), base_index(base) { -2441: } -2441: -2441: bool operator()(size_type i, size_type j) const { -2441: return container[base_index + i] == container[base_index + j]; -2441: } -2441: -2441: const RA_Container& container; -2441: const size_type base_index; -2441: }; -2441: -2441: template -2441: struct Indirect_Swapper { -2441: typedef typename RA_Container::size_type size_type; -2441: -2441: Indirect_Swapper(RA_Container& cont, size_type base = 0) -2441: : container(cont), base_index(base) { -2441: } -2441: -2441: void operator()(size_type i, size_type j) const { -2441: using std::swap; -2441: swap(container[base_index + i], container[base_index + j]); -2441: } -2441: -2441: RA_Container& container; -2441: const size_type base_index; -2441: }; -2441: -2441: template -2441: struct Indirect_Swapper2 { -2441: typedef typename RA_Container1::size_type size_type; -2441: -2441: Indirect_Swapper2(RA_Container1& cont1, RA_Container2& cont2) -2441: : container1(cont1), container2(cont2) { -2441: } -2441: -2441: void operator()(size_type i, size_type j) const { -2441: using std::swap; -2441: swap(container1[i], container1[j]); -2441: swap(container2[i], container2[j]); -2441: } -2441: -2441: RA_Container1& container1; -2441: RA_Container2& container2; -2441: }; -2441: -2441: template -2441: typename Sort_Comparer::size_type -2441: indirect_sort_and_unique(typename Sort_Comparer::size_type num_elems, -2441: Sort_Comparer sort_cmp, -2441: Unique_Comparer unique_cmp, -2441: Swapper indirect_swap) { -2441: typedef typename Sort_Comparer::size_type index_type; -2441: -2441: ((void) 0); -2441: std::vector iv; -2441: iv.reserve(num_elems); -2441: for (index_type i = 0, i_end = num_elems; i != i_end; ++i) { -2441: iv.push_back(i); -2441: } -2441: -2441: typedef typename std::vector::iterator Iter; -2441: const Iter iv_begin = iv.begin(); -2441: Iter iv_end = iv.end(); -2441: -2441: -2441: std::sort(iv_begin, iv_end, sort_cmp); -2441: -2441: -2441: -2441: -2441: for (index_type i = num_elems; i-- > 0; ) { -2441: if (i != iv[i]) { -2441: index_type dst = i; -2441: index_type src = iv[i]; -2441: do { -2441: indirect_swap(src, dst); -2441: iv[dst] = dst; -2441: dst = src; -2441: src = iv[dst]; -2441: } while (i != src); -2441: iv[dst] = dst; -2441: } -2441: } -2441: -2441: -2441: for (index_type i = num_elems; i-- > 0; ) { -2441: iv[i] = i; -2441: } -2441: -2441: -2441: iv_end = std::unique(iv_begin, iv_end, unique_cmp); -2441: -2441: const index_type num_sorted = static_cast(iv_end - iv_begin); -2441: const index_type num_duplicates = num_elems - num_sorted; -2441: if (num_duplicates == 0) { -2441: return 0; -2441: } -2441: -2441: -2441: index_type dst = 0; -2441: while (dst < num_sorted && dst == iv[dst]) { -2441: ++dst; -2441: } -2441: if (dst == num_sorted) { -2441: return num_duplicates; -2441: } -2441: do { -2441: const index_type src = iv[dst]; -2441: indirect_swap(src, dst); -2441: ++dst; -2441: } -2441: while (dst < num_sorted); -2441: return num_duplicates; -2441: } -2441: -2441: template -2441: Iter -2441: swapping_unique(Iter first, Iter last) { -2441: return swapping_unique(first, last, std::iter_swap); -2441: } -2441: -2441: } -2441: -2441: } -2441: # 32 "../../src/Linear_System_templates.hh" 2 -2441: -2441: -2441: -2441: # 1 "/usr/include/c++/8/deque" 1 3 -2441: # 58 "/usr/include/c++/8/deque" 3 -2441: -2441: # 59 "/usr/include/c++/8/deque" 3 -2441: -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/c++/8/bits/stl_deque.h" 1 3 -2441: # 68 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: -2441: # 68 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: # 91 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: constexpr inline size_t -2441: __deque_buf_size(size_t __size) -2441: { return (__size < 512 -2441: ? size_t(512 / __size) : size_t(1)); } -2441: # 108 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: template -2441: struct _Deque_iterator -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: private: -2441: template -2441: using __ptr_to = typename pointer_traits<_Ptr>::template rebind<_Up>; -2441: template -2441: using __iter = _Deque_iterator<_Tp, _CvTp&, __ptr_to<_CvTp>>; -2441: public: -2441: typedef __iter<_Tp> iterator; -2441: typedef __iter const_iterator; -2441: typedef __ptr_to<_Tp> _Elt_pointer; -2441: typedef __ptr_to<_Elt_pointer> _Map_pointer; -2441: -2441: -2441: static size_t _S_buffer_size() noexcept -2441: { return __deque_buf_size(sizeof(_Tp)); } -2441: -2441: typedef std::random_access_iterator_tag iterator_category; -2441: typedef _Tp value_type; -2441: typedef _Ptr pointer; -2441: typedef _Ref reference; -2441: typedef size_t size_type; -2441: typedef ptrdiff_t difference_type; -2441: typedef _Deque_iterator _Self; -2441: -2441: _Elt_pointer _M_cur; -2441: _Elt_pointer _M_first; -2441: _Elt_pointer _M_last; -2441: _Map_pointer _M_node; -2441: -2441: _Deque_iterator(_Elt_pointer __x, _Map_pointer __y) noexcept -2441: : _M_cur(__x), _M_first(*__y), -2441: _M_last(*__y + _S_buffer_size()), _M_node(__y) { } -2441: -2441: _Deque_iterator() noexcept -2441: : _M_cur(), _M_first(), _M_last(), _M_node() { } -2441: -2441: _Deque_iterator(const iterator& __x) noexcept -2441: : _M_cur(__x._M_cur), _M_first(__x._M_first), -2441: _M_last(__x._M_last), _M_node(__x._M_node) { } -2441: -2441: iterator -2441: _M_const_cast() const noexcept -2441: { return iterator(_M_cur, _M_node); } -2441: -2441: reference -2441: operator*() const noexcept -2441: { return *_M_cur; } -2441: -2441: pointer -2441: operator->() const noexcept -2441: { return _M_cur; } -2441: -2441: _Self& -2441: operator++() noexcept -2441: { -2441: ++_M_cur; -2441: if (_M_cur == _M_last) -2441: { -2441: _M_set_node(_M_node + 1); -2441: _M_cur = _M_first; -2441: } -2441: return *this; -2441: } -2441: -2441: _Self -2441: operator++(int) noexcept -2441: { -2441: _Self __tmp = *this; -2441: ++*this; -2441: return __tmp; -2441: } -2441: -2441: _Self& -2441: operator--() noexcept -2441: { -2441: if (_M_cur == _M_first) -2441: { -2441: _M_set_node(_M_node - 1); -2441: _M_cur = _M_last; -2441: } -2441: --_M_cur; -2441: return *this; -2441: } -2441: -2441: _Self -2441: operator--(int) noexcept -2441: { -2441: _Self __tmp = *this; -2441: --*this; -2441: return __tmp; -2441: } -2441: -2441: _Self& -2441: operator+=(difference_type __n) noexcept -2441: { -2441: const difference_type __offset = __n + (_M_cur - _M_first); -2441: if (__offset >= 0 && __offset < difference_type(_S_buffer_size())) -2441: _M_cur += __n; -2441: else -2441: { -2441: const difference_type __node_offset = -2441: __offset > 0 ? __offset / difference_type(_S_buffer_size()) -2441: : -difference_type((-__offset - 1) -2441: / _S_buffer_size()) - 1; -2441: _M_set_node(_M_node + __node_offset); -2441: _M_cur = _M_first + (__offset - __node_offset -2441: * difference_type(_S_buffer_size())); -2441: } -2441: return *this; -2441: } -2441: -2441: _Self -2441: operator+(difference_type __n) const noexcept -2441: { -2441: _Self __tmp = *this; -2441: return __tmp += __n; -2441: } -2441: -2441: _Self& -2441: operator-=(difference_type __n) noexcept -2441: { return *this += -__n; } -2441: -2441: _Self -2441: operator-(difference_type __n) const noexcept -2441: { -2441: _Self __tmp = *this; -2441: return __tmp -= __n; -2441: } -2441: -2441: reference -2441: operator[](difference_type __n) const noexcept -2441: { return *(*this + __n); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: void -2441: _M_set_node(_Map_pointer __new_node) noexcept -2441: { -2441: _M_node = __new_node; -2441: _M_first = *__new_node; -2441: _M_last = _M_first + difference_type(_S_buffer_size()); -2441: } -2441: }; -2441: -2441: -2441: -2441: -2441: template -2441: inline bool -2441: operator==(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x, -2441: const _Deque_iterator<_Tp, _Ref, _Ptr>& __y) noexcept -2441: { return __x._M_cur == __y._M_cur; } -2441: -2441: template -2441: inline bool -2441: operator==(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x, -2441: const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) noexcept -2441: { return __x._M_cur == __y._M_cur; } -2441: -2441: template -2441: inline bool -2441: operator!=(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x, -2441: const _Deque_iterator<_Tp, _Ref, _Ptr>& __y) noexcept -2441: { return !(__x == __y); } -2441: -2441: template -2441: inline bool -2441: operator!=(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x, -2441: const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) noexcept -2441: { return !(__x == __y); } -2441: -2441: template -2441: inline bool -2441: operator<(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x, -2441: const _Deque_iterator<_Tp, _Ref, _Ptr>& __y) noexcept -2441: { return (__x._M_node == __y._M_node) ? (__x._M_cur < __y._M_cur) -2441: : (__x._M_node < __y._M_node); } -2441: -2441: template -2441: inline bool -2441: operator<(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x, -2441: const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) noexcept -2441: { return (__x._M_node == __y._M_node) ? (__x._M_cur < __y._M_cur) -2441: : (__x._M_node < __y._M_node); } -2441: -2441: template -2441: inline bool -2441: operator>(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x, -2441: const _Deque_iterator<_Tp, _Ref, _Ptr>& __y) noexcept -2441: { return __y < __x; } -2441: -2441: template -2441: inline bool -2441: operator>(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x, -2441: const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) noexcept -2441: { return __y < __x; } -2441: -2441: template -2441: inline bool -2441: operator<=(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x, -2441: const _Deque_iterator<_Tp, _Ref, _Ptr>& __y) noexcept -2441: { return !(__y < __x); } -2441: -2441: template -2441: inline bool -2441: operator<=(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x, -2441: const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) noexcept -2441: { return !(__y < __x); } -2441: -2441: template -2441: inline bool -2441: operator>=(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x, -2441: const _Deque_iterator<_Tp, _Ref, _Ptr>& __y) noexcept -2441: { return !(__x < __y); } -2441: -2441: template -2441: inline bool -2441: operator>=(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x, -2441: const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) noexcept -2441: { return !(__x < __y); } -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline typename _Deque_iterator<_Tp, _Ref, _Ptr>::difference_type -2441: operator-(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x, -2441: const _Deque_iterator<_Tp, _Ref, _Ptr>& __y) noexcept -2441: { -2441: return typename _Deque_iterator<_Tp, _Ref, _Ptr>::difference_type -2441: (_Deque_iterator<_Tp, _Ref, _Ptr>::_S_buffer_size()) -2441: * (__x._M_node - __y._M_node - 1) + (__x._M_cur - __x._M_first) -2441: + (__y._M_last - __y._M_cur); -2441: } -2441: -2441: template -2441: inline typename _Deque_iterator<_Tp, _RefL, _PtrL>::difference_type -2441: operator-(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x, -2441: const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) noexcept -2441: { -2441: return typename _Deque_iterator<_Tp, _RefL, _PtrL>::difference_type -2441: (_Deque_iterator<_Tp, _RefL, _PtrL>::_S_buffer_size()) -2441: * (__x._M_node - __y._M_node - 1) + (__x._M_cur - __x._M_first) -2441: + (__y._M_last - __y._M_cur); -2441: } -2441: -2441: template -2441: inline _Deque_iterator<_Tp, _Ref, _Ptr> -2441: operator+(ptrdiff_t __n, const _Deque_iterator<_Tp, _Ref, _Ptr>& __x) -2441: noexcept -2441: { return __x + __n; } -2441: -2441: template -2441: void -2441: fill(const _Deque_iterator<_Tp, _Tp&, _Tp*>&, -2441: const _Deque_iterator<_Tp, _Tp&, _Tp*>&, const _Tp&); -2441: -2441: template -2441: _Deque_iterator<_Tp, _Tp&, _Tp*> -2441: copy(_Deque_iterator<_Tp, const _Tp&, const _Tp*>, -2441: _Deque_iterator<_Tp, const _Tp&, const _Tp*>, -2441: _Deque_iterator<_Tp, _Tp&, _Tp*>); -2441: -2441: template -2441: inline _Deque_iterator<_Tp, _Tp&, _Tp*> -2441: copy(_Deque_iterator<_Tp, _Tp&, _Tp*> __first, -2441: _Deque_iterator<_Tp, _Tp&, _Tp*> __last, -2441: _Deque_iterator<_Tp, _Tp&, _Tp*> __result) -2441: { return std::copy(_Deque_iterator<_Tp, const _Tp&, const _Tp*>(__first), -2441: _Deque_iterator<_Tp, const _Tp&, const _Tp*>(__last), -2441: __result); } -2441: -2441: template -2441: _Deque_iterator<_Tp, _Tp&, _Tp*> -2441: copy_backward(_Deque_iterator<_Tp, const _Tp&, const _Tp*>, -2441: _Deque_iterator<_Tp, const _Tp&, const _Tp*>, -2441: _Deque_iterator<_Tp, _Tp&, _Tp*>); -2441: -2441: template -2441: inline _Deque_iterator<_Tp, _Tp&, _Tp*> -2441: copy_backward(_Deque_iterator<_Tp, _Tp&, _Tp*> __first, -2441: _Deque_iterator<_Tp, _Tp&, _Tp*> __last, -2441: _Deque_iterator<_Tp, _Tp&, _Tp*> __result) -2441: { return std::copy_backward(_Deque_iterator<_Tp, -2441: const _Tp&, const _Tp*>(__first), -2441: _Deque_iterator<_Tp, -2441: const _Tp&, const _Tp*>(__last), -2441: __result); } -2441: -2441: -2441: template -2441: _Deque_iterator<_Tp, _Tp&, _Tp*> -2441: move(_Deque_iterator<_Tp, const _Tp&, const _Tp*>, -2441: _Deque_iterator<_Tp, const _Tp&, const _Tp*>, -2441: _Deque_iterator<_Tp, _Tp&, _Tp*>); -2441: -2441: template -2441: inline _Deque_iterator<_Tp, _Tp&, _Tp*> -2441: move(_Deque_iterator<_Tp, _Tp&, _Tp*> __first, -2441: _Deque_iterator<_Tp, _Tp&, _Tp*> __last, -2441: _Deque_iterator<_Tp, _Tp&, _Tp*> __result) -2441: { return std::move(_Deque_iterator<_Tp, const _Tp&, const _Tp*>(__first), -2441: _Deque_iterator<_Tp, const _Tp&, const _Tp*>(__last), -2441: __result); } -2441: -2441: template -2441: _Deque_iterator<_Tp, _Tp&, _Tp*> -2441: move_backward(_Deque_iterator<_Tp, const _Tp&, const _Tp*>, -2441: _Deque_iterator<_Tp, const _Tp&, const _Tp*>, -2441: _Deque_iterator<_Tp, _Tp&, _Tp*>); -2441: -2441: template -2441: inline _Deque_iterator<_Tp, _Tp&, _Tp*> -2441: move_backward(_Deque_iterator<_Tp, _Tp&, _Tp*> __first, -2441: _Deque_iterator<_Tp, _Tp&, _Tp*> __last, -2441: _Deque_iterator<_Tp, _Tp&, _Tp*> __result) -2441: { return std::move_backward(_Deque_iterator<_Tp, -2441: const _Tp&, const _Tp*>(__first), -2441: _Deque_iterator<_Tp, -2441: const _Tp&, const _Tp*>(__last), -2441: __result); } -2441: # 460 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: template -2441: class _Deque_base -2441: { -2441: protected: -2441: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template -2441: rebind<_Tp>::other _Tp_alloc_type; -2441: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Alloc_traits; -2441: -2441: -2441: -2441: -2441: -2441: typedef typename _Alloc_traits::pointer _Ptr; -2441: typedef typename _Alloc_traits::const_pointer _Ptr_const; -2441: -2441: -2441: typedef typename _Alloc_traits::template rebind<_Ptr>::other -2441: _Map_alloc_type; -2441: typedef __gnu_cxx::__alloc_traits<_Map_alloc_type> _Map_alloc_traits; -2441: -2441: public: -2441: typedef _Alloc allocator_type; -2441: typedef typename _Alloc_traits::size_type size_type; -2441: -2441: allocator_type -2441: get_allocator() const noexcept -2441: { return allocator_type(_M_get_Tp_allocator()); } -2441: -2441: typedef _Deque_iterator<_Tp, _Tp&, _Ptr> iterator; -2441: typedef _Deque_iterator<_Tp, const _Tp&, _Ptr_const> const_iterator; -2441: -2441: _Deque_base() -2441: : _M_impl() -2441: { _M_initialize_map(0); } -2441: -2441: _Deque_base(size_t __num_elements) -2441: : _M_impl() -2441: { _M_initialize_map(__num_elements); } -2441: -2441: _Deque_base(const allocator_type& __a, size_t __num_elements) -2441: : _M_impl(__a) -2441: { _M_initialize_map(__num_elements); } -2441: -2441: _Deque_base(const allocator_type& __a) -2441: : _M_impl(__a) -2441: { } -2441: -2441: -2441: _Deque_base(_Deque_base&& __x, false_type) -2441: : _M_impl(__x._M_move_impl()) -2441: { } -2441: -2441: _Deque_base(_Deque_base&& __x, true_type) -2441: : _M_impl(std::move(__x._M_get_Tp_allocator())) -2441: { -2441: _M_initialize_map(0); -2441: if (__x._M_impl._M_map) -2441: this->_M_impl._M_swap_data(__x._M_impl); -2441: } -2441: -2441: _Deque_base(_Deque_base&& __x) -2441: : _Deque_base(std::move(__x), typename _Alloc_traits::is_always_equal{}) -2441: { } -2441: -2441: _Deque_base(_Deque_base&& __x, const allocator_type& __a, size_type __n) -2441: : _M_impl(__a) -2441: { -2441: if (__x.get_allocator() == __a) -2441: { -2441: if (__x._M_impl._M_map) -2441: { -2441: _M_initialize_map(0); -2441: this->_M_impl._M_swap_data(__x._M_impl); -2441: } -2441: } -2441: else -2441: { -2441: _M_initialize_map(__n); -2441: } -2441: } -2441: -2441: -2441: ~_Deque_base() noexcept; -2441: -2441: protected: -2441: typedef typename iterator::_Map_pointer _Map_pointer; -2441: -2441: -2441: -2441: -2441: struct _Deque_impl -2441: : public _Tp_alloc_type -2441: { -2441: _Map_pointer _M_map; -2441: size_t _M_map_size; -2441: iterator _M_start; -2441: iterator _M_finish; -2441: -2441: _Deque_impl() -2441: : _Tp_alloc_type(), _M_map(), _M_map_size(0), -2441: _M_start(), _M_finish() -2441: { } -2441: -2441: _Deque_impl(const _Tp_alloc_type& __a) noexcept -2441: : _Tp_alloc_type(__a), _M_map(), _M_map_size(0), -2441: _M_start(), _M_finish() -2441: { } -2441: -2441: -2441: _Deque_impl(_Deque_impl&&) = default; -2441: -2441: _Deque_impl(_Tp_alloc_type&& __a) noexcept -2441: : _Tp_alloc_type(std::move(__a)), _M_map(), _M_map_size(0), -2441: _M_start(), _M_finish() -2441: { } -2441: -2441: -2441: void _M_swap_data(_Deque_impl& __x) noexcept -2441: { -2441: using std::swap; -2441: swap(this->_M_start, __x._M_start); -2441: swap(this->_M_finish, __x._M_finish); -2441: swap(this->_M_map, __x._M_map); -2441: swap(this->_M_map_size, __x._M_map_size); -2441: } -2441: }; -2441: -2441: _Tp_alloc_type& -2441: _M_get_Tp_allocator() noexcept -2441: { return *static_cast<_Tp_alloc_type*>(&this->_M_impl); } -2441: -2441: const _Tp_alloc_type& -2441: _M_get_Tp_allocator() const noexcept -2441: { return *static_cast(&this->_M_impl); } -2441: -2441: _Map_alloc_type -2441: _M_get_map_allocator() const noexcept -2441: { return _Map_alloc_type(_M_get_Tp_allocator()); } -2441: -2441: _Ptr -2441: _M_allocate_node() -2441: { -2441: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Traits; -2441: return _Traits::allocate(_M_impl, __deque_buf_size(sizeof(_Tp))); -2441: } -2441: -2441: void -2441: _M_deallocate_node(_Ptr __p) noexcept -2441: { -2441: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Traits; -2441: _Traits::deallocate(_M_impl, __p, __deque_buf_size(sizeof(_Tp))); -2441: } -2441: -2441: _Map_pointer -2441: _M_allocate_map(size_t __n) -2441: { -2441: _Map_alloc_type __map_alloc = _M_get_map_allocator(); -2441: return _Map_alloc_traits::allocate(__map_alloc, __n); -2441: } -2441: -2441: void -2441: _M_deallocate_map(_Map_pointer __p, size_t __n) noexcept -2441: { -2441: _Map_alloc_type __map_alloc = _M_get_map_allocator(); -2441: _Map_alloc_traits::deallocate(__map_alloc, __p, __n); -2441: } -2441: -2441: protected: -2441: void _M_initialize_map(size_t); -2441: void _M_create_nodes(_Map_pointer __nstart, _Map_pointer __nfinish); -2441: void _M_destroy_nodes(_Map_pointer __nstart, -2441: _Map_pointer __nfinish) noexcept; -2441: enum { _S_initial_map_size = 8 }; -2441: -2441: _Deque_impl _M_impl; -2441: -2441: -2441: private: -2441: _Deque_impl -2441: _M_move_impl() -2441: { -2441: if (!_M_impl._M_map) -2441: return std::move(_M_impl); -2441: -2441: -2441: _Tp_alloc_type __alloc{_M_get_Tp_allocator()}; -2441: -2441: _Tp_alloc_type __sink __attribute((__unused__)) {std::move(__alloc)}; -2441: -2441: _Deque_base __empty{__alloc}; -2441: __empty._M_initialize_map(0); -2441: -2441: _Deque_impl __ret{std::move(_M_get_Tp_allocator())}; -2441: _M_impl._M_swap_data(__ret); -2441: _M_impl._M_swap_data(__empty._M_impl); -2441: return __ret; -2441: } -2441: -2441: }; -2441: -2441: template -2441: _Deque_base<_Tp, _Alloc>:: -2441: ~_Deque_base() noexcept -2441: { -2441: if (this->_M_impl._M_map) -2441: { -2441: _M_destroy_nodes(this->_M_impl._M_start._M_node, -2441: this->_M_impl._M_finish._M_node + 1); -2441: _M_deallocate_map(this->_M_impl._M_map, this->_M_impl._M_map_size); -2441: } -2441: } -2441: # 680 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: template -2441: void -2441: _Deque_base<_Tp, _Alloc>:: -2441: _M_initialize_map(size_t __num_elements) -2441: { -2441: const size_t __num_nodes = (__num_elements/ __deque_buf_size(sizeof(_Tp)) -2441: + 1); -2441: -2441: this->_M_impl._M_map_size = std::max((size_t) _S_initial_map_size, -2441: size_t(__num_nodes + 2)); -2441: this->_M_impl._M_map = _M_allocate_map(this->_M_impl._M_map_size); -2441: -2441: -2441: -2441: -2441: -2441: -2441: _Map_pointer __nstart = (this->_M_impl._M_map -2441: + (this->_M_impl._M_map_size - __num_nodes) / 2); -2441: _Map_pointer __nfinish = __nstart + __num_nodes; -2441: -2441: try -2441: { _M_create_nodes(__nstart, __nfinish); } -2441: catch(...) -2441: { -2441: _M_deallocate_map(this->_M_impl._M_map, this->_M_impl._M_map_size); -2441: this->_M_impl._M_map = _Map_pointer(); -2441: this->_M_impl._M_map_size = 0; -2441: throw; -2441: } -2441: -2441: this->_M_impl._M_start._M_set_node(__nstart); -2441: this->_M_impl._M_finish._M_set_node(__nfinish - 1); -2441: this->_M_impl._M_start._M_cur = _M_impl._M_start._M_first; -2441: this->_M_impl._M_finish._M_cur = (this->_M_impl._M_finish._M_first -2441: + __num_elements -2441: % __deque_buf_size(sizeof(_Tp))); -2441: } -2441: -2441: template -2441: void -2441: _Deque_base<_Tp, _Alloc>:: -2441: _M_create_nodes(_Map_pointer __nstart, _Map_pointer __nfinish) -2441: { -2441: _Map_pointer __cur; -2441: try -2441: { -2441: for (__cur = __nstart; __cur < __nfinish; ++__cur) -2441: *__cur = this->_M_allocate_node(); -2441: } -2441: catch(...) -2441: { -2441: _M_destroy_nodes(__nstart, __cur); -2441: throw; -2441: } -2441: } -2441: -2441: template -2441: void -2441: _Deque_base<_Tp, _Alloc>:: -2441: _M_destroy_nodes(_Map_pointer __nstart, -2441: _Map_pointer __nfinish) noexcept -2441: { -2441: for (_Map_pointer __n = __nstart; __n < __nfinish; ++__n) -2441: _M_deallocate_node(*__n); -2441: } -2441: # 831 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: template > -2441: class deque : protected _Deque_base<_Tp, _Alloc> -2441: { -2441: # 844 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: static_assert(is_same::type, _Tp>::value, -2441: "std::deque must have a non-const, non-volatile value_type"); -2441: -2441: -2441: -2441: -2441: -2441: -2441: typedef _Deque_base<_Tp, _Alloc> _Base; -2441: typedef typename _Base::_Tp_alloc_type _Tp_alloc_type; -2441: typedef typename _Base::_Alloc_traits _Alloc_traits; -2441: typedef typename _Base::_Map_pointer _Map_pointer; -2441: -2441: public: -2441: typedef _Tp value_type; -2441: typedef typename _Alloc_traits::pointer pointer; -2441: typedef typename _Alloc_traits::const_pointer const_pointer; -2441: typedef typename _Alloc_traits::reference reference; -2441: typedef typename _Alloc_traits::const_reference const_reference; -2441: typedef typename _Base::iterator iterator; -2441: typedef typename _Base::const_iterator const_iterator; -2441: typedef std::reverse_iterator const_reverse_iterator; -2441: typedef std::reverse_iterator reverse_iterator; -2441: typedef size_t size_type; -2441: typedef ptrdiff_t difference_type; -2441: typedef _Alloc allocator_type; -2441: -2441: protected: -2441: static size_t _S_buffer_size() noexcept -2441: { return __deque_buf_size(sizeof(_Tp)); } -2441: -2441: -2441: using _Base::_M_initialize_map; -2441: using _Base::_M_create_nodes; -2441: using _Base::_M_destroy_nodes; -2441: using _Base::_M_allocate_node; -2441: using _Base::_M_deallocate_node; -2441: using _Base::_M_allocate_map; -2441: using _Base::_M_deallocate_map; -2441: using _Base::_M_get_Tp_allocator; -2441: -2441: -2441: -2441: -2441: -2441: using _Base::_M_impl; -2441: -2441: public: -2441: -2441: -2441: -2441: -2441: -2441: -2441: deque() : _Base() { } -2441: -2441: -2441: -2441: -2441: -2441: explicit -2441: deque(const allocator_type& __a) -2441: : _Base(__a, 0) { } -2441: # 917 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: explicit -2441: deque(size_type __n, const allocator_type& __a = allocator_type()) -2441: : _Base(__a, __n) -2441: { _M_default_initialize(); } -2441: # 930 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: deque(size_type __n, const value_type& __value, -2441: const allocator_type& __a = allocator_type()) -2441: : _Base(__a, __n) -2441: { _M_fill_initialize(__value); } -2441: # 957 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: deque(const deque& __x) -2441: : _Base(_Alloc_traits::_S_select_on_copy(__x._M_get_Tp_allocator()), -2441: __x.size()) -2441: { std::__uninitialized_copy_a(__x.begin(), __x.end(), -2441: this->_M_impl._M_start, -2441: _M_get_Tp_allocator()); } -2441: # 972 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: deque(deque&& __x) -2441: : _Base(std::move(__x)) { } -2441: -2441: -2441: deque(const deque& __x, const allocator_type& __a) -2441: : _Base(__a, __x.size()) -2441: { std::__uninitialized_copy_a(__x.begin(), __x.end(), -2441: this->_M_impl._M_start, -2441: _M_get_Tp_allocator()); } -2441: -2441: -2441: deque(deque&& __x, const allocator_type& __a) -2441: : _Base(std::move(__x), __a, __x.size()) -2441: { -2441: if (__x.get_allocator() != __a) -2441: { -2441: std::__uninitialized_move_a(__x.begin(), __x.end(), -2441: this->_M_impl._M_start, -2441: _M_get_Tp_allocator()); -2441: __x.clear(); -2441: } -2441: } -2441: # 1006 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: deque(initializer_list __l, -2441: const allocator_type& __a = allocator_type()) -2441: : _Base(__a) -2441: { -2441: _M_range_initialize(__l.begin(), __l.end(), -2441: random_access_iterator_tag()); -2441: } -2441: # 1031 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: template> -2441: deque(_InputIterator __first, _InputIterator __last, -2441: const allocator_type& __a = allocator_type()) -2441: : _Base(__a) -2441: { _M_initialize_dispatch(__first, __last, __false_type()); } -2441: # 1054 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: ~deque() -2441: { _M_destroy_data(begin(), end(), _M_get_Tp_allocator()); } -2441: # 1066 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: deque& -2441: operator=(const deque& __x); -2441: # 1078 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: deque& -2441: operator=(deque&& __x) noexcept(_Alloc_traits::_S_always_equal()) -2441: { -2441: using __always_equal = typename _Alloc_traits::is_always_equal; -2441: _M_move_assign1(std::move(__x), __always_equal{}); -2441: return *this; -2441: } -2441: # 1097 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: deque& -2441: operator=(initializer_list __l) -2441: { -2441: _M_assign_aux(__l.begin(), __l.end(), -2441: random_access_iterator_tag()); -2441: return *this; -2441: } -2441: # 1116 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: void -2441: assign(size_type __n, const value_type& __val) -2441: { _M_fill_assign(__n, __val); } -2441: # 1133 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: template> -2441: void -2441: assign(_InputIterator __first, _InputIterator __last) -2441: { _M_assign_dispatch(__first, __last, __false_type()); } -2441: # 1160 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: void -2441: assign(initializer_list __l) -2441: { _M_assign_aux(__l.begin(), __l.end(), random_access_iterator_tag()); } -2441: -2441: -2441: -2441: allocator_type -2441: get_allocator() const noexcept -2441: { return _Base::get_allocator(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: iterator -2441: begin() noexcept -2441: { return this->_M_impl._M_start; } -2441: -2441: -2441: -2441: -2441: -2441: const_iterator -2441: begin() const noexcept -2441: { return this->_M_impl._M_start; } -2441: -2441: -2441: -2441: -2441: -2441: -2441: iterator -2441: end() noexcept -2441: { return this->_M_impl._M_finish; } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_iterator -2441: end() const noexcept -2441: { return this->_M_impl._M_finish; } -2441: -2441: -2441: -2441: -2441: -2441: -2441: reverse_iterator -2441: rbegin() noexcept -2441: { return reverse_iterator(this->_M_impl._M_finish); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_reverse_iterator -2441: rbegin() const noexcept -2441: { return const_reverse_iterator(this->_M_impl._M_finish); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: reverse_iterator -2441: rend() noexcept -2441: { return reverse_iterator(this->_M_impl._M_start); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_reverse_iterator -2441: rend() const noexcept -2441: { return const_reverse_iterator(this->_M_impl._M_start); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_iterator -2441: cbegin() const noexcept -2441: { return this->_M_impl._M_start; } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_iterator -2441: cend() const noexcept -2441: { return this->_M_impl._M_finish; } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_reverse_iterator -2441: crbegin() const noexcept -2441: { return const_reverse_iterator(this->_M_impl._M_finish); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_reverse_iterator -2441: crend() const noexcept -2441: { return const_reverse_iterator(this->_M_impl._M_start); } -2441: -2441: -2441: -2441: -2441: size_type -2441: size() const noexcept -2441: { return this->_M_impl._M_finish - this->_M_impl._M_start; } -2441: -2441: -2441: size_type -2441: max_size() const noexcept -2441: { return _Alloc_traits::max_size(_M_get_Tp_allocator()); } -2441: # 1299 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: void -2441: resize(size_type __new_size) -2441: { -2441: const size_type __len = size(); -2441: if (__new_size > __len) -2441: _M_default_append(__new_size - __len); -2441: else if (__new_size < __len) -2441: _M_erase_at_end(this->_M_impl._M_start -2441: + difference_type(__new_size)); -2441: } -2441: # 1321 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: void -2441: resize(size_type __new_size, const value_type& __x) -2441: { -2441: const size_type __len = size(); -2441: if (__new_size > __len) -2441: _M_fill_insert(this->_M_impl._M_finish, __new_size - __len, __x); -2441: else if (__new_size < __len) -2441: _M_erase_at_end(this->_M_impl._M_start -2441: + difference_type(__new_size)); -2441: } -2441: # 1357 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: void -2441: shrink_to_fit() noexcept -2441: { _M_shrink_to_fit(); } -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool -2441: empty() const noexcept -2441: { return this->_M_impl._M_finish == this->_M_impl._M_start; } -2441: # 1382 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: reference -2441: operator[](size_type __n) noexcept -2441: { -2441: ; -2441: return this->_M_impl._M_start[difference_type(__n)]; -2441: } -2441: # 1400 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: const_reference -2441: operator[](size_type __n) const noexcept -2441: { -2441: ; -2441: return this->_M_impl._M_start[difference_type(__n)]; -2441: } -2441: -2441: protected: -2441: -2441: void -2441: _M_range_check(size_type __n) const -2441: { -2441: if (__n >= this->size()) -2441: __throw_out_of_range_fmt(("deque::_M_range_check: __n " "(which is %zu)>= this->size() " "(which is %zu)") -2441: -2441: , -2441: __n, this->size()); -2441: } -2441: -2441: public: -2441: # 1431 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: reference -2441: at(size_type __n) -2441: { -2441: _M_range_check(__n); -2441: return (*this)[__n]; -2441: } -2441: # 1449 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: const_reference -2441: at(size_type __n) const -2441: { -2441: _M_range_check(__n); -2441: return (*this)[__n]; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: reference -2441: front() noexcept -2441: { -2441: ; -2441: return *begin(); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: const_reference -2441: front() const noexcept -2441: { -2441: ; -2441: return *begin(); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: reference -2441: back() noexcept -2441: { -2441: ; -2441: iterator __tmp = end(); -2441: --__tmp; -2441: return *__tmp; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: const_reference -2441: back() const noexcept -2441: { -2441: ; -2441: const_iterator __tmp = end(); -2441: --__tmp; -2441: return *__tmp; -2441: } -2441: # 1514 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: void -2441: push_front(const value_type& __x) -2441: { -2441: if (this->_M_impl._M_start._M_cur != this->_M_impl._M_start._M_first) -2441: { -2441: _Alloc_traits::construct(this->_M_impl, -2441: this->_M_impl._M_start._M_cur - 1, -2441: __x); -2441: --this->_M_impl._M_start._M_cur; -2441: } -2441: else -2441: _M_push_front_aux(__x); -2441: } -2441: -2441: -2441: void -2441: push_front(value_type&& __x) -2441: { emplace_front(std::move(__x)); } -2441: -2441: template -2441: -2441: -2441: -2441: void -2441: -2441: emplace_front(_Args&&... __args); -2441: # 1551 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: void -2441: push_back(const value_type& __x) -2441: { -2441: if (this->_M_impl._M_finish._M_cur -2441: != this->_M_impl._M_finish._M_last - 1) -2441: { -2441: _Alloc_traits::construct(this->_M_impl, -2441: this->_M_impl._M_finish._M_cur, __x); -2441: ++this->_M_impl._M_finish._M_cur; -2441: } -2441: else -2441: _M_push_back_aux(__x); -2441: } -2441: -2441: -2441: void -2441: push_back(value_type&& __x) -2441: { emplace_back(std::move(__x)); } -2441: -2441: template -2441: -2441: -2441: -2441: void -2441: -2441: emplace_back(_Args&&... __args); -2441: # 1587 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: void -2441: pop_front() noexcept -2441: { -2441: ; -2441: if (this->_M_impl._M_start._M_cur -2441: != this->_M_impl._M_start._M_last - 1) -2441: { -2441: _Alloc_traits::destroy(this->_M_impl, -2441: this->_M_impl._M_start._M_cur); -2441: ++this->_M_impl._M_start._M_cur; -2441: } -2441: else -2441: _M_pop_front_aux(); -2441: } -2441: # 1610 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: void -2441: pop_back() noexcept -2441: { -2441: ; -2441: if (this->_M_impl._M_finish._M_cur -2441: != this->_M_impl._M_finish._M_first) -2441: { -2441: --this->_M_impl._M_finish._M_cur; -2441: _Alloc_traits::destroy(this->_M_impl, -2441: this->_M_impl._M_finish._M_cur); -2441: } -2441: else -2441: _M_pop_back_aux(); -2441: } -2441: # 1635 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: template -2441: iterator -2441: emplace(const_iterator __position, _Args&&... __args); -2441: # 1648 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: iterator -2441: insert(const_iterator __position, const value_type& __x); -2441: # 1674 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: iterator -2441: insert(const_iterator __position, value_type&& __x) -2441: { return emplace(__position, std::move(__x)); } -2441: # 1687 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: iterator -2441: insert(const_iterator __p, initializer_list __l) -2441: { -2441: auto __offset = __p - cbegin(); -2441: _M_range_insert_aux(__p._M_const_cast(), __l.begin(), __l.end(), -2441: std::random_access_iterator_tag()); -2441: return begin() + __offset; -2441: } -2441: # 1708 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: iterator -2441: insert(const_iterator __position, size_type __n, const value_type& __x) -2441: { -2441: difference_type __offset = __position - cbegin(); -2441: _M_fill_insert(__position._M_const_cast(), __n, __x); -2441: return begin() + __offset; -2441: } -2441: # 1742 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: template> -2441: iterator -2441: insert(const_iterator __position, _InputIterator __first, -2441: _InputIterator __last) -2441: { -2441: difference_type __offset = __position - cbegin(); -2441: _M_insert_dispatch(__position._M_const_cast(), -2441: __first, __last, __false_type()); -2441: return begin() + __offset; -2441: } -2441: # 1788 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: iterator -2441: -2441: erase(const_iterator __position) -2441: -2441: -2441: -2441: { return _M_erase(__position._M_const_cast()); } -2441: # 1812 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: iterator -2441: -2441: erase(const_iterator __first, const_iterator __last) -2441: -2441: -2441: -2441: { return _M_erase(__first._M_const_cast(), __last._M_const_cast()); } -2441: # 1831 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: void -2441: swap(deque& __x) noexcept -2441: { -2441: -2441: -2441: ; -2441: -2441: _M_impl._M_swap_data(__x._M_impl); -2441: _Alloc_traits::_S_on_swap(_M_get_Tp_allocator(), -2441: __x._M_get_Tp_allocator()); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void -2441: clear() noexcept -2441: { _M_erase_at_end(begin()); } -2441: -2441: protected: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: void -2441: _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type) -2441: { -2441: _M_initialize_map(static_cast(__n)); -2441: _M_fill_initialize(__x); -2441: } -2441: -2441: -2441: template -2441: void -2441: _M_initialize_dispatch(_InputIterator __first, _InputIterator __last, -2441: __false_type) -2441: { -2441: _M_range_initialize(__first, __last, -2441: std::__iterator_category(__first)); -2441: } -2441: # 1890 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: template -2441: void -2441: _M_range_initialize(_InputIterator __first, _InputIterator __last, -2441: std::input_iterator_tag); -2441: -2441: -2441: template -2441: void -2441: _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last, -2441: std::forward_iterator_tag); -2441: # 1912 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: void -2441: _M_fill_initialize(const value_type& __value); -2441: -2441: -2441: -2441: void -2441: _M_default_initialize(); -2441: # 1928 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: template -2441: void -2441: _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) -2441: { _M_fill_assign(__n, __val); } -2441: -2441: -2441: template -2441: void -2441: _M_assign_dispatch(_InputIterator __first, _InputIterator __last, -2441: __false_type) -2441: { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } -2441: -2441: -2441: template -2441: void -2441: _M_assign_aux(_InputIterator __first, _InputIterator __last, -2441: std::input_iterator_tag); -2441: -2441: -2441: template -2441: void -2441: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, -2441: std::forward_iterator_tag) -2441: { -2441: const size_type __len = std::distance(__first, __last); -2441: if (__len > size()) -2441: { -2441: _ForwardIterator __mid = __first; -2441: std::advance(__mid, size()); -2441: std::copy(__first, __mid, begin()); -2441: _M_range_insert_aux(end(), __mid, __last, -2441: std::__iterator_category(__first)); -2441: } -2441: else -2441: _M_erase_at_end(std::copy(__first, __last, begin())); -2441: } -2441: -2441: -2441: -2441: void -2441: _M_fill_assign(size_type __n, const value_type& __val) -2441: { -2441: if (__n > size()) -2441: { -2441: std::fill(begin(), end(), __val); -2441: _M_fill_insert(end(), __n - size(), __val); -2441: } -2441: else -2441: { -2441: _M_erase_at_end(begin() + difference_type(__n)); -2441: std::fill(begin(), end(), __val); -2441: } -2441: } -2441: # 1989 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: template -2441: void _M_push_back_aux(_Args&&... __args); -2441: -2441: template -2441: void _M_push_front_aux(_Args&&... __args); -2441: -2441: -2441: void _M_pop_back_aux(); -2441: -2441: void _M_pop_front_aux(); -2441: # 2008 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: template -2441: void -2441: _M_insert_dispatch(iterator __pos, -2441: _Integer __n, _Integer __x, __true_type) -2441: { _M_fill_insert(__pos, __n, __x); } -2441: -2441: -2441: template -2441: void -2441: _M_insert_dispatch(iterator __pos, -2441: _InputIterator __first, _InputIterator __last, -2441: __false_type) -2441: { -2441: _M_range_insert_aux(__pos, __first, __last, -2441: std::__iterator_category(__first)); -2441: } -2441: -2441: -2441: template -2441: void -2441: _M_range_insert_aux(iterator __pos, _InputIterator __first, -2441: _InputIterator __last, std::input_iterator_tag); -2441: -2441: -2441: template -2441: void -2441: _M_range_insert_aux(iterator __pos, _ForwardIterator __first, -2441: _ForwardIterator __last, std::forward_iterator_tag); -2441: -2441: -2441: -2441: -2441: void -2441: _M_fill_insert(iterator __pos, size_type __n, const value_type& __x); -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: iterator -2441: _M_insert_aux(iterator __pos, _Args&&... __args); -2441: -2441: -2441: -2441: void -2441: _M_insert_aux(iterator __pos, size_type __n, const value_type& __x); -2441: -2441: -2441: template -2441: void -2441: _M_insert_aux(iterator __pos, -2441: _ForwardIterator __first, _ForwardIterator __last, -2441: size_type __n); -2441: -2441: -2441: -2441: -2441: void -2441: _M_destroy_data_aux(iterator __first, iterator __last); -2441: -2441: -2441: -2441: template -2441: void -2441: _M_destroy_data(iterator __first, iterator __last, const _Alloc1&) -2441: { _M_destroy_data_aux(__first, __last); } -2441: -2441: void -2441: _M_destroy_data(iterator __first, iterator __last, -2441: const std::allocator<_Tp>&) -2441: { -2441: if (!__has_trivial_destructor(value_type)) -2441: _M_destroy_data_aux(__first, __last); -2441: } -2441: -2441: -2441: void -2441: _M_erase_at_begin(iterator __pos) -2441: { -2441: _M_destroy_data(begin(), __pos, _M_get_Tp_allocator()); -2441: _M_destroy_nodes(this->_M_impl._M_start._M_node, __pos._M_node); -2441: this->_M_impl._M_start = __pos; -2441: } -2441: -2441: -2441: -2441: void -2441: _M_erase_at_end(iterator __pos) -2441: { -2441: _M_destroy_data(__pos, end(), _M_get_Tp_allocator()); -2441: _M_destroy_nodes(__pos._M_node + 1, -2441: this->_M_impl._M_finish._M_node + 1); -2441: this->_M_impl._M_finish = __pos; -2441: } -2441: -2441: iterator -2441: _M_erase(iterator __pos); -2441: -2441: iterator -2441: _M_erase(iterator __first, iterator __last); -2441: -2441: -2441: -2441: void -2441: _M_default_append(size_type __n); -2441: -2441: bool -2441: _M_shrink_to_fit(); -2441: -2441: -2441: -2441: -2441: iterator -2441: _M_reserve_elements_at_front(size_type __n) -2441: { -2441: const size_type __vacancies = this->_M_impl._M_start._M_cur -2441: - this->_M_impl._M_start._M_first; -2441: if (__n > __vacancies) -2441: _M_new_elements_at_front(__n - __vacancies); -2441: return this->_M_impl._M_start - difference_type(__n); -2441: } -2441: -2441: iterator -2441: _M_reserve_elements_at_back(size_type __n) -2441: { -2441: const size_type __vacancies = (this->_M_impl._M_finish._M_last -2441: - this->_M_impl._M_finish._M_cur) - 1; -2441: if (__n > __vacancies) -2441: _M_new_elements_at_back(__n - __vacancies); -2441: return this->_M_impl._M_finish + difference_type(__n); -2441: } -2441: -2441: void -2441: _M_new_elements_at_front(size_type __new_elements); -2441: -2441: void -2441: _M_new_elements_at_back(size_type __new_elements); -2441: # 2158 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: void -2441: _M_reserve_map_at_back(size_type __nodes_to_add = 1) -2441: { -2441: if (__nodes_to_add + 1 > this->_M_impl._M_map_size -2441: - (this->_M_impl._M_finish._M_node - this->_M_impl._M_map)) -2441: _M_reallocate_map(__nodes_to_add, false); -2441: } -2441: -2441: void -2441: _M_reserve_map_at_front(size_type __nodes_to_add = 1) -2441: { -2441: if (__nodes_to_add > size_type(this->_M_impl._M_start._M_node -2441: - this->_M_impl._M_map)) -2441: _M_reallocate_map(__nodes_to_add, true); -2441: } -2441: -2441: void -2441: _M_reallocate_map(size_type __nodes_to_add, bool __add_at_front); -2441: -2441: -2441: -2441: -2441: -2441: void -2441: _M_move_assign1(deque&& __x, true_type) noexcept -2441: { -2441: this->_M_impl._M_swap_data(__x._M_impl); -2441: __x.clear(); -2441: std::__alloc_on_move(_M_get_Tp_allocator(), __x._M_get_Tp_allocator()); -2441: } -2441: -2441: -2441: -2441: -2441: void -2441: _M_move_assign1(deque&& __x, false_type) -2441: { -2441: constexpr bool __move_storage = -2441: _Alloc_traits::_S_propagate_on_move_assign(); -2441: _M_move_assign2(std::move(__x), __bool_constant<__move_storage>()); -2441: } -2441: -2441: -2441: -2441: template -2441: void -2441: _M_replace_map(_Args&&... __args) -2441: { -2441: -2441: deque __newobj(std::forward<_Args>(__args)...); -2441: -2441: clear(); -2441: _M_deallocate_node(*begin()._M_node); -2441: _M_deallocate_map(this->_M_impl._M_map, this->_M_impl._M_map_size); -2441: this->_M_impl._M_map = nullptr; -2441: this->_M_impl._M_map_size = 0; -2441: -2441: this->_M_impl._M_swap_data(__newobj._M_impl); -2441: } -2441: -2441: -2441: void -2441: _M_move_assign2(deque&& __x, true_type) -2441: { -2441: -2441: auto __alloc = __x._M_get_Tp_allocator(); -2441: -2441: -2441: _M_replace_map(std::move(__x)); -2441: -2441: _M_get_Tp_allocator() = std::move(__alloc); -2441: } -2441: -2441: -2441: -2441: void -2441: _M_move_assign2(deque&& __x, false_type) -2441: { -2441: if (__x._M_get_Tp_allocator() == this->_M_get_Tp_allocator()) -2441: { -2441: -2441: -2441: _M_replace_map(std::move(__x), __x.get_allocator()); -2441: } -2441: else -2441: { -2441: -2441: -2441: _M_assign_aux(std::__make_move_if_noexcept_iterator(__x.begin()), -2441: std::__make_move_if_noexcept_iterator(__x.end()), -2441: std::random_access_iterator_tag()); -2441: __x.clear(); -2441: } -2441: } -2441: -2441: }; -2441: # 2275 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: template -2441: inline bool -2441: operator==(const deque<_Tp, _Alloc>& __x, -2441: const deque<_Tp, _Alloc>& __y) -2441: { return __x.size() == __y.size() -2441: && std::equal(__x.begin(), __x.end(), __y.begin()); } -2441: # 2293 "/usr/include/c++/8/bits/stl_deque.h" 3 -2441: template -2441: inline bool -2441: operator<(const deque<_Tp, _Alloc>& __x, -2441: const deque<_Tp, _Alloc>& __y) -2441: { return std::lexicographical_compare(__x.begin(), __x.end(), -2441: __y.begin(), __y.end()); } -2441: -2441: -2441: template -2441: inline bool -2441: operator!=(const deque<_Tp, _Alloc>& __x, -2441: const deque<_Tp, _Alloc>& __y) -2441: { return !(__x == __y); } -2441: -2441: -2441: template -2441: inline bool -2441: operator>(const deque<_Tp, _Alloc>& __x, -2441: const deque<_Tp, _Alloc>& __y) -2441: { return __y < __x; } -2441: -2441: -2441: template -2441: inline bool -2441: operator<=(const deque<_Tp, _Alloc>& __x, -2441: const deque<_Tp, _Alloc>& __y) -2441: { return !(__y < __x); } -2441: -2441: -2441: template -2441: inline bool -2441: operator>=(const deque<_Tp, _Alloc>& __x, -2441: const deque<_Tp, _Alloc>& __y) -2441: { return !(__x < __y); } -2441: -2441: -2441: template -2441: inline void -2441: swap(deque<_Tp,_Alloc>& __x, deque<_Tp,_Alloc>& __y) -2441: noexcept(noexcept(__x.swap(__y))) -2441: { __x.swap(__y); } -2441: -2441: -2441: -2441: -2441: -2441: } -2441: # 65 "/usr/include/c++/8/deque" 2 3 -2441: -2441: # 1 "/usr/include/c++/8/bits/deque.tcc" 1 3 -2441: # 59 "/usr/include/c++/8/bits/deque.tcc" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: -2441: template -2441: void -2441: deque<_Tp, _Alloc>:: -2441: _M_default_initialize() -2441: { -2441: _Map_pointer __cur; -2441: try -2441: { -2441: for (__cur = this->_M_impl._M_start._M_node; -2441: __cur < this->_M_impl._M_finish._M_node; -2441: ++__cur) -2441: std::__uninitialized_default_a(*__cur, *__cur + _S_buffer_size(), -2441: _M_get_Tp_allocator()); -2441: std::__uninitialized_default_a(this->_M_impl._M_finish._M_first, -2441: this->_M_impl._M_finish._M_cur, -2441: _M_get_Tp_allocator()); -2441: } -2441: catch(...) -2441: { -2441: std::_Destroy(this->_M_impl._M_start, iterator(*__cur, __cur), -2441: _M_get_Tp_allocator()); -2441: throw; -2441: } -2441: } -2441: -2441: -2441: template -2441: deque<_Tp, _Alloc>& -2441: deque<_Tp, _Alloc>:: -2441: operator=(const deque& __x) -2441: { -2441: if (&__x != this) -2441: { -2441: -2441: if (_Alloc_traits::_S_propagate_on_copy_assign()) -2441: { -2441: if (!_Alloc_traits::_S_always_equal() -2441: && _M_get_Tp_allocator() != __x._M_get_Tp_allocator()) -2441: { -2441: -2441: -2441: _M_replace_map(__x, __x.get_allocator()); -2441: std::__alloc_on_copy(_M_get_Tp_allocator(), -2441: __x._M_get_Tp_allocator()); -2441: return *this; -2441: } -2441: std::__alloc_on_copy(_M_get_Tp_allocator(), -2441: __x._M_get_Tp_allocator()); -2441: } -2441: -2441: const size_type __len = size(); -2441: if (__len >= __x.size()) -2441: _M_erase_at_end(std::copy(__x.begin(), __x.end(), -2441: this->_M_impl._M_start)); -2441: else -2441: { -2441: const_iterator __mid = __x.begin() + difference_type(__len); -2441: std::copy(__x.begin(), __mid, this->_M_impl._M_start); -2441: _M_range_insert_aux(this->_M_impl._M_finish, __mid, __x.end(), -2441: std::random_access_iterator_tag()); -2441: } -2441: } -2441: return *this; -2441: } -2441: -2441: -2441: template -2441: template -2441: -2441: -2441: -2441: void -2441: -2441: deque<_Tp, _Alloc>:: -2441: emplace_front(_Args&&... __args) -2441: { -2441: if (this->_M_impl._M_start._M_cur != this->_M_impl._M_start._M_first) -2441: { -2441: _Alloc_traits::construct(this->_M_impl, -2441: this->_M_impl._M_start._M_cur - 1, -2441: std::forward<_Args>(__args)...); -2441: --this->_M_impl._M_start._M_cur; -2441: } -2441: else -2441: _M_push_front_aux(std::forward<_Args>(__args)...); -2441: -2441: -2441: -2441: } -2441: -2441: template -2441: template -2441: -2441: -2441: -2441: void -2441: -2441: deque<_Tp, _Alloc>:: -2441: emplace_back(_Args&&... __args) -2441: { -2441: if (this->_M_impl._M_finish._M_cur -2441: != this->_M_impl._M_finish._M_last - 1) -2441: { -2441: _Alloc_traits::construct(this->_M_impl, -2441: this->_M_impl._M_finish._M_cur, -2441: std::forward<_Args>(__args)...); -2441: ++this->_M_impl._M_finish._M_cur; -2441: } -2441: else -2441: _M_push_back_aux(std::forward<_Args>(__args)...); -2441: -2441: -2441: -2441: } -2441: -2441: -2441: -2441: template -2441: template -2441: typename deque<_Tp, _Alloc>::iterator -2441: deque<_Tp, _Alloc>:: -2441: emplace(const_iterator __position, _Args&&... __args) -2441: { -2441: if (__position._M_cur == this->_M_impl._M_start._M_cur) -2441: { -2441: emplace_front(std::forward<_Args>(__args)...); -2441: return this->_M_impl._M_start; -2441: } -2441: else if (__position._M_cur == this->_M_impl._M_finish._M_cur) -2441: { -2441: emplace_back(std::forward<_Args>(__args)...); -2441: iterator __tmp = this->_M_impl._M_finish; -2441: --__tmp; -2441: return __tmp; -2441: } -2441: else -2441: return _M_insert_aux(__position._M_const_cast(), -2441: std::forward<_Args>(__args)...); -2441: } -2441: -2441: -2441: template -2441: typename deque<_Tp, _Alloc>::iterator -2441: deque<_Tp, _Alloc>:: -2441: -2441: insert(const_iterator __position, const value_type& __x) -2441: -2441: -2441: -2441: { -2441: if (__position._M_cur == this->_M_impl._M_start._M_cur) -2441: { -2441: push_front(__x); -2441: return this->_M_impl._M_start; -2441: } -2441: else if (__position._M_cur == this->_M_impl._M_finish._M_cur) -2441: { -2441: push_back(__x); -2441: iterator __tmp = this->_M_impl._M_finish; -2441: --__tmp; -2441: return __tmp; -2441: } -2441: else -2441: return _M_insert_aux(__position._M_const_cast(), __x); -2441: } -2441: -2441: template -2441: typename deque<_Tp, _Alloc>::iterator -2441: deque<_Tp, _Alloc>:: -2441: _M_erase(iterator __position) -2441: { -2441: iterator __next = __position; -2441: ++__next; -2441: const difference_type __index = __position - begin(); -2441: if (static_cast(__index) < (size() >> 1)) -2441: { -2441: if (__position != begin()) -2441: std::move_backward(begin(), __position, __next); -2441: pop_front(); -2441: } -2441: else -2441: { -2441: if (__next != end()) -2441: std::move(__next, end(), __position); -2441: pop_back(); -2441: } -2441: return begin() + __index; -2441: } -2441: -2441: template -2441: typename deque<_Tp, _Alloc>::iterator -2441: deque<_Tp, _Alloc>:: -2441: _M_erase(iterator __first, iterator __last) -2441: { -2441: if (__first == __last) -2441: return __first; -2441: else if (__first == begin() && __last == end()) -2441: { -2441: clear(); -2441: return end(); -2441: } -2441: else -2441: { -2441: const difference_type __n = __last - __first; -2441: const difference_type __elems_before = __first - begin(); -2441: if (static_cast(__elems_before) <= (size() - __n) / 2) -2441: { -2441: if (__first != begin()) -2441: std::move_backward(begin(), __first, __last); -2441: _M_erase_at_begin(begin() + __n); -2441: } -2441: else -2441: { -2441: if (__last != end()) -2441: std::move(__last, end(), __first); -2441: _M_erase_at_end(end() - __n); -2441: } -2441: return begin() + __elems_before; -2441: } -2441: } -2441: -2441: template -2441: template -2441: void -2441: deque<_Tp, _Alloc>:: -2441: _M_assign_aux(_InputIterator __first, _InputIterator __last, -2441: std::input_iterator_tag) -2441: { -2441: iterator __cur = begin(); -2441: for (; __first != __last && __cur != end(); ++__cur, ++__first) -2441: *__cur = *__first; -2441: if (__first == __last) -2441: _M_erase_at_end(__cur); -2441: else -2441: _M_range_insert_aux(end(), __first, __last, -2441: std::__iterator_category(__first)); -2441: } -2441: -2441: template -2441: void -2441: deque<_Tp, _Alloc>:: -2441: _M_fill_insert(iterator __pos, size_type __n, const value_type& __x) -2441: { -2441: if (__pos._M_cur == this->_M_impl._M_start._M_cur) -2441: { -2441: iterator __new_start = _M_reserve_elements_at_front(__n); -2441: try -2441: { -2441: std::__uninitialized_fill_a(__new_start, this->_M_impl._M_start, -2441: __x, _M_get_Tp_allocator()); -2441: this->_M_impl._M_start = __new_start; -2441: } -2441: catch(...) -2441: { -2441: _M_destroy_nodes(__new_start._M_node, -2441: this->_M_impl._M_start._M_node); -2441: throw; -2441: } -2441: } -2441: else if (__pos._M_cur == this->_M_impl._M_finish._M_cur) -2441: { -2441: iterator __new_finish = _M_reserve_elements_at_back(__n); -2441: try -2441: { -2441: std::__uninitialized_fill_a(this->_M_impl._M_finish, -2441: __new_finish, __x, -2441: _M_get_Tp_allocator()); -2441: this->_M_impl._M_finish = __new_finish; -2441: } -2441: catch(...) -2441: { -2441: _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1, -2441: __new_finish._M_node + 1); -2441: throw; -2441: } -2441: } -2441: else -2441: _M_insert_aux(__pos, __n, __x); -2441: } -2441: -2441: -2441: template -2441: void -2441: deque<_Tp, _Alloc>:: -2441: _M_default_append(size_type __n) -2441: { -2441: if (__n) -2441: { -2441: iterator __new_finish = _M_reserve_elements_at_back(__n); -2441: try -2441: { -2441: std::__uninitialized_default_a(this->_M_impl._M_finish, -2441: __new_finish, -2441: _M_get_Tp_allocator()); -2441: this->_M_impl._M_finish = __new_finish; -2441: } -2441: catch(...) -2441: { -2441: _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1, -2441: __new_finish._M_node + 1); -2441: throw; -2441: } -2441: } -2441: } -2441: -2441: template -2441: bool -2441: deque<_Tp, _Alloc>:: -2441: _M_shrink_to_fit() -2441: { -2441: const difference_type __front_capacity -2441: = (this->_M_impl._M_start._M_cur - this->_M_impl._M_start._M_first); -2441: if (__front_capacity == 0) -2441: return false; -2441: -2441: const difference_type __back_capacity -2441: = (this->_M_impl._M_finish._M_last - this->_M_impl._M_finish._M_cur); -2441: if (__front_capacity + __back_capacity < _S_buffer_size()) -2441: return false; -2441: -2441: return std::__shrink_to_fit_aux::_S_do_it(*this); -2441: } -2441: -2441: -2441: template -2441: void -2441: deque<_Tp, _Alloc>:: -2441: _M_fill_initialize(const value_type& __value) -2441: { -2441: _Map_pointer __cur; -2441: try -2441: { -2441: for (__cur = this->_M_impl._M_start._M_node; -2441: __cur < this->_M_impl._M_finish._M_node; -2441: ++__cur) -2441: std::__uninitialized_fill_a(*__cur, *__cur + _S_buffer_size(), -2441: __value, _M_get_Tp_allocator()); -2441: std::__uninitialized_fill_a(this->_M_impl._M_finish._M_first, -2441: this->_M_impl._M_finish._M_cur, -2441: __value, _M_get_Tp_allocator()); -2441: } -2441: catch(...) -2441: { -2441: std::_Destroy(this->_M_impl._M_start, iterator(*__cur, __cur), -2441: _M_get_Tp_allocator()); -2441: throw; -2441: } -2441: } -2441: -2441: template -2441: template -2441: void -2441: deque<_Tp, _Alloc>:: -2441: _M_range_initialize(_InputIterator __first, _InputIterator __last, -2441: std::input_iterator_tag) -2441: { -2441: this->_M_initialize_map(0); -2441: try -2441: { -2441: for (; __first != __last; ++__first) -2441: -2441: emplace_back(*__first); -2441: -2441: -2441: -2441: } -2441: catch(...) -2441: { -2441: clear(); -2441: throw; -2441: } -2441: } -2441: -2441: template -2441: template -2441: void -2441: deque<_Tp, _Alloc>:: -2441: _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last, -2441: std::forward_iterator_tag) -2441: { -2441: const size_type __n = std::distance(__first, __last); -2441: this->_M_initialize_map(__n); -2441: -2441: _Map_pointer __cur_node; -2441: try -2441: { -2441: for (__cur_node = this->_M_impl._M_start._M_node; -2441: __cur_node < this->_M_impl._M_finish._M_node; -2441: ++__cur_node) -2441: { -2441: _ForwardIterator __mid = __first; -2441: std::advance(__mid, _S_buffer_size()); -2441: std::__uninitialized_copy_a(__first, __mid, *__cur_node, -2441: _M_get_Tp_allocator()); -2441: __first = __mid; -2441: } -2441: std::__uninitialized_copy_a(__first, __last, -2441: this->_M_impl._M_finish._M_first, -2441: _M_get_Tp_allocator()); -2441: } -2441: catch(...) -2441: { -2441: std::_Destroy(this->_M_impl._M_start, -2441: iterator(*__cur_node, __cur_node), -2441: _M_get_Tp_allocator()); -2441: throw; -2441: } -2441: } -2441: -2441: -2441: template -2441: -2441: template -2441: void -2441: deque<_Tp, _Alloc>:: -2441: _M_push_back_aux(_Args&&... __args) -2441: -2441: -2441: -2441: -2441: -2441: { -2441: _M_reserve_map_at_back(); -2441: *(this->_M_impl._M_finish._M_node + 1) = this->_M_allocate_node(); -2441: try -2441: { -2441: -2441: _Alloc_traits::construct(this->_M_impl, -2441: this->_M_impl._M_finish._M_cur, -2441: std::forward<_Args>(__args)...); -2441: -2441: -2441: -2441: this->_M_impl._M_finish._M_set_node(this->_M_impl._M_finish._M_node -2441: + 1); -2441: this->_M_impl._M_finish._M_cur = this->_M_impl._M_finish._M_first; -2441: } -2441: catch(...) -2441: { -2441: _M_deallocate_node(*(this->_M_impl._M_finish._M_node + 1)); -2441: throw; -2441: } -2441: } -2441: -2441: -2441: template -2441: -2441: template -2441: void -2441: deque<_Tp, _Alloc>:: -2441: _M_push_front_aux(_Args&&... __args) -2441: -2441: -2441: -2441: -2441: -2441: { -2441: _M_reserve_map_at_front(); -2441: *(this->_M_impl._M_start._M_node - 1) = this->_M_allocate_node(); -2441: try -2441: { -2441: this->_M_impl._M_start._M_set_node(this->_M_impl._M_start._M_node -2441: - 1); -2441: this->_M_impl._M_start._M_cur = this->_M_impl._M_start._M_last - 1; -2441: -2441: _Alloc_traits::construct(this->_M_impl, -2441: this->_M_impl._M_start._M_cur, -2441: std::forward<_Args>(__args)...); -2441: -2441: -2441: -2441: } -2441: catch(...) -2441: { -2441: ++this->_M_impl._M_start; -2441: _M_deallocate_node(*(this->_M_impl._M_start._M_node - 1)); -2441: throw; -2441: } -2441: } -2441: -2441: -2441: template -2441: void deque<_Tp, _Alloc>:: -2441: _M_pop_back_aux() -2441: { -2441: _M_deallocate_node(this->_M_impl._M_finish._M_first); -2441: this->_M_impl._M_finish._M_set_node(this->_M_impl._M_finish._M_node - 1); -2441: this->_M_impl._M_finish._M_cur = this->_M_impl._M_finish._M_last - 1; -2441: _Alloc_traits::destroy(_M_get_Tp_allocator(), -2441: this->_M_impl._M_finish._M_cur); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: void deque<_Tp, _Alloc>:: -2441: _M_pop_front_aux() -2441: { -2441: _Alloc_traits::destroy(_M_get_Tp_allocator(), -2441: this->_M_impl._M_start._M_cur); -2441: _M_deallocate_node(this->_M_impl._M_start._M_first); -2441: this->_M_impl._M_start._M_set_node(this->_M_impl._M_start._M_node + 1); -2441: this->_M_impl._M_start._M_cur = this->_M_impl._M_start._M_first; -2441: } -2441: -2441: template -2441: template -2441: void -2441: deque<_Tp, _Alloc>:: -2441: _M_range_insert_aux(iterator __pos, -2441: _InputIterator __first, _InputIterator __last, -2441: std::input_iterator_tag) -2441: { std::copy(__first, __last, std::inserter(*this, __pos)); } -2441: -2441: template -2441: template -2441: void -2441: deque<_Tp, _Alloc>:: -2441: _M_range_insert_aux(iterator __pos, -2441: _ForwardIterator __first, _ForwardIterator __last, -2441: std::forward_iterator_tag) -2441: { -2441: const size_type __n = std::distance(__first, __last); -2441: if (__pos._M_cur == this->_M_impl._M_start._M_cur) -2441: { -2441: iterator __new_start = _M_reserve_elements_at_front(__n); -2441: try -2441: { -2441: std::__uninitialized_copy_a(__first, __last, __new_start, -2441: _M_get_Tp_allocator()); -2441: this->_M_impl._M_start = __new_start; -2441: } -2441: catch(...) -2441: { -2441: _M_destroy_nodes(__new_start._M_node, -2441: this->_M_impl._M_start._M_node); -2441: throw; -2441: } -2441: } -2441: else if (__pos._M_cur == this->_M_impl._M_finish._M_cur) -2441: { -2441: iterator __new_finish = _M_reserve_elements_at_back(__n); -2441: try -2441: { -2441: std::__uninitialized_copy_a(__first, __last, -2441: this->_M_impl._M_finish, -2441: _M_get_Tp_allocator()); -2441: this->_M_impl._M_finish = __new_finish; -2441: } -2441: catch(...) -2441: { -2441: _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1, -2441: __new_finish._M_node + 1); -2441: throw; -2441: } -2441: } -2441: else -2441: _M_insert_aux(__pos, __first, __last, __n); -2441: } -2441: -2441: template -2441: -2441: template -2441: typename deque<_Tp, _Alloc>::iterator -2441: deque<_Tp, _Alloc>:: -2441: _M_insert_aux(iterator __pos, _Args&&... __args) -2441: { -2441: value_type __x_copy(std::forward<_Args>(__args)...); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: difference_type __index = __pos - this->_M_impl._M_start; -2441: if (static_cast(__index) < size() / 2) -2441: { -2441: push_front(std::move(front())); -2441: iterator __front1 = this->_M_impl._M_start; -2441: ++__front1; -2441: iterator __front2 = __front1; -2441: ++__front2; -2441: __pos = this->_M_impl._M_start + __index; -2441: iterator __pos1 = __pos; -2441: ++__pos1; -2441: std::move(__front2, __pos1, __front1); -2441: } -2441: else -2441: { -2441: push_back(std::move(back())); -2441: iterator __back1 = this->_M_impl._M_finish; -2441: --__back1; -2441: iterator __back2 = __back1; -2441: --__back2; -2441: __pos = this->_M_impl._M_start + __index; -2441: std::move_backward(__pos, __back2, __back1); -2441: } -2441: *__pos = std::move(__x_copy); -2441: return __pos; -2441: } -2441: -2441: template -2441: void -2441: deque<_Tp, _Alloc>:: -2441: _M_insert_aux(iterator __pos, size_type __n, const value_type& __x) -2441: { -2441: const difference_type __elems_before = __pos - this->_M_impl._M_start; -2441: const size_type __length = this->size(); -2441: value_type __x_copy = __x; -2441: if (__elems_before < difference_type(__length / 2)) -2441: { -2441: iterator __new_start = _M_reserve_elements_at_front(__n); -2441: iterator __old_start = this->_M_impl._M_start; -2441: __pos = this->_M_impl._M_start + __elems_before; -2441: try -2441: { -2441: if (__elems_before >= difference_type(__n)) -2441: { -2441: iterator __start_n = (this->_M_impl._M_start -2441: + difference_type(__n)); -2441: std::__uninitialized_move_a(this->_M_impl._M_start, -2441: __start_n, __new_start, -2441: _M_get_Tp_allocator()); -2441: this->_M_impl._M_start = __new_start; -2441: std::move(__start_n, __pos, __old_start); -2441: std::fill(__pos - difference_type(__n), __pos, __x_copy); -2441: } -2441: else -2441: { -2441: std::__uninitialized_move_fill(this->_M_impl._M_start, -2441: __pos, __new_start, -2441: this->_M_impl._M_start, -2441: __x_copy, -2441: _M_get_Tp_allocator()); -2441: this->_M_impl._M_start = __new_start; -2441: std::fill(__old_start, __pos, __x_copy); -2441: } -2441: } -2441: catch(...) -2441: { -2441: _M_destroy_nodes(__new_start._M_node, -2441: this->_M_impl._M_start._M_node); -2441: throw; -2441: } -2441: } -2441: else -2441: { -2441: iterator __new_finish = _M_reserve_elements_at_back(__n); -2441: iterator __old_finish = this->_M_impl._M_finish; -2441: const difference_type __elems_after = -2441: difference_type(__length) - __elems_before; -2441: __pos = this->_M_impl._M_finish - __elems_after; -2441: try -2441: { -2441: if (__elems_after > difference_type(__n)) -2441: { -2441: iterator __finish_n = (this->_M_impl._M_finish -2441: - difference_type(__n)); -2441: std::__uninitialized_move_a(__finish_n, -2441: this->_M_impl._M_finish, -2441: this->_M_impl._M_finish, -2441: _M_get_Tp_allocator()); -2441: this->_M_impl._M_finish = __new_finish; -2441: std::move_backward(__pos, __finish_n, __old_finish); -2441: std::fill(__pos, __pos + difference_type(__n), __x_copy); -2441: } -2441: else -2441: { -2441: std::__uninitialized_fill_move(this->_M_impl._M_finish, -2441: __pos + difference_type(__n), -2441: __x_copy, __pos, -2441: this->_M_impl._M_finish, -2441: _M_get_Tp_allocator()); -2441: this->_M_impl._M_finish = __new_finish; -2441: std::fill(__pos, __old_finish, __x_copy); -2441: } -2441: } -2441: catch(...) -2441: { -2441: _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1, -2441: __new_finish._M_node + 1); -2441: throw; -2441: } -2441: } -2441: } -2441: -2441: template -2441: template -2441: void -2441: deque<_Tp, _Alloc>:: -2441: _M_insert_aux(iterator __pos, -2441: _ForwardIterator __first, _ForwardIterator __last, -2441: size_type __n) -2441: { -2441: const difference_type __elemsbefore = __pos - this->_M_impl._M_start; -2441: const size_type __length = size(); -2441: if (static_cast(__elemsbefore) < __length / 2) -2441: { -2441: iterator __new_start = _M_reserve_elements_at_front(__n); -2441: iterator __old_start = this->_M_impl._M_start; -2441: __pos = this->_M_impl._M_start + __elemsbefore; -2441: try -2441: { -2441: if (__elemsbefore >= difference_type(__n)) -2441: { -2441: iterator __start_n = (this->_M_impl._M_start -2441: + difference_type(__n)); -2441: std::__uninitialized_move_a(this->_M_impl._M_start, -2441: __start_n, __new_start, -2441: _M_get_Tp_allocator()); -2441: this->_M_impl._M_start = __new_start; -2441: std::move(__start_n, __pos, __old_start); -2441: std::copy(__first, __last, __pos - difference_type(__n)); -2441: } -2441: else -2441: { -2441: _ForwardIterator __mid = __first; -2441: std::advance(__mid, difference_type(__n) - __elemsbefore); -2441: std::__uninitialized_move_copy(this->_M_impl._M_start, -2441: __pos, __first, __mid, -2441: __new_start, -2441: _M_get_Tp_allocator()); -2441: this->_M_impl._M_start = __new_start; -2441: std::copy(__mid, __last, __old_start); -2441: } -2441: } -2441: catch(...) -2441: { -2441: _M_destroy_nodes(__new_start._M_node, -2441: this->_M_impl._M_start._M_node); -2441: throw; -2441: } -2441: } -2441: else -2441: { -2441: iterator __new_finish = _M_reserve_elements_at_back(__n); -2441: iterator __old_finish = this->_M_impl._M_finish; -2441: const difference_type __elemsafter = -2441: difference_type(__length) - __elemsbefore; -2441: __pos = this->_M_impl._M_finish - __elemsafter; -2441: try -2441: { -2441: if (__elemsafter > difference_type(__n)) -2441: { -2441: iterator __finish_n = (this->_M_impl._M_finish -2441: - difference_type(__n)); -2441: std::__uninitialized_move_a(__finish_n, -2441: this->_M_impl._M_finish, -2441: this->_M_impl._M_finish, -2441: _M_get_Tp_allocator()); -2441: this->_M_impl._M_finish = __new_finish; -2441: std::move_backward(__pos, __finish_n, __old_finish); -2441: std::copy(__first, __last, __pos); -2441: } -2441: else -2441: { -2441: _ForwardIterator __mid = __first; -2441: std::advance(__mid, __elemsafter); -2441: std::__uninitialized_copy_move(__mid, __last, __pos, -2441: this->_M_impl._M_finish, -2441: this->_M_impl._M_finish, -2441: _M_get_Tp_allocator()); -2441: this->_M_impl._M_finish = __new_finish; -2441: std::copy(__first, __mid, __pos); -2441: } -2441: } -2441: catch(...) -2441: { -2441: _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1, -2441: __new_finish._M_node + 1); -2441: throw; -2441: } -2441: } -2441: } -2441: -2441: template -2441: void -2441: deque<_Tp, _Alloc>:: -2441: _M_destroy_data_aux(iterator __first, iterator __last) -2441: { -2441: for (_Map_pointer __node = __first._M_node + 1; -2441: __node < __last._M_node; ++__node) -2441: std::_Destroy(*__node, *__node + _S_buffer_size(), -2441: _M_get_Tp_allocator()); -2441: -2441: if (__first._M_node != __last._M_node) -2441: { -2441: std::_Destroy(__first._M_cur, __first._M_last, -2441: _M_get_Tp_allocator()); -2441: std::_Destroy(__last._M_first, __last._M_cur, -2441: _M_get_Tp_allocator()); -2441: } -2441: else -2441: std::_Destroy(__first._M_cur, __last._M_cur, -2441: _M_get_Tp_allocator()); -2441: } -2441: -2441: template -2441: void -2441: deque<_Tp, _Alloc>:: -2441: _M_new_elements_at_front(size_type __new_elems) -2441: { -2441: if (this->max_size() - this->size() < __new_elems) -2441: __throw_length_error(("deque::_M_new_elements_at_front")); -2441: -2441: const size_type __new_nodes = ((__new_elems + _S_buffer_size() - 1) -2441: / _S_buffer_size()); -2441: _M_reserve_map_at_front(__new_nodes); -2441: size_type __i; -2441: try -2441: { -2441: for (__i = 1; __i <= __new_nodes; ++__i) -2441: *(this->_M_impl._M_start._M_node - __i) = this->_M_allocate_node(); -2441: } -2441: catch(...) -2441: { -2441: for (size_type __j = 1; __j < __i; ++__j) -2441: _M_deallocate_node(*(this->_M_impl._M_start._M_node - __j)); -2441: throw; -2441: } -2441: } -2441: -2441: template -2441: void -2441: deque<_Tp, _Alloc>:: -2441: _M_new_elements_at_back(size_type __new_elems) -2441: { -2441: if (this->max_size() - this->size() < __new_elems) -2441: __throw_length_error(("deque::_M_new_elements_at_back")); -2441: -2441: const size_type __new_nodes = ((__new_elems + _S_buffer_size() - 1) -2441: / _S_buffer_size()); -2441: _M_reserve_map_at_back(__new_nodes); -2441: size_type __i; -2441: try -2441: { -2441: for (__i = 1; __i <= __new_nodes; ++__i) -2441: *(this->_M_impl._M_finish._M_node + __i) = this->_M_allocate_node(); -2441: } -2441: catch(...) -2441: { -2441: for (size_type __j = 1; __j < __i; ++__j) -2441: _M_deallocate_node(*(this->_M_impl._M_finish._M_node + __j)); -2441: throw; -2441: } -2441: } -2441: -2441: template -2441: void -2441: deque<_Tp, _Alloc>:: -2441: _M_reallocate_map(size_type __nodes_to_add, bool __add_at_front) -2441: { -2441: const size_type __old_num_nodes -2441: = this->_M_impl._M_finish._M_node - this->_M_impl._M_start._M_node + 1; -2441: const size_type __new_num_nodes = __old_num_nodes + __nodes_to_add; -2441: -2441: _Map_pointer __new_nstart; -2441: if (this->_M_impl._M_map_size > 2 * __new_num_nodes) -2441: { -2441: __new_nstart = this->_M_impl._M_map + (this->_M_impl._M_map_size -2441: - __new_num_nodes) / 2 -2441: + (__add_at_front ? __nodes_to_add : 0); -2441: if (__new_nstart < this->_M_impl._M_start._M_node) -2441: std::copy(this->_M_impl._M_start._M_node, -2441: this->_M_impl._M_finish._M_node + 1, -2441: __new_nstart); -2441: else -2441: std::copy_backward(this->_M_impl._M_start._M_node, -2441: this->_M_impl._M_finish._M_node + 1, -2441: __new_nstart + __old_num_nodes); -2441: } -2441: else -2441: { -2441: size_type __new_map_size = this->_M_impl._M_map_size -2441: + std::max(this->_M_impl._M_map_size, -2441: __nodes_to_add) + 2; -2441: -2441: _Map_pointer __new_map = this->_M_allocate_map(__new_map_size); -2441: __new_nstart = __new_map + (__new_map_size - __new_num_nodes) / 2 -2441: + (__add_at_front ? __nodes_to_add : 0); -2441: std::copy(this->_M_impl._M_start._M_node, -2441: this->_M_impl._M_finish._M_node + 1, -2441: __new_nstart); -2441: _M_deallocate_map(this->_M_impl._M_map, this->_M_impl._M_map_size); -2441: -2441: this->_M_impl._M_map = __new_map; -2441: this->_M_impl._M_map_size = __new_map_size; -2441: } -2441: -2441: this->_M_impl._M_start._M_set_node(__new_nstart); -2441: this->_M_impl._M_finish._M_set_node(__new_nstart + __old_num_nodes - 1); -2441: } -2441: -2441: -2441: -2441: template -2441: void -2441: fill(const _Deque_iterator<_Tp, _Tp&, _Tp*>& __first, -2441: const _Deque_iterator<_Tp, _Tp&, _Tp*>& __last, const _Tp& __value) -2441: { -2441: typedef typename _Deque_iterator<_Tp, _Tp&, _Tp*>::_Self _Self; -2441: -2441: for (typename _Self::_Map_pointer __node = __first._M_node + 1; -2441: __node < __last._M_node; ++__node) -2441: std::fill(*__node, *__node + _Self::_S_buffer_size(), __value); -2441: -2441: if (__first._M_node != __last._M_node) -2441: { -2441: std::fill(__first._M_cur, __first._M_last, __value); -2441: std::fill(__last._M_first, __last._M_cur, __value); -2441: } -2441: else -2441: std::fill(__first._M_cur, __last._M_cur, __value); -2441: } -2441: -2441: template -2441: _Deque_iterator<_Tp, _Tp&, _Tp*> -2441: copy(_Deque_iterator<_Tp, const _Tp&, const _Tp*> __first, -2441: _Deque_iterator<_Tp, const _Tp&, const _Tp*> __last, -2441: _Deque_iterator<_Tp, _Tp&, _Tp*> __result) -2441: { -2441: typedef typename _Deque_iterator<_Tp, _Tp&, _Tp*>::_Self _Self; -2441: typedef typename _Self::difference_type difference_type; -2441: -2441: difference_type __len = __last - __first; -2441: while (__len > 0) -2441: { -2441: const difference_type __clen -2441: = std::min(__len, std::min(__first._M_last - __first._M_cur, -2441: __result._M_last - __result._M_cur)); -2441: std::copy(__first._M_cur, __first._M_cur + __clen, __result._M_cur); -2441: __first += __clen; -2441: __result += __clen; -2441: __len -= __clen; -2441: } -2441: return __result; -2441: } -2441: -2441: template -2441: _Deque_iterator<_Tp, _Tp&, _Tp*> -2441: copy_backward(_Deque_iterator<_Tp, const _Tp&, const _Tp*> __first, -2441: _Deque_iterator<_Tp, const _Tp&, const _Tp*> __last, -2441: _Deque_iterator<_Tp, _Tp&, _Tp*> __result) -2441: { -2441: typedef typename _Deque_iterator<_Tp, _Tp&, _Tp*>::_Self _Self; -2441: typedef typename _Self::difference_type difference_type; -2441: -2441: difference_type __len = __last - __first; -2441: while (__len > 0) -2441: { -2441: difference_type __llen = __last._M_cur - __last._M_first; -2441: _Tp* __lend = __last._M_cur; -2441: -2441: difference_type __rlen = __result._M_cur - __result._M_first; -2441: _Tp* __rend = __result._M_cur; -2441: -2441: if (!__llen) -2441: { -2441: __llen = _Self::_S_buffer_size(); -2441: __lend = *(__last._M_node - 1) + __llen; -2441: } -2441: if (!__rlen) -2441: { -2441: __rlen = _Self::_S_buffer_size(); -2441: __rend = *(__result._M_node - 1) + __rlen; -2441: } -2441: -2441: const difference_type __clen = std::min(__len, -2441: std::min(__llen, __rlen)); -2441: std::copy_backward(__lend - __clen, __lend, __rend); -2441: __last -= __clen; -2441: __result -= __clen; -2441: __len -= __clen; -2441: } -2441: return __result; -2441: } -2441: -2441: -2441: template -2441: _Deque_iterator<_Tp, _Tp&, _Tp*> -2441: move(_Deque_iterator<_Tp, const _Tp&, const _Tp*> __first, -2441: _Deque_iterator<_Tp, const _Tp&, const _Tp*> __last, -2441: _Deque_iterator<_Tp, _Tp&, _Tp*> __result) -2441: { -2441: typedef typename _Deque_iterator<_Tp, _Tp&, _Tp*>::_Self _Self; -2441: typedef typename _Self::difference_type difference_type; -2441: -2441: difference_type __len = __last - __first; -2441: while (__len > 0) -2441: { -2441: const difference_type __clen -2441: = std::min(__len, std::min(__first._M_last - __first._M_cur, -2441: __result._M_last - __result._M_cur)); -2441: std::move(__first._M_cur, __first._M_cur + __clen, __result._M_cur); -2441: __first += __clen; -2441: __result += __clen; -2441: __len -= __clen; -2441: } -2441: return __result; -2441: } -2441: -2441: template -2441: _Deque_iterator<_Tp, _Tp&, _Tp*> -2441: move_backward(_Deque_iterator<_Tp, const _Tp&, const _Tp*> __first, -2441: _Deque_iterator<_Tp, const _Tp&, const _Tp*> __last, -2441: _Deque_iterator<_Tp, _Tp&, _Tp*> __result) -2441: { -2441: typedef typename _Deque_iterator<_Tp, _Tp&, _Tp*>::_Self _Self; -2441: typedef typename _Self::difference_type difference_type; -2441: -2441: difference_type __len = __last - __first; -2441: while (__len > 0) -2441: { -2441: difference_type __llen = __last._M_cur - __last._M_first; -2441: _Tp* __lend = __last._M_cur; -2441: -2441: difference_type __rlen = __result._M_cur - __result._M_first; -2441: _Tp* __rend = __result._M_cur; -2441: -2441: if (!__llen) -2441: { -2441: __llen = _Self::_S_buffer_size(); -2441: __lend = *(__last._M_node - 1) + __llen; -2441: } -2441: if (!__rlen) -2441: { -2441: __rlen = _Self::_S_buffer_size(); -2441: __rend = *(__result._M_node - 1) + __rlen; -2441: } -2441: -2441: const difference_type __clen = std::min(__len, -2441: std::min(__llen, __rlen)); -2441: std::move_backward(__lend - __clen, __lend, __rend); -2441: __last -= __clen; -2441: __result -= __clen; -2441: __len -= __clen; -2441: } -2441: return __result; -2441: } -2441: -2441: -2441: -2441: -2441: } -2441: # 67 "/usr/include/c++/8/deque" 2 3 -2441: # 36 "../../src/Linear_System_templates.hh" 2 -2441: -2441: -2441: # 37 "../../src/Linear_System_templates.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: dimension_type -2441: Linear_System::num_lines_or_equalities() const { -2441: ((void) 0); -2441: const Linear_System& x = *this; -2441: dimension_type n = 0; -2441: for (dimension_type i = num_rows(); i-- > 0; ) { -2441: if (x[i].is_line_or_equality()) { -2441: ++n; -2441: } -2441: } -2441: return n; -2441: } -2441: -2441: template -2441: void -2441: Linear_System::merge_rows_assign(const Linear_System& y) { -2441: ((void) 0); -2441: -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: Linear_System& x = *this; -2441: -2441: -2441: Swapping_Vector tmp; -2441: -2441: tmp.reserve(compute_capacity(x.rows.size() + y.rows.size(), -2441: tmp.max_num_rows())); -2441: -2441: dimension_type xi = 0; -2441: const dimension_type x_num_rows = x.num_rows(); -2441: dimension_type yi = 0; -2441: const dimension_type y_num_rows = y.num_rows(); -2441: -2441: while (xi < x_num_rows && yi < y_num_rows) { -2441: const int comp = compare(x[xi], y[yi]); -2441: if (comp <= 0) { -2441: -2441: tmp.resize(tmp.size() + 1); -2441: swap(tmp.back(), x.rows[xi++]); -2441: tmp.back().set_representation(representation()); -2441: if (comp == 0) { -2441: -2441: ++yi; -2441: } -2441: } -2441: else { -2441: -2441: tmp.resize(tmp.size() + 1); -2441: Row copy(y[yi++], space_dimension(), representation()); -2441: swap(tmp.back(), copy); -2441: } -2441: } -2441: -2441: if (xi < x_num_rows) { -2441: while (xi < x_num_rows) { -2441: tmp.resize(tmp.size() + 1); -2441: swap(tmp.back(), x.rows[xi++]); -2441: tmp.back().set_representation(representation()); -2441: } -2441: } -2441: else { -2441: while (yi < y_num_rows) { -2441: tmp.resize(tmp.size() + 1); -2441: Row copy(y[yi++], space_dimension(), representation()); -2441: swap(tmp.back(), copy); -2441: } -2441: } -2441: -2441: -2441: swap(tmp, rows); -2441: -2441: unset_pending_rows(); -2441: ((void) 0); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Linear_System::ascii_dump(std::ostream& s) const { -2441: -2441: -2441: -2441: -2441: s << "topology " << (is_necessarily_closed() -2441: ? "NECESSARILY_CLOSED" -2441: : "NOT_NECESSARILY_CLOSED") -2441: << "\n" -2441: << num_rows() << " x " << space_dimension() << " "; -2441: Parma_Polyhedra_Library::ascii_dump(s, representation()); -2441: s << " " << (sorted ? "(sorted)" : "(not_sorted)") -2441: << "\n" -2441: << "index_first_pending " << first_pending_row() -2441: << "\n"; -2441: for (dimension_type i = 0; i < rows.size(); ++i) { -2441: rows[i].ascii_dump(s); -2441: } -2441: } -2441: -2441: template void Linear_System::ascii_dump() const { ascii_dump(std::cerr); } template void Linear_System::print() const { std::cerr << "No user level output operator defined " << "for " "Linear_System" << "." << std::endl; } -2441: -2441: template -2441: bool -2441: Linear_System::ascii_load(std::istream& s) { -2441: std::string str; -2441: if (!(s >> str) || str != "topology") { -2441: return false; -2441: } -2441: if (!(s >> str)) { -2441: return false; -2441: } -2441: -2441: clear(); -2441: -2441: Topology t; -2441: if (str == "NECESSARILY_CLOSED") { -2441: t = NECESSARILY_CLOSED; -2441: } -2441: else { -2441: if (str != "NOT_NECESSARILY_CLOSED") { -2441: return false; -2441: } -2441: t = NOT_NECESSARILY_CLOSED; -2441: } -2441: -2441: set_topology(t); -2441: -2441: dimension_type nrows; -2441: dimension_type space_dims; -2441: if (!(s >> nrows)) { -2441: return false; -2441: } -2441: if (!(s >> str) || str != "x") { -2441: return false; -2441: } -2441: if (!(s >> space_dims)) { -2441: return false; -2441: } -2441: -2441: space_dimension_ = space_dims; -2441: -2441: if (!Parma_Polyhedra_Library::ascii_load(s, representation_)) { -2441: return false; -2441: } -2441: -2441: if (!(s >> str) || (str != "(sorted)" && str != "(not_sorted)")) { -2441: return false; -2441: } -2441: const bool sortedness = (str == "(sorted)"); -2441: dimension_type index; -2441: if (!(s >> str) || str != "index_first_pending") { -2441: return false; -2441: } -2441: if (!(s >> index)) { -2441: return false; -2441: } -2441: -2441: Row row; -2441: for (dimension_type i = 0; i < nrows; ++i) { -2441: if (!row.ascii_load(s)) { -2441: return false; -2441: } -2441: insert(row, Recycle_Input()); -2441: } -2441: index_first_pending = index; -2441: sorted = sortedness; -2441: -2441: -2441: ((void) 0); -2441: return true; -2441: } -2441: -2441: template -2441: void -2441: Linear_System::insert(const Row& r) { -2441: Row tmp(r, representation()); -2441: insert(tmp, Recycle_Input()); -2441: } -2441: -2441: template -2441: void -2441: Linear_System::insert(Row& r, Recycle_Input) { -2441: insert_no_ok(r, Recycle_Input()); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Linear_System::insert_no_ok(Row& r, Recycle_Input) { -2441: ((void) 0); -2441: -2441: ((void) 0); -2441: -2441: const bool was_sorted = is_sorted(); -2441: -2441: insert_pending_no_ok(r, Recycle_Input()); -2441: -2441: if (was_sorted) { -2441: const dimension_type nrows = num_rows(); -2441: -2441: if (nrows > 1) { -2441: -2441: -2441: -2441: sorted = (compare(rows[nrows-2], rows[nrows-1]) <= 0); -2441: } -2441: else { -2441: -2441: sorted = true; -2441: } -2441: } -2441: -2441: unset_pending_rows(); -2441: } -2441: -2441: template -2441: void -2441: Linear_System::insert_pending_no_ok(Row& r, Recycle_Input) { -2441: # 267 "../../src/Linear_System_templates.hh" -2441: ((void) 0); -2441: -2441: r.set_representation(representation()); -2441: -2441: if (space_dimension() < r.space_dimension()) { -2441: set_space_dimension_no_ok(r.space_dimension()); -2441: } -2441: else { -2441: r.set_space_dimension_no_ok(space_dimension()); -2441: } -2441: -2441: rows.resize(rows.size() + 1); -2441: swap(rows.back(), r); -2441: } -2441: -2441: template -2441: void -2441: Linear_System::insert_pending(const Row& r) { -2441: Row tmp(r, representation()); -2441: insert_pending(tmp, Recycle_Input()); -2441: } -2441: -2441: template -2441: void -2441: Linear_System::insert_pending(Row& r, Recycle_Input) { -2441: insert_pending_no_ok(r, Recycle_Input()); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Linear_System::insert_pending(const Linear_System& y) { -2441: Linear_System tmp(y, representation(), With_Pending()); -2441: insert_pending(tmp, Recycle_Input()); -2441: } -2441: -2441: template -2441: void -2441: Linear_System::insert_pending(Linear_System& y, Recycle_Input) { -2441: Linear_System& x = *this; -2441: ((void) 0); -2441: -2441: -2441: -2441: -2441: for (dimension_type i = 0; i < y.num_rows(); ++i) { -2441: x.insert_pending(y.rows[i], Recycle_Input()); -2441: } -2441: -2441: y.clear(); -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Linear_System::insert(const Linear_System& y) { -2441: Linear_System tmp(y, representation(), With_Pending()); -2441: insert(tmp, Recycle_Input()); -2441: } -2441: -2441: template -2441: void -2441: Linear_System::insert(Linear_System& y, Recycle_Input) { -2441: ((void) 0); -2441: -2441: -2441: if (y.has_no_rows()) { -2441: return; -2441: } -2441: -2441: -2441: if (is_sorted()) { -2441: if (!y.is_sorted() || y.num_pending_rows() > 0) { -2441: sorted = false; -2441: } -2441: else { -2441: -2441: const dimension_type n_rows = num_rows(); -2441: if (n_rows > 0) { -2441: sorted = (compare(rows[n_rows-1], y[0]) <= 0); -2441: } -2441: } -2441: } -2441: -2441: -2441: insert_pending(y, Recycle_Input()); -2441: -2441: -2441: -2441: -2441: unset_pending_rows(); -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Linear_System::remove_space_dimensions(const Variables_Set& vars) { -2441: -2441: ((void) 0); -2441: -2441: -2441: -2441: -2441: if (vars.empty()) { -2441: return; -2441: } -2441: -2441: -2441: -2441: for (dimension_type i = 0; i < num_rows(); ) { -2441: const bool valid = rows[i].remove_space_dimensions(vars); -2441: if (!valid) { -2441: -2441: -2441: -2441: -2441: remove_row_no_ok(i, false); -2441: } -2441: else { -2441: ++i; -2441: } -2441: } -2441: -2441: space_dimension_ -= vars.size(); -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Linear_System::shift_space_dimensions(Variable v, dimension_type n) { -2441: -2441: -2441: ((void) 0); -2441: for (dimension_type i = rows.size(); i-- > 0; ) { -2441: rows[i].shift_space_dimensions(v, n); -2441: } -2441: space_dimension_ += n; -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Linear_System::sort_rows() { -2441: -2441: sort_rows(0, first_pending_row()); -2441: sorted = true; -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Linear_System::sort_rows(const dimension_type first_row, -2441: const dimension_type last_row) { -2441: ((void) 0); -2441: -2441: ((void) 0) -2441: ; -2441: -2441: const bool sorting_pending = (first_row >= first_pending_row()); -2441: const dimension_type old_num_pending = num_pending_rows(); -2441: -2441: const dimension_type num_elems = last_row - first_row; -2441: if (num_elems < 2) { -2441: return; -2441: } -2441: -2441: -2441: -2441: using namespace Implementation; -2441: typedef Swapping_Vector Cont; -2441: typedef Indirect_Sort_Compare Sort_Compare; -2441: typedef Indirect_Swapper Swapper; -2441: const dimension_type num_duplicates -2441: = indirect_sort_and_unique(num_elems, -2441: Sort_Compare(rows, first_row), -2441: Unique_Compare(rows, first_row), -2441: Swapper(rows, first_row)); -2441: -2441: if (num_duplicates > 0) { -2441: typedef typename Cont::iterator Iter; -2441: typedef typename std::iterator_traits::difference_type diff_t; -2441: Iter last = rows.begin() + static_cast(last_row); -2441: Iter first = last - + static_cast(num_duplicates); -2441: rows.erase(first, last); -2441: } -2441: -2441: if (sorting_pending) { -2441: ((void) 0); -2441: index_first_pending = num_rows() - (old_num_pending - num_duplicates); -2441: } -2441: else { -2441: index_first_pending = num_rows() - old_num_pending; -2441: } -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Linear_System::strong_normalize() { -2441: const dimension_type nrows = rows.size(); -2441: -2441: for (dimension_type i = nrows; i-- > 0; ) { -2441: rows[i].strong_normalize(); -2441: } -2441: sorted = (nrows <= 1); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Linear_System::sign_normalize() { -2441: const dimension_type nrows = rows.size(); -2441: -2441: for (dimension_type i = nrows; i-- > 0; ) { -2441: rows[i].sign_normalize(); -2441: } -2441: sorted = (nrows <= 1); -2441: ((void) 0); -2441: } -2441: -2441: -2441: template -2441: bool -2441: operator==(const Linear_System& x, const Linear_System& y) { -2441: if (x.space_dimension() != y.space_dimension()) { -2441: return false; -2441: } -2441: const dimension_type x_num_rows = x.num_rows(); -2441: const dimension_type y_num_rows = y.num_rows(); -2441: if (x_num_rows != y_num_rows) { -2441: return false; -2441: } -2441: if (x.first_pending_row() != y.first_pending_row()) { -2441: return false; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: for (dimension_type i = x_num_rows; i-- > 0; ) { -2441: if (x[i] != y[i]) { -2441: return false; -2441: } -2441: } -2441: return true; -2441: } -2441: -2441: template -2441: void -2441: Linear_System::sort_and_remove_with_sat(Bit_Matrix& sat) { -2441: -2441: ((void) 0); -2441: if (first_pending_row() <= 1) { -2441: set_sorted(true); -2441: return; -2441: } -2441: -2441: const dimension_type num_elems = sat.num_rows(); -2441: -2441: -2441: typedef Swapping_Vector Cont; -2441: const Implementation::Indirect_Sort_Compare -2441: sort_cmp(rows); -2441: const Unique_Compare unique_cmp(rows); -2441: const Implementation::Indirect_Swapper2 swapper(rows, sat); -2441: -2441: const dimension_type num_duplicates -2441: = Implementation::indirect_sort_and_unique(num_elems, sort_cmp, -2441: unique_cmp, swapper); -2441: -2441: const dimension_type new_first_pending_row -2441: = first_pending_row() - num_duplicates; -2441: -2441: if (num_pending_rows() > 0) { -2441: -2441: const dimension_type n_rows = num_rows() - 1; -2441: for (dimension_type i = 0; i < num_duplicates; ++i) { -2441: swap(rows[new_first_pending_row + i], rows[n_rows - i]); -2441: } -2441: } -2441: -2441: -2441: rows.resize(rows.size() - num_duplicates); -2441: index_first_pending = new_first_pending_row; -2441: -2441: sat.remove_trailing_rows(num_duplicates); -2441: -2441: -2441: sorted = true; -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: dimension_type -2441: Linear_System::gauss(const dimension_type n_lines_or_equalities) { -2441: -2441: -2441: -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: -2441: -2441: -2441: -2441: -2441: dimension_type rank = 0; -2441: -2441: bool changed = false; -2441: -2441: const dimension_type num_cols -2441: = is_necessarily_closed() ? space_dimension() + 1 : space_dimension() + 2; -2441: -2441: -2441: -2441: for (dimension_type j = num_cols; j-- > 0; ) { -2441: for (dimension_type i = rank; i < n_lines_or_equalities; ++i) { -2441: -2441: -2441: if ((*this)[i].expr.get(j) == 0) { -2441: continue; -2441: } -2441: -2441: -2441: if (i > rank) { -2441: swap(rows[i], rows[rank]); -2441: -2441: changed = true; -2441: } -2441: -2441: -2441: -2441: for (dimension_type k = i + 1; k < n_lines_or_equalities; ++k) { -2441: if (rows[k].expr.get(Variable(j - 1)) != 0) { -2441: rows[k].linear_combine(rows[rank], j); -2441: changed = true; -2441: } -2441: } -2441: -2441: ++rank; -2441: -2441: break; -2441: } -2441: } -2441: if (changed) { -2441: sorted = false; -2441: } -2441: -2441: ((void) 0); -2441: return rank; -2441: } -2441: -2441: template -2441: void -2441: Linear_System -2441: ::back_substitute(const dimension_type n_lines_or_equalities) { -2441: -2441: -2441: -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: -2441: -2441: -2441: -2441: -2441: const dimension_type nrows = num_rows(); -2441: -2441: bool still_sorted = is_sorted(); -2441: -2441: -2441: std::deque check_for_sortedness; -2441: if (still_sorted) { -2441: check_for_sortedness.insert(check_for_sortedness.end(), nrows, false); -2441: } -2441: -2441: for (dimension_type k = n_lines_or_equalities; k-- > 0; ) { -2441: -2441: -2441: -2441: Row& row_k = rows[k]; -2441: const dimension_type j = row_k.expr.last_nonzero(); -2441: -2441: ((void) 0); -2441: -2441: -2441: for (dimension_type i = k; i-- > 0; ) { -2441: Row& row_i = rows[i]; -2441: if (row_i.expr.get(Variable(j - 1)) != 0) { -2441: -2441: -2441: row_i.linear_combine(row_k, j); -2441: if (still_sorted) { -2441: -2441: -2441: if (i > 0) { -2441: check_for_sortedness[i-1] = true; -2441: } -2441: check_for_sortedness[i] = true; -2441: } -2441: } -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: const bool have_to_negate = (row_k.expr.get(Variable(j - 1)) < 0); -2441: if (have_to_negate) { -2441: neg_assign(row_k.expr); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: for (dimension_type i = n_lines_or_equalities; i < nrows; ++i) { -2441: Row& row_i = rows[i]; -2441: if (row_i.expr.get(Variable(j - 1)) != 0) { -2441: -2441: -2441: row_i.linear_combine(row_k, j); -2441: if (still_sorted) { -2441: -2441: -2441: if (i > n_lines_or_equalities) { -2441: check_for_sortedness[i-1] = true; -2441: } -2441: check_for_sortedness[i] = true; -2441: } -2441: } -2441: } -2441: if (have_to_negate) { -2441: -2441: neg_assign(row_k.expr); -2441: } -2441: -2441: ((void) 0); -2441: } -2441: -2441: -2441: for (dimension_type i = 0; still_sorted && i+1 < nrows; ++i) { -2441: if (check_for_sortedness[i]) { -2441: -2441: still_sorted = (compare((*this)[i], (*this)[i+1]) <= 0); -2441: } -2441: } -2441: -2441: -2441: sorted = still_sorted; -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Linear_System::simplify() { -2441: -2441: ((void) 0); -2441: -2441: -2441: const dimension_type old_nrows = num_rows(); -2441: dimension_type nrows = old_nrows; -2441: dimension_type n_lines_or_equalities = 0; -2441: for (dimension_type i = 0; i < nrows; ++i) { -2441: if ((*this)[i].is_line_or_equality()) { -2441: if (n_lines_or_equalities < i) { -2441: swap(rows[i], rows[n_lines_or_equalities]); -2441: -2441: ((void) 0); -2441: } -2441: ++n_lines_or_equalities; -2441: } -2441: } -2441: -2441: const dimension_type rank = gauss(n_lines_or_equalities); -2441: -2441: if (rank < n_lines_or_equalities) { -2441: const dimension_type -2441: n_rays_or_points_or_inequalities = nrows - n_lines_or_equalities; -2441: const dimension_type -2441: num_swaps = std::min(n_lines_or_equalities - rank, -2441: n_rays_or_points_or_inequalities); -2441: for (dimension_type i = num_swaps; i-- > 0; ) { -2441: swap(rows[--nrows], rows[rank + i]); -2441: } -2441: remove_trailing_rows(old_nrows - nrows); -2441: if (n_rays_or_points_or_inequalities > num_swaps) { -2441: set_sorted(false); -2441: } -2441: unset_pending_rows(); -2441: n_lines_or_equalities = rank; -2441: } -2441: -2441: back_substitute(n_lines_or_equalities); -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Linear_System -2441: ::add_universe_rows_and_space_dimensions(const dimension_type n) { -2441: ((void) 0); -2441: const bool was_sorted = is_sorted(); -2441: const dimension_type old_n_rows = num_rows(); -2441: const dimension_type old_space_dim -2441: = is_necessarily_closed() ? space_dimension() : space_dimension() + 1; -2441: set_space_dimension(space_dimension() + n); -2441: rows.resize(rows.size() + n); -2441: -2441: for (dimension_type i = old_n_rows; i-- > 0; ) { -2441: swap(rows[i], rows[i + n]); -2441: } -2441: for (dimension_type i = n, c = old_space_dim; i-- > 0; ) { -2441: -2441: -2441: -2441: if (Variable(c).space_dimension() <= space_dimension()) { -2441: -2441: Linear_Expression le(representation()); -2441: le.set_space_dimension(space_dimension()); -2441: le += Variable(c); -2441: Row r(le, Row::LINE_OR_EQUALITY, row_topology); -2441: swap(r, rows[i]); -2441: } -2441: else { -2441: -2441: ((void) 0); -2441: Linear_Expression le(Variable(c), representation()); -2441: Row r(le, Row::LINE_OR_EQUALITY, NECESSARILY_CLOSED); -2441: r.mark_as_not_necessarily_closed(); -2441: swap(r, rows[i]); -2441: -2441: } -2441: ++c; -2441: } -2441: -2441: -2441: if (was_sorted) { -2441: sorted = (compare(rows[n-1], rows[n]) <= 0); -2441: } -2441: -2441: -2441: -2441: if (!is_necessarily_closed()) { -2441: -2441: ((void) 0); -2441: if (!is_sorted()) { -2441: for (dimension_type i = n; i-- > 0; ) { -2441: rows[i].expr.swap_space_dimensions(Variable(old_space_dim - 1), -2441: Variable(old_space_dim - 1 + n)); -2441: ((void) 0); -2441: } -2441: } -2441: else { -2441: dimension_type old_eps_index = old_space_dim - 1; -2441: -2441: -2441: for (dimension_type i = n; i-- > 0; ++old_eps_index) { -2441: rows[i].expr.swap_space_dimensions(Variable(old_eps_index), -2441: Variable(old_eps_index + 1)); -2441: ((void) 0); -2441: } -2441: -2441: sorted = true; -2441: } -2441: } -2441: -2441: set_index_first_pending_row(index_first_pending + n); -2441: } -2441: -2441: template -2441: void -2441: Linear_System::sort_pending_and_remove_duplicates() { -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: -2441: -2441: const dimension_type first_pending = first_pending_row(); -2441: sort_rows(first_pending, num_rows()); -2441: -2441: -2441: const dimension_type old_num_rows = num_rows(); -2441: dimension_type num_rows = old_num_rows; -2441: -2441: dimension_type k1 = 0; -2441: dimension_type k2 = first_pending; -2441: dimension_type num_duplicates = 0; -2441: -2441: -2441: while (k1 < first_pending && k2 < num_rows) { -2441: const int cmp = compare(rows[k1], rows[k2]); -2441: if (cmp == 0) { -2441: -2441: ++num_duplicates; -2441: --num_rows; -2441: -2441: ++k1; -2441: -2441: if (k2 < num_rows) { -2441: swap(rows[k2], rows[k2 + num_duplicates]); -2441: } -2441: } -2441: else if (cmp < 0) { -2441: -2441: ++k1; -2441: } -2441: else { -2441: -2441: -2441: -2441: ++k2; -2441: if (num_duplicates > 0 && k2 < num_rows) { -2441: swap(rows[k2], rows[k2 + num_duplicates]); -2441: } -2441: } -2441: } -2441: -2441: -2441: if (num_duplicates > 0) { -2441: if (k2 < num_rows) { -2441: for (++k2; k2 < num_rows; ++k2) { -2441: swap(rows[k2], rows[k2 + num_duplicates]); -2441: } -2441: } -2441: rows.resize(num_rows); -2441: } -2441: sorted = true; -2441: ((void) 0); -2441: } -2441: -2441: template -2441: bool -2441: Linear_System::check_sorted() const { -2441: for (dimension_type i = first_pending_row(); i-- > 1; ) { -2441: if (compare(rows[i], rows[i-1]) < 0) { -2441: return false; -2441: } -2441: } -2441: return true; -2441: } -2441: -2441: template -2441: bool -2441: Linear_System::OK() const { -2441: -2441: -2441: -2441: -2441: -2441: for (dimension_type i = rows.size(); i-- > 0; ) { -2441: if (rows[i].representation() != representation()) { -2441: -2441: -2441: -2441: -2441: return false; -2441: } -2441: if (rows[i].space_dimension() != space_dimension()) { -2441: -2441: -2441: -2441: -2441: return false; -2441: } -2441: } -2441: -2441: for (dimension_type i = rows.size(); i-- > 0; ) { -2441: if (rows[i].topology() != topology()) { -2441: -2441: -2441: -2441: -2441: return false; -2441: } -2441: -2441: } -2441: -2441: if (first_pending_row() > num_rows()) { -2441: -2441: -2441: -2441: -2441: return false; -2441: } -2441: -2441: -2441: const dimension_type n_rows = num_rows(); -2441: for (dimension_type i = 0; i < n_rows; ++i) { -2441: if (topology() != rows[i].topology()) { -2441: -2441: -2441: -2441: -2441: -2441: return false; -2441: } -2441: -2441: } -2441: if (sorted && !check_sorted()) { -2441: -2441: -2441: -2441: -2441: return false; -2441: } -2441: -2441: -2441: return true; -2441: } -2441: -2441: } -2441: # 581 "../../src/Linear_System_defs.hh" 2 -2441: # 30 "../../src/Constraint_System_defs.hh" 2 -2441: # 38 "../../src/Constraint_System_defs.hh" -2441: # 1 "/usr/include/c++/8/iterator" 1 3 -2441: # 58 "/usr/include/c++/8/iterator" 3 -2441: -2441: # 59 "/usr/include/c++/8/iterator" 3 -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/c++/8/bits/stream_iterator.h" 1 3 -2441: # 33 "/usr/include/c++/8/bits/stream_iterator.h" 3 -2441: -2441: # 34 "/usr/include/c++/8/bits/stream_iterator.h" 3 -2441: -2441: -2441: -2441: -2441: # 37 "/usr/include/c++/8/bits/stream_iterator.h" 3 -2441: namespace std __attribute__ ((__visibility__ ("default"))) -2441: { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: template, typename _Dist = ptrdiff_t> -2441: class istream_iterator -2441: : public iterator -2441: { -2441: public: -2441: typedef _CharT char_type; -2441: typedef _Traits traits_type; -2441: typedef basic_istream<_CharT, _Traits> istream_type; -2441: -2441: private: -2441: istream_type* _M_stream; -2441: _Tp _M_value; -2441: bool _M_ok; -2441: -2441: public: -2441: -2441: constexpr istream_iterator() -2441: : _M_stream(0), _M_value(), _M_ok(false) {} -2441: -2441: -2441: istream_iterator(istream_type& __s) -2441: : _M_stream(std::__addressof(__s)) -2441: { _M_read(); } -2441: -2441: istream_iterator(const istream_iterator& __obj) -2441: : _M_stream(__obj._M_stream), _M_value(__obj._M_value), -2441: _M_ok(__obj._M_ok) -2441: { } -2441: -2441: const _Tp& -2441: operator*() const -2441: { -2441: -2441: -2441: ; -2441: return _M_value; -2441: } -2441: -2441: const _Tp* -2441: operator->() const { return std::__addressof((operator*())); } -2441: -2441: istream_iterator& -2441: operator++() -2441: { -2441: -2441: -2441: ; -2441: _M_read(); -2441: return *this; -2441: } -2441: -2441: istream_iterator -2441: operator++(int) -2441: { -2441: -2441: -2441: ; -2441: istream_iterator __tmp = *this; -2441: _M_read(); -2441: return __tmp; -2441: } -2441: -2441: bool -2441: _M_equal(const istream_iterator& __x) const -2441: { return (_M_ok == __x._M_ok) && (!_M_ok || _M_stream == __x._M_stream); } -2441: -2441: private: -2441: void -2441: _M_read() -2441: { -2441: _M_ok = (_M_stream && *_M_stream) ? true : false; -2441: if (_M_ok) -2441: { -2441: *_M_stream >> _M_value; -2441: _M_ok = *_M_stream ? true : false; -2441: } -2441: } -2441: }; -2441: -2441: -2441: template -2441: inline bool -2441: operator==(const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __x, -2441: const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __y) -2441: { return __x._M_equal(__y); } -2441: -2441: -2441: template -2441: inline bool -2441: operator!=(const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __x, -2441: const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __y) -2441: { return !__x._M_equal(__y); } -2441: # 152 "/usr/include/c++/8/bits/stream_iterator.h" 3 -2441: template > -2441: class ostream_iterator -2441: : public iterator -2441: { -2441: public: -2441: -2441: -2441: typedef _CharT char_type; -2441: typedef _Traits traits_type; -2441: typedef basic_ostream<_CharT, _Traits> ostream_type; -2441: -2441: -2441: private: -2441: ostream_type* _M_stream; -2441: const _CharT* _M_string; -2441: -2441: public: -2441: -2441: ostream_iterator(ostream_type& __s) -2441: : _M_stream(std::__addressof(__s)), _M_string(0) {} -2441: # 184 "/usr/include/c++/8/bits/stream_iterator.h" 3 -2441: ostream_iterator(ostream_type& __s, const _CharT* __c) -2441: : _M_stream(&__s), _M_string(__c) { } -2441: -2441: -2441: ostream_iterator(const ostream_iterator& __obj) -2441: : _M_stream(__obj._M_stream), _M_string(__obj._M_string) { } -2441: -2441: -2441: -2441: ostream_iterator& -2441: operator=(const _Tp& __value) -2441: { -2441: -2441: -2441: ; -2441: *_M_stream << __value; -2441: if (_M_string) *_M_stream << _M_string; -2441: return *this; -2441: } -2441: -2441: ostream_iterator& -2441: operator*() -2441: { return *this; } -2441: -2441: ostream_iterator& -2441: operator++() -2441: { return *this; } -2441: -2441: ostream_iterator& -2441: operator++(int) -2441: { return *this; } -2441: }; -2441: -2441: -2441: -2441: -2441: } -2441: # 67 "/usr/include/c++/8/iterator" 2 3 -2441: # 39 "../../src/Constraint_System_defs.hh" 2 -2441: -2441: -2441: -2441: -2441: # 42 "../../src/Constraint_System_defs.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: namespace IO_Operators { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: std::ostream& operator<<(std::ostream& s, const Constraint_System& cs); -2441: -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool operator==(const Constraint_System& x, const Constraint_System& y); -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool operator!=(const Constraint_System& x, const Constraint_System& y); -2441: -2441: -2441: void -2441: swap(Constraint_System& x, Constraint_System& y); -2441: -2441: } -2441: # 137 "../../src/Constraint_System_defs.hh" -2441: class Parma_Polyhedra_Library::Constraint_System { -2441: public: -2441: typedef Constraint row_type; -2441: -2441: static const Representation default_representation = SPARSE; -2441: -2441: -2441: explicit Constraint_System(Representation r = default_representation); -2441: -2441: -2441: explicit Constraint_System(const Constraint& c, -2441: Representation r = default_representation); -2441: -2441: -2441: explicit Constraint_System(const Congruence_System& cgs, -2441: Representation r = default_representation); -2441: -2441: -2441: -2441: -2441: -2441: -2441: Constraint_System(const Constraint_System& cs); -2441: -2441: -2441: Constraint_System(const Constraint_System& cs, Representation r); -2441: -2441: -2441: ~Constraint_System(); -2441: -2441: -2441: Constraint_System& operator=(const Constraint_System& y); -2441: -2441: -2441: Representation representation() const; -2441: -2441: -2441: void set_representation(Representation r); -2441: -2441: -2441: static dimension_type max_space_dimension(); -2441: -2441: -2441: dimension_type space_dimension() const; -2441: -2441: -2441: void set_space_dimension(dimension_type space_dim); -2441: -2441: -2441: -2441: -2441: -2441: bool has_equalities() const; -2441: -2441: -2441: -2441: -2441: -2441: bool has_strict_inequalities() const; -2441: -2441: -2441: -2441: -2441: -2441: void insert(const Constraint& c); -2441: -2441: -2441: static void initialize(); -2441: -2441: -2441: static void finalize(); -2441: -2441: -2441: -2441: -2441: static const Constraint_System& zero_dim_empty(); -2441: -2441: typedef Constraint_System_const_iterator const_iterator; -2441: -2441: -2441: bool empty() const; -2441: -2441: -2441: -2441: -2441: -2441: void clear(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_iterator begin() const; -2441: -2441: -2441: const_iterator end() const; -2441: -2441: -2441: bool OK() const; -2441: -2441: void ascii_dump() const; void ascii_dump(std::ostream& s) const; void print() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool ascii_load(std::istream& s); -2441: -2441: -2441: memory_size_type total_memory_in_bytes() const; -2441: -2441: -2441: memory_size_type external_memory_in_bytes() const; -2441: -2441: -2441: void m_swap(Constraint_System& y); -2441: -2441: private: -2441: Linear_System sys; -2441: -2441: -2441: -2441: -2441: -2441: static const Constraint_System* zero_dim_empty_p; -2441: -2441: friend class Constraint_System_const_iterator; -2441: -2441: friend bool operator==(const Constraint_System& x, -2441: const Constraint_System& y); -2441: -2441: -2441: explicit Constraint_System(Topology topol, -2441: Representation r = default_representation); -2441: -2441: -2441: -2441: -2441: -2441: -2441: Constraint_System(Topology topol, dimension_type space_dim, -2441: Representation r = default_representation); -2441: -2441: -2441: dimension_type num_equalities() const; -2441: -2441: -2441: dimension_type num_inequalities() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void simplify(); -2441: # 303 "../../src/Constraint_System_defs.hh" -2441: bool adjust_topology_and_space_dimension(Topology new_topology, -2441: dimension_type new_space_dim); -2441: -2441: -2441: const Constraint& operator[](dimension_type k) const; -2441: -2441: -2441: bool satisfies_all_constraints(const Generator& g) const; -2441: # 347 "../../src/Constraint_System_defs.hh" -2441: void affine_preimage(Variable v, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference denominator); -2441: -2441: -2441: -2441: -2441: -2441: -2441: void insert_pending(const Constraint& c); -2441: -2441: -2441: void add_low_level_constraints(); -2441: -2441: -2441: Topology topology() const; -2441: -2441: dimension_type num_rows() const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_necessarily_closed() const; -2441: -2441: -2441: dimension_type num_pending_rows() const; -2441: -2441: -2441: dimension_type first_pending_row() const; -2441: -2441: -2441: bool is_sorted() const; -2441: -2441: -2441: void unset_pending_rows(); -2441: -2441: -2441: void set_index_first_pending_row(dimension_type i); -2441: -2441: -2441: void set_sorted(bool b); -2441: # 398 "../../src/Constraint_System_defs.hh" -2441: void remove_row(dimension_type i, bool keep_sorted = false); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void remove_rows(const std::vector& indexes); -2441: # 416 "../../src/Constraint_System_defs.hh" -2441: void remove_rows(dimension_type first, dimension_type last, -2441: bool keep_sorted = false); -2441: -2441: -2441: void remove_trailing_rows(dimension_type n); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void remove_space_dimensions(const Variables_Set& vars); -2441: -2441: -2441: -2441: void shift_space_dimensions(Variable v, dimension_type n); -2441: # 446 "../../src/Constraint_System_defs.hh" -2441: void permute_space_dimensions(const std::vector& cycle); -2441: -2441: -2441: void swap_space_dimensions(Variable v1, Variable v2); -2441: -2441: bool has_no_rows() const; -2441: -2441: -2441: void strong_normalize(); -2441: -2441: -2441: -2441: -2441: -2441: void sort_rows(); -2441: -2441: -2441: -2441: -2441: -2441: void insert_pending(Constraint& r, Recycle_Input); -2441: -2441: -2441: -2441: void insert_pending(Constraint_System& r, Recycle_Input); -2441: -2441: -2441: -2441: -2441: -2441: void insert(Constraint& r, Recycle_Input); -2441: -2441: -2441: -2441: -2441: -2441: void insert(Constraint_System& r, Recycle_Input); -2441: -2441: -2441: void insert_pending(const Constraint_System& r); -2441: # 495 "../../src/Constraint_System_defs.hh" -2441: void merge_rows_assign(const Constraint_System& y); -2441: -2441: -2441: -2441: -2441: -2441: void insert(const Constraint_System& y); -2441: -2441: -2441: -2441: -2441: -2441: -2441: void mark_as_necessarily_closed(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: void mark_as_not_necessarily_closed(); -2441: # 529 "../../src/Constraint_System_defs.hh" -2441: dimension_type gauss(dimension_type n_lines_or_equalities); -2441: # 541 "../../src/Constraint_System_defs.hh" -2441: void back_substitute(dimension_type n_lines_or_equalities); -2441: -2441: -2441: void assign_with_pending(const Constraint_System& y); -2441: -2441: -2441: -2441: -2441: -2441: void sort_pending_and_remove_duplicates(); -2441: # 559 "../../src/Constraint_System_defs.hh" -2441: void sort_and_remove_with_sat(Bit_Matrix& sat); -2441: -2441: -2441: -2441: -2441: -2441: bool check_sorted() const; -2441: -2441: -2441: -2441: -2441: -2441: dimension_type num_lines_or_equalities() const; -2441: # 586 "../../src/Constraint_System_defs.hh" -2441: void add_universe_rows_and_space_dimensions(dimension_type n); -2441: -2441: friend class Polyhedron; -2441: friend class Termination_Helpers; -2441: }; -2441: # 610 "../../src/Constraint_System_defs.hh" -2441: class Parma_Polyhedra_Library::Constraint_System_const_iterator -2441: : public std::iterator { -2441: public: -2441: -2441: Constraint_System_const_iterator(); -2441: -2441: -2441: Constraint_System_const_iterator(const Constraint_System_const_iterator& y); -2441: -2441: -2441: ~Constraint_System_const_iterator(); -2441: -2441: -2441: Constraint_System_const_iterator& -2441: operator=(const Constraint_System_const_iterator& y); -2441: -2441: -2441: const Constraint& operator*() const; -2441: -2441: -2441: const Constraint* operator->() const; -2441: -2441: -2441: Constraint_System_const_iterator& operator++(); -2441: -2441: -2441: Constraint_System_const_iterator operator++(int); -2441: -2441: -2441: -2441: -2441: -2441: bool operator==(const Constraint_System_const_iterator& y) const; -2441: -2441: -2441: -2441: -2441: -2441: bool operator!=(const Constraint_System_const_iterator& y) const; -2441: -2441: private: -2441: friend class Constraint_System; -2441: -2441: -2441: Linear_System::const_iterator i; -2441: -2441: -2441: const Linear_System* csp; -2441: -2441: -2441: Constraint_System_const_iterator(const Linear_System -2441: ::const_iterator& iter, -2441: const Constraint_System& cs); -2441: -2441: -2441: void skip_forward(); -2441: }; -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: namespace Implementation { -2441: -2441: -2441: -2441: -2441: dimension_type -2441: num_constraints(const Constraint_System& cs); -2441: -2441: } -2441: -2441: } -2441: # 29 "../../src/Box_inlines.hh" 2 -2441: # 1 "../../src/Constraint_System_inlines.hh" 1 -2441: # 29 "../../src/Constraint_System_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: inline -2441: Constraint_System::Constraint_System(Representation r) -2441: : sys(NECESSARILY_CLOSED, r) { -2441: } -2441: -2441: inline -2441: Constraint_System::Constraint_System(const Constraint& c, Representation r) -2441: : sys(c.topology(), r) { -2441: sys.insert(c); -2441: } -2441: -2441: inline -2441: Constraint_System::Constraint_System(const Constraint_System& cs) -2441: : sys(cs.sys) { -2441: } -2441: -2441: inline -2441: Constraint_System::Constraint_System(const Constraint_System& cs, -2441: Representation r) -2441: : sys(cs.sys, r) { -2441: } -2441: -2441: inline -2441: Constraint_System::Constraint_System(const Topology topol, Representation r) -2441: : sys(topol, r) { -2441: } -2441: -2441: inline -2441: Constraint_System::Constraint_System(const Topology topol, -2441: const dimension_type space_dim, -2441: Representation r) -2441: : sys(topol, space_dim, r) { -2441: } -2441: -2441: inline -2441: Constraint_System::~Constraint_System() { -2441: } -2441: -2441: inline Constraint_System& -2441: Constraint_System::operator=(const Constraint_System& y) { -2441: Constraint_System tmp = y; -2441: swap(*this, tmp); -2441: return *this; -2441: } -2441: -2441: inline const Constraint& -2441: Constraint_System::operator[](const dimension_type k) const { -2441: return sys[k]; -2441: } -2441: -2441: inline Representation -2441: Constraint_System::representation() const { -2441: return sys.representation(); -2441: } -2441: -2441: inline void -2441: Constraint_System::set_representation(Representation r) { -2441: sys.set_representation(r); -2441: } -2441: -2441: inline dimension_type -2441: Constraint_System::max_space_dimension() { -2441: return Linear_System::max_space_dimension(); -2441: } -2441: -2441: inline dimension_type -2441: Constraint_System::space_dimension() const { -2441: return sys.space_dimension(); -2441: } -2441: -2441: inline void -2441: Constraint_System::set_space_dimension(dimension_type space_dim) { -2441: return sys.set_space_dimension(space_dim); -2441: } -2441: -2441: inline void -2441: Constraint_System::clear() { -2441: sys.clear(); -2441: } -2441: -2441: inline const Constraint_System& -2441: Constraint_System::zero_dim_empty() { -2441: ((void) 0); -2441: return *zero_dim_empty_p; -2441: } -2441: -2441: inline -2441: Constraint_System_const_iterator::Constraint_System_const_iterator() -2441: : i(), csp(0) { -2441: } -2441: -2441: inline -2441: Constraint_System_const_iterator::Constraint_System_const_iterator(const Constraint_System_const_iterator& y) -2441: : i(y.i), csp(y.csp) { -2441: } -2441: -2441: inline -2441: Constraint_System_const_iterator::~Constraint_System_const_iterator() { -2441: } -2441: -2441: inline Constraint_System_const_iterator& -2441: Constraint_System_const_iterator::operator=(const Constraint_System_const_iterator& y) { -2441: i = y.i; -2441: csp = y.csp; -2441: return *this; -2441: } -2441: -2441: inline const Constraint& -2441: Constraint_System_const_iterator::operator*() const { -2441: return *i; -2441: } -2441: -2441: inline const Constraint* -2441: Constraint_System_const_iterator::operator->() const { -2441: return i.operator->(); -2441: } -2441: -2441: inline Constraint_System_const_iterator& -2441: Constraint_System_const_iterator::operator++() { -2441: ++i; -2441: skip_forward(); -2441: return *this; -2441: } -2441: -2441: inline Constraint_System_const_iterator -2441: Constraint_System_const_iterator::operator++(int) { -2441: const Constraint_System_const_iterator tmp = *this; -2441: operator++(); -2441: return tmp; -2441: } -2441: -2441: inline bool -2441: Constraint_System_const_iterator::operator==(const Constraint_System_const_iterator& y) const { -2441: return i == y.i; -2441: } -2441: -2441: inline bool -2441: Constraint_System_const_iterator::operator!=(const Constraint_System_const_iterator& y) const { -2441: return i != y.i; -2441: } -2441: -2441: inline -2441: Constraint_System_const_iterator:: -2441: Constraint_System_const_iterator(const Linear_System::const_iterator& iter, -2441: const Constraint_System& cs) -2441: : i(iter), csp(&cs.sys) { -2441: } -2441: -2441: inline Constraint_System_const_iterator -2441: Constraint_System::begin() const { -2441: const_iterator i(sys.begin(), *this); -2441: i.skip_forward(); -2441: return i; -2441: } -2441: -2441: inline Constraint_System_const_iterator -2441: Constraint_System::end() const { -2441: const Constraint_System_const_iterator i(sys.end(), *this); -2441: return i; -2441: } -2441: -2441: inline bool -2441: Constraint_System::empty() const { -2441: return begin() == end(); -2441: } -2441: -2441: inline void -2441: Constraint_System::add_low_level_constraints() { -2441: if (sys.is_necessarily_closed()) { -2441: -2441: insert(Constraint::zero_dim_positivity()); -2441: } -2441: else { -2441: -2441: insert(Constraint::epsilon_leq_one()); -2441: insert(Constraint::epsilon_geq_zero()); -2441: } -2441: } -2441: -2441: inline void -2441: Constraint_System::m_swap(Constraint_System& y) { -2441: swap(sys, y.sys); -2441: } -2441: -2441: inline memory_size_type -2441: Constraint_System::external_memory_in_bytes() const { -2441: return sys.external_memory_in_bytes(); -2441: } -2441: -2441: inline memory_size_type -2441: Constraint_System::total_memory_in_bytes() const { -2441: return external_memory_in_bytes() + sizeof(*this); -2441: } -2441: -2441: inline void -2441: Constraint_System::simplify() { -2441: sys.simplify(); -2441: } -2441: -2441: inline Topology -2441: Constraint_System::topology() const { -2441: return sys.topology(); -2441: } -2441: -2441: inline dimension_type -2441: Constraint_System::num_rows() const { -2441: return sys.num_rows(); -2441: } -2441: -2441: inline bool -2441: Constraint_System::is_necessarily_closed() const { -2441: return sys.is_necessarily_closed(); -2441: } -2441: -2441: inline dimension_type -2441: Constraint_System::num_pending_rows() const { -2441: return sys.num_pending_rows(); -2441: } -2441: -2441: inline dimension_type -2441: Constraint_System::first_pending_row() const { -2441: return sys.first_pending_row(); -2441: } -2441: -2441: inline bool -2441: Constraint_System::is_sorted() const { -2441: return sys.is_sorted(); -2441: } -2441: -2441: inline void -2441: Constraint_System::unset_pending_rows() { -2441: sys.unset_pending_rows(); -2441: } -2441: -2441: inline void -2441: Constraint_System::set_index_first_pending_row(dimension_type i) { -2441: sys.set_index_first_pending_row(i); -2441: } -2441: -2441: inline void -2441: Constraint_System::set_sorted(bool b) { -2441: sys.set_sorted(b); -2441: } -2441: -2441: inline void -2441: Constraint_System::remove_row(dimension_type i, bool keep_sorted) { -2441: sys.remove_row(i, keep_sorted); -2441: } -2441: -2441: inline void -2441: Constraint_System::remove_rows(dimension_type first, dimension_type last, -2441: bool keep_sorted) { -2441: sys.remove_rows(first, last, keep_sorted); -2441: } -2441: -2441: inline void -2441: Constraint_System::remove_rows(const std::vector& indexes) { -2441: sys.remove_rows(indexes); -2441: } -2441: -2441: inline void -2441: Constraint_System::remove_trailing_rows(dimension_type n) { -2441: sys.remove_trailing_rows(n); -2441: } -2441: -2441: inline void -2441: Constraint_System -2441: ::remove_space_dimensions(const Variables_Set& vars) { -2441: sys.remove_space_dimensions(vars); -2441: } -2441: -2441: inline void -2441: Constraint_System -2441: ::shift_space_dimensions(Variable v, dimension_type n) { -2441: sys.shift_space_dimensions(v, n); -2441: } -2441: -2441: inline void -2441: Constraint_System -2441: ::permute_space_dimensions(const std::vector& cycle) { -2441: sys.permute_space_dimensions(cycle); -2441: } -2441: -2441: inline void -2441: Constraint_System -2441: ::swap_space_dimensions(Variable v1, Variable v2) { -2441: sys.swap_space_dimensions(v1, v2); -2441: } -2441: -2441: inline bool -2441: Constraint_System::has_no_rows() const { -2441: return sys.has_no_rows(); -2441: } -2441: -2441: inline void -2441: Constraint_System::strong_normalize() { -2441: sys.strong_normalize(); -2441: } -2441: -2441: inline void -2441: Constraint_System::sort_rows() { -2441: sys.sort_rows(); -2441: } -2441: -2441: inline void -2441: Constraint_System::insert_pending(Constraint_System& r, Recycle_Input) { -2441: sys.insert_pending(r.sys, Recycle_Input()); -2441: } -2441: -2441: inline void -2441: Constraint_System::insert(Constraint_System& r, Recycle_Input) { -2441: sys.insert(r.sys, Recycle_Input()); -2441: } -2441: -2441: inline void -2441: Constraint_System::insert_pending(const Constraint_System& r) { -2441: sys.insert_pending(r.sys); -2441: } -2441: -2441: inline void -2441: Constraint_System::merge_rows_assign(const Constraint_System& y) { -2441: sys.merge_rows_assign(y.sys); -2441: } -2441: -2441: inline void -2441: Constraint_System::insert(const Constraint_System& y) { -2441: sys.insert(y.sys); -2441: } -2441: -2441: inline void -2441: Constraint_System::mark_as_necessarily_closed() { -2441: sys.mark_as_necessarily_closed(); -2441: } -2441: -2441: inline void -2441: Constraint_System::mark_as_not_necessarily_closed() { -2441: sys.mark_as_not_necessarily_closed(); -2441: } -2441: -2441: inline dimension_type -2441: Constraint_System::gauss(dimension_type n_lines_or_equalities) { -2441: return sys.gauss(n_lines_or_equalities); -2441: } -2441: -2441: inline void -2441: Constraint_System::back_substitute(dimension_type n_lines_or_equalities) { -2441: sys.back_substitute(n_lines_or_equalities); -2441: } -2441: -2441: inline void -2441: Constraint_System::assign_with_pending(const Constraint_System& y) { -2441: sys.assign_with_pending(y.sys); -2441: } -2441: -2441: inline void -2441: Constraint_System::sort_pending_and_remove_duplicates() { -2441: sys.sort_pending_and_remove_duplicates(); -2441: } -2441: -2441: inline void -2441: Constraint_System::sort_and_remove_with_sat(Bit_Matrix& sat) { -2441: sys.sort_and_remove_with_sat(sat); -2441: } -2441: -2441: inline bool -2441: Constraint_System::check_sorted() const { -2441: return sys.check_sorted(); -2441: } -2441: -2441: inline dimension_type -2441: Constraint_System::num_lines_or_equalities() const { -2441: return sys.num_lines_or_equalities(); -2441: } -2441: -2441: inline void -2441: Constraint_System::add_universe_rows_and_space_dimensions(dimension_type n) { -2441: sys.add_universe_rows_and_space_dimensions(n); -2441: } -2441: -2441: inline bool -2441: operator==(const Constraint_System& x, const Constraint_System& y) { -2441: return x.sys == y.sys; -2441: } -2441: -2441: inline bool -2441: operator!=(const Constraint_System& x, const Constraint_System& y) { -2441: return !(x == y); -2441: } -2441: -2441: -2441: inline void -2441: swap(Constraint_System& x, Constraint_System& y) { -2441: x.m_swap(y); -2441: } -2441: -2441: namespace Implementation { -2441: -2441: -2441: -2441: -2441: inline dimension_type -2441: num_constraints(const Constraint_System& cs) { -2441: return static_cast(std::distance(cs.begin(), cs.end())); -2441: } -2441: -2441: } -2441: -2441: } -2441: # 30 "../../src/Box_inlines.hh" 2 -2441: # 1 "../../src/Congruence_System_defs.hh" 1 -2441: # 38 "../../src/Congruence_System_defs.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: bool -2441: operator==(const Congruence_System& x, const Congruence_System& y); -2441: -2441: } -2441: # 103 "../../src/Congruence_System_defs.hh" -2441: class Parma_Polyhedra_Library::Congruence_System { -2441: public: -2441: -2441: typedef Congruence row_type; -2441: -2441: static const Representation default_representation = SPARSE; -2441: -2441: -2441: explicit Congruence_System(Representation r = default_representation); -2441: -2441: -2441: explicit Congruence_System(dimension_type d, -2441: Representation r = default_representation); -2441: -2441: -2441: explicit Congruence_System(const Congruence& cg, -2441: Representation r = default_representation); -2441: # 129 "../../src/Congruence_System_defs.hh" -2441: explicit Congruence_System(const Constraint& c, -2441: Representation r = default_representation); -2441: -2441: -2441: explicit Congruence_System(const Constraint_System& cs, -2441: Representation r = default_representation); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: Congruence_System(const Congruence_System& cgs); -2441: -2441: -2441: Congruence_System(const Congruence_System& cgs, Representation r); -2441: -2441: -2441: ~Congruence_System(); -2441: -2441: -2441: Congruence_System& operator=(const Congruence_System& y); -2441: -2441: -2441: Representation representation() const; -2441: -2441: -2441: void set_representation(Representation r); -2441: -2441: -2441: static dimension_type max_space_dimension(); -2441: -2441: -2441: dimension_type space_dimension() const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_equal_to(const Congruence_System& y) const; -2441: -2441: -2441: -2441: -2441: -2441: bool has_linear_equalities() const; -2441: -2441: -2441: void clear(); -2441: # 187 "../../src/Congruence_System_defs.hh" -2441: void insert(const Congruence& cg); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void insert(Congruence& cg, Recycle_Input); -2441: # 208 "../../src/Congruence_System_defs.hh" -2441: void insert(const Constraint& c); -2441: # 218 "../../src/Congruence_System_defs.hh" -2441: void insert(const Congruence_System& y); -2441: -2441: -2441: -2441: -2441: -2441: void insert(Congruence_System& cgs, Recycle_Input); -2441: -2441: -2441: static void initialize(); -2441: -2441: -2441: static void finalize(); -2441: -2441: -2441: static const Congruence_System& zero_dim_empty(); -2441: # 250 "../../src/Congruence_System_defs.hh" -2441: class const_iterator -2441: : public std::iterator { -2441: public: -2441: -2441: const_iterator(); -2441: -2441: -2441: const_iterator(const const_iterator& y); -2441: -2441: -2441: ~const_iterator(); -2441: -2441: -2441: const_iterator& operator=(const const_iterator& y); -2441: -2441: -2441: const Congruence& operator*() const; -2441: -2441: -2441: const Congruence* operator->() const; -2441: -2441: -2441: const_iterator& operator++(); -2441: -2441: -2441: const_iterator operator++(int); -2441: -2441: -2441: -2441: -2441: -2441: bool operator==(const const_iterator& y) const; -2441: -2441: -2441: -2441: -2441: -2441: bool operator!=(const const_iterator& y) const; -2441: -2441: private: -2441: friend class Congruence_System; -2441: -2441: -2441: Swapping_Vector::const_iterator i; -2441: -2441: -2441: const Swapping_Vector* csp; -2441: -2441: -2441: const_iterator(const Swapping_Vector::const_iterator& iter, -2441: const Congruence_System& cgs); -2441: -2441: -2441: void skip_forward(); -2441: }; -2441: -2441: -2441: bool empty() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_iterator begin() const; -2441: -2441: -2441: const_iterator end() const; -2441: # 331 "../../src/Congruence_System_defs.hh" -2441: bool OK() const; -2441: -2441: void ascii_dump() const; void ascii_dump(std::ostream& s) const; void print() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool ascii_load(std::istream& s); -2441: -2441: -2441: memory_size_type total_memory_in_bytes() const; -2441: -2441: -2441: memory_size_type external_memory_in_bytes() const; -2441: -2441: -2441: dimension_type num_equalities() const; -2441: -2441: -2441: dimension_type num_proper_congruences() const; -2441: -2441: -2441: void m_swap(Congruence_System& y); -2441: # 372 "../../src/Congruence_System_defs.hh" -2441: void add_unit_rows_and_space_dimensions(dimension_type dims); -2441: # 386 "../../src/Congruence_System_defs.hh" -2441: void permute_space_dimensions(const std::vector& cycle); -2441: -2441: -2441: void swap_space_dimensions(Variable v1, Variable v2); -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool set_space_dimension(dimension_type new_space_dim); -2441: -2441: -2441: -2441: protected: -2441: -2441: bool satisfies_all_congruences(const Grid_Generator& g) const; -2441: -2441: private: -2441: -2441: dimension_type num_rows() const; -2441: -2441: -2441: bool has_no_rows() const; -2441: -2441: -2441: const Congruence& operator[](dimension_type k) const; -2441: -2441: -2441: void normalize_moduli(); -2441: # 455 "../../src/Congruence_System_defs.hh" -2441: void affine_preimage(Variable v, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference denominator); -2441: # 472 "../../src/Congruence_System_defs.hh" -2441: void concatenate(const Congruence_System& y); -2441: # 481 "../../src/Congruence_System_defs.hh" -2441: void insert_verbatim(Congruence& cg, Recycle_Input); -2441: -2441: -2441: -2441: -2441: -2441: -2441: void remove_rows(dimension_type first, dimension_type last, -2441: bool keep_sorted); -2441: -2441: void remove_trailing_rows(dimension_type n); -2441: -2441: -2441: -2441: -2441: -2441: static const Congruence_System* zero_dim_empty_p; -2441: -2441: Swapping_Vector rows; -2441: -2441: dimension_type space_dimension_; -2441: -2441: Representation representation_; -2441: # 514 "../../src/Congruence_System_defs.hh" -2441: bool has_a_free_dimension() const; -2441: -2441: friend class Grid; -2441: -2441: friend bool -2441: operator==(const Congruence_System& x, const Congruence_System& y); -2441: }; -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: namespace IO_Operators { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: std::ostream& -2441: operator<<(std::ostream& s, const Congruence_System& cgs); -2441: -2441: } -2441: -2441: -2441: void -2441: swap(Congruence_System& x, Congruence_System& y); -2441: -2441: } -2441: # 31 "../../src/Box_inlines.hh" 2 -2441: # 1 "../../src/Congruence_System_inlines.hh" 1 -2441: # 29 "../../src/Congruence_System_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: inline const Congruence& -2441: Congruence_System::operator[](const dimension_type k) const { -2441: return rows[k]; -2441: } -2441: -2441: inline dimension_type -2441: Congruence_System::num_rows() const { -2441: return rows.size(); -2441: } -2441: -2441: inline bool -2441: Congruence_System::has_no_rows() const { -2441: return num_rows() == 0; -2441: } -2441: -2441: inline void -2441: Congruence_System::remove_trailing_rows(dimension_type n) { -2441: ((void) 0); -2441: rows.resize(num_rows() - n); -2441: } -2441: -2441: inline void -2441: Congruence_System::insert(const Congruence& cg) { -2441: Congruence tmp = cg; -2441: insert(tmp, Recycle_Input()); -2441: } -2441: -2441: inline void -2441: Congruence_System::insert(Congruence& cg, Recycle_Input) { -2441: ((void) 0); -2441: cg.strong_normalize(); -2441: ((void) 0); -2441: insert_verbatim(cg, Recycle_Input()); -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: Congruence_System::Congruence_System(Representation r) -2441: : rows(), -2441: space_dimension_(0), -2441: representation_(r) { -2441: } -2441: -2441: inline -2441: Congruence_System::Congruence_System(const Congruence& cg, Representation r) -2441: : rows(), -2441: space_dimension_(0), -2441: representation_(r) { -2441: insert(cg); -2441: } -2441: -2441: inline -2441: Congruence_System::Congruence_System(const Constraint& c, Representation r) -2441: : rows(), -2441: space_dimension_(0), -2441: representation_(r) { -2441: insert(c); -2441: } -2441: -2441: inline -2441: Congruence_System::Congruence_System(const Congruence_System& cgs) -2441: : rows(cgs.rows), -2441: space_dimension_(cgs.space_dimension_), -2441: representation_(cgs.representation_) { -2441: } -2441: -2441: inline -2441: Congruence_System::Congruence_System(const Congruence_System& cgs, -2441: Representation r) -2441: : rows(cgs.rows), -2441: space_dimension_(cgs.space_dimension_), -2441: representation_(r) { -2441: if (cgs.representation() != r) { -2441: for (dimension_type i = 0; i < num_rows(); ++i) { -2441: rows[i].set_representation(representation()); -2441: } -2441: } -2441: } -2441: -2441: inline -2441: Congruence_System::Congruence_System(const dimension_type d, Representation r) -2441: : rows(), -2441: space_dimension_(d), -2441: representation_(r) { -2441: } -2441: -2441: inline -2441: Congruence_System::~Congruence_System() { -2441: } -2441: -2441: inline Congruence_System& -2441: Congruence_System::operator=(const Congruence_System& y) { -2441: Congruence_System tmp = y; -2441: swap(*this, tmp); -2441: return *this; -2441: } -2441: -2441: inline Representation -2441: Congruence_System::representation() const { -2441: return representation_; -2441: } -2441: -2441: inline void -2441: Congruence_System::set_representation(Representation r) { -2441: if (representation_ == r) { -2441: return; -2441: } -2441: representation_ = r; -2441: for (dimension_type i = 0; i < num_rows(); ++i) { -2441: rows[i].set_representation(r); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: inline dimension_type -2441: Congruence_System::max_space_dimension() { -2441: return Congruence::max_space_dimension(); -2441: } -2441: -2441: inline dimension_type -2441: Congruence_System::space_dimension() const { -2441: return space_dimension_; -2441: } -2441: -2441: inline void -2441: Congruence_System::clear() { -2441: rows.clear(); -2441: space_dimension_ = 0; -2441: } -2441: -2441: inline const Congruence_System& -2441: Congruence_System::zero_dim_empty() { -2441: ((void) 0); -2441: return *zero_dim_empty_p; -2441: } -2441: -2441: inline -2441: Congruence_System::const_iterator::const_iterator() -2441: : i(), csp(0) { -2441: } -2441: -2441: inline -2441: Congruence_System::const_iterator::const_iterator(const const_iterator& y) -2441: : i(y.i), csp(y.csp) { -2441: } -2441: -2441: inline -2441: Congruence_System::const_iterator::~const_iterator() { -2441: } -2441: -2441: inline Congruence_System::const_iterator& -2441: Congruence_System::const_iterator::operator=(const const_iterator& y) { -2441: i = y.i; -2441: csp = y.csp; -2441: return *this; -2441: } -2441: -2441: inline const Congruence& -2441: Congruence_System::const_iterator::operator*() const { -2441: return *i; -2441: } -2441: -2441: inline const Congruence* -2441: Congruence_System::const_iterator::operator->() const { -2441: return i.operator->(); -2441: } -2441: -2441: inline Congruence_System::const_iterator& -2441: Congruence_System::const_iterator::operator++() { -2441: ++i; -2441: skip_forward(); -2441: return *this; -2441: } -2441: -2441: inline Congruence_System::const_iterator -2441: Congruence_System::const_iterator::operator++(int) { -2441: const const_iterator tmp = *this; -2441: operator++(); -2441: return tmp; -2441: } -2441: -2441: inline bool -2441: Congruence_System::const_iterator::operator==(const const_iterator& y) const { -2441: return i == y.i; -2441: } -2441: -2441: inline bool -2441: Congruence_System::const_iterator::operator!=(const const_iterator& y) const { -2441: return i != y.i; -2441: } -2441: -2441: inline -2441: Congruence_System::const_iterator:: -2441: const_iterator(const Swapping_Vector::const_iterator& iter, -2441: const Congruence_System& cgs) -2441: : i(iter), csp(&cgs.rows) { -2441: } -2441: -2441: inline Congruence_System::const_iterator -2441: Congruence_System::begin() const { -2441: const_iterator i(rows.begin(), *this); -2441: i.skip_forward(); -2441: return i; -2441: } -2441: -2441: inline Congruence_System::const_iterator -2441: Congruence_System::end() const { -2441: const const_iterator i(rows.end(), *this); -2441: return i; -2441: } -2441: -2441: inline bool -2441: Congruence_System::empty() const { -2441: return begin() == end(); -2441: } -2441: -2441: inline void -2441: Congruence_System::m_swap(Congruence_System& y) { -2441: using std::swap; -2441: swap(rows, y.rows); -2441: swap(space_dimension_, y.space_dimension_); -2441: swap(representation_, y.representation_); -2441: ((void) 0); -2441: ((void) 0); -2441: } -2441: -2441: inline memory_size_type -2441: Congruence_System::external_memory_in_bytes() const { -2441: return rows.external_memory_in_bytes(); -2441: } -2441: -2441: inline memory_size_type -2441: Congruence_System::total_memory_in_bytes() const { -2441: return rows.external_memory_in_bytes() + sizeof(*this); -2441: } -2441: -2441: -2441: inline void -2441: swap(Congruence_System& x, Congruence_System& y) { -2441: x.m_swap(y); -2441: } -2441: -2441: } -2441: # 32 "../../src/Box_inlines.hh" 2 -2441: -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: inline bool -2441: Box::marked_empty() const { -2441: return status.test_empty_up_to_date() && status.test_empty(); -2441: } -2441: -2441: template -2441: inline void -2441: Box::set_empty() { -2441: status.set_empty(); -2441: status.set_empty_up_to_date(); -2441: } -2441: -2441: template -2441: inline void -2441: Box::set_nonempty() { -2441: status.reset_empty(); -2441: status.set_empty_up_to_date(); -2441: } -2441: -2441: template -2441: inline void -2441: Box::set_empty_up_to_date() { -2441: status.set_empty_up_to_date(); -2441: } -2441: -2441: template -2441: inline void -2441: Box::reset_empty_up_to_date() { -2441: return status.reset_empty_up_to_date(); -2441: } -2441: -2441: template -2441: inline -2441: Box::Box(const Box& y, Complexity_Class) -2441: : seq(y.seq), status(y.status) { -2441: } -2441: -2441: template -2441: inline Box& -2441: Box::operator=(const Box& y) { -2441: seq = y.seq; -2441: status = y.status; -2441: return *this; -2441: } -2441: -2441: template -2441: inline void -2441: Box::m_swap(Box& y) { -2441: Box& x = *this; -2441: using std::swap; -2441: swap(x.seq, y.seq); -2441: swap(x.status, y.status); -2441: } -2441: -2441: template -2441: inline -2441: Box::Box(const Constraint_System& cs, Recycle_Input) { -2441: -2441: Box tmp(cs); -2441: this->m_swap(tmp); -2441: } -2441: -2441: template -2441: inline -2441: Box::Box(const Generator_System& gs, Recycle_Input) { -2441: -2441: Box tmp(gs); -2441: this->m_swap(tmp); -2441: } -2441: -2441: template -2441: inline -2441: Box::Box(const Congruence_System& cgs, Recycle_Input) { -2441: -2441: Box tmp(cgs); -2441: this->m_swap(tmp); -2441: } -2441: -2441: template -2441: inline memory_size_type -2441: Box::total_memory_in_bytes() const { -2441: return sizeof(*this) + external_memory_in_bytes(); -2441: } -2441: -2441: template -2441: inline dimension_type -2441: Box::space_dimension() const { -2441: return seq.size(); -2441: } -2441: -2441: template -2441: inline dimension_type -2441: Box::max_space_dimension() { -2441: -2441: -2441: return Sequence().max_size() - 1; -2441: } -2441: -2441: template -2441: inline int32_t -2441: Box::hash_code() const { -2441: return hash_code_from_dimension(space_dimension()); -2441: } -2441: -2441: template -2441: inline const ITV& -2441: Box::operator[](const dimension_type k) const { -2441: ((void) 0); -2441: return seq[k]; -2441: } -2441: -2441: template -2441: inline const ITV& -2441: Box::get_interval(const Variable var) const { -2441: if (space_dimension() < var.space_dimension()) { -2441: throw_dimension_incompatible("get_interval(v)", "v", var); -2441: } -2441: if (is_empty()) { -2441: static ITV empty_interval(EMPTY); -2441: return empty_interval; -2441: } -2441: -2441: return seq[var.id()]; -2441: } -2441: -2441: template -2441: inline void -2441: Box::set_interval(const Variable var, const ITV& i) { -2441: const dimension_type space_dim = space_dimension(); -2441: if (space_dim < var.space_dimension()) { -2441: throw_dimension_incompatible("set_interval(v, i)", "v", var); -2441: } -2441: -2441: if (is_empty() && space_dim >= 2) { -2441: -2441: -2441: return; -2441: } -2441: seq[var.id()] = i; -2441: reset_empty_up_to_date(); -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline bool -2441: Box::is_empty() const { -2441: return marked_empty() || check_empty(); -2441: } -2441: -2441: template -2441: inline bool -2441: Box::bounds_from_above(const Linear_Expression& expr) const { -2441: return bounds(expr, true); -2441: } -2441: -2441: template -2441: inline bool -2441: Box::bounds_from_below(const Linear_Expression& expr) const { -2441: return bounds(expr, false); -2441: } -2441: -2441: template -2441: inline bool -2441: Box::maximize(const Linear_Expression& expr, -2441: Coefficient& sup_n, Coefficient& sup_d, -2441: bool& maximum) const { -2441: return max_min(expr, true, sup_n, sup_d, maximum); -2441: } -2441: -2441: template -2441: inline bool -2441: Box::maximize(const Linear_Expression& expr, -2441: Coefficient& sup_n, Coefficient& sup_d, bool& maximum, -2441: Generator& g) const { -2441: return max_min(expr, true, sup_n, sup_d, maximum, g); -2441: } -2441: -2441: template -2441: inline bool -2441: Box::minimize(const Linear_Expression& expr, -2441: Coefficient& inf_n, Coefficient& inf_d, -2441: bool& minimum) const { -2441: return max_min(expr, false, inf_n, inf_d, minimum); -2441: } -2441: -2441: template -2441: inline bool -2441: Box::minimize(const Linear_Expression& expr, -2441: Coefficient& inf_n, Coefficient& inf_d, bool& minimum, -2441: Generator& g) const { -2441: return max_min(expr, false, inf_n, inf_d, minimum, g); -2441: } -2441: -2441: template -2441: inline bool -2441: Box::strictly_contains(const Box& y) const { -2441: const Box& x = *this; -2441: return x.contains(y) && !y.contains(x); -2441: } -2441: -2441: template -2441: inline void -2441: Box::expand_space_dimension(const Variable var, -2441: const dimension_type m) { -2441: const dimension_type space_dim = space_dimension(); -2441: -2441: if (var.space_dimension() > space_dim) { -2441: throw_dimension_incompatible("expand_space_dimension(v, m)", "v", var); -2441: } -2441: -2441: -2441: -2441: if (m > max_space_dimension() - space_dim) { -2441: throw_invalid_argument("expand_dimension(v, m)", -2441: "adding m new space dimensions exceeds " -2441: "the maximum allowed space dimension"); -2441: } -2441: -2441: -2441: -2441: seq.insert(seq.end(), m, seq[var.id()]); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline bool -2441: operator!=(const Box& x, const Box& y) { -2441: return !(x == y); -2441: } -2441: -2441: template -2441: inline bool -2441: Box::has_lower_bound(const Variable var, -2441: Coefficient& n, Coefficient& d, bool& closed) const { -2441: -2441: -2441: ((void) 0); -2441: const dimension_type k = var.id(); -2441: ((void) 0); -2441: const ITV& seq_k = seq[k]; -2441: -2441: if (seq_k.lower_is_boundary_infinity()) { -2441: return false; -2441: } -2441: closed = !seq_k.lower_is_open(); -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_lr; mpq_class& lr = holder_lr.item(); -2441: assign_r(lr, seq_k.lower(), ROUND_NOT_NEEDED); -2441: n = lr.get_num(); -2441: d = lr.get_den(); -2441: -2441: return true; -2441: } -2441: -2441: template -2441: inline bool -2441: Box::has_upper_bound(const Variable var, -2441: Coefficient& n, Coefficient& d, bool& closed) const { -2441: -2441: -2441: ((void) 0); -2441: const dimension_type k = var.id(); -2441: ((void) 0); -2441: const ITV& seq_k = seq[k]; -2441: -2441: if (seq_k.upper_is_boundary_infinity()) { -2441: return false; -2441: } -2441: -2441: closed = !seq_k.upper_is_open(); -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_ur; mpq_class& ur = holder_ur.item(); -2441: assign_r(ur, seq_k.upper(), ROUND_NOT_NEEDED); -2441: n = ur.get_num(); -2441: d = ur.get_den(); -2441: -2441: return true; -2441: } -2441: -2441: template -2441: inline void -2441: Box::add_constraint(const Constraint& c) { -2441: const dimension_type c_space_dim = c.space_dimension(); -2441: -2441: if (c_space_dim > space_dimension()) { -2441: throw_dimension_incompatible("add_constraint(c)", c); -2441: } -2441: -2441: add_constraint_no_check(c); -2441: } -2441: -2441: template -2441: inline void -2441: Box::add_constraints(const Constraint_System& cs) { -2441: -2441: if (cs.space_dimension() > space_dimension()) { -2441: throw_dimension_incompatible("add_constraints(cs)", cs); -2441: } -2441: -2441: add_constraints_no_check(cs); -2441: } -2441: -2441: template -2441: inline void -2441: Box::add_recycled_constraints(Constraint_System& cs) { -2441: add_constraints(cs); -2441: } -2441: -2441: template -2441: inline void -2441: Box::add_congruence(const Congruence& cg) { -2441: const dimension_type cg_space_dim = cg.space_dimension(); -2441: -2441: if (cg_space_dim > space_dimension()) { -2441: throw_dimension_incompatible("add_congruence(cg)", cg); -2441: } -2441: -2441: add_congruence_no_check(cg); -2441: } -2441: -2441: template -2441: inline void -2441: Box::add_congruences(const Congruence_System& cgs) { -2441: if (cgs.space_dimension() > space_dimension()) { -2441: throw_dimension_incompatible("add_congruences(cgs)", cgs); -2441: } -2441: add_congruences_no_check(cgs); -2441: } -2441: -2441: template -2441: inline void -2441: Box::add_recycled_congruences(Congruence_System& cgs) { -2441: add_congruences(cgs); -2441: } -2441: -2441: template -2441: inline bool -2441: Box::can_recycle_constraint_systems() { -2441: return false; -2441: } -2441: -2441: template -2441: inline bool -2441: Box::can_recycle_congruence_systems() { -2441: return false; -2441: } -2441: -2441: template -2441: inline void -2441: Box::widening_assign(const Box& y, unsigned* tp) { -2441: CC76_widening_assign(y, tp); -2441: } -2441: -2441: template -2441: inline Congruence_System -2441: Box::minimized_congruences() const { -2441: -2441: return congruences(); -2441: } -2441: -2441: template -2441: inline I_Result -2441: Box -2441: ::refine_interval_no_check(ITV& itv, -2441: const Constraint::Type type, -2441: Coefficient_traits::const_reference numer, -2441: Coefficient_traits::const_reference denom) { -2441: ((void) 0); -2441: -2441: -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_q; mpq_class& q = holder_q.item(); -2441: assign_r(q.get_num(), numer, ROUND_NOT_NEEDED); -2441: assign_r(q.get_den(), denom, ROUND_NOT_NEEDED); -2441: q.canonicalize(); -2441: -2441: q = -q; -2441: -2441: Relation_Symbol rel_sym; -2441: switch (type) { -2441: case Constraint::EQUALITY: -2441: rel_sym = EQUAL; -2441: break; -2441: case Constraint::NONSTRICT_INEQUALITY: -2441: rel_sym = (denom > 0) ? GREATER_OR_EQUAL : LESS_OR_EQUAL; -2441: break; -2441: case Constraint::STRICT_INEQUALITY: -2441: rel_sym = (denom > 0) ? GREATER_THAN : LESS_THAN; -2441: break; -2441: default: -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return I_ANY; -2441: } -2441: I_Result res = itv.add_constraint(i_constraint(rel_sym, q)); -2441: ((void) 0); -2441: return res; -2441: } -2441: -2441: template -2441: inline void -2441: Box -2441: ::add_interval_constraint_no_check(const dimension_type var_id, -2441: const Constraint::Type type, -2441: Coefficient_traits::const_reference numer, -2441: Coefficient_traits::const_reference denom) { -2441: ((void) 0); -2441: ((void) 0); -2441: ((void) 0); -2441: refine_interval_no_check(seq[var_id], type, numer, denom); -2441: -2441: -2441: -2441: reset_empty_up_to_date(); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline void -2441: Box::refine_with_constraint(const Constraint& c) { -2441: const dimension_type c_space_dim = c.space_dimension(); -2441: -2441: if (c_space_dim > space_dimension()) { -2441: throw_dimension_incompatible("refine_with_constraint(c)", c); -2441: } -2441: -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: refine_no_check(c); -2441: } -2441: -2441: template -2441: inline void -2441: Box::refine_with_constraints(const Constraint_System& cs) { -2441: -2441: if (cs.space_dimension() > space_dimension()) { -2441: throw_dimension_incompatible("refine_with_constraints(cs)", cs); -2441: } -2441: -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: refine_no_check(cs); -2441: } -2441: -2441: template -2441: inline void -2441: Box::refine_with_congruence(const Congruence& cg) { -2441: const dimension_type cg_space_dim = cg.space_dimension(); -2441: -2441: if (cg_space_dim > space_dimension()) { -2441: throw_dimension_incompatible("refine_with_congruence(cg)", cg); -2441: } -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: refine_no_check(cg); -2441: } -2441: -2441: template -2441: inline void -2441: Box::refine_with_congruences(const Congruence_System& cgs) { -2441: -2441: if (cgs.space_dimension() > space_dimension()) { -2441: throw_dimension_incompatible("refine_with_congruences(cgs)", cgs); -2441: } -2441: -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: refine_no_check(cgs); -2441: } -2441: -2441: template -2441: inline void -2441: Box::propagate_constraint(const Constraint& c) { -2441: const dimension_type c_space_dim = c.space_dimension(); -2441: -2441: if (c_space_dim > space_dimension()) { -2441: throw_dimension_incompatible("propagate_constraint(c)", c); -2441: } -2441: -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: propagate_constraint_no_check(c); -2441: } -2441: -2441: template -2441: inline void -2441: Box::propagate_constraints(const Constraint_System& cs, -2441: const dimension_type max_iterations) { -2441: -2441: if (cs.space_dimension() > space_dimension()) { -2441: throw_dimension_incompatible("propagate_constraints(cs)", cs); -2441: } -2441: -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: propagate_constraints_no_check(cs, max_iterations); -2441: } -2441: -2441: template -2441: inline void -2441: Box::unconstrain(const Variable var) { -2441: const dimension_type var_id = var.id(); -2441: -2441: if (space_dimension() < var_id + 1) { -2441: throw_dimension_incompatible("unconstrain(var)", var_id + 1); -2441: } -2441: -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: -2441: -2441: ITV& seq_var = seq[var_id]; -2441: if (seq_var.is_empty()) { -2441: set_empty(); -2441: } -2441: else { -2441: seq_var.assign(UNIVERSE); -2441: } -2441: -2441: ((void) 0); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: rectilinear_distance_assign(Checked_Number& r, -2441: const Box& x, -2441: const Box& y, -2441: const Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2) { -2441: return l_m_distance_assign > -2441: (r, x, y, dir, tmp0, tmp1, tmp2); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: rectilinear_distance_assign(Checked_Number& r, -2441: const Box& x, -2441: const Box& y, -2441: const Rounding_Dir dir) { -2441: typedef Checked_Number Checked_Temp; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp0; Checked_Temp& tmp0 = holder_tmp0.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp1; Checked_Temp& tmp1 = holder_tmp1.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp2; Checked_Temp& tmp2 = holder_tmp2.item(); -2441: return rectilinear_distance_assign(r, x, y, dir, tmp0, tmp1, tmp2); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: rectilinear_distance_assign(Checked_Number& r, -2441: const Box& x, -2441: const Box& y, -2441: const Rounding_Dir dir) { -2441: -2441: -2441: return Parma_Polyhedra_Library -2441: ::rectilinear_distance_assign(r, x, y, dir); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: euclidean_distance_assign(Checked_Number& r, -2441: const Box& x, -2441: const Box& y, -2441: const Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2) { -2441: return l_m_distance_assign > -2441: (r, x, y, dir, tmp0, tmp1, tmp2); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: euclidean_distance_assign(Checked_Number& r, -2441: const Box& x, -2441: const Box& y, -2441: const Rounding_Dir dir) { -2441: typedef Checked_Number Checked_Temp; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp0; Checked_Temp& tmp0 = holder_tmp0.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp1; Checked_Temp& tmp1 = holder_tmp1.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp2; Checked_Temp& tmp2 = holder_tmp2.item(); -2441: return euclidean_distance_assign(r, x, y, dir, tmp0, tmp1, tmp2); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: euclidean_distance_assign(Checked_Number& r, -2441: const Box& x, -2441: const Box& y, -2441: const Rounding_Dir dir) { -2441: -2441: -2441: return Parma_Polyhedra_Library -2441: ::euclidean_distance_assign(r, x, y, dir); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: l_infinity_distance_assign(Checked_Number& r, -2441: const Box& x, -2441: const Box& y, -2441: const Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2) { -2441: return l_m_distance_assign > -2441: (r, x, y, dir, tmp0, tmp1, tmp2); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: l_infinity_distance_assign(Checked_Number& r, -2441: const Box& x, -2441: const Box& y, -2441: const Rounding_Dir dir) { -2441: typedef Checked_Number Checked_Temp; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp0; Checked_Temp& tmp0 = holder_tmp0.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp1; Checked_Temp& tmp1 = holder_tmp1.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp2; Checked_Temp& tmp2 = holder_tmp2.item(); -2441: return l_infinity_distance_assign(r, x, y, dir, tmp0, tmp1, tmp2); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: l_infinity_distance_assign(Checked_Number& r, -2441: const Box& x, -2441: const Box& y, -2441: const Rounding_Dir dir) { -2441: -2441: -2441: return Parma_Polyhedra_Library -2441: ::l_infinity_distance_assign(r, x, y, dir); -2441: } -2441: -2441: -2441: template -2441: inline void -2441: swap(Box& x, Box& y) { -2441: x.m_swap(y); -2441: } -2441: -2441: } -2441: # 2286 "../../src/Box_defs.hh" 2 -2441: # 1 "../../src/Box_templates.hh" 1 -2441: # 30 "../../src/Box_templates.hh" -2441: # 1 "../../src/Generator_System_defs.hh" 1 -2441: # 33 "../../src/Generator_System_defs.hh" -2441: # 1 "../../src/Poly_Con_Relation_defs.hh" 1 -2441: # 31 "../../src/Poly_Con_Relation_defs.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: -2441: -2441: bool operator==(const Poly_Con_Relation& x, const Poly_Con_Relation& y); -2441: -2441: -2441: -2441: bool operator!=(const Poly_Con_Relation& x, const Poly_Con_Relation& y); -2441: -2441: -2441: -2441: Poly_Con_Relation operator&&(const Poly_Con_Relation& x, -2441: const Poly_Con_Relation& y); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: Poly_Con_Relation operator-(const Poly_Con_Relation& x, -2441: const Poly_Con_Relation& y); -2441: -2441: namespace IO_Operators { -2441: -2441: -2441: -2441: std::ostream& operator<<(std::ostream& s, const Poly_Con_Relation& r); -2441: -2441: } -2441: -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: class Parma_Polyhedra_Library::Poly_Con_Relation { -2441: private: -2441: -2441: typedef unsigned int flags_t; -2441: -2441: -2441: -2441: static const flags_t NOTHING = 0U; -2441: static const flags_t IS_DISJOINT = 1U << 0; -2441: static const flags_t STRICTLY_INTERSECTS = 1U << 1; -2441: static const flags_t IS_INCLUDED = 1U << 2; -2441: static const flags_t SATURATES = 1U << 3; -2441: -2441: -2441: -2441: static const flags_t EVERYTHING -2441: = IS_DISJOINT -2441: | STRICTLY_INTERSECTS -2441: | IS_INCLUDED -2441: | SATURATES; -2441: -2441: -2441: flags_t flags; -2441: -2441: -2441: static bool implies(flags_t x, flags_t y); -2441: -2441: -2441: Poly_Con_Relation(flags_t mask); -2441: -2441: friend bool -2441: operator==(const Poly_Con_Relation& x, const Poly_Con_Relation& y); -2441: friend bool -2441: operator!=(const Poly_Con_Relation& x, const Poly_Con_Relation& y); -2441: -2441: friend Poly_Con_Relation -2441: operator&&(const Poly_Con_Relation& x, const Poly_Con_Relation& y); -2441: -2441: friend Poly_Con_Relation -2441: operator-(const Poly_Con_Relation& x, const Poly_Con_Relation& y); -2441: -2441: friend std::ostream& -2441: Parma_Polyhedra_Library:: -2441: IO_Operators::operator<<(std::ostream& s, const Poly_Con_Relation& r); -2441: -2441: public: -2441: -2441: -2441: -2441: -2441: -2441: -2441: flags_t get_flags() const; -2441: -2441: public: -2441: -2441: static Poly_Con_Relation nothing(); -2441: -2441: -2441: -2441: -2441: -2441: static Poly_Con_Relation is_disjoint(); -2441: -2441: -2441: -2441: -2441: -2441: static Poly_Con_Relation strictly_intersects(); -2441: -2441: -2441: -2441: -2441: -2441: static Poly_Con_Relation is_included(); -2441: -2441: -2441: -2441: -2441: -2441: static Poly_Con_Relation saturates(); -2441: -2441: void ascii_dump() const; void ascii_dump(std::ostream& s) const; void print() const; -2441: -2441: -2441: bool implies(const Poly_Con_Relation& y) const; -2441: -2441: -2441: bool OK() const; -2441: }; -2441: -2441: # 1 "../../src/Poly_Con_Relation_inlines.hh" 1 -2441: # 27 "../../src/Poly_Con_Relation_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: inline -2441: Poly_Con_Relation::Poly_Con_Relation(flags_t mask) -2441: : flags(mask) { -2441: } -2441: -2441: inline Poly_Con_Relation::flags_t -2441: Poly_Con_Relation::get_flags() const { -2441: return flags; -2441: } -2441: -2441: inline Poly_Con_Relation -2441: Poly_Con_Relation::nothing() { -2441: return Poly_Con_Relation(NOTHING); -2441: } -2441: -2441: inline Poly_Con_Relation -2441: Poly_Con_Relation::is_disjoint() { -2441: return Poly_Con_Relation(IS_DISJOINT); -2441: } -2441: -2441: inline Poly_Con_Relation -2441: Poly_Con_Relation::strictly_intersects() { -2441: return Poly_Con_Relation(STRICTLY_INTERSECTS); -2441: } -2441: -2441: inline Poly_Con_Relation -2441: Poly_Con_Relation::is_included() { -2441: return Poly_Con_Relation(IS_INCLUDED); -2441: } -2441: -2441: inline Poly_Con_Relation -2441: Poly_Con_Relation::saturates() { -2441: return Poly_Con_Relation(SATURATES); -2441: } -2441: -2441: inline bool -2441: Poly_Con_Relation::implies(flags_t x, flags_t y) { -2441: return (x & y) == y; -2441: } -2441: -2441: inline bool -2441: Poly_Con_Relation::implies(const Poly_Con_Relation& y) const { -2441: return implies(flags, y.flags); -2441: } -2441: -2441: -2441: inline bool -2441: operator==(const Poly_Con_Relation& x, const Poly_Con_Relation& y) { -2441: return x.flags == y.flags; -2441: } -2441: -2441: -2441: inline bool -2441: operator!=(const Poly_Con_Relation& x, const Poly_Con_Relation& y) { -2441: return x.flags != y.flags; -2441: } -2441: -2441: -2441: inline Poly_Con_Relation -2441: operator&&(const Poly_Con_Relation& x, const Poly_Con_Relation& y) { -2441: return Poly_Con_Relation(x.flags | y.flags); -2441: } -2441: -2441: -2441: inline Poly_Con_Relation -2441: operator-(const Poly_Con_Relation& x, const Poly_Con_Relation& y) { -2441: return Poly_Con_Relation(x.flags & ~y.flags); -2441: } -2441: -2441: } -2441: # 165 "../../src/Poly_Con_Relation_defs.hh" 2 -2441: # 34 "../../src/Generator_System_defs.hh" 2 -2441: -2441: -2441: -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: namespace IO_Operators { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: std::ostream& operator<<(std::ostream& s, const Generator_System& gs); -2441: -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool operator==(const Generator_System& x, const Generator_System& y); -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool operator!=(const Generator_System& x, const Generator_System& y); -2441: -2441: -2441: void -2441: swap(Generator_System& x, Generator_System& y); -2441: -2441: } -2441: # 188 "../../src/Generator_System_defs.hh" -2441: class Parma_Polyhedra_Library::Generator_System { -2441: public: -2441: typedef Generator row_type; -2441: -2441: static const Representation default_representation = SPARSE; -2441: -2441: -2441: Generator_System(Representation r = default_representation); -2441: -2441: -2441: explicit Generator_System(const Generator& g, -2441: Representation r = default_representation); -2441: -2441: -2441: -2441: Generator_System(const Generator_System& gs); -2441: -2441: -2441: Generator_System(const Generator_System& gs, Representation r); -2441: -2441: -2441: ~Generator_System(); -2441: -2441: -2441: Generator_System& operator=(const Generator_System& y); -2441: -2441: -2441: Representation representation() const; -2441: -2441: -2441: void set_representation(Representation r); -2441: -2441: -2441: static dimension_type max_space_dimension(); -2441: -2441: -2441: dimension_type space_dimension() const; -2441: -2441: -2441: void set_space_dimension(dimension_type space_dim); -2441: -2441: -2441: -2441: -2441: -2441: void clear(); -2441: -2441: -2441: -2441: -2441: -2441: void insert(const Generator& g); -2441: -2441: -2441: -2441: -2441: -2441: void insert(Generator& g, Recycle_Input); -2441: -2441: -2441: static void initialize(); -2441: -2441: -2441: static void finalize(); -2441: -2441: -2441: -2441: -2441: static const Generator_System& zero_dim_univ(); -2441: -2441: typedef Generator_System_const_iterator const_iterator; -2441: -2441: -2441: bool empty() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_iterator begin() const; -2441: -2441: -2441: const_iterator end() const; -2441: -2441: -2441: bool OK() const; -2441: -2441: void ascii_dump() const; void ascii_dump(std::ostream& s) const; void print() const; -2441: # 287 "../../src/Generator_System_defs.hh" -2441: bool ascii_load(std::istream& s); -2441: -2441: -2441: memory_size_type total_memory_in_bytes() const; -2441: -2441: -2441: memory_size_type external_memory_in_bytes() const; -2441: -2441: -2441: void m_swap(Generator_System& y); -2441: -2441: private: -2441: -2441: bool has_no_rows() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void remove_space_dimensions(const Variables_Set& vars); -2441: -2441: -2441: -2441: void shift_space_dimensions(Variable v, dimension_type n); -2441: # 326 "../../src/Generator_System_defs.hh" -2441: void permute_space_dimensions(const std::vector& cycle); -2441: -2441: -2441: void swap_space_dimensions(Variable v1, Variable v2); -2441: -2441: dimension_type num_rows() const; -2441: # 346 "../../src/Generator_System_defs.hh" -2441: void add_universe_rows_and_space_dimensions(dimension_type n); -2441: -2441: Topology topology() const; -2441: -2441: -2441: dimension_type first_pending_row() const; -2441: -2441: -2441: void unset_pending_rows(); -2441: -2441: -2441: void set_sorted(bool b); -2441: -2441: -2441: bool is_sorted() const; -2441: -2441: -2441: void set_index_first_pending_row(dimension_type i); -2441: -2441: -2441: -2441: -2441: -2441: bool is_necessarily_closed() const; -2441: -2441: -2441: void assign_with_pending(const Generator_System& y); -2441: -2441: -2441: dimension_type num_pending_rows() const; -2441: -2441: -2441: -2441: -2441: -2441: void sort_pending_and_remove_duplicates(); -2441: # 390 "../../src/Generator_System_defs.hh" -2441: void sort_and_remove_with_sat(Bit_Matrix& sat); -2441: -2441: -2441: -2441: -2441: -2441: void sort_rows(); -2441: -2441: -2441: -2441: -2441: -2441: bool check_sorted() const; -2441: -2441: -2441: -2441: -2441: -2441: dimension_type num_lines_or_equalities() const; -2441: # 418 "../../src/Generator_System_defs.hh" -2441: void remove_row(dimension_type i, bool keep_sorted = false); -2441: # 428 "../../src/Generator_System_defs.hh" -2441: void remove_rows(dimension_type first, dimension_type last, -2441: bool keep_sorted = false); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void remove_rows(const std::vector& indexes); -2441: -2441: -2441: void remove_trailing_rows(dimension_type n); -2441: # 454 "../../src/Generator_System_defs.hh" -2441: dimension_type gauss(dimension_type n_lines_or_equalities); -2441: # 466 "../../src/Generator_System_defs.hh" -2441: void back_substitute(dimension_type n_lines_or_equalities); -2441: -2441: -2441: void strong_normalize(); -2441: # 479 "../../src/Generator_System_defs.hh" -2441: void merge_rows_assign(const Generator_System& y); -2441: -2441: -2441: -2441: -2441: -2441: void insert(const Generator_System& y); -2441: -2441: -2441: void insert_pending(const Generator_System& r); -2441: -2441: -2441: -2441: -2441: -2441: static const Generator_System* zero_dim_univ_p; -2441: -2441: friend class Generator_System_const_iterator; -2441: -2441: -2441: explicit Generator_System(Topology topol, -2441: Representation r = default_representation); -2441: -2441: -2441: -2441: -2441: -2441: -2441: Generator_System(Topology topol, dimension_type space_dim, -2441: Representation r = default_representation); -2441: # 517 "../../src/Generator_System_defs.hh" -2441: bool adjust_topology_and_space_dimension(Topology new_topology, -2441: dimension_type new_space_dim); -2441: # 527 "../../src/Generator_System_defs.hh" -2441: void add_corresponding_points(); -2441: -2441: -2441: -2441: -2441: -2441: bool has_points() const; -2441: # 542 "../../src/Generator_System_defs.hh" -2441: void add_corresponding_closure_points(); -2441: # 554 "../../src/Generator_System_defs.hh" -2441: bool has_closure_points() const; -2441: -2441: -2441: -2441: void convert_into_non_necessarily_closed(); -2441: -2441: -2441: const Generator& operator[](dimension_type k) const; -2441: -2441: -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Poly_Con_Relation -2441: relation_with(const Constraint& c) const; -2441: -2441: -2441: bool satisfied_by_all_generators(const Constraint& c) const; -2441: -2441: -2441: -2441: -2441: -2441: bool satisfied_by_all_generators_C(const Constraint& c) const; -2441: -2441: -2441: -2441: -2441: -2441: bool satisfied_by_all_generators_NNC(const Constraint& c) const; -2441: # 612 "../../src/Generator_System_defs.hh" -2441: void affine_image(Variable v, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference denominator); -2441: -2441: -2441: dimension_type num_lines() const; -2441: -2441: -2441: dimension_type num_rays() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: void remove_invalid_lines_and_rays(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void simplify(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: void insert_pending(const Generator& g); -2441: -2441: -2441: -2441: -2441: -2441: -2441: void insert_pending(Generator& g, Recycle_Input); -2441: -2441: Linear_System sys; -2441: -2441: friend bool -2441: operator==(const Generator_System& x, const Generator_System& y); -2441: -2441: friend class Polyhedron; -2441: }; -2441: # 680 "../../src/Generator_System_defs.hh" -2441: class Parma_Polyhedra_Library::Generator_System_const_iterator -2441: : public std::iterator { -2441: public: -2441: -2441: Generator_System_const_iterator(); -2441: -2441: -2441: Generator_System_const_iterator(const Generator_System_const_iterator& y); -2441: -2441: -2441: ~Generator_System_const_iterator(); -2441: -2441: -2441: Generator_System_const_iterator& operator=(const Generator_System_const_iterator& y); -2441: -2441: -2441: const Generator& operator*() const; -2441: -2441: -2441: const Generator* operator->() const; -2441: -2441: -2441: Generator_System_const_iterator& operator++(); -2441: -2441: -2441: Generator_System_const_iterator operator++(int); -2441: -2441: -2441: -2441: -2441: -2441: bool operator==(const Generator_System_const_iterator& y) const; -2441: -2441: -2441: -2441: -2441: -2441: bool operator!=(const Generator_System_const_iterator& y) const; -2441: -2441: private: -2441: friend class Generator_System; -2441: -2441: -2441: Linear_System::const_iterator i; -2441: -2441: -2441: const Linear_System* gsp; -2441: -2441: -2441: Generator_System_const_iterator(const Linear_System::const_iterator& iter, -2441: const Generator_System& gsys); -2441: -2441: -2441: -2441: -2441: -2441: void skip_forward(); -2441: }; -2441: # 31 "../../src/Box_templates.hh" 2 -2441: # 1 "../../src/Generator_System_inlines.hh" 1 -2441: # 29 "../../src/Generator_System_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: inline -2441: Generator_System::Generator_System(Representation r) -2441: : sys(NECESSARILY_CLOSED, r) { -2441: } -2441: -2441: inline -2441: Generator_System::Generator_System(const Generator& g, Representation r) -2441: : sys(g.topology(), r) { -2441: sys.insert(g); -2441: } -2441: -2441: inline -2441: Generator_System::Generator_System(const Generator_System& gs) -2441: : sys(gs.sys) { -2441: } -2441: -2441: inline -2441: Generator_System::Generator_System(const Generator_System& gs, -2441: Representation r) -2441: : sys(gs.sys, r) { -2441: } -2441: -2441: inline -2441: Generator_System::Generator_System(const Topology topol, Representation r) -2441: : sys(topol, r) { -2441: } -2441: -2441: inline -2441: Generator_System::Generator_System(const Topology topol, -2441: const dimension_type space_dim, -2441: Representation r) -2441: : sys(topol, space_dim, r) { -2441: } -2441: -2441: inline -2441: Generator_System::~Generator_System() { -2441: } -2441: -2441: inline Generator_System& -2441: Generator_System::operator=(const Generator_System& y) { -2441: Generator_System tmp = y; -2441: swap(*this, tmp); -2441: return *this; -2441: } -2441: -2441: inline Representation -2441: Generator_System::representation() const { -2441: return sys.representation(); -2441: } -2441: -2441: inline void -2441: Generator_System::set_representation(Representation r) { -2441: sys.set_representation(r); -2441: } -2441: -2441: inline dimension_type -2441: Generator_System::max_space_dimension() { -2441: return Linear_System::max_space_dimension(); -2441: } -2441: -2441: inline dimension_type -2441: Generator_System::space_dimension() const { -2441: return sys.space_dimension(); -2441: } -2441: -2441: inline void -2441: Generator_System::set_space_dimension(dimension_type space_dim) { -2441: const dimension_type old_space_dim = space_dimension(); -2441: sys.set_space_dimension_no_ok(space_dim); -2441: -2441: if (space_dim < old_space_dim) { -2441: -2441: remove_invalid_lines_and_rays(); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: ((void) 0); -2441: ((void) 0); -2441: } -2441: -2441: inline void -2441: Generator_System::clear() { -2441: sys.clear(); -2441: } -2441: -2441: inline const Generator& -2441: Generator_System::operator[](const dimension_type k) const { -2441: return sys[k]; -2441: } -2441: -2441: inline void -2441: Generator_System -2441: ::remove_space_dimensions(const Variables_Set& vars) { -2441: sys.remove_space_dimensions(vars); -2441: } -2441: -2441: inline void -2441: Generator_System -2441: ::shift_space_dimensions(Variable v, dimension_type n) { -2441: sys.shift_space_dimensions(v, n); -2441: } -2441: -2441: inline void -2441: Generator_System -2441: ::permute_space_dimensions(const std::vector& cycle) { -2441: sys.permute_space_dimensions(cycle); -2441: } -2441: -2441: inline void -2441: Generator_System -2441: ::swap_space_dimensions(Variable v1, Variable v2) { -2441: sys.swap_space_dimensions(v1, v2); -2441: } -2441: -2441: inline dimension_type -2441: Generator_System::num_rows() const { -2441: return sys.num_rows(); -2441: } -2441: -2441: inline void -2441: Generator_System::add_universe_rows_and_space_dimensions(dimension_type n) { -2441: sys.add_universe_rows_and_space_dimensions(n); -2441: } -2441: -2441: inline Topology -2441: Generator_System::topology() const { -2441: return sys.topology(); -2441: } -2441: -2441: inline dimension_type -2441: Generator_System::first_pending_row() const { -2441: return sys.first_pending_row(); -2441: } -2441: -2441: inline void -2441: Generator_System::unset_pending_rows() { -2441: sys.unset_pending_rows(); -2441: } -2441: -2441: inline void -2441: Generator_System::set_sorted(bool b) { -2441: sys.set_sorted(b); -2441: } -2441: -2441: inline bool -2441: Generator_System::is_sorted() const { -2441: return sys.is_sorted(); -2441: } -2441: -2441: inline void -2441: Generator_System::set_index_first_pending_row(dimension_type i) { -2441: sys.set_index_first_pending_row(i); -2441: } -2441: -2441: inline bool -2441: Generator_System::is_necessarily_closed() const { -2441: return sys.is_necessarily_closed(); -2441: } -2441: -2441: inline void -2441: Generator_System::assign_with_pending(const Generator_System& y) { -2441: sys.assign_with_pending(y.sys); -2441: } -2441: -2441: inline dimension_type -2441: Generator_System::num_pending_rows() const { -2441: return sys.num_pending_rows(); -2441: } -2441: -2441: inline void -2441: Generator_System::sort_pending_and_remove_duplicates() { -2441: return sys.sort_pending_and_remove_duplicates(); -2441: } -2441: -2441: inline void -2441: Generator_System::sort_and_remove_with_sat(Bit_Matrix& sat) { -2441: sys.sort_and_remove_with_sat(sat); -2441: } -2441: -2441: inline void -2441: Generator_System::sort_rows() { -2441: sys.sort_rows(); -2441: } -2441: -2441: inline bool -2441: Generator_System::check_sorted() const { -2441: return sys.check_sorted(); -2441: } -2441: -2441: inline dimension_type -2441: Generator_System::num_lines_or_equalities() const { -2441: return sys.num_lines_or_equalities(); -2441: } -2441: -2441: inline void -2441: Generator_System::remove_row(dimension_type i, bool keep_sorted) { -2441: sys.remove_row(i, keep_sorted); -2441: } -2441: -2441: inline void -2441: Generator_System::remove_rows(dimension_type first, dimension_type last, -2441: bool keep_sorted) { -2441: sys.remove_rows(first, last, keep_sorted); -2441: } -2441: -2441: inline void -2441: Generator_System::remove_rows(const std::vector& indexes) { -2441: sys.remove_rows(indexes); -2441: } -2441: -2441: inline void -2441: Generator_System::remove_trailing_rows(dimension_type n) { -2441: sys.remove_trailing_rows(n); -2441: } -2441: -2441: inline dimension_type -2441: Generator_System::gauss(dimension_type n_lines_or_equalities) { -2441: return sys.gauss(n_lines_or_equalities); -2441: } -2441: -2441: inline void -2441: Generator_System::back_substitute(dimension_type n_lines_or_equalities) { -2441: sys.back_substitute(n_lines_or_equalities); -2441: } -2441: -2441: inline void -2441: Generator_System::strong_normalize() { -2441: sys.strong_normalize(); -2441: } -2441: -2441: inline void -2441: Generator_System::merge_rows_assign(const Generator_System& y) { -2441: sys.merge_rows_assign(y.sys); -2441: } -2441: -2441: inline void -2441: Generator_System::insert(const Generator_System& y) { -2441: sys.insert(y.sys); -2441: } -2441: -2441: inline void -2441: Generator_System::insert_pending(const Generator_System& r) { -2441: sys.insert_pending(r.sys); -2441: } -2441: -2441: inline bool -2441: operator==(const Generator_System& x, const Generator_System& y) { -2441: return x.sys == y.sys; -2441: } -2441: -2441: inline bool -2441: operator!=(const Generator_System& x, const Generator_System& y) { -2441: return !(x == y); -2441: } -2441: -2441: inline -2441: Generator_System_const_iterator::Generator_System_const_iterator() -2441: : i(), gsp(0) { -2441: } -2441: -2441: inline -2441: Generator_System_const_iterator::Generator_System_const_iterator(const Generator_System_const_iterator& y) -2441: : i(y.i), gsp(y.gsp) { -2441: } -2441: -2441: inline -2441: Generator_System_const_iterator::~Generator_System_const_iterator() { -2441: } -2441: -2441: inline -2441: Generator_System_const_iterator& -2441: Generator_System_const_iterator::operator=(const Generator_System_const_iterator& y) { -2441: i = y.i; -2441: gsp = y.gsp; -2441: return *this; -2441: } -2441: -2441: inline const Generator& -2441: Generator_System_const_iterator::operator*() const { -2441: return *i; -2441: } -2441: -2441: inline const Generator* -2441: Generator_System_const_iterator::operator->() const { -2441: return i.operator->(); -2441: } -2441: -2441: inline Generator_System_const_iterator& -2441: Generator_System_const_iterator::operator++() { -2441: ++i; -2441: if (!gsp->is_necessarily_closed()) { -2441: skip_forward(); -2441: } -2441: return *this; -2441: } -2441: -2441: inline Generator_System_const_iterator -2441: Generator_System_const_iterator::operator++(int) { -2441: const Generator_System_const_iterator tmp = *this; -2441: operator++(); -2441: return tmp; -2441: } -2441: -2441: inline bool -2441: Generator_System_const_iterator::operator==(const Generator_System_const_iterator& y) const { -2441: return i == y.i; -2441: } -2441: -2441: inline bool -2441: Generator_System_const_iterator::operator!=(const Generator_System_const_iterator& y) const { -2441: return i != y.i; -2441: } -2441: -2441: inline -2441: Generator_System_const_iterator:: -2441: Generator_System_const_iterator(const Linear_System::const_iterator& iter, -2441: const Generator_System& gs) -2441: : i(iter), gsp(&gs.sys) { -2441: } -2441: -2441: inline bool -2441: Generator_System::empty() const { -2441: return sys.has_no_rows(); -2441: } -2441: -2441: inline bool -2441: Generator_System::has_no_rows() const { -2441: return sys.has_no_rows(); -2441: } -2441: -2441: inline Generator_System::const_iterator -2441: Generator_System::begin() const { -2441: const_iterator i(sys.begin(), *this); -2441: if (!sys.is_necessarily_closed()) { -2441: i.skip_forward(); -2441: } -2441: return i; -2441: } -2441: -2441: inline Generator_System::const_iterator -2441: Generator_System::end() const { -2441: const const_iterator i(sys.end(), *this); -2441: return i; -2441: } -2441: -2441: inline const Generator_System& -2441: Generator_System::zero_dim_univ() { -2441: ((void) 0); -2441: return *zero_dim_univ_p; -2441: } -2441: -2441: inline void -2441: Generator_System::m_swap(Generator_System& y) { -2441: swap(sys, y.sys); -2441: } -2441: -2441: inline memory_size_type -2441: Generator_System::external_memory_in_bytes() const { -2441: return sys.external_memory_in_bytes(); -2441: } -2441: -2441: inline memory_size_type -2441: Generator_System::total_memory_in_bytes() const { -2441: return external_memory_in_bytes() + sizeof(*this); -2441: } -2441: -2441: inline void -2441: Generator_System::simplify() { -2441: sys.simplify(); -2441: remove_invalid_lines_and_rays(); -2441: } -2441: -2441: -2441: inline void -2441: swap(Generator_System& x, Generator_System& y) { -2441: x.m_swap(y); -2441: } -2441: -2441: } -2441: # 32 "../../src/Box_templates.hh" 2 -2441: -2441: # 1 "../../src/Poly_Gen_Relation_defs.hh" 1 -2441: # 31 "../../src/Poly_Gen_Relation_defs.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: -2441: -2441: bool operator==(const Poly_Gen_Relation& x, const Poly_Gen_Relation& y); -2441: -2441: -2441: -2441: bool operator!=(const Poly_Gen_Relation& x, const Poly_Gen_Relation& y); -2441: -2441: -2441: -2441: Poly_Gen_Relation operator&&(const Poly_Gen_Relation& x, -2441: const Poly_Gen_Relation& y); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: Poly_Gen_Relation operator-(const Poly_Gen_Relation& x, -2441: const Poly_Gen_Relation& y); -2441: -2441: namespace IO_Operators { -2441: -2441: -2441: -2441: std::ostream& operator<<(std::ostream& s, const Poly_Gen_Relation& r); -2441: -2441: } -2441: -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: class Parma_Polyhedra_Library::Poly_Gen_Relation { -2441: private: -2441: -2441: typedef unsigned int flags_t; -2441: -2441: -2441: -2441: static const flags_t NOTHING = 0U; -2441: static const flags_t SUBSUMES = 1U << 0; -2441: -2441: -2441: -2441: static const flags_t EVERYTHING -2441: = SUBSUMES; -2441: -2441: -2441: flags_t flags; -2441: -2441: -2441: static bool implies(flags_t x, flags_t y); -2441: -2441: -2441: Poly_Gen_Relation(flags_t mask); -2441: -2441: friend bool -2441: operator==(const Poly_Gen_Relation& x, const Poly_Gen_Relation& y); -2441: friend bool -2441: operator!=(const Poly_Gen_Relation& x, const Poly_Gen_Relation& y); -2441: -2441: friend Poly_Gen_Relation -2441: operator&&(const Poly_Gen_Relation& x, const Poly_Gen_Relation& y); -2441: -2441: friend Poly_Gen_Relation -2441: operator-(const Poly_Gen_Relation& x, const Poly_Gen_Relation& y); -2441: -2441: friend std::ostream& -2441: Parma_Polyhedra_Library:: -2441: IO_Operators::operator<<(std::ostream& s, const Poly_Gen_Relation& r); -2441: -2441: public: -2441: -2441: -2441: -2441: -2441: -2441: -2441: flags_t get_flags() const; -2441: -2441: public: -2441: -2441: static Poly_Gen_Relation nothing(); -2441: -2441: -2441: static Poly_Gen_Relation subsumes(); -2441: -2441: void ascii_dump() const; void ascii_dump(std::ostream& s) const; void print() const; -2441: -2441: -2441: bool implies(const Poly_Gen_Relation& y) const; -2441: -2441: -2441: bool OK() const; -2441: }; -2441: -2441: # 1 "../../src/Poly_Gen_Relation_inlines.hh" 1 -2441: # 27 "../../src/Poly_Gen_Relation_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: inline -2441: Poly_Gen_Relation::Poly_Gen_Relation(flags_t mask) -2441: : flags(mask) { -2441: } -2441: -2441: inline Poly_Gen_Relation::flags_t -2441: Poly_Gen_Relation::get_flags() const { -2441: return flags; -2441: } -2441: -2441: inline Poly_Gen_Relation -2441: Poly_Gen_Relation::nothing() { -2441: return Poly_Gen_Relation(NOTHING); -2441: } -2441: -2441: inline Poly_Gen_Relation -2441: Poly_Gen_Relation::subsumes() { -2441: return Poly_Gen_Relation(SUBSUMES); -2441: } -2441: -2441: inline bool -2441: Poly_Gen_Relation::implies(flags_t x, flags_t y) { -2441: return (x & y) == y; -2441: } -2441: -2441: inline bool -2441: Poly_Gen_Relation::implies(const Poly_Gen_Relation& y) const { -2441: return implies(flags, y.flags); -2441: } -2441: -2441: -2441: inline bool -2441: operator==(const Poly_Gen_Relation& x, const Poly_Gen_Relation& y) { -2441: return x.flags == y.flags; -2441: } -2441: -2441: -2441: inline bool -2441: operator!=(const Poly_Gen_Relation& x, const Poly_Gen_Relation& y) { -2441: return x.flags != y.flags; -2441: } -2441: -2441: -2441: inline Poly_Gen_Relation -2441: operator&&(const Poly_Gen_Relation& x, const Poly_Gen_Relation& y) { -2441: return Poly_Gen_Relation(x.flags | y.flags); -2441: } -2441: -2441: -2441: inline Poly_Gen_Relation -2441: operator-(const Poly_Gen_Relation& x, const Poly_Gen_Relation& y) { -2441: return Poly_Gen_Relation(x.flags & ~y.flags); -2441: } -2441: -2441: } -2441: # 138 "../../src/Poly_Gen_Relation_defs.hh" 2 -2441: # 34 "../../src/Box_templates.hh" 2 -2441: # 1 "../../src/Polyhedron_defs.hh" 1 -2441: # 45 "../../src/Polyhedron_defs.hh" -2441: # 1 "../../src/H79_Certificate_types.hh" 1 -2441: # 16 "../../src/H79_Certificate_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: class H79_Certificate; -2441: -2441: } -2441: # 46 "../../src/Polyhedron_defs.hh" 2 -2441: # 54 "../../src/Polyhedron_defs.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: namespace IO_Operators { -2441: # 67 "../../src/Polyhedron_defs.hh" -2441: std::ostream& -2441: operator<<(std::ostream& s, const Polyhedron& ph); -2441: -2441: } -2441: -2441: -2441: -2441: void swap(Polyhedron& x, Polyhedron& y); -2441: # 84 "../../src/Polyhedron_defs.hh" -2441: bool operator==(const Polyhedron& x, const Polyhedron& y); -2441: # 94 "../../src/Polyhedron_defs.hh" -2441: bool operator!=(const Polyhedron& x, const Polyhedron& y); -2441: -2441: namespace Interfaces { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool is_necessarily_closed_for_interfaces(const Polyhedron& ph); -2441: -2441: } -2441: -2441: } -2441: # 369 "../../src/Polyhedron_defs.hh" -2441: class Parma_Polyhedra_Library::Polyhedron { -2441: public: -2441: -2441: typedef Coefficient coefficient_type; -2441: -2441: -2441: static dimension_type max_space_dimension(); -2441: -2441: -2441: -2441: -2441: -2441: static bool can_recycle_constraint_systems(); -2441: -2441: -2441: static void initialize(); -2441: -2441: -2441: static void finalize(); -2441: -2441: -2441: -2441: -2441: static bool can_recycle_congruence_systems(); -2441: -2441: protected: -2441: # 406 "../../src/Polyhedron_defs.hh" -2441: Polyhedron(Topology topol, -2441: dimension_type num_dimensions, -2441: Degenerate_Element kind); -2441: -2441: -2441: -2441: -2441: -2441: Polyhedron(const Polyhedron& y, -2441: Complexity_Class complexity = ANY_COMPLEXITY); -2441: # 430 "../../src/Polyhedron_defs.hh" -2441: Polyhedron(Topology topol, const Constraint_System& cs); -2441: # 451 "../../src/Polyhedron_defs.hh" -2441: Polyhedron(Topology topol, Constraint_System& cs, Recycle_Input dummy); -2441: # 467 "../../src/Polyhedron_defs.hh" -2441: Polyhedron(Topology topol, const Generator_System& gs); -2441: # 489 "../../src/Polyhedron_defs.hh" -2441: Polyhedron(Topology topol, Generator_System& gs, Recycle_Input dummy); -2441: # 505 "../../src/Polyhedron_defs.hh" -2441: template -2441: Polyhedron(Topology topol, const Box& box, -2441: Complexity_Class complexity = ANY_COMPLEXITY); -2441: -2441: -2441: -2441: -2441: -2441: Polyhedron& operator=(const Polyhedron& y); -2441: -2441: public: -2441: -2441: -2441: -2441: -2441: dimension_type space_dimension() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: dimension_type affine_dimension() const; -2441: -2441: -2441: const Constraint_System& constraints() const; -2441: -2441: -2441: const Constraint_System& minimized_constraints() const; -2441: -2441: -2441: const Generator_System& generators() const; -2441: -2441: -2441: const Generator_System& minimized_generators() const; -2441: -2441: -2441: Congruence_System congruences() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: Congruence_System minimized_congruences() const; -2441: # 558 "../../src/Polyhedron_defs.hh" -2441: Poly_Con_Relation relation_with(const Constraint& c) const; -2441: # 567 "../../src/Polyhedron_defs.hh" -2441: Poly_Gen_Relation relation_with(const Generator& g) const; -2441: # 576 "../../src/Polyhedron_defs.hh" -2441: Poly_Con_Relation relation_with(const Congruence& cg) const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_empty() const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_universe() const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_topologically_closed() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool is_disjoint_from(const Polyhedron& y) const; -2441: -2441: -2441: bool is_discrete() const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_bounded() const; -2441: -2441: -2441: -2441: -2441: -2441: bool contains_integer_point() const; -2441: # 626 "../../src/Polyhedron_defs.hh" -2441: bool constrains(Variable var) const; -2441: # 635 "../../src/Polyhedron_defs.hh" -2441: bool bounds_from_above(const Linear_Expression& expr) const; -2441: # 644 "../../src/Polyhedron_defs.hh" -2441: bool bounds_from_below(const Linear_Expression& expr) const; -2441: # 670 "../../src/Polyhedron_defs.hh" -2441: bool maximize(const Linear_Expression& expr, -2441: Coefficient& sup_n, Coefficient& sup_d, bool& maximum) const; -2441: # 701 "../../src/Polyhedron_defs.hh" -2441: bool maximize(const Linear_Expression& expr, -2441: Coefficient& sup_n, Coefficient& sup_d, bool& maximum, -2441: Generator& g) const; -2441: # 729 "../../src/Polyhedron_defs.hh" -2441: bool minimize(const Linear_Expression& expr, -2441: Coefficient& inf_n, Coefficient& inf_d, bool& minimum) const; -2441: # 760 "../../src/Polyhedron_defs.hh" -2441: bool minimize(const Linear_Expression& expr, -2441: Coefficient& inf_n, Coefficient& inf_d, bool& minimum, -2441: Generator& g) const; -2441: # 792 "../../src/Polyhedron_defs.hh" -2441: bool frequency(const Linear_Expression& expr, -2441: Coefficient& freq_n, Coefficient& freq_d, -2441: Coefficient& val_n, Coefficient& val_d) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool contains(const Polyhedron& y) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool strictly_contains(const Polyhedron& y) const; -2441: # 829 "../../src/Polyhedron_defs.hh" -2441: bool OK(bool check_not_empty = false) const; -2441: # 848 "../../src/Polyhedron_defs.hh" -2441: void add_constraint(const Constraint& c); -2441: # 859 "../../src/Polyhedron_defs.hh" -2441: void add_generator(const Generator& g); -2441: # 870 "../../src/Polyhedron_defs.hh" -2441: void add_congruence(const Congruence& cg); -2441: # 884 "../../src/Polyhedron_defs.hh" -2441: void add_constraints(const Constraint_System& cs); -2441: # 902 "../../src/Polyhedron_defs.hh" -2441: void add_recycled_constraints(Constraint_System& cs); -2441: # 917 "../../src/Polyhedron_defs.hh" -2441: void add_generators(const Generator_System& gs); -2441: # 936 "../../src/Polyhedron_defs.hh" -2441: void add_recycled_generators(Generator_System& gs); -2441: # 950 "../../src/Polyhedron_defs.hh" -2441: void add_congruences(const Congruence_System& cgs); -2441: # 968 "../../src/Polyhedron_defs.hh" -2441: void add_recycled_congruences(Congruence_System& cgs); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void refine_with_constraint(const Constraint& c); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void refine_with_congruence(const Congruence& cg); -2441: # 996 "../../src/Polyhedron_defs.hh" -2441: void refine_with_constraints(const Constraint_System& cs); -2441: # 1008 "../../src/Polyhedron_defs.hh" -2441: void refine_with_congruences(const Congruence_System& cgs); -2441: # 1035 "../../src/Polyhedron_defs.hh" -2441: template -2441: void refine_with_linear_form_inequality( -2441: const Linear_Form< Interval >& left, -2441: const Linear_Form< Interval >& right, -2441: bool is_strict = false); -2441: # 1069 "../../src/Polyhedron_defs.hh" -2441: template -2441: void generalized_refine_with_linear_form_inequality( -2441: const Linear_Form< Interval >& left, -2441: const Linear_Form< Interval >& right, -2441: Relation_Symbol relsym); -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: void refine_fp_interval_abstract_store( -2441: Box< Interval >& store) -2441: const; -2441: # 1095 "../../src/Polyhedron_defs.hh" -2441: void unconstrain(Variable var); -2441: # 1109 "../../src/Polyhedron_defs.hh" -2441: void unconstrain(const Variables_Set& vars); -2441: # 1118 "../../src/Polyhedron_defs.hh" -2441: void intersection_assign(const Polyhedron& y); -2441: # 1127 "../../src/Polyhedron_defs.hh" -2441: void poly_hull_assign(const Polyhedron& y); -2441: -2441: -2441: void upper_bound_assign(const Polyhedron& y); -2441: # 1141 "../../src/Polyhedron_defs.hh" -2441: void poly_difference_assign(const Polyhedron& y); -2441: -2441: -2441: void difference_assign(const Polyhedron& y); -2441: # 1155 "../../src/Polyhedron_defs.hh" -2441: bool simplify_using_context_assign(const Polyhedron& y); -2441: # 1246 "../../src/Polyhedron_defs.hh" -2441: void affine_image(Variable var, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference denominator -2441: = Coefficient_one()); -2441: # 1273 "../../src/Polyhedron_defs.hh" -2441: template -2441: void affine_form_image(Variable var, -2441: const Linear_Form >& lf); -2441: # 1364 "../../src/Polyhedron_defs.hh" -2441: void affine_preimage(Variable var, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference denominator -2441: = Coefficient_one()); -2441: # 1395 "../../src/Polyhedron_defs.hh" -2441: void generalized_affine_image(Variable var, -2441: Relation_Symbol relsym, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference denominator -2441: = Coefficient_one()); -2441: # 1427 "../../src/Polyhedron_defs.hh" -2441: void -2441: generalized_affine_preimage(Variable var, -2441: Relation_Symbol relsym, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference denominator -2441: = Coefficient_one()); -2441: # 1454 "../../src/Polyhedron_defs.hh" -2441: void generalized_affine_image(const Linear_Expression& lhs, -2441: Relation_Symbol relsym, -2441: const Linear_Expression& rhs); -2441: # 1478 "../../src/Polyhedron_defs.hh" -2441: void generalized_affine_preimage(const Linear_Expression& lhs, -2441: Relation_Symbol relsym, -2441: const Linear_Expression& rhs); -2441: # 1508 "../../src/Polyhedron_defs.hh" -2441: void bounded_affine_image(Variable var, -2441: const Linear_Expression& lb_expr, -2441: const Linear_Expression& ub_expr, -2441: Coefficient_traits::const_reference denominator -2441: = Coefficient_one()); -2441: # 1540 "../../src/Polyhedron_defs.hh" -2441: void bounded_affine_preimage(Variable var, -2441: const Linear_Expression& lb_expr, -2441: const Linear_Expression& ub_expr, -2441: Coefficient_traits::const_reference denominator -2441: = Coefficient_one()); -2441: # 1554 "../../src/Polyhedron_defs.hh" -2441: void time_elapse_assign(const Polyhedron& y); -2441: # 1565 "../../src/Polyhedron_defs.hh" -2441: void positive_time_elapse_assign(const Polyhedron& y); -2441: # 1613 "../../src/Polyhedron_defs.hh" -2441: void wrap_assign(const Variables_Set& vars, -2441: Bounded_Integer_Type_Width w, -2441: Bounded_Integer_Type_Representation r, -2441: Bounded_Integer_Type_Overflow o, -2441: const Constraint_System* cs_p = 0, -2441: unsigned complexity_threshold = 16, -2441: bool wrap_individually = true); -2441: # 1632 "../../src/Polyhedron_defs.hh" -2441: void drop_some_non_integer_points(Complexity_Class complexity -2441: = ANY_COMPLEXITY); -2441: # 1650 "../../src/Polyhedron_defs.hh" -2441: void drop_some_non_integer_points(const Variables_Set& vars, -2441: Complexity_Class complexity -2441: = ANY_COMPLEXITY); -2441: -2441: -2441: void topological_closure_assign(); -2441: # 1673 "../../src/Polyhedron_defs.hh" -2441: void BHRZ03_widening_assign(const Polyhedron& y, unsigned* tp = 0); -2441: # 1696 "../../src/Polyhedron_defs.hh" -2441: void limited_BHRZ03_extrapolation_assign(const Polyhedron& y, -2441: const Constraint_System& cs, -2441: unsigned* tp = 0); -2441: # 1721 "../../src/Polyhedron_defs.hh" -2441: void bounded_BHRZ03_extrapolation_assign(const Polyhedron& y, -2441: const Constraint_System& cs, -2441: unsigned* tp = 0); -2441: # 1741 "../../src/Polyhedron_defs.hh" -2441: void H79_widening_assign(const Polyhedron& y, unsigned* tp = 0); -2441: -2441: -2441: void widening_assign(const Polyhedron& y, unsigned* tp = 0); -2441: # 1767 "../../src/Polyhedron_defs.hh" -2441: void limited_H79_extrapolation_assign(const Polyhedron& y, -2441: const Constraint_System& cs, -2441: unsigned* tp = 0); -2441: # 1792 "../../src/Polyhedron_defs.hh" -2441: void bounded_H79_extrapolation_assign(const Polyhedron& y, -2441: const Constraint_System& cs, -2441: unsigned* tp = 0); -2441: # 1826 "../../src/Polyhedron_defs.hh" -2441: void add_space_dimensions_and_embed(dimension_type m); -2441: # 1853 "../../src/Polyhedron_defs.hh" -2441: void add_space_dimensions_and_project(dimension_type m); -2441: # 1866 "../../src/Polyhedron_defs.hh" -2441: void concatenate_assign(const Polyhedron& y); -2441: # 1878 "../../src/Polyhedron_defs.hh" -2441: void remove_space_dimensions(const Variables_Set& vars); -2441: # 1888 "../../src/Polyhedron_defs.hh" -2441: void remove_higher_space_dimensions(dimension_type new_dimension); -2441: # 1930 "../../src/Polyhedron_defs.hh" -2441: template -2441: void map_space_dimensions(const Partial_Function& pfunc); -2441: # 1954 "../../src/Polyhedron_defs.hh" -2441: void expand_space_dimension(Variable var, dimension_type m); -2441: # 1979 "../../src/Polyhedron_defs.hh" -2441: void fold_space_dimensions(const Variables_Set& vars, Variable dest); -2441: -2441: -2441: -2441: friend bool operator==(const Polyhedron& x, const Polyhedron& y); -2441: -2441: -2441: -2441: -2441: -2441: ~Polyhedron(); -2441: # 1998 "../../src/Polyhedron_defs.hh" -2441: void m_swap(Polyhedron& y); -2441: -2441: void ascii_dump() const; void ascii_dump(std::ostream& s) const; void print() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool ascii_load(std::istream& s); -2441: -2441: -2441: memory_size_type total_memory_in_bytes() const; -2441: -2441: -2441: memory_size_type external_memory_in_bytes() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: int32_t hash_code() const; -2441: -2441: -2441: -2441: private: -2441: static const Representation default_con_sys_repr = DENSE; -2441: static const Representation default_gen_sys_repr = DENSE; -2441: -2441: -2441: Constraint_System con_sys; -2441: -2441: -2441: Generator_System gen_sys; -2441: -2441: -2441: Bit_Matrix sat_c; -2441: -2441: -2441: Bit_Matrix sat_g; -2441: -2441: -2441: # 1 "../../src/Ph_Status_idefs.hh" 1 -2441: # 86 "../../src/Ph_Status_idefs.hh" -2441: class Status { -2441: public: -2441: -2441: Status(); -2441: -2441: -2441: -2441: bool test_zero_dim_univ() const; -2441: void reset_zero_dim_univ(); -2441: void set_zero_dim_univ(); -2441: -2441: bool test_empty() const; -2441: void reset_empty(); -2441: void set_empty(); -2441: -2441: bool test_c_up_to_date() const; -2441: void reset_c_up_to_date(); -2441: void set_c_up_to_date(); -2441: -2441: bool test_g_up_to_date() const; -2441: void reset_g_up_to_date(); -2441: void set_g_up_to_date(); -2441: -2441: bool test_c_minimized() const; -2441: void reset_c_minimized(); -2441: void set_c_minimized(); -2441: -2441: bool test_g_minimized() const; -2441: void reset_g_minimized(); -2441: void set_g_minimized(); -2441: -2441: bool test_sat_c_up_to_date() const; -2441: void reset_sat_c_up_to_date(); -2441: void set_sat_c_up_to_date(); -2441: -2441: bool test_sat_g_up_to_date() const; -2441: void reset_sat_g_up_to_date(); -2441: void set_sat_g_up_to_date(); -2441: -2441: bool test_c_pending() const; -2441: void reset_c_pending(); -2441: void set_c_pending(); -2441: -2441: bool test_g_pending() const; -2441: void reset_g_pending(); -2441: void set_g_pending(); -2441: -2441: -2441: -2441: bool OK() const; -2441: -2441: void ascii_dump() const; void ascii_dump(std::ostream& s) const; void print() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool ascii_load(std::istream& s); -2441: -2441: private: -2441: -2441: typedef unsigned int flags_t; -2441: -2441: -2441: -2441: static const flags_t ZERO_DIM_UNIV = 0U; -2441: static const flags_t EMPTY = 1U << 0; -2441: static const flags_t C_UP_TO_DATE = 1U << 1; -2441: static const flags_t G_UP_TO_DATE = 1U << 2; -2441: static const flags_t C_MINIMIZED = 1U << 3; -2441: static const flags_t G_MINIMIZED = 1U << 4; -2441: static const flags_t SAT_C_UP_TO_DATE = 1U << 5; -2441: static const flags_t SAT_G_UP_TO_DATE = 1U << 6; -2441: static const flags_t CS_PENDING = 1U << 7; -2441: static const flags_t GS_PENDING = 1U << 8; -2441: -2441: -2441: -2441: flags_t flags; -2441: -2441: -2441: Status(flags_t mask); -2441: -2441: -2441: bool test_all(flags_t mask) const; -2441: -2441: -2441: bool test_any(flags_t mask) const; -2441: -2441: -2441: void set(flags_t mask); -2441: -2441: -2441: void reset(flags_t mask); -2441: }; -2441: # 2043 "../../src/Polyhedron_defs.hh" 2 -2441: -2441: -2441: -2441: Status status; -2441: -2441: -2441: dimension_type space_dim; -2441: -2441: -2441: Topology topology() const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_necessarily_closed() const; -2441: -2441: friend bool -2441: Parma_Polyhedra_Library::Interfaces -2441: ::is_necessarily_closed_for_interfaces(const Polyhedron&); -2441: # 2071 "../../src/Polyhedron_defs.hh" -2441: void refine_no_check(const Constraint& c); -2441: # 2081 "../../src/Polyhedron_defs.hh" -2441: bool marked_empty() const; -2441: -2441: -2441: bool constraints_are_up_to_date() const; -2441: -2441: -2441: bool generators_are_up_to_date() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool constraints_are_minimized() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool generators_are_minimized() const; -2441: -2441: -2441: bool has_pending_constraints() const; -2441: -2441: -2441: bool has_pending_generators() const; -2441: -2441: -2441: -2441: -2441: -2441: bool has_something_pending() const; -2441: -2441: -2441: bool can_have_something_pending() const; -2441: -2441: -2441: -2441: -2441: -2441: bool sat_c_is_up_to_date() const; -2441: -2441: -2441: -2441: -2441: -2441: bool sat_g_is_up_to_date() const; -2441: # 2139 "../../src/Polyhedron_defs.hh" -2441: void set_zero_dim_univ(); -2441: -2441: -2441: -2441: -2441: -2441: void set_empty(); -2441: -2441: -2441: void set_constraints_up_to_date(); -2441: -2441: -2441: void set_generators_up_to_date(); -2441: -2441: -2441: void set_constraints_minimized(); -2441: -2441: -2441: void set_generators_minimized(); -2441: -2441: -2441: void set_constraints_pending(); -2441: -2441: -2441: void set_generators_pending(); -2441: -2441: -2441: void set_sat_c_up_to_date(); -2441: -2441: -2441: void set_sat_g_up_to_date(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void clear_empty(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: void clear_constraints_up_to_date(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: void clear_generators_up_to_date(); -2441: -2441: -2441: void clear_constraints_minimized(); -2441: -2441: -2441: void clear_generators_minimized(); -2441: -2441: -2441: void clear_pending_constraints(); -2441: -2441: -2441: void clear_pending_generators(); -2441: -2441: -2441: void clear_sat_c_up_to_date(); -2441: -2441: -2441: void clear_sat_g_up_to_date(); -2441: # 2227 "../../src/Polyhedron_defs.hh" -2441: bool process_pending() const; -2441: # 2237 "../../src/Polyhedron_defs.hh" -2441: bool process_pending_constraints() const; -2441: -2441: -2441: -2441: -2441: -2441: void process_pending_generators() const; -2441: # 2252 "../../src/Polyhedron_defs.hh" -2441: void remove_pending_to_obtain_constraints() const; -2441: # 2265 "../../src/Polyhedron_defs.hh" -2441: bool remove_pending_to_obtain_generators() const; -2441: # 2278 "../../src/Polyhedron_defs.hh" -2441: void update_constraints() const; -2441: # 2292 "../../src/Polyhedron_defs.hh" -2441: bool update_generators() const; -2441: # 2309 "../../src/Polyhedron_defs.hh" -2441: void update_sat_c() const; -2441: # 2326 "../../src/Polyhedron_defs.hh" -2441: void update_sat_g() const; -2441: # 2338 "../../src/Polyhedron_defs.hh" -2441: void obtain_sorted_constraints() const; -2441: # 2350 "../../src/Polyhedron_defs.hh" -2441: void obtain_sorted_generators() const; -2441: # 2360 "../../src/Polyhedron_defs.hh" -2441: void obtain_sorted_constraints_with_sat_c() const; -2441: # 2370 "../../src/Polyhedron_defs.hh" -2441: void obtain_sorted_generators_with_sat_g() const; -2441: # 2386 "../../src/Polyhedron_defs.hh" -2441: bool minimize() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool strongly_minimize_constraints() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool strongly_minimize_generators() const; -2441: -2441: -2441: Constraint_System simplified_constraints() const; -2441: -2441: -2441: -2441: enum Three_Valued_Boolean { -2441: TVB_TRUE, -2441: TVB_FALSE, -2441: TVB_DONT_KNOW -2441: }; -2441: -2441: -2441: Three_Valued_Boolean quick_equivalence_test(const Polyhedron& y) const; -2441: -2441: -2441: bool is_included_in(const Polyhedron& y) const; -2441: # 2438 "../../src/Polyhedron_defs.hh" -2441: bool bounds(const Linear_Expression& expr, bool from_above) const; -2441: # 2471 "../../src/Polyhedron_defs.hh" -2441: bool max_min(const Linear_Expression& expr, -2441: bool maximize, -2441: Coefficient& ext_n, Coefficient& ext_d, bool& included, -2441: Generator& g) const; -2441: # 2483 "../../src/Polyhedron_defs.hh" -2441: void select_CH78_constraints(const Polyhedron& y, -2441: Constraint_System& cs_selection) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: void select_H79_constraints(const Polyhedron& y, -2441: Constraint_System& cs_selected, -2441: Constraint_System& cs_not_selected) const; -2441: -2441: bool BHRZ03_combining_constraints(const Polyhedron& y, -2441: const BHRZ03_Certificate& y_cert, -2441: const Polyhedron& H79, -2441: const Constraint_System& x_minus_H79_cs); -2441: -2441: bool BHRZ03_evolving_points(const Polyhedron& y, -2441: const BHRZ03_Certificate& y_cert, -2441: const Polyhedron& H79); -2441: -2441: bool BHRZ03_evolving_rays(const Polyhedron& y, -2441: const BHRZ03_Certificate& y_cert, -2441: const Polyhedron& H79); -2441: -2441: static void modify_according_to_evolution(Linear_Expression& ray, -2441: const Linear_Expression& x, -2441: const Linear_Expression& y); -2441: # 2542 "../../src/Polyhedron_defs.hh" -2441: template -2441: static void add_space_dimensions(Linear_System1& sys1, -2441: Linear_System2& sys2, -2441: Bit_Matrix& sat1, -2441: Bit_Matrix& sat2, -2441: dimension_type add_dim); -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: static bool minimize(bool con_to_gen, -2441: Source_Linear_System& source, -2441: Dest_Linear_System& dest, -2441: Bit_Matrix& sat); -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: static bool add_and_minimize(bool con_to_gen, -2441: Source_Linear_System1& source1, -2441: Dest_Linear_System& dest, -2441: Bit_Matrix& sat, -2441: const Source_Linear_System2& source2); -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: static bool add_and_minimize(bool con_to_gen, -2441: Source_Linear_System& source, -2441: Dest_Linear_System& dest, -2441: Bit_Matrix& sat); -2441: -2441: -2441: -2441: template -2441: static dimension_type conversion(Source_Linear_System& source, -2441: dimension_type start, -2441: Dest_Linear_System& dest, -2441: Bit_Matrix& sat, -2441: dimension_type num_lines_or_equalities); -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: static dimension_type simplify(Linear_System1& sys, Bit_Matrix& sat); -2441: # 2610 "../../src/Polyhedron_defs.hh" -2441: static dimension_type* simplify_num_saturators_p; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: static size_t simplify_num_saturators_size; -2441: -2441: template friend class Parma_Polyhedra_Library::Box; -2441: template friend class Parma_Polyhedra_Library::BD_Shape; -2441: template friend class Parma_Polyhedra_Library::Octagonal_Shape; -2441: friend class Parma_Polyhedra_Library::Grid; -2441: friend class Parma_Polyhedra_Library::BHRZ03_Certificate; -2441: friend class Parma_Polyhedra_Library::H79_Certificate; -2441: -2441: protected: -2441: # 2644 "../../src/Polyhedron_defs.hh" -2441: bool BFT00_poly_hull_assign_if_exact(const Polyhedron& y); -2441: -2441: bool BHZ09_poly_hull_assign_if_exact(const Polyhedron& y); -2441: bool BHZ09_C_poly_hull_assign_if_exact(const Polyhedron& y); -2441: bool BHZ09_NNC_poly_hull_assign_if_exact(const Polyhedron& y); -2441: -2441: -2441: -2441: -2441: -2441: protected: -2441: void throw_invalid_argument(const char* method, const char* reason) const; -2441: -2441: void throw_topology_incompatible(const char* method, -2441: const char* ph_name, -2441: const Polyhedron& ph) const; -2441: void throw_topology_incompatible(const char* method, -2441: const char* c_name, -2441: const Constraint& c) const; -2441: void throw_topology_incompatible(const char* method, -2441: const char* g_name, -2441: const Generator& g) const; -2441: void throw_topology_incompatible(const char* method, -2441: const char* cs_name, -2441: const Constraint_System& cs) const; -2441: void throw_topology_incompatible(const char* method, -2441: const char* gs_name, -2441: const Generator_System& gs) const; -2441: -2441: void throw_dimension_incompatible(const char* method, -2441: const char* other_name, -2441: dimension_type other_dim) const; -2441: void throw_dimension_incompatible(const char* method, -2441: const char* ph_name, -2441: const Polyhedron& ph) const; -2441: void throw_dimension_incompatible(const char* method, -2441: const char* le_name, -2441: const Linear_Expression& le) const; -2441: void throw_dimension_incompatible(const char* method, -2441: const char* c_name, -2441: const Constraint& c) const; -2441: void throw_dimension_incompatible(const char* method, -2441: const char* g_name, -2441: const Generator& g) const; -2441: void throw_dimension_incompatible(const char* method, -2441: const char* cg_name, -2441: const Congruence& cg) const; -2441: void throw_dimension_incompatible(const char* method, -2441: const char* cs_name, -2441: const Constraint_System& cs) const; -2441: void throw_dimension_incompatible(const char* method, -2441: const char* gs_name, -2441: const Generator_System& gs) const; -2441: void throw_dimension_incompatible(const char* method, -2441: const char* cgs_name, -2441: const Congruence_System& cgs) const; -2441: template -2441: void throw_dimension_incompatible(const char* method, -2441: const char* lf_name, -2441: const Linear_Form& lf) const; -2441: void throw_dimension_incompatible(const char* method, -2441: const char* var_name, -2441: Variable var) const; -2441: void throw_dimension_incompatible(const char* method, -2441: dimension_type required_space_dim) const; -2441: -2441: -2441: -2441: -2441: static dimension_type -2441: check_space_dimension_overflow(dimension_type dim, dimension_type max, -2441: const Topology topol, -2441: const char* method, const char* reason); -2441: -2441: static dimension_type -2441: check_space_dimension_overflow(dimension_type dim, const Topology topol, -2441: const char* method, const char* reason); -2441: -2441: template -2441: static Object& -2441: check_obj_space_dimension_overflow(Object& input, Topology topol, -2441: const char* method, const char* reason); -2441: -2441: void throw_invalid_generator(const char* method, -2441: const char* g_name) const; -2441: -2441: void throw_invalid_generators(const char* method, -2441: const char* gs_name) const; -2441: # 2751 "../../src/Polyhedron_defs.hh" -2441: void drop_some_non_integer_points(const Variables_Set* vars_p, -2441: Complexity_Class complexity); -2441: # 2772 "../../src/Polyhedron_defs.hh" -2441: template -2441: void overapproximate_linear_form( -2441: const Linear_Form >& lf, -2441: const dimension_type lf_dimension, -2441: Linear_Form >& result); -2441: # 2797 "../../src/Polyhedron_defs.hh" -2441: template -2441: static void convert_to_integer_expression( -2441: const Linear_Form >& lf, -2441: const dimension_type lf_dimension, -2441: Linear_Expression& result); -2441: # 2829 "../../src/Polyhedron_defs.hh" -2441: template -2441: static void -2441: convert_to_integer_expressions(const Linear_Form >& -2441: lf, -2441: const dimension_type lf_dimension, -2441: Linear_Expression& res, -2441: Coefficient& res_low_coeff, -2441: Coefficient& res_hi_coeff, -2441: Coefficient& denominator); -2441: -2441: template -2441: static bool -2441: add_to_system_and_check_independence(Linear_System1& eq_sys, -2441: const Row2& eq); -2441: # 2852 "../../src/Polyhedron_defs.hh" -2441: void positive_time_elapse_assign_impl(const Polyhedron& y); -2441: }; -2441: -2441: # 1 "../../src/Ph_Status_inlines.hh" 1 -2441: # 27 "../../src/Ph_Status_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: inline -2441: Polyhedron::Status::Status(flags_t mask) -2441: : flags(mask) { -2441: } -2441: -2441: inline -2441: Polyhedron::Status::Status() -2441: : flags(ZERO_DIM_UNIV) { -2441: } -2441: -2441: inline bool -2441: Polyhedron::Status::test_all(flags_t mask) const { -2441: return (flags & mask) == mask; -2441: } -2441: -2441: inline bool -2441: Polyhedron::Status::test_any(flags_t mask) const { -2441: return (flags & mask) != 0; -2441: } -2441: -2441: inline void -2441: Polyhedron::Status::set(flags_t mask) { -2441: flags |= mask; -2441: } -2441: -2441: inline void -2441: Polyhedron::Status::reset(flags_t mask) { -2441: flags &= ~mask; -2441: } -2441: -2441: inline bool -2441: Polyhedron::Status::test_zero_dim_univ() const { -2441: return flags == ZERO_DIM_UNIV; -2441: } -2441: -2441: inline void -2441: Polyhedron::Status::reset_zero_dim_univ() { -2441: -2441: if (flags == ZERO_DIM_UNIV) { -2441: -2441: flags = EMPTY; -2441: } -2441: } -2441: -2441: inline void -2441: Polyhedron::Status::set_zero_dim_univ() { -2441: -2441: flags = ZERO_DIM_UNIV; -2441: } -2441: -2441: inline bool -2441: Polyhedron::Status::test_empty() const { -2441: return test_any(EMPTY); -2441: } -2441: -2441: inline void -2441: Polyhedron::Status::reset_empty() { -2441: reset(EMPTY); -2441: } -2441: -2441: inline void -2441: Polyhedron::Status::set_empty() { -2441: flags = EMPTY; -2441: } -2441: -2441: inline bool -2441: Polyhedron::Status::test_c_up_to_date() const { -2441: return test_any(C_UP_TO_DATE); -2441: } -2441: -2441: inline void -2441: Polyhedron::Status::reset_c_up_to_date() { -2441: reset(C_UP_TO_DATE); -2441: } -2441: -2441: inline void -2441: Polyhedron::Status::set_c_up_to_date() { -2441: set(C_UP_TO_DATE); -2441: } -2441: -2441: inline bool -2441: Polyhedron::Status::test_g_up_to_date() const { -2441: return test_any(G_UP_TO_DATE); -2441: } -2441: -2441: inline void -2441: Polyhedron::Status::reset_g_up_to_date() { -2441: reset(G_UP_TO_DATE); -2441: } -2441: -2441: inline void -2441: Polyhedron::Status::set_g_up_to_date() { -2441: set(G_UP_TO_DATE); -2441: } -2441: -2441: inline bool -2441: Polyhedron::Status::test_c_minimized() const { -2441: return test_any(C_MINIMIZED); -2441: } -2441: -2441: inline void -2441: Polyhedron::Status::reset_c_minimized() { -2441: reset(C_MINIMIZED); -2441: } -2441: -2441: inline void -2441: Polyhedron::Status::set_c_minimized() { -2441: set(C_MINIMIZED); -2441: } -2441: -2441: inline bool -2441: Polyhedron::Status::test_g_minimized() const { -2441: return test_any(G_MINIMIZED); -2441: } -2441: -2441: inline void -2441: Polyhedron::Status::reset_g_minimized() { -2441: reset(G_MINIMIZED); -2441: } -2441: -2441: inline void -2441: Polyhedron::Status::set_g_minimized() { -2441: set(G_MINIMIZED); -2441: } -2441: -2441: -2441: inline bool -2441: Polyhedron::Status::test_c_pending() const { -2441: return test_any(CS_PENDING); -2441: } -2441: -2441: inline void -2441: Polyhedron::Status::reset_c_pending() { -2441: reset(CS_PENDING); -2441: } -2441: -2441: inline void -2441: Polyhedron::Status::set_c_pending() { -2441: set(CS_PENDING); -2441: } -2441: -2441: inline bool -2441: Polyhedron::Status::test_g_pending() const { -2441: return test_any(GS_PENDING); -2441: } -2441: -2441: inline void -2441: Polyhedron::Status::reset_g_pending() { -2441: reset(GS_PENDING); -2441: } -2441: -2441: inline void -2441: Polyhedron::Status::set_g_pending() { -2441: set(GS_PENDING); -2441: } -2441: -2441: -2441: inline bool -2441: Polyhedron::Status::test_sat_c_up_to_date() const { -2441: return test_any(SAT_C_UP_TO_DATE); -2441: } -2441: -2441: inline void -2441: Polyhedron::Status::reset_sat_c_up_to_date() { -2441: reset(SAT_C_UP_TO_DATE); -2441: } -2441: -2441: inline void -2441: Polyhedron::Status::set_sat_c_up_to_date() { -2441: set(SAT_C_UP_TO_DATE); -2441: } -2441: -2441: inline bool -2441: Polyhedron::Status::test_sat_g_up_to_date() const { -2441: return test_any(SAT_G_UP_TO_DATE); -2441: } -2441: -2441: inline void -2441: Polyhedron::Status::reset_sat_g_up_to_date() { -2441: reset(SAT_G_UP_TO_DATE); -2441: } -2441: -2441: inline void -2441: Polyhedron::Status::set_sat_g_up_to_date() { -2441: set(SAT_G_UP_TO_DATE); -2441: } -2441: -2441: } -2441: # 2856 "../../src/Polyhedron_defs.hh" 2 -2441: # 1 "../../src/Polyhedron_inlines.hh" 1 -2441: # 32 "../../src/Polyhedron_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: inline memory_size_type -2441: Polyhedron::total_memory_in_bytes() const { -2441: return sizeof(*this) + external_memory_in_bytes(); -2441: } -2441: -2441: inline dimension_type -2441: Polyhedron::space_dimension() const { -2441: return space_dim; -2441: } -2441: -2441: inline int32_t -2441: Polyhedron::hash_code() const { -2441: return hash_code_from_dimension(space_dimension()); -2441: } -2441: -2441: inline dimension_type -2441: Polyhedron::max_space_dimension() { -2441: using std::min; -2441: -2441: -2441: return min(std::numeric_limits::max() - 1, -2441: min(Constraint_System::max_space_dimension(), -2441: Generator_System::max_space_dimension() -2441: ) -2441: ); -2441: } -2441: -2441: inline Topology -2441: Polyhedron::topology() const { -2441: -2441: -2441: return con_sys.topology(); -2441: } -2441: -2441: inline bool -2441: Polyhedron::is_discrete() const { -2441: return affine_dimension() == 0; -2441: } -2441: -2441: inline bool -2441: Polyhedron::is_necessarily_closed() const { -2441: -2441: -2441: return con_sys.is_necessarily_closed(); -2441: } -2441: -2441: inline void -2441: Polyhedron::upper_bound_assign(const Polyhedron& y) { -2441: poly_hull_assign(y); -2441: } -2441: -2441: inline void -2441: Polyhedron::difference_assign(const Polyhedron& y) { -2441: poly_difference_assign(y); -2441: } -2441: -2441: inline void -2441: Polyhedron::widening_assign(const Polyhedron& y, unsigned* tp) { -2441: H79_widening_assign(y, tp); -2441: } -2441: -2441: inline -2441: Polyhedron::~Polyhedron() { -2441: } -2441: -2441: inline void -2441: Polyhedron::m_swap(Polyhedron& y) { -2441: if (topology() != y.topology()) { -2441: throw_topology_incompatible("swap(y)", "y", y); -2441: } -2441: using std::swap; -2441: swap(con_sys, y.con_sys); -2441: swap(gen_sys, y.gen_sys); -2441: swap(sat_c, y.sat_c); -2441: swap(sat_g, y.sat_g); -2441: swap(status, y.status); -2441: swap(space_dim, y.space_dim); -2441: } -2441: -2441: -2441: inline void -2441: swap(Polyhedron& x, Polyhedron& y) { -2441: x.m_swap(y); -2441: } -2441: -2441: inline bool -2441: Polyhedron::can_recycle_constraint_systems() { -2441: return true; -2441: } -2441: -2441: inline bool -2441: Polyhedron::can_recycle_congruence_systems() { -2441: return false; -2441: } -2441: -2441: inline bool -2441: Polyhedron::marked_empty() const { -2441: return status.test_empty(); -2441: } -2441: -2441: inline bool -2441: Polyhedron::constraints_are_up_to_date() const { -2441: return status.test_c_up_to_date(); -2441: } -2441: -2441: inline bool -2441: Polyhedron::generators_are_up_to_date() const { -2441: return status.test_g_up_to_date(); -2441: } -2441: -2441: inline bool -2441: Polyhedron::constraints_are_minimized() const { -2441: return status.test_c_minimized(); -2441: } -2441: -2441: inline bool -2441: Polyhedron::generators_are_minimized() const { -2441: return status.test_g_minimized(); -2441: } -2441: -2441: inline bool -2441: Polyhedron::sat_c_is_up_to_date() const { -2441: return status.test_sat_c_up_to_date(); -2441: } -2441: -2441: inline bool -2441: Polyhedron::sat_g_is_up_to_date() const { -2441: return status.test_sat_g_up_to_date(); -2441: } -2441: -2441: inline bool -2441: Polyhedron::has_pending_constraints() const { -2441: return status.test_c_pending(); -2441: } -2441: -2441: inline bool -2441: Polyhedron::has_pending_generators() const { -2441: return status.test_g_pending(); -2441: } -2441: -2441: inline bool -2441: Polyhedron::has_something_pending() const { -2441: return status.test_c_pending() || status.test_g_pending(); -2441: } -2441: -2441: inline bool -2441: Polyhedron::can_have_something_pending() const { -2441: return constraints_are_minimized() -2441: && generators_are_minimized() -2441: && (sat_c_is_up_to_date() || sat_g_is_up_to_date()); -2441: } -2441: -2441: inline bool -2441: Polyhedron::is_empty() const { -2441: if (marked_empty()) { -2441: return true; -2441: } -2441: -2441: -2441: -2441: if (generators_are_up_to_date() && !has_pending_constraints()) { -2441: return false; -2441: } -2441: return !minimize(); -2441: } -2441: -2441: inline void -2441: Polyhedron::set_constraints_up_to_date() { -2441: status.set_c_up_to_date(); -2441: } -2441: -2441: inline void -2441: Polyhedron::set_generators_up_to_date() { -2441: status.set_g_up_to_date(); -2441: } -2441: -2441: inline void -2441: Polyhedron::set_constraints_minimized() { -2441: set_constraints_up_to_date(); -2441: status.set_c_minimized(); -2441: } -2441: -2441: inline void -2441: Polyhedron::set_generators_minimized() { -2441: set_generators_up_to_date(); -2441: status.set_g_minimized(); -2441: } -2441: -2441: inline void -2441: Polyhedron::set_constraints_pending() { -2441: status.set_c_pending(); -2441: } -2441: -2441: inline void -2441: Polyhedron::set_generators_pending() { -2441: status.set_g_pending(); -2441: } -2441: -2441: inline void -2441: Polyhedron::set_sat_c_up_to_date() { -2441: status.set_sat_c_up_to_date(); -2441: } -2441: -2441: inline void -2441: Polyhedron::set_sat_g_up_to_date() { -2441: status.set_sat_g_up_to_date(); -2441: } -2441: -2441: inline void -2441: Polyhedron::clear_empty() { -2441: status.reset_empty(); -2441: } -2441: -2441: inline void -2441: Polyhedron::clear_constraints_minimized() { -2441: status.reset_c_minimized(); -2441: } -2441: -2441: inline void -2441: Polyhedron::clear_generators_minimized() { -2441: status.reset_g_minimized(); -2441: } -2441: -2441: inline void -2441: Polyhedron::clear_pending_constraints() { -2441: status.reset_c_pending(); -2441: } -2441: -2441: inline void -2441: Polyhedron::clear_pending_generators() { -2441: status.reset_g_pending(); -2441: } -2441: -2441: inline void -2441: Polyhedron::clear_sat_c_up_to_date() { -2441: status.reset_sat_c_up_to_date(); -2441: -2441: } -2441: -2441: inline void -2441: Polyhedron::clear_sat_g_up_to_date() { -2441: status.reset_sat_g_up_to_date(); -2441: -2441: } -2441: -2441: inline void -2441: Polyhedron::clear_constraints_up_to_date() { -2441: clear_pending_constraints(); -2441: clear_constraints_minimized(); -2441: clear_sat_c_up_to_date(); -2441: clear_sat_g_up_to_date(); -2441: status.reset_c_up_to_date(); -2441: -2441: } -2441: -2441: inline void -2441: Polyhedron::clear_generators_up_to_date() { -2441: clear_pending_generators(); -2441: clear_generators_minimized(); -2441: clear_sat_c_up_to_date(); -2441: clear_sat_g_up_to_date(); -2441: status.reset_g_up_to_date(); -2441: -2441: } -2441: -2441: inline bool -2441: Polyhedron::process_pending() const { -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: if (has_pending_constraints()) { -2441: return process_pending_constraints(); -2441: } -2441: -2441: ((void) 0); -2441: process_pending_generators(); -2441: return true; -2441: } -2441: -2441: inline bool -2441: Polyhedron::bounds_from_above(const Linear_Expression& expr) const { -2441: return bounds(expr, true); -2441: } -2441: -2441: inline bool -2441: Polyhedron::bounds_from_below(const Linear_Expression& expr) const { -2441: return bounds(expr, false); -2441: } -2441: -2441: inline bool -2441: Polyhedron::maximize(const Linear_Expression& expr, -2441: Coefficient& sup_n, Coefficient& sup_d, -2441: bool& maximum) const { -2441: Generator g(point()); -2441: return max_min(expr, true, sup_n, sup_d, maximum, g); -2441: } -2441: -2441: inline bool -2441: Polyhedron::maximize(const Linear_Expression& expr, -2441: Coefficient& sup_n, Coefficient& sup_d, bool& maximum, -2441: Generator& g) const { -2441: return max_min(expr, true, sup_n, sup_d, maximum, g); -2441: } -2441: -2441: inline bool -2441: Polyhedron::minimize(const Linear_Expression& expr, -2441: Coefficient& inf_n, Coefficient& inf_d, -2441: bool& minimum) const { -2441: Generator g(point()); -2441: return max_min(expr, false, inf_n, inf_d, minimum, g); -2441: } -2441: -2441: inline bool -2441: Polyhedron::minimize(const Linear_Expression& expr, -2441: Coefficient& inf_n, Coefficient& inf_d, bool& minimum, -2441: Generator& g) const { -2441: return max_min(expr, false, inf_n, inf_d, minimum, g); -2441: } -2441: -2441: inline Constraint_System -2441: Polyhedron::simplified_constraints() const { -2441: ((void) 0); -2441: Constraint_System cs(con_sys); -2441: if (cs.num_pending_rows() > 0) { -2441: cs.unset_pending_rows(); -2441: } -2441: if (has_pending_constraints() || !constraints_are_minimized()) { -2441: cs.simplify(); -2441: } -2441: return cs; -2441: } -2441: -2441: inline Congruence_System -2441: Polyhedron::congruences() const { -2441: return Congruence_System(minimized_constraints()); -2441: } -2441: -2441: inline Congruence_System -2441: Polyhedron::minimized_congruences() const { -2441: return Congruence_System(minimized_constraints()); -2441: } -2441: -2441: inline void -2441: Polyhedron::add_recycled_congruences(Congruence_System& cgs) { -2441: add_congruences(cgs); -2441: } -2441: -2441: template -2441: inline void -2441: Polyhedron::generalized_refine_with_linear_form_inequality( -2441: const Linear_Form< Interval >& left, -2441: const Linear_Form< Interval >& right, -2441: const Relation_Symbol relsym) { -2441: switch (relsym) { -2441: case EQUAL: -2441: -2441: refine_with_linear_form_inequality(left, right, false); -2441: refine_with_linear_form_inequality(right, left, false); -2441: break; -2441: case LESS_THAN: -2441: refine_with_linear_form_inequality(left, right, true); -2441: break; -2441: case LESS_OR_EQUAL: -2441: refine_with_linear_form_inequality(left, right, false); -2441: break; -2441: case GREATER_THAN: -2441: refine_with_linear_form_inequality(right, left, true); -2441: break; -2441: case GREATER_OR_EQUAL: -2441: refine_with_linear_form_inequality(right, left, false); -2441: break; -2441: case NOT_EQUAL: -2441: break; -2441: default: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: } -2441: -2441: template -2441: inline void -2441: Polyhedron:: -2441: refine_fp_interval_abstract_store( -2441: Box< Interval >& store) const { -2441: -2441: -2441: enum anonymous_enum_compile_time_check___LINE__ { compile_time_check_422 = sizeof(Parma_Polyhedra_Library::Compile_Time_Check<(!std::numeric_limits::is_exact)>) } -2441: -2441: ; -2441: -2441: typedef Interval FP_Interval_Type; -2441: store.intersection_assign(Box(*this)); -2441: -2441: } -2441: -2441: -2441: inline bool -2441: operator!=(const Polyhedron& x, const Polyhedron& y) { -2441: return !(x == y); -2441: } -2441: -2441: inline bool -2441: Polyhedron::strictly_contains(const Polyhedron& y) const { -2441: const Polyhedron& x = *this; -2441: return x.contains(y) && !y.contains(x); -2441: } -2441: -2441: inline void -2441: Polyhedron::drop_some_non_integer_points(Complexity_Class complexity) { -2441: const Variables_Set* const p_vs = 0; -2441: drop_some_non_integer_points(p_vs, complexity); -2441: } -2441: -2441: inline void -2441: Polyhedron::drop_some_non_integer_points(const Variables_Set& vars, -2441: Complexity_Class complexity) { -2441: drop_some_non_integer_points(&vars, complexity); -2441: } -2441: -2441: -2441: namespace Interfaces { -2441: -2441: inline bool -2441: is_necessarily_closed_for_interfaces(const Polyhedron& ph) { -2441: return ph.is_necessarily_closed(); -2441: } -2441: -2441: } -2441: -2441: } -2441: # 2857 "../../src/Polyhedron_defs.hh" 2 -2441: # 1 "../../src/Polyhedron_templates.hh" 1 -2441: # 28 "../../src/Polyhedron_templates.hh" -2441: # 1 "../../src/MIP_Problem_defs.hh" 1 -2441: # 29 "../../src/MIP_Problem_defs.hh" -2441: # 1 "../../src/Matrix_defs.hh" 1 -2441: # 27 "../../src/Matrix_defs.hh" -2441: # 1 "../../src/Matrix_types.hh" 1 -2441: # 16 "../../src/Matrix_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: class Matrix; -2441: -2441: } -2441: # 28 "../../src/Matrix_defs.hh" 2 -2441: # 36 "../../src/Matrix_defs.hh" -2441: template -2441: class Parma_Polyhedra_Library::Matrix { -2441: -2441: public: -2441: typedef typename Swapping_Vector::iterator iterator; -2441: typedef typename Swapping_Vector::const_iterator const_iterator; -2441: -2441: -2441: static dimension_type max_num_rows(); -2441: -2441: -2441: static dimension_type max_num_columns(); -2441: # 58 "../../src/Matrix_defs.hh" -2441: explicit Matrix(dimension_type n = 0); -2441: # 72 "../../src/Matrix_defs.hh" -2441: Matrix(dimension_type num_rows, dimension_type num_columns); -2441: # 82 "../../src/Matrix_defs.hh" -2441: void m_swap(Matrix& x); -2441: -2441: -2441: -2441: -2441: -2441: dimension_type num_rows() const; -2441: -2441: -2441: -2441: -2441: -2441: dimension_type num_columns() const; -2441: -2441: -2441: -2441: dimension_type capacity() const; -2441: # 109 "../../src/Matrix_defs.hh" -2441: bool has_no_rows() const; -2441: -2441: -2441: void resize(dimension_type n); -2441: -2441: -2441: -2441: void reserve_rows(dimension_type n); -2441: # 146 "../../src/Matrix_defs.hh" -2441: void resize(dimension_type num_rows, dimension_type num_columns); -2441: # 164 "../../src/Matrix_defs.hh" -2441: void add_zero_rows_and_columns(dimension_type n, dimension_type m); -2441: # 178 "../../src/Matrix_defs.hh" -2441: void add_zero_rows(dimension_type n); -2441: # 191 "../../src/Matrix_defs.hh" -2441: void add_row(const Row& x); -2441: # 205 "../../src/Matrix_defs.hh" -2441: void add_recycled_row(Row& y); -2441: # 219 "../../src/Matrix_defs.hh" -2441: void remove_trailing_rows(dimension_type n); -2441: -2441: void remove_rows(iterator first, iterator last); -2441: # 253 "../../src/Matrix_defs.hh" -2441: void permute_columns(const std::vector& cycles); -2441: -2441: -2441: void swap_columns(dimension_type i, dimension_type j); -2441: # 269 "../../src/Matrix_defs.hh" -2441: void add_zero_columns(dimension_type n); -2441: # 290 "../../src/Matrix_defs.hh" -2441: void add_zero_columns(dimension_type n, dimension_type i); -2441: # 308 "../../src/Matrix_defs.hh" -2441: void remove_column(dimension_type i); -2441: # 326 "../../src/Matrix_defs.hh" -2441: void remove_trailing_columns(dimension_type n); -2441: -2441: -2441: void clear(); -2441: -2441: -2441: -2441: -2441: -2441: iterator begin(); -2441: -2441: -2441: -2441: -2441: -2441: iterator end(); -2441: -2441: -2441: -2441: -2441: -2441: const_iterator begin() const; -2441: -2441: -2441: -2441: -2441: -2441: const_iterator end() const; -2441: # 362 "../../src/Matrix_defs.hh" -2441: Row& operator[](dimension_type i); -2441: # 371 "../../src/Matrix_defs.hh" -2441: const Row& operator[](dimension_type i) const; -2441: # 380 "../../src/Matrix_defs.hh" -2441: bool ascii_load(std::istream& s); -2441: -2441: void ascii_dump() const; void ascii_dump(std::ostream& s) const; void print() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: memory_size_type total_memory_in_bytes() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: memory_size_type external_memory_in_bytes() const; -2441: -2441: -2441: bool OK() const; -2441: -2441: private: -2441: -2441: Swapping_Vector rows; -2441: -2441: -2441: dimension_type num_columns_; -2441: }; -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: -2441: template -2441: void swap(Matrix& x, Matrix& y); -2441: -2441: -2441: -2441: -2441: -2441: template -2441: bool operator==(const Matrix& x, const Matrix& y); -2441: -2441: -2441: -2441: -2441: -2441: template -2441: bool operator!=(const Matrix& x, const Matrix& y); -2441: -2441: } -2441: -2441: -2441: # 1 "../../src/Matrix_inlines.hh" 1 -2441: # 27 "../../src/Matrix_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: inline dimension_type -2441: Matrix::max_num_rows() { -2441: return std::vector().max_size(); -2441: } -2441: -2441: template -2441: inline dimension_type -2441: Matrix::max_num_columns() { -2441: return Row::max_size(); -2441: } -2441: -2441: template -2441: inline void -2441: Matrix::m_swap(Matrix& x) { -2441: using std::swap; -2441: swap(rows, x.rows); -2441: swap(num_columns_, x.num_columns_); -2441: } -2441: -2441: template -2441: inline dimension_type -2441: Matrix::num_rows() const { -2441: return rows.size(); -2441: } -2441: -2441: template -2441: inline dimension_type -2441: Matrix::num_columns() const { -2441: return num_columns_; -2441: } -2441: -2441: template -2441: inline dimension_type -2441: Matrix::capacity() const { -2441: return rows.capacity(); -2441: } -2441: -2441: template -2441: inline bool -2441: Matrix::has_no_rows() const { -2441: return num_rows() == 0; -2441: } -2441: -2441: template -2441: inline void -2441: Matrix::resize(dimension_type n) { -2441: resize(n, n); -2441: } -2441: -2441: template -2441: inline void -2441: Matrix::reserve_rows(dimension_type requested_capacity) { -2441: -2441: rows.reserve(requested_capacity); -2441: } -2441: -2441: template -2441: inline void -2441: Matrix::add_zero_rows_and_columns(dimension_type n, dimension_type m) { -2441: resize(num_rows() + n, num_columns() + m); -2441: } -2441: -2441: template -2441: inline void -2441: Matrix::add_zero_rows(dimension_type n) { -2441: resize(num_rows() + n, num_columns()); -2441: } -2441: -2441: template -2441: inline void -2441: Matrix::add_row(const Row& x) { -2441: -2441: Row row(x); -2441: add_zero_rows(1); -2441: -2441: swap(rows.back(), row); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline void -2441: Matrix::add_recycled_row(Row& x) { -2441: add_zero_rows(1); -2441: swap(rows.back(), x); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline void -2441: Matrix::remove_trailing_rows(dimension_type n) { -2441: resize(num_rows() - n, num_columns()); -2441: } -2441: -2441: template -2441: inline void -2441: Matrix::remove_rows(iterator first, iterator last) { -2441: rows.erase(first, last); -2441: } -2441: -2441: template -2441: inline void -2441: Matrix::add_zero_columns(dimension_type n) { -2441: resize(num_rows(), num_columns() + n); -2441: } -2441: -2441: template -2441: inline void -2441: Matrix::remove_trailing_columns(dimension_type n) { -2441: ((void) 0); -2441: resize(num_rows(), num_columns() - n); -2441: } -2441: -2441: template -2441: inline void -2441: Matrix::clear() { -2441: resize(0, 0); -2441: } -2441: -2441: template -2441: inline typename Matrix::iterator -2441: Matrix::begin() { -2441: return rows.begin(); -2441: } -2441: -2441: template -2441: inline typename Matrix::iterator -2441: Matrix::end() { -2441: return rows.end(); -2441: } -2441: -2441: template -2441: inline typename Matrix::const_iterator -2441: Matrix::begin() const { -2441: return rows.begin(); -2441: } -2441: -2441: template -2441: inline typename Matrix::const_iterator -2441: Matrix::end() const { -2441: return rows.end(); -2441: } -2441: -2441: template -2441: inline Row& -2441: Matrix::operator[](dimension_type i) { -2441: ((void) 0); -2441: return rows[i]; -2441: } -2441: -2441: template -2441: inline const Row& -2441: Matrix::operator[](dimension_type i) const { -2441: ((void) 0); -2441: return rows[i]; -2441: } -2441: -2441: template -2441: inline memory_size_type -2441: Matrix::total_memory_in_bytes() const { -2441: return sizeof(*this) + external_memory_in_bytes(); -2441: } -2441: -2441: template -2441: inline void -2441: swap(Matrix& x, Matrix& y) { -2441: x.m_swap(y); -2441: } -2441: -2441: } -2441: # 435 "../../src/Matrix_defs.hh" 2 -2441: # 1 "../../src/Matrix_templates.hh" 1 -2441: # 27 "../../src/Matrix_templates.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: Matrix::Matrix(dimension_type n) -2441: : rows(n), num_columns_(n) { -2441: for (dimension_type i = 0; i < rows.size(); ++i) { -2441: rows[i].resize(num_columns_); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: Matrix::Matrix(dimension_type num_rows, dimension_type num_columns) -2441: : rows(num_rows), num_columns_(num_columns) { -2441: for (dimension_type i = 0; i < rows.size(); ++i) { -2441: rows[i].resize(num_columns_); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Matrix::resize(dimension_type num_rows, dimension_type num_columns) { -2441: const dimension_type old_num_rows = rows.size(); -2441: rows.resize(num_rows); -2441: if (old_num_rows < num_rows) { -2441: for (dimension_type i = old_num_rows; i < num_rows; ++i) { -2441: rows[i].resize(num_columns); -2441: } -2441: if (num_columns_ != num_columns) { -2441: num_columns_ = num_columns; -2441: for (dimension_type i = 0; i < old_num_rows; ++i) { -2441: rows[i].resize(num_columns); -2441: } -2441: } -2441: } -2441: else -2441: if (num_columns_ != num_columns) { -2441: num_columns_ = num_columns; -2441: for (dimension_type i = 0; i < num_rows; ++i) { -2441: rows[i].resize(num_columns); -2441: } -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Matrix::permute_columns(const std::vector& cycles) { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp; Parma_Polyhedra_Library::Coefficient& tmp = holder_tmp.item(); -2441: const dimension_type n = cycles.size(); -2441: ((void) 0); -2441: for (dimension_type k = num_rows(); k-- > 0; ) { -2441: Row& rows_k = (*this)[k]; -2441: for (dimension_type i = 0, j = 0; i < n; i = ++j) { -2441: -2441: while (cycles[j] != 0) { -2441: ++j; -2441: } -2441: -2441: ((void) 0); -2441: if (j - i == 2) { -2441: -2441: rows_k.swap_coefficients(cycles[i], cycles[i + 1]); -2441: } -2441: else { -2441: -2441: tmp = rows_k.get(cycles[j - 1]); -2441: for (dimension_type l = (j - 1); l > i; --l) { -2441: rows_k.swap_coefficients(cycles[l-1], cycles[l]); -2441: } -2441: if (tmp == 0) { -2441: rows_k.reset(cycles[i]); -2441: } -2441: else { -2441: using std::swap; -2441: swap(tmp, rows_k[cycles[i]]); -2441: } -2441: } -2441: } -2441: } -2441: } -2441: -2441: template -2441: void -2441: Matrix::swap_columns(dimension_type i, dimension_type j) { -2441: for (dimension_type k = num_rows(); k-- > 0; ) { -2441: (*this)[k].swap_coefficients(i, j); -2441: } -2441: } -2441: -2441: template -2441: void -2441: Matrix::add_zero_columns(dimension_type n, dimension_type i) { -2441: for (dimension_type j = rows.size(); j-- > 0; ) { -2441: rows[j].add_zeroes_and_shift(n, i); -2441: } -2441: num_columns_ += n; -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Matrix::remove_column(dimension_type i) { -2441: for (dimension_type j = rows.size(); j-- > 0; ) { -2441: rows[j].delete_element_and_shift(i); -2441: } -2441: --num_columns_; -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Matrix::ascii_dump(std::ostream& s) const { -2441: s << num_rows() << " x "; -2441: s << num_columns() << "\n"; -2441: for (const_iterator i = begin(), i_end = end(); i !=i_end; ++i) { -2441: i->ascii_dump(s); -2441: } -2441: } -2441: -2441: template void Matrix::ascii_dump() const { ascii_dump(std::cerr); } template void Matrix::print() const { std::cerr << "No user level output operator defined " << "for " "Matrix" << "." << std::endl; } -2441: -2441: template -2441: bool -2441: Matrix::ascii_load(std::istream& s) { -2441: std::string str; -2441: dimension_type new_num_rows; -2441: dimension_type new_num_cols; -2441: if (!(s >> new_num_rows)) { -2441: return false; -2441: } -2441: if (!(s >> str) || str != "x") { -2441: return false; -2441: } -2441: if (!(s >> new_num_cols)) { -2441: return false; -2441: } -2441: -2441: for (iterator i = rows.begin(), i_end = rows.end(); -2441: i != i_end; ++i) { -2441: i->clear(); -2441: } -2441: -2441: resize(new_num_rows, new_num_cols); -2441: -2441: for (dimension_type row = 0; row < new_num_rows; ++row) { -2441: if (!rows[row].ascii_load(s)) { -2441: return false; -2441: } -2441: } -2441: -2441: -2441: ((void) 0); -2441: return true; -2441: } -2441: -2441: template -2441: memory_size_type -2441: Matrix::external_memory_in_bytes() const { -2441: return rows.external_memory_in_bytes(); -2441: } -2441: -2441: template -2441: bool -2441: Matrix::OK() const { -2441: for (const_iterator i = begin(), i_end = end(); i != i_end; ++i) { -2441: if (i->size() != num_columns_) { -2441: return false; -2441: } -2441: } -2441: return true; -2441: } -2441: -2441: -2441: template -2441: bool -2441: operator==(const Matrix& x, const Matrix& y) { -2441: if (x.num_rows() != y.num_rows()) { -2441: return false; -2441: } -2441: if (x.num_columns() != y.num_columns()) { -2441: return false; -2441: } -2441: for (dimension_type i = x.num_rows(); i-- > 0; ) { -2441: if (x[i] != y[i]) { -2441: return false; -2441: } -2441: } -2441: return true; -2441: } -2441: -2441: -2441: template -2441: bool -2441: operator!=(const Matrix& x, const Matrix& y) { -2441: return !(x == y); -2441: } -2441: -2441: } -2441: # 436 "../../src/Matrix_defs.hh" 2 -2441: # 30 "../../src/MIP_Problem_defs.hh" 2 -2441: # 42 "../../src/MIP_Problem_defs.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: namespace IO_Operators { -2441: -2441: -2441: -2441: std::ostream& -2441: operator<<(std::ostream& s, const MIP_Problem& mip); -2441: -2441: } -2441: -2441: -2441: -2441: void swap(MIP_Problem& x, MIP_Problem& y); -2441: -2441: } -2441: # 87 "../../src/MIP_Problem_defs.hh" -2441: class Parma_Polyhedra_Library::MIP_Problem { -2441: public: -2441: # 102 "../../src/MIP_Problem_defs.hh" -2441: explicit MIP_Problem(dimension_type dim = 0); -2441: # 140 "../../src/MIP_Problem_defs.hh" -2441: template -2441: MIP_Problem(dimension_type dim, -2441: In first, In last, -2441: const Variables_Set& int_vars, -2441: const Linear_Expression& obj = Linear_Expression::zero(), -2441: Optimization_Mode mode = MAXIMIZATION); -2441: # 178 "../../src/MIP_Problem_defs.hh" -2441: template -2441: MIP_Problem(dimension_type dim, -2441: In first, In last, -2441: const Linear_Expression& obj = Linear_Expression::zero(), -2441: Optimization_Mode mode = MAXIMIZATION); -2441: # 209 "../../src/MIP_Problem_defs.hh" -2441: MIP_Problem(dimension_type dim, -2441: const Constraint_System& cs, -2441: const Linear_Expression& obj = Linear_Expression::zero(), -2441: Optimization_Mode mode = MAXIMIZATION); -2441: -2441: -2441: MIP_Problem(const MIP_Problem& y); -2441: -2441: -2441: ~MIP_Problem(); -2441: -2441: -2441: MIP_Problem& operator=(const MIP_Problem& y); -2441: -2441: -2441: static dimension_type max_space_dimension(); -2441: -2441: -2441: dimension_type space_dimension() const; -2441: -2441: -2441: -2441: -2441: -2441: const Variables_Set& integer_space_dimensions() const; -2441: -2441: private: -2441: -2441: typedef std::vector Constraint_Sequence; -2441: -2441: public: -2441: -2441: class const_iterator { -2441: private: -2441: typedef Constraint_Sequence::const_iterator Base; -2441: typedef std::iterator_traits Base_Traits; -2441: -2441: public: -2441: typedef Base_Traits::iterator_category iterator_category; -2441: typedef Base_Traits::difference_type difference_type; -2441: typedef const Constraint value_type; -2441: typedef const Constraint* pointer; -2441: typedef const Constraint& reference; -2441: -2441: -2441: difference_type operator-(const const_iterator& y) const; -2441: -2441: -2441: const_iterator& operator++(); -2441: -2441: -2441: const_iterator& operator--(); -2441: -2441: -2441: const_iterator operator++(int); -2441: -2441: -2441: const_iterator operator--(int); -2441: -2441: -2441: const_iterator& operator+=(difference_type n); -2441: -2441: -2441: const_iterator& operator-=(difference_type n); -2441: -2441: -2441: const_iterator operator+(difference_type n) const; -2441: -2441: -2441: const_iterator operator-(difference_type n) const; -2441: -2441: -2441: reference operator*() const; -2441: -2441: -2441: pointer operator->() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool operator==(const const_iterator& y) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool operator!=(const const_iterator& y) const; -2441: -2441: private: -2441: -2441: explicit const_iterator(Base b); -2441: -2441: -2441: Base itr; -2441: -2441: friend class MIP_Problem; -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: const_iterator constraints_begin() const; -2441: -2441: -2441: -2441: -2441: -2441: const_iterator constraints_end() const; -2441: -2441: -2441: const Linear_Expression& objective_function() const; -2441: -2441: -2441: Optimization_Mode optimization_mode() const; -2441: -2441: -2441: -2441: -2441: -2441: void clear(); -2441: # 348 "../../src/MIP_Problem_defs.hh" -2441: void add_space_dimensions_and_embed(dimension_type m); -2441: # 358 "../../src/MIP_Problem_defs.hh" -2441: void add_to_integer_space_dimensions(const Variables_Set& i_vars); -2441: # 367 "../../src/MIP_Problem_defs.hh" -2441: void add_constraint(const Constraint& c); -2441: # 377 "../../src/MIP_Problem_defs.hh" -2441: void add_constraints(const Constraint_System& cs); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void set_objective_function(const Linear_Expression& obj); -2441: -2441: -2441: void set_optimization_mode(Optimization_Mode mode); -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool is_satisfiable() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: MIP_Problem_Status solve() const; -2441: # 423 "../../src/MIP_Problem_defs.hh" -2441: void evaluate_objective_function(const Generator& evaluating_point, -2441: Coefficient& numer, -2441: Coefficient& denom) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: const Generator& feasible_point() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: const Generator& optimizing_point() const; -2441: # 451 "../../src/MIP_Problem_defs.hh" -2441: void optimal_value(Coefficient& numer, Coefficient& denom) const; -2441: -2441: -2441: bool OK() const; -2441: -2441: void ascii_dump() const; void ascii_dump(std::ostream& s) const; void print() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool ascii_load(std::istream& s); -2441: -2441: -2441: memory_size_type total_memory_in_bytes() const; -2441: -2441: -2441: memory_size_type external_memory_in_bytes() const; -2441: -2441: -2441: void m_swap(MIP_Problem& y); -2441: -2441: -2441: enum Control_Parameter_Name { -2441: -2441: PRICING -2441: }; -2441: -2441: -2441: enum Control_Parameter_Value { -2441: -2441: PRICING_STEEPEST_EDGE_FLOAT, -2441: -2441: PRICING_STEEPEST_EDGE_EXACT, -2441: -2441: PRICING_TEXTBOOK -2441: }; -2441: -2441: -2441: Control_Parameter_Value -2441: get_control_parameter(Control_Parameter_Name name) const; -2441: -2441: -2441: void set_control_parameter(Control_Parameter_Value value); -2441: -2441: private: -2441: -2441: dimension_type external_space_dim; -2441: -2441: -2441: -2441: -2441: -2441: dimension_type internal_space_dim; -2441: -2441: -2441: typedef Sparse_Row Row; -2441: -2441: -2441: -2441: -2441: -2441: Matrix tableau; -2441: -2441: typedef Row working_cost_type; -2441: -2441: -2441: working_cost_type working_cost; -2441: # 530 "../../src/MIP_Problem_defs.hh" -2441: std::vector > mapping; -2441: -2441: -2441: std::vector base; -2441: -2441: -2441: enum Status { -2441: -2441: UNSATISFIABLE, -2441: -2441: SATISFIABLE, -2441: -2441: UNBOUNDED, -2441: -2441: OPTIMIZED, -2441: -2441: -2441: -2441: -2441: -2441: PARTIALLY_SATISFIABLE -2441: }; -2441: -2441: -2441: Status status; -2441: -2441: -2441: -2441: -2441: -2441: -2441: Control_Parameter_Value pricing; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool initialized; -2441: -2441: -2441: std::vector input_cs; -2441: # 582 "../../src/MIP_Problem_defs.hh" -2441: dimension_type inherited_constraints; -2441: -2441: -2441: dimension_type first_pending_constraint; -2441: -2441: -2441: Linear_Expression input_obj_function; -2441: -2441: -2441: Optimization_Mode opt_mode; -2441: -2441: -2441: Generator last_generator; -2441: -2441: -2441: -2441: -2441: -2441: Variables_Set i_variables; -2441: -2441: -2441: struct RAII_Temporary_Real_Relaxation { -2441: MIP_Problem& lp; -2441: Variables_Set i_vars; -2441: -2441: RAII_Temporary_Real_Relaxation(MIP_Problem& mip) -2441: : lp(mip), i_vars() { -2441: -2441: using std::swap; -2441: swap(i_vars, lp.i_variables); -2441: } -2441: -2441: ~RAII_Temporary_Real_Relaxation() { -2441: -2441: using std::swap; -2441: swap(i_vars, lp.i_variables); -2441: } -2441: }; -2441: friend struct RAII_Temporary_Real_Relaxation; -2441: -2441: -2441: struct Inherit_Constraints {}; -2441: -2441: -2441: MIP_Problem(const MIP_Problem& y, Inherit_Constraints); -2441: -2441: -2441: void add_constraint_helper(const Constraint& c); -2441: -2441: -2441: void process_pending_constraints(); -2441: -2441: -2441: -2441: -2441: -2441: void second_phase(); -2441: # 654 "../../src/MIP_Problem_defs.hh" -2441: MIP_Problem_Status -2441: compute_tableau(std::vector& worked_out_row); -2441: # 708 "../../src/MIP_Problem_defs.hh" -2441: bool parse_constraints(dimension_type& additional_tableau_rows, -2441: dimension_type& additional_slack_variables, -2441: std::deque& is_tableau_constraint, -2441: std::deque& is_satisfied_inequality, -2441: std::deque& is_nonnegative_variable, -2441: std::deque& is_remergeable_variable) const; -2441: # 725 "../../src/MIP_Problem_defs.hh" -2441: dimension_type -2441: get_exiting_base_index(dimension_type entering_var_index) const; -2441: # 743 "../../src/MIP_Problem_defs.hh" -2441: static void linear_combine(Row& x, const Row& y, const dimension_type k); -2441: # 763 "../../src/MIP_Problem_defs.hh" -2441: static void linear_combine(Dense_Row& x, const Sparse_Row& y, -2441: const dimension_type k); -2441: -2441: -2441: -2441: static bool is_unbounded_obj_function( -2441: const Linear_Expression& obj_function, -2441: const std::vector >& mapping, -2441: Optimization_Mode optimization_mode); -2441: # 782 "../../src/MIP_Problem_defs.hh" -2441: void pivot(dimension_type entering_var_index, -2441: dimension_type exiting_base_index); -2441: # 794 "../../src/MIP_Problem_defs.hh" -2441: dimension_type textbook_entering_index() const; -2441: # 821 "../../src/MIP_Problem_defs.hh" -2441: dimension_type steepest_edge_exact_entering_index() const; -2441: # 834 "../../src/MIP_Problem_defs.hh" -2441: dimension_type steepest_edge_float_entering_index() const; -2441: # 844 "../../src/MIP_Problem_defs.hh" -2441: bool compute_simplex_using_exact_pricing(); -2441: # 855 "../../src/MIP_Problem_defs.hh" -2441: bool compute_simplex_using_steepest_edge_float(); -2441: # 873 "../../src/MIP_Problem_defs.hh" -2441: void erase_artificials(dimension_type begin_artificials, -2441: dimension_type end_artificials); -2441: -2441: bool is_in_base(dimension_type var_index, -2441: dimension_type& row_index) const; -2441: -2441: -2441: -2441: -2441: -2441: void compute_generator() const; -2441: # 897 "../../src/MIP_Problem_defs.hh" -2441: dimension_type merge_split_variable(dimension_type var_index); -2441: -2441: -2441: static bool is_satisfied(const Constraint& c, const Generator& g); -2441: -2441: -2441: static bool is_saturated(const Constraint& c, const Generator& g); -2441: # 924 "../../src/MIP_Problem_defs.hh" -2441: static MIP_Problem_Status solve_mip(bool& have_incumbent_solution, -2441: mpq_class& incumbent_solution_value, -2441: Generator& incumbent_solution_point, -2441: MIP_Problem& mip, -2441: const Variables_Set& i_vars); -2441: -2441: -2441: -2441: -2441: bool is_lp_satisfiable() const; -2441: # 949 "../../src/MIP_Problem_defs.hh" -2441: static bool is_mip_satisfiable(MIP_Problem& mip, -2441: const Variables_Set& i_vars, -2441: Generator& p); -2441: # 968 "../../src/MIP_Problem_defs.hh" -2441: static bool choose_branching_variable(const MIP_Problem& mip, -2441: const Variables_Set& i_vars, -2441: dimension_type& branching_index); -2441: }; -2441: -2441: # 1 "../../src/MIP_Problem_inlines.hh" 1 -2441: # 30 "../../src/MIP_Problem_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: inline dimension_type -2441: MIP_Problem::max_space_dimension() { -2441: return Constraint::max_space_dimension(); -2441: } -2441: -2441: inline dimension_type -2441: MIP_Problem::space_dimension() const { -2441: return external_space_dim; -2441: } -2441: -2441: -2441: inline -2441: MIP_Problem::MIP_Problem(const MIP_Problem& y) -2441: : external_space_dim(y.external_space_dim), -2441: internal_space_dim(y.internal_space_dim), -2441: tableau(y.tableau), -2441: working_cost(y.working_cost), -2441: mapping(y.mapping), -2441: base(y.base), -2441: status(y.status), -2441: pricing(y.pricing), -2441: initialized(y.initialized), -2441: input_cs(), -2441: inherited_constraints(0), -2441: first_pending_constraint(), -2441: input_obj_function(y.input_obj_function), -2441: opt_mode(y.opt_mode), -2441: last_generator(y.last_generator), -2441: i_variables(y.i_variables) { -2441: input_cs.reserve(y.input_cs.size()); -2441: for (Constraint_Sequence::const_iterator i = y.input_cs.begin(), -2441: i_end = y.input_cs.end(); i != i_end; ++i) { -2441: add_constraint_helper(*(*i)); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: MIP_Problem::MIP_Problem(const MIP_Problem& y, Inherit_Constraints) -2441: : external_space_dim(y.external_space_dim), -2441: internal_space_dim(y.internal_space_dim), -2441: tableau(y.tableau), -2441: working_cost(y.working_cost), -2441: mapping(y.mapping), -2441: base(y.base), -2441: status(y.status), -2441: pricing(y.pricing), -2441: initialized(y.initialized), -2441: input_cs(y.input_cs), -2441: -2441: inherited_constraints(y.input_cs.size()), -2441: first_pending_constraint(y.first_pending_constraint), -2441: input_obj_function(y.input_obj_function), -2441: opt_mode(y.opt_mode), -2441: last_generator(y.last_generator), -2441: i_variables(y.i_variables) { -2441: ((void) 0); -2441: } -2441: -2441: inline void -2441: MIP_Problem::add_constraint_helper(const Constraint& c) { -2441: -2441: const dimension_type size = input_cs.size(); -2441: if (size == input_cs.capacity()) { -2441: const dimension_type max_size = input_cs.max_size(); -2441: if (size == max_size) { -2441: throw std::length_error("MIP_Problem::add_constraint(): " -2441: "too many constraints"); -2441: } -2441: -2441: input_cs.reserve(compute_capacity(size + 1, max_size)); -2441: } -2441: -2441: -2441: -2441: input_cs.push_back(new Constraint(c)); -2441: } -2441: -2441: inline -2441: MIP_Problem::~MIP_Problem() { -2441: -2441: -2441: for (Constraint_Sequence::const_iterator -2441: i = nth_iter(input_cs, inherited_constraints), -2441: i_end = input_cs.end(); i != i_end; ++i) { -2441: delete *i; -2441: } -2441: } -2441: -2441: -2441: inline void -2441: MIP_Problem::set_optimization_mode(const Optimization_Mode mode) { -2441: if (opt_mode != mode) { -2441: opt_mode = mode; -2441: if (status == UNBOUNDED || status == OPTIMIZED) { -2441: status = SATISFIABLE; -2441: } -2441: ((void) 0); -2441: } -2441: } -2441: -2441: inline const Linear_Expression& -2441: MIP_Problem::objective_function() const { -2441: return input_obj_function; -2441: } -2441: -2441: inline Optimization_Mode -2441: MIP_Problem::optimization_mode() const { -2441: return opt_mode; -2441: } -2441: -2441: inline void -2441: MIP_Problem::optimal_value(Coefficient& numer, Coefficient& denom) const { -2441: const Generator& g = optimizing_point(); -2441: evaluate_objective_function(g, numer, denom); -2441: } -2441: -2441: inline MIP_Problem::const_iterator -2441: MIP_Problem::constraints_begin() const { -2441: return const_iterator(input_cs.begin()); -2441: } -2441: -2441: inline MIP_Problem::const_iterator -2441: MIP_Problem::constraints_end() const { -2441: return const_iterator(input_cs.end()); -2441: } -2441: -2441: inline const Variables_Set& -2441: MIP_Problem::integer_space_dimensions() const { -2441: return i_variables; -2441: } -2441: -2441: inline MIP_Problem::Control_Parameter_Value -2441: MIP_Problem::get_control_parameter(Control_Parameter_Name name) const { -2441: (void)(name); -2441: ((void) 0); -2441: return pricing; -2441: } -2441: -2441: inline void -2441: MIP_Problem::set_control_parameter(Control_Parameter_Value value) { -2441: pricing = value; -2441: } -2441: -2441: inline void -2441: MIP_Problem::m_swap(MIP_Problem& y) { -2441: using std::swap; -2441: swap(external_space_dim, y.external_space_dim); -2441: swap(internal_space_dim, y.internal_space_dim); -2441: swap(tableau, y.tableau); -2441: swap(working_cost, y.working_cost); -2441: swap(mapping, y.mapping); -2441: swap(initialized, y.initialized); -2441: swap(base, y.base); -2441: swap(status, y.status); -2441: swap(pricing, y.pricing); -2441: swap(input_cs, y.input_cs); -2441: swap(inherited_constraints, y.inherited_constraints); -2441: swap(first_pending_constraint, y.first_pending_constraint); -2441: swap(input_obj_function, y.input_obj_function); -2441: swap(opt_mode, y.opt_mode); -2441: swap(last_generator, y.last_generator); -2441: swap(i_variables, y.i_variables); -2441: } -2441: -2441: inline MIP_Problem& -2441: MIP_Problem::operator=(const MIP_Problem& y) { -2441: MIP_Problem tmp(y); -2441: m_swap(tmp); -2441: return *this; -2441: } -2441: -2441: inline void -2441: MIP_Problem::clear() { -2441: MIP_Problem tmp; -2441: m_swap(tmp); -2441: } -2441: -2441: -2441: inline memory_size_type -2441: MIP_Problem::external_memory_in_bytes() const { -2441: memory_size_type n -2441: = working_cost.external_memory_in_bytes() -2441: + tableau.external_memory_in_bytes() -2441: + input_obj_function.external_memory_in_bytes() -2441: + last_generator.external_memory_in_bytes(); -2441: -2441: -2441: -2441: n += input_cs.capacity() * sizeof(Constraint*); -2441: for (Constraint_Sequence::const_iterator -2441: i = nth_iter(input_cs, inherited_constraints), -2441: i_end = input_cs.end(); i != i_end; ++i) { -2441: n += ((*i)->total_memory_in_bytes()); -2441: } -2441: -2441: -2441: n += base.capacity() * sizeof(dimension_type); -2441: -2441: n += mapping.capacity() * sizeof(std::pair); -2441: return n; -2441: } -2441: -2441: inline memory_size_type -2441: MIP_Problem::total_memory_in_bytes() const { -2441: return sizeof(*this) + external_memory_in_bytes(); -2441: } -2441: -2441: inline -2441: MIP_Problem::const_iterator::const_iterator(Base b) -2441: : itr(b) { -2441: } -2441: -2441: inline MIP_Problem::const_iterator::difference_type -2441: MIP_Problem::const_iterator::operator-(const const_iterator& y) const { -2441: return itr - y.itr; -2441: } -2441: -2441: inline MIP_Problem::const_iterator& -2441: MIP_Problem::const_iterator::operator++() { -2441: ++itr; -2441: return *this; -2441: } -2441: -2441: inline MIP_Problem::const_iterator& -2441: MIP_Problem::const_iterator::operator--() { -2441: --itr; -2441: return *this; -2441: } -2441: -2441: inline MIP_Problem::const_iterator -2441: MIP_Problem::const_iterator::operator++(int) { -2441: const_iterator x = *this; -2441: operator++(); -2441: return x; -2441: } -2441: -2441: inline MIP_Problem::const_iterator -2441: MIP_Problem::const_iterator::operator--(int) { -2441: const_iterator x = *this; -2441: operator--(); -2441: return x; -2441: } -2441: -2441: inline MIP_Problem::const_iterator -2441: MIP_Problem::const_iterator::operator+(difference_type n) const { -2441: return const_iterator(itr + n); -2441: } -2441: -2441: inline MIP_Problem::const_iterator -2441: MIP_Problem::const_iterator::operator-(difference_type n) const { -2441: return const_iterator(itr - n); -2441: } -2441: -2441: inline MIP_Problem::const_iterator& -2441: MIP_Problem::const_iterator::operator+=(difference_type n) { -2441: itr += n; -2441: return *this; -2441: } -2441: -2441: inline MIP_Problem::const_iterator& -2441: MIP_Problem::const_iterator::operator-=(difference_type n) { -2441: itr -= n; -2441: return *this; -2441: } -2441: -2441: inline MIP_Problem::const_iterator::reference -2441: MIP_Problem::const_iterator::operator*() const { -2441: return *(*itr); -2441: } -2441: -2441: inline MIP_Problem::const_iterator::pointer -2441: MIP_Problem::const_iterator::operator->() const { -2441: return *itr; -2441: } -2441: -2441: inline bool -2441: MIP_Problem::const_iterator::operator==(const const_iterator& y) const { -2441: return itr == y.itr; -2441: } -2441: -2441: inline bool -2441: MIP_Problem::const_iterator::operator!=(const const_iterator& y) const { -2441: return itr != y.itr; -2441: } -2441: -2441: -2441: inline void -2441: swap(MIP_Problem& x, MIP_Problem& y) { -2441: x.m_swap(y); -2441: } -2441: -2441: } -2441: # 974 "../../src/MIP_Problem_defs.hh" 2 -2441: # 1 "../../src/MIP_Problem_templates.hh" 1 -2441: # 29 "../../src/MIP_Problem_templates.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: MIP_Problem::MIP_Problem(const dimension_type dim, -2441: In first, In last, -2441: const Variables_Set& int_vars, -2441: const Linear_Expression& obj, -2441: const Optimization_Mode mode) -2441: : external_space_dim(dim), -2441: internal_space_dim(0), -2441: tableau(), -2441: working_cost(0), -2441: mapping(), -2441: base(), -2441: status(PARTIALLY_SATISFIABLE), -2441: pricing(PRICING_STEEPEST_EDGE_FLOAT), -2441: initialized(false), -2441: input_cs(), -2441: inherited_constraints(0), -2441: first_pending_constraint(0), -2441: input_obj_function(obj), -2441: opt_mode(mode), -2441: last_generator(point()), -2441: i_variables(int_vars) { -2441: -2441: -2441: if (i_variables.space_dimension() > external_space_dim) { -2441: std::ostringstream s; -2441: s << "PPL::MIP_Problem::MIP_Problem" -2441: << "(dim, first, last, int_vars, obj, mode):\n" -2441: << "dim == "<< external_space_dim << " and int_vars.space_dimension() ==" -2441: << " " << i_variables.space_dimension() << " are dimension" -2441: "incompatible."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: -2441: if (dim > max_space_dimension()) { -2441: throw std::length_error("PPL::MIP_Problem:: MIP_Problem(dim, first, " -2441: "last, int_vars, obj, mode):\n" -2441: "dim exceeds the maximum allowed" -2441: "space dimension."); -2441: } -2441: -2441: if (obj.space_dimension() > dim) { -2441: std::ostringstream s; -2441: s << "PPL::MIP_Problem::MIP_Problem(dim, first, last," -2441: << "int_vars, obj, mode):\n" -2441: << "obj.space_dimension() == "<< obj.space_dimension() -2441: << " exceeds d == "<< dim << "."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: try { -2441: for (In i = first; i != last; ++i) { -2441: if (i->is_strict_inequality()) { -2441: throw std::invalid_argument("PPL::MIP_Problem::" -2441: "MIP_Problem(dim, first, last, int_vars," -2441: "obj, mode):\nrange [first, last) contains" -2441: "a strict inequality constraint."); -2441: } -2441: if (i->space_dimension() > dim) { -2441: std::ostringstream s; -2441: s << "PPL::MIP_Problem::" -2441: << "MIP_Problem(dim, first, last, int_vars, obj, mode):\n" -2441: << "range [first, last) contains a constraint having space" -2441: << "dimension == " << i->space_dimension() << " that exceeds" -2441: "this->space_dimension == " << dim << "."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: add_constraint_helper(*i); -2441: } -2441: } catch (...) { -2441: -2441: -2441: for (Constraint_Sequence::const_iterator -2441: i = input_cs.begin(), i_end = input_cs.end(); -2441: i != i_end; ++i) { -2441: delete *i; -2441: } -2441: -2441: throw; -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: MIP_Problem::MIP_Problem(dimension_type dim, -2441: In first, In last, -2441: const Linear_Expression& obj, -2441: Optimization_Mode mode) -2441: : external_space_dim(dim), -2441: internal_space_dim(0), -2441: tableau(), -2441: working_cost(0), -2441: mapping(), -2441: base(), -2441: status(PARTIALLY_SATISFIABLE), -2441: pricing(PRICING_STEEPEST_EDGE_FLOAT), -2441: initialized(false), -2441: input_cs(), -2441: inherited_constraints(0), -2441: first_pending_constraint(0), -2441: input_obj_function(obj), -2441: opt_mode(mode), -2441: last_generator(point()), -2441: i_variables() { -2441: -2441: if (dim > max_space_dimension()) { -2441: throw std::length_error("PPL::MIP_Problem::" -2441: "MIP_Problem(dim, first, last, obj, mode):\n" -2441: "dim exceeds the maximum allowed space " -2441: "dimension."); -2441: } -2441: -2441: if (obj.space_dimension() > dim) { -2441: std::ostringstream s; -2441: s << "PPL::MIP_Problem::MIP_Problem(dim, first, last," -2441: << " obj, mode):\n" -2441: << "obj.space_dimension() == "<< obj.space_dimension() -2441: << " exceeds d == "<< dim << "."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: try { -2441: for (In i = first; i != last; ++i) { -2441: if (i->is_strict_inequality()) { -2441: throw std::invalid_argument("PPL::MIP_Problem::" -2441: "MIP_Problem(dim, first, last, obj, mode):" -2441: "\n" -2441: "range [first, last) contains a strict " -2441: "inequality constraint."); -2441: } -2441: if (i->space_dimension() > dim) { -2441: std::ostringstream s; -2441: s << "PPL::MIP_Problem::" -2441: << "MIP_Problem(dim, first, last, obj, mode):\n" -2441: << "range [first, last) contains a constraint having space" -2441: << "dimension" << " == " << i->space_dimension() << " that exceeds" -2441: "this->space_dimension == " << dim << "."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: add_constraint_helper(*i); -2441: } -2441: } catch (...) { -2441: -2441: -2441: for (Constraint_Sequence::const_iterator -2441: i = input_cs.begin(), i_end = input_cs.end(); -2441: i != i_end; ++i) { -2441: delete *i; -2441: } -2441: -2441: throw; -2441: } -2441: ((void) 0); -2441: } -2441: -2441: } -2441: # 975 "../../src/MIP_Problem_defs.hh" 2 -2441: # 29 "../../src/Polyhedron_templates.hh" 2 -2441: -2441: -2441: -2441: # 1 "../../src/Floating_Point_Expression_defs.hh" 1 -2441: # 27 "../../src/Floating_Point_Expression_defs.hh" -2441: # 1 "../../src/Floating_Point_Expression_types.hh" 1 -2441: # 16 "../../src/Floating_Point_Expression_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: class Floating_Point_Expression; -2441: -2441: } -2441: # 28 "../../src/Floating_Point_Expression_defs.hh" 2 -2441: -2441: -2441: -2441: # 1 "/usr/include/c++/8/cmath" 1 3 -2441: # 39 "/usr/include/c++/8/cmath" 3 -2441: -2441: # 40 "/usr/include/c++/8/cmath" 3 -2441: # 32 "../../src/Floating_Point_Expression_defs.hh" 2 -2441: -2441: -2441: namespace Parma_Polyhedra_Library { -2441: # 54 "../../src/Floating_Point_Expression_defs.hh" -2441: template -2441: class Floating_Point_Expression { -2441: -2441: public: -2441: -2441: -2441: typedef Linear_Form FP_Linear_Form; -2441: # 70 "../../src/Floating_Point_Expression_defs.hh" -2441: typedef Box FP_Interval_Abstract_Store; -2441: -2441: -2441: -2441: -2441: -2441: -2441: typedef std::map -2441: FP_Linear_Form_Abstract_Store; -2441: -2441: -2441: typedef typename FP_Interval_Type::boundary_type boundary_type; -2441: -2441: -2441: typedef typename FP_Interval_Type::info_type info_type; -2441: -2441: -2441: virtual ~Floating_Point_Expression(); -2441: # 114 "../../src/Floating_Point_Expression_defs.hh" -2441: virtual bool linearize(const FP_Interval_Abstract_Store& int_store, -2441: const FP_Linear_Form_Abstract_Store& lf_store, -2441: FP_Linear_Form& result) const = 0; -2441: # 126 "../../src/Floating_Point_Expression_defs.hh" -2441: static FP_Interval_Type absolute_error; -2441: # 136 "../../src/Floating_Point_Expression_defs.hh" -2441: static bool overflows(const FP_Linear_Form& lf); -2441: # 163 "../../src/Floating_Point_Expression_defs.hh" -2441: static void relative_error(const FP_Linear_Form& lf, -2441: FP_Linear_Form& result); -2441: # 183 "../../src/Floating_Point_Expression_defs.hh" -2441: static void intervalize(const FP_Linear_Form& lf, -2441: const FP_Interval_Abstract_Store& store, -2441: FP_Interval_Type& result); -2441: -2441: private: -2441: # 198 "../../src/Floating_Point_Expression_defs.hh" -2441: static FP_Interval_Type compute_absolute_error(); -2441: -2441: }; -2441: -2441: -2441: template -2441: FP_Interval_Type Floating_Point_Expression -2441: ::absolute_error = compute_absolute_error(); -2441: -2441: } -2441: -2441: # 1 "../../src/Floating_Point_Expression_inlines.hh" 1 -2441: # 30 "../../src/Floating_Point_Expression_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: inline -2441: Floating_Point_Expression -2441: ::~Floating_Point_Expression() {} -2441: -2441: template -2441: inline bool -2441: Floating_Point_Expression -2441: ::overflows(const FP_Linear_Form& lf) { -2441: if (!lf.inhomogeneous_term().is_bounded()) { -2441: return true; -2441: } -2441: -2441: dimension_type dimension = lf.space_dimension(); -2441: for (dimension_type i = 0; i < dimension; ++i) { -2441: if (!lf.coefficient(Variable(i)).is_bounded()) { -2441: return true; -2441: } -2441: } -2441: -2441: return false; -2441: } -2441: -2441: } -2441: # 210 "../../src/Floating_Point_Expression_defs.hh" 2 -2441: # 1 "../../src/Floating_Point_Expression_templates.hh" 1 -2441: # 29 "../../src/Floating_Point_Expression_templates.hh" -2441: # 1 "/usr/include/c++/8/cmath" 1 3 -2441: # 39 "/usr/include/c++/8/cmath" 3 -2441: -2441: # 40 "/usr/include/c++/8/cmath" 3 -2441: # 30 "../../src/Floating_Point_Expression_templates.hh" 2 -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: void -2441: Floating_Point_Expression -2441: ::relative_error(const FP_Linear_Form& lf, FP_Linear_Form& result) { -2441: -2441: FP_Interval_Type error_propagator; -2441: boundary_type lb = -pow(FP_Format::BASE, -2441: -static_cast -2441: ::boundary_type>(FP_Format::MANTISSA_BITS)); -2441: error_propagator.build(i_constraint(GREATER_OR_EQUAL, lb), -2441: i_constraint(LESS_OR_EQUAL, -lb)); -2441: -2441: -2441: const FP_Interval_Type* current_term = &lf.inhomogeneous_term(); -2441: -2441: # 47 "../../src/Floating_Point_Expression_templates.hh" 3 4 -2441: (static_cast (0)) -2441: # 47 "../../src/Floating_Point_Expression_templates.hh" -2441: ; -2441: -2441: FP_Interval_Type -2441: current_multiplier(std::max(std::abs(current_term->lower()), -2441: std::abs(current_term->upper()))); -2441: FP_Linear_Form current_result_term(current_multiplier); -2441: current_result_term *= error_propagator; -2441: result = FP_Linear_Form(current_result_term); -2441: -2441: -2441: dimension_type dimension = lf.space_dimension(); -2441: for (dimension_type i = 0; i < dimension; ++i) { -2441: current_term = &lf.coefficient(Variable(i)); -2441: -2441: # 60 "../../src/Floating_Point_Expression_templates.hh" 3 4 -2441: (static_cast (0)) -2441: # 60 "../../src/Floating_Point_Expression_templates.hh" -2441: ; -2441: current_multiplier -2441: = FP_Interval_Type(std::max(std::abs(current_term->lower()), -2441: std::abs(current_term->upper()))); -2441: current_result_term = FP_Linear_Form(Variable(i)); -2441: current_result_term *= current_multiplier; -2441: current_result_term *= error_propagator; -2441: result += current_result_term; -2441: } -2441: -2441: return; -2441: } -2441: -2441: template -2441: void -2441: Floating_Point_Expression -2441: ::intervalize(const FP_Linear_Form& lf, -2441: const FP_Interval_Abstract_Store& store, -2441: FP_Interval_Type& result) { -2441: result = FP_Interval_Type(lf.inhomogeneous_term()); -2441: dimension_type dimension = lf.space_dimension(); -2441: -2441: # 81 "../../src/Floating_Point_Expression_templates.hh" 3 4 -2441: (static_cast (0)) -2441: # 81 "../../src/Floating_Point_Expression_templates.hh" -2441: ; -2441: for (dimension_type i = 0; i < dimension; ++i) { -2441: FP_Interval_Type current_addend = lf.coefficient(Variable(i)); -2441: const FP_Interval_Type& curr_int = store.get_interval(Variable(i)); -2441: current_addend *= curr_int; -2441: result += current_addend; -2441: } -2441: -2441: return; -2441: } -2441: -2441: template -2441: FP_Interval_Type -2441: Floating_Point_Expression -2441: ::compute_absolute_error() { -2441: typedef typename Floating_Point_Expression -2441: ::boundary_type Boundary; -2441: boundary_type omega; -2441: omega = std::max(pow(static_cast(FP_Format::BASE), -2441: static_cast(1 - FP_Format::EXPONENT_BIAS -2441: - FP_Format::MANTISSA_BITS)), -2441: std::numeric_limits::denorm_min()); -2441: FP_Interval_Type result; -2441: result.build(i_constraint(GREATER_OR_EQUAL, -omega), -2441: i_constraint(LESS_OR_EQUAL, omega)); -2441: return result; -2441: } -2441: -2441: } -2441: # 211 "../../src/Floating_Point_Expression_defs.hh" 2 -2441: # 33 "../../src/Polyhedron_templates.hh" 2 -2441: -2441: -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: Polyhedron::Polyhedron(Topology topol, -2441: const Box& box, -2441: Complexity_Class) -2441: : con_sys(topol, default_con_sys_repr), -2441: gen_sys(topol, default_gen_sys_repr), -2441: sat_c(), -2441: sat_g() { -2441: -2441: space_dim = box.space_dimension(); -2441: -2441: -2441: if (box.is_empty()) { -2441: set_empty(); -2441: return; -2441: } -2441: -2441: -2441: if (space_dim == 0) { -2441: set_zero_dim_univ(); -2441: return; -2441: } -2441: -2441: -2441: con_sys.set_space_dimension(space_dim); -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_l_n; Parma_Polyhedra_Library::Coefficient& l_n = holder_l_n.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_l_d; Parma_Polyhedra_Library::Coefficient& l_d = holder_l_d.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_u_n; Parma_Polyhedra_Library::Coefficient& u_n = holder_u_n.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_u_d; Parma_Polyhedra_Library::Coefficient& u_d = holder_u_d.item(); -2441: -2441: if (topol == NECESSARILY_CLOSED) { -2441: for (dimension_type k = space_dim; k-- > 0; ) { -2441: const Variable v_k = Variable(k); -2441: -2441: bool l_closed = false; -2441: bool l_bounded = box.has_lower_bound(v_k, l_n, l_d, l_closed); -2441: -2441: bool u_closed = false; -2441: bool u_bounded = box.has_upper_bound(v_k, u_n, u_d, u_closed); -2441: -2441: -2441: if (l_bounded && u_bounded -2441: && l_closed && u_closed -2441: && l_n == u_n && l_d == u_d) { -2441: -2441: con_sys.insert(l_d * v_k == l_n); -2441: } -2441: else { -2441: if (l_bounded) { -2441: -2441: con_sys.insert(l_d * v_k >= l_n); -2441: } -2441: if (u_bounded) { -2441: -2441: con_sys.insert(u_d * v_k <= u_n); -2441: } -2441: } -2441: } -2441: } -2441: else { -2441: -2441: for (dimension_type k = space_dim; k-- > 0; ) { -2441: const Variable v_k = Variable(k); -2441: -2441: bool l_closed = false; -2441: bool l_bounded = box.has_lower_bound(v_k, l_n, l_d, l_closed); -2441: -2441: bool u_closed = false; -2441: bool u_bounded = box.has_upper_bound(v_k, u_n, u_d, u_closed); -2441: -2441: -2441: if (l_bounded && u_bounded -2441: && l_closed && u_closed -2441: && l_n == u_n && l_d == u_d) { -2441: -2441: con_sys.insert(l_d * v_k == l_n); -2441: } -2441: else { -2441: -2441: if (l_bounded) { -2441: if (l_closed) { -2441: -2441: con_sys.insert(l_d * v_k >= l_n); -2441: } -2441: else { -2441: -2441: con_sys.insert(l_d * v_k > l_n); -2441: } -2441: } -2441: -2441: if (u_bounded) { -2441: if (u_closed) { -2441: -2441: con_sys.insert(u_d * v_k <= u_n); -2441: } -2441: else { -2441: -2441: con_sys.insert(u_d * v_k < u_n); -2441: } -2441: } -2441: } -2441: } -2441: } -2441: -2441: -2441: con_sys.add_low_level_constraints(); -2441: -2441: -2441: set_constraints_up_to_date(); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Polyhedron::map_space_dimensions(const Partial_Function& pfunc) { -2441: if (space_dim == 0) { -2441: return; -2441: } -2441: if (pfunc.has_empty_codomain()) { -2441: -2441: if (marked_empty() -2441: || (has_pending_constraints() -2441: && !remove_pending_to_obtain_generators()) -2441: || (!generators_are_up_to_date() && !update_generators())) { -2441: -2441: space_dim = 0; -2441: con_sys.clear(); -2441: } -2441: else { -2441: -2441: set_zero_dim_univ(); -2441: } -2441: -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: const dimension_type new_space_dimension = pfunc.max_in_codomain() + 1; -2441: -2441: if (new_space_dimension == space_dim) { -2441: -2441: -2441: -2441: -2441: -2441: std::vector cycle; -2441: cycle.reserve(space_dim); -2441: -2441: -2441: std::deque visited(space_dim); -2441: -2441: for (dimension_type i = space_dim; i-- > 0; ) { -2441: if (visited[i]) { -2441: continue; -2441: } -2441: -2441: dimension_type j = i; -2441: do { -2441: visited[j] = true; -2441: -2441: dimension_type k = 0; -2441: if (!pfunc.maps(j, k)) { -2441: throw_invalid_argument("map_space_dimensions(pfunc)", -2441: " pfunc is inconsistent"); -2441: } -2441: if (k == j) { -2441: break; -2441: } -2441: -2441: cycle.push_back(Variable(j)); -2441: -2441: j = k; -2441: } while (!visited[j]); -2441: -2441: -2441: -2441: -2441: -2441: -2441: if (constraints_are_up_to_date()) { -2441: con_sys.permute_space_dimensions(cycle); -2441: } -2441: -2441: if (generators_are_up_to_date()) { -2441: gen_sys.permute_space_dimensions(cycle); -2441: } -2441: -2441: cycle.clear(); -2441: } -2441: -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: const Generator_System& old_gensys = generators(); -2441: -2441: if (old_gensys.has_no_rows()) { -2441: -2441: Polyhedron new_polyhedron(topology(), new_space_dimension, EMPTY); -2441: m_swap(new_polyhedron); -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: -2441: std::vector pfunc_maps(space_dim, not_a_dimension()); -2441: for (dimension_type j = space_dim; j-- > 0; ) { -2441: dimension_type pfunc_j; -2441: if (pfunc.maps(j, pfunc_j)) { -2441: pfunc_maps[j] = pfunc_j; -2441: } -2441: } -2441: -2441: Generator_System new_gensys; -2441: for (Generator_System::const_iterator i = old_gensys.begin(), -2441: old_gensys_end = old_gensys.end(); i != old_gensys_end; ++i) { -2441: const Generator& old_g = *i; -2441: const Generator::expr_type old_e = old_g.expression(); -2441: Linear_Expression expr; -2441: expr.set_space_dimension(new_space_dimension); -2441: bool all_zeroes = true; -2441: for (Generator::expr_type::const_iterator j = old_e.begin(), -2441: j_end = old_e.end(); j != j_end; ++j) { -2441: const dimension_type mapped_id = pfunc_maps[j.variable().id()]; -2441: if (mapped_id != not_a_dimension()) { -2441: add_mul_assign(expr, *j, Variable(mapped_id)); -2441: all_zeroes = false; -2441: } -2441: } -2441: switch (old_g.type()) { -2441: case Generator::LINE: -2441: if (!all_zeroes) { -2441: new_gensys.insert(line(expr)); -2441: } -2441: break; -2441: case Generator::RAY: -2441: if (!all_zeroes) { -2441: new_gensys.insert(ray(expr)); -2441: } -2441: break; -2441: case Generator::POINT: -2441: -2441: new_gensys.insert(point(expr, old_g.divisor())); -2441: break; -2441: case Generator::CLOSURE_POINT: -2441: -2441: new_gensys.insert(closure_point(expr, old_g.divisor())); -2441: break; -2441: } -2441: } -2441: Polyhedron new_polyhedron(topology(), new_gensys); -2441: m_swap(new_polyhedron); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Polyhedron::refine_with_linear_form_inequality( -2441: const Linear_Form< Interval >& left, -2441: const Linear_Form< Interval >& right, -2441: const bool is_strict) { -2441: -2441: -2441: enum anonymous_enum_compile_time_check___LINE__ { compile_time_check_308 = sizeof(Parma_Polyhedra_Library::Compile_Time_Check<(!std::numeric_limits::is_exact)>) } -2441: -2441: ; -2441: -2441: -2441: -2441: -2441: const dimension_type left_space_dim = left.space_dimension(); -2441: if (space_dim < left_space_dim) { -2441: throw_dimension_incompatible( -2441: "refine_with_linear_form_inequality(l1, l2, s)", "l1", left); -2441: } -2441: -2441: const dimension_type right_space_dim = right.space_dimension(); -2441: if (space_dim < right_space_dim) { -2441: throw_dimension_incompatible( -2441: "refine_with_linear_form_inequality(l1, l2, s)", "l2", right); -2441: } -2441: -2441: -2441: ((void) 0); -2441: -2441: typedef Interval FP_Interval_Type; -2441: typedef Linear_Form FP_Linear_Form; -2441: -2441: if (Floating_Point_Expression:: -2441: overflows(left)) { -2441: return; -2441: } -2441: -2441: if (Floating_Point_Expression:: -2441: overflows(right)) { -2441: return; -2441: } -2441: -2441: -2441: FP_Linear_Form left_minus_right(left); -2441: left_minus_right -= right; -2441: if (Floating_Point_Expression:: -2441: overflows(left_minus_right)) { -2441: return; -2441: } -2441: -2441: dimension_type lf_space_dim = left_minus_right.space_dimension(); -2441: FP_Linear_Form lf_approx; -2441: overapproximate_linear_form(left_minus_right, lf_space_dim, lf_approx); -2441: if (Floating_Point_Expression:: -2441: overflows(lf_approx)) { -2441: return; -2441: } -2441: -2441: -2441: Linear_Expression lf_approx_le; -2441: convert_to_integer_expression(lf_approx, lf_space_dim, lf_approx_le); -2441: -2441: -2441: if (!is_strict || is_necessarily_closed()) { -2441: refine_with_constraint(lf_approx_le <= 0); -2441: } -2441: else { -2441: refine_with_constraint(lf_approx_le < 0); -2441: } -2441: } -2441: -2441: template -2441: void -2441: Polyhedron::affine_form_image(const Variable var, -2441: const Linear_Form >& lf) { -2441: -2441: -2441: enum anonymous_enum_compile_time_check___LINE__ { compile_time_check_378 = sizeof(Parma_Polyhedra_Library::Compile_Time_Check<(!std::numeric_limits::is_exact)>) } -2441: -2441: ; -2441: -2441: -2441: -2441: const dimension_type lf_space_dim = lf.space_dimension(); -2441: if (space_dim < lf_space_dim) { -2441: throw_dimension_incompatible("affine_form_image(v, l, s)", "l", lf); -2441: } -2441: -2441: -2441: const dimension_type var_id = var.id(); -2441: if (space_dim < var_id + 1) { -2441: throw_dimension_incompatible("affine_form_image(v, l, s)", "v", var); -2441: } -2441: -2441: -2441: ((void) 0); -2441: -2441: typedef Interval FP_Interval_Type; -2441: typedef Linear_Form FP_Linear_Form; -2441: -2441: if (Floating_Point_Expression:: -2441: overflows(lf)) { -2441: *this = Polyhedron(topology(), space_dim, UNIVERSE); -2441: return; -2441: } -2441: -2441: -2441: FP_Linear_Form lf_approx; -2441: overapproximate_linear_form(lf, lf_space_dim, lf_approx); -2441: -2441: if (Floating_Point_Expression:: -2441: overflows(lf_approx)) { -2441: *this = Polyhedron(topology(), space_dim, UNIVERSE); -2441: return; -2441: } -2441: -2441: -2441: Linear_Expression lf_approx_le; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_lo_coeff; Parma_Polyhedra_Library::Coefficient& lo_coeff = holder_lo_coeff.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_hi_coeff; Parma_Polyhedra_Library::Coefficient& hi_coeff = holder_hi_coeff.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_denominator; Parma_Polyhedra_Library::Coefficient& denominator = holder_denominator.item(); -2441: convert_to_integer_expressions(lf_approx, lf_space_dim, lf_approx_le, -2441: lo_coeff, hi_coeff, denominator); -2441: -2441: -2441: bounded_affine_image(var, lf_approx_le + lo_coeff, lf_approx_le + hi_coeff, -2441: denominator); -2441: } -2441: -2441: template -2441: void -2441: Polyhedron -2441: ::overapproximate_linear_form(const Linear_Form >& lf, -2441: const dimension_type lf_dimension, -2441: Linear_Form >& result) { -2441: -2441: -2441: enum anonymous_enum_compile_time_check___LINE__ { compile_time_check_438 = sizeof(Parma_Polyhedra_Library::Compile_Time_Check<(!std::numeric_limits::is_exact)>) } -2441: -2441: ; -2441: -2441: typedef Interval FP_Interval_Type; -2441: typedef Linear_Form FP_Linear_Form; -2441: -2441: -2441: -2441: Box box(*this); -2441: -2441: result = FP_Linear_Form(lf.inhomogeneous_term()); -2441: -2441: const FP_Interval_Type aux_divisor1(static_cast(0.5)); -2441: FP_Interval_Type aux_divisor2(aux_divisor1); -2441: aux_divisor2.lower() = static_cast(-0.5); -2441: -2441: for (dimension_type i = 0; i < lf_dimension; ++i) { -2441: Variable curr_var(i); -2441: const FP_Interval_Type& curr_coeff = lf.coefficient(curr_var); -2441: ((void) 0); -2441: FP_Format curr_lb = curr_coeff.lower(); -2441: FP_Format curr_ub = curr_coeff.upper(); -2441: if (curr_lb != 0 || curr_ub != 0) { -2441: const FP_Interval_Type& curr_int = box.get_interval(curr_var); -2441: FP_Interval_Type curr_addend(curr_ub - curr_lb); -2441: curr_addend *= aux_divisor2; -2441: curr_addend *= curr_int; -2441: result += curr_addend; -2441: curr_addend = FP_Interval_Type(curr_lb + curr_ub); -2441: curr_addend *= aux_divisor1; -2441: FP_Linear_Form curr_addend_lf(curr_var); -2441: curr_addend_lf *= curr_addend; -2441: result += curr_addend_lf; -2441: } -2441: } -2441: } -2441: -2441: template -2441: void -2441: Polyhedron::convert_to_integer_expression( -2441: const Linear_Form >& lf, -2441: const dimension_type lf_dimension, -2441: Linear_Expression& result) { -2441: result = Linear_Expression(); -2441: -2441: typedef Interval FP_Interval_Type; -2441: std::vector numerators(lf_dimension+1); -2441: std::vector denominators(lf_dimension+1); -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_lcm; Parma_Polyhedra_Library::Coefficient& lcm = holder_lcm.item(); -2441: lcm = 1; -2441: const FP_Interval_Type& b = lf.inhomogeneous_term(); -2441: -2441: numer_denom(b.lower(), numerators[lf_dimension], -2441: denominators[lf_dimension]); -2441: if (numerators[lf_dimension] != 0) { -2441: lcm_assign(lcm, lcm, denominators[lf_dimension]); -2441: } -2441: -2441: for (dimension_type i = 0; i < lf_dimension; ++i) { -2441: const FP_Interval_Type& curr_int = lf.coefficient(Variable(i)); -2441: numer_denom(curr_int.lower(), numerators[i], denominators[i]); -2441: if (numerators[i] != 0) { -2441: lcm_assign(lcm, lcm, denominators[i]); -2441: } -2441: } -2441: -2441: for (dimension_type i = 0; i < lf_dimension; ++i) { -2441: if (numerators[i] != 0) { -2441: exact_div_assign(denominators[i], lcm, denominators[i]); -2441: numerators[i] *= denominators[i]; -2441: result += numerators[i] * Variable(i); -2441: } -2441: } -2441: -2441: if (numerators[lf_dimension] != 0) { -2441: exact_div_assign(denominators[lf_dimension], -2441: lcm, denominators[lf_dimension]); -2441: numerators[lf_dimension] *= denominators[lf_dimension]; -2441: result += numerators[lf_dimension]; -2441: } -2441: } -2441: -2441: template -2441: void -2441: Polyhedron::convert_to_integer_expressions( -2441: const Linear_Form >& lf, -2441: const dimension_type lf_dimension, Linear_Expression& res, -2441: Coefficient& res_low_coeff, Coefficient& res_hi_coeff, -2441: Coefficient& denominator) { -2441: res = Linear_Expression(); -2441: -2441: typedef Interval FP_Interval_Type; -2441: std::vector numerators(lf_dimension+2); -2441: std::vector denominators(lf_dimension+2); -2441: -2441: -2441: -2441: Coefficient& lcm = denominator; -2441: lcm = 1; -2441: const FP_Interval_Type& b = lf.inhomogeneous_term(); -2441: numer_denom(b.lower(), numerators[lf_dimension], denominators[lf_dimension]); -2441: -2441: if (numerators[lf_dimension] != 0) { -2441: lcm_assign(lcm, lcm, denominators[lf_dimension]); -2441: } -2441: -2441: numer_denom(b.upper(), numerators[lf_dimension+1], -2441: denominators[lf_dimension+1]); -2441: if (numerators[lf_dimension+1] != 0) { -2441: lcm_assign(lcm, lcm, denominators[lf_dimension+1]); -2441: } -2441: -2441: for (dimension_type i = 0; i < lf_dimension; ++i) { -2441: const FP_Interval_Type& curr_int = lf.coefficient(Variable(i)); -2441: numer_denom(curr_int.lower(), numerators[i], denominators[i]); -2441: if (numerators[i] != 0) { -2441: lcm_assign(lcm, lcm, denominators[i]); -2441: } -2441: } -2441: -2441: for (dimension_type i = 0; i < lf_dimension; ++i) { -2441: if (numerators[i] != 0) { -2441: exact_div_assign(denominators[i], lcm, denominators[i]); -2441: numerators[i] *= denominators[i]; -2441: res += numerators[i] * Variable(i); -2441: } -2441: } -2441: -2441: if (numerators[lf_dimension] != 0) { -2441: exact_div_assign(denominators[lf_dimension], -2441: lcm, denominators[lf_dimension]); -2441: numerators[lf_dimension] *= denominators[lf_dimension]; -2441: res_low_coeff = numerators[lf_dimension]; -2441: } -2441: else { -2441: res_low_coeff = 0; -2441: } -2441: -2441: if (numerators[lf_dimension+1] != 0) { -2441: exact_div_assign(denominators[lf_dimension+1], -2441: lcm, denominators[lf_dimension+1]); -2441: numerators[lf_dimension+1] *= denominators[lf_dimension+1]; -2441: res_hi_coeff = numerators[lf_dimension+1]; -2441: } -2441: else { -2441: res_hi_coeff = 0; -2441: } -2441: } -2441: -2441: template -2441: void -2441: Polyhedron::throw_dimension_incompatible(const char* method, -2441: const char* lf_name, -2441: const Linear_Form& lf) const { -2441: throw_dimension_incompatible(method, lf_name, lf.space_dimension()); -2441: } -2441: -2441: template -2441: Input& -2441: Polyhedron::check_obj_space_dimension_overflow(Input& input, -2441: const Topology topol, -2441: const char* method, -2441: const char* reason) { -2441: check_space_dimension_overflow(input.space_dimension(), -2441: max_space_dimension(), -2441: topol, method, reason); -2441: return input; -2441: } -2441: -2441: } -2441: # 2858 "../../src/Polyhedron_defs.hh" 2 -2441: # 1 "../../src/Polyhedron_chdims_templates.hh" 1 -2441: # 28 "../../src/Polyhedron_chdims_templates.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: void -2441: Polyhedron::add_space_dimensions(Linear_System1& sys1, -2441: Linear_System2& sys2, -2441: Bit_Matrix& sat1, -2441: Bit_Matrix& sat2, -2441: dimension_type add_dim) { -2441: ((void) 0); -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: sys1.set_space_dimension(sys1.space_dimension() + add_dim); -2441: sys2.add_universe_rows_and_space_dimensions(add_dim); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: sat1.resize(sat1.num_rows() + add_dim, sat1.num_columns()); -2441: -2441: for (dimension_type i = sat1.num_rows() - add_dim; i-- > 0; ) { -2441: swap(sat1[i], sat1[i+add_dim]); -2441: } -2441: -2441: sat2.transpose_assign(sat1); -2441: } -2441: -2441: } -2441: # 2859 "../../src/Polyhedron_defs.hh" 2 -2441: # 1 "../../src/Polyhedron_conversion_templates.hh" 1 -2441: # 29 "../../src/Polyhedron_conversion_templates.hh" -2441: # 1 "../../src/Polyhedron_defs.hh" 1 -2441: # 30 "../../src/Polyhedron_conversion_templates.hh" 2 -2441: -2441: -2441: -2441: -2441: -2441: -2441: # 1 "/usr/include/c++/8/climits" 1 3 -2441: # 39 "/usr/include/c++/8/climits" 3 -2441: -2441: # 40 "/usr/include/c++/8/climits" 3 -2441: -2441: -2441: # 1 "/usr/lib/gcc/i686-linux-gnu/8/include-fixed/limits.h" 1 3 4 -2441: # 43 "/usr/include/c++/8/climits" 2 3 -2441: # 37 "../../src/Polyhedron_conversion_templates.hh" 2 -2441: # 52 "../../src/Polyhedron_conversion_templates.hh" -2441: namespace Parma_Polyhedra_Library { -2441: # 367 "../../src/Polyhedron_conversion_templates.hh" -2441: template -2441: dimension_type -2441: Polyhedron::conversion(Source_Linear_System& source, -2441: const dimension_type start, -2441: Dest_Linear_System& dest, -2441: Bit_Matrix& sat, -2441: dimension_type num_lines_or_equalities) { -2441: typedef typename Dest_Linear_System::row_type dest_row_type; -2441: typedef typename Source_Linear_System::row_type source_row_type; -2441: -2441: -2441: -2441: ((void) 0); -2441: const dimension_type source_space_dim = source.space_dimension(); -2441: const dimension_type source_num_rows = source.num_rows(); -2441: const dimension_type source_num_columns = source_space_dim -2441: + (source.is_necessarily_closed() ? 1U : 2U); -2441: -2441: -2441: dimension_type dest_num_rows = dest.num_rows(); -2441: -2441: -2441: std::vector recyclable_dest_rows; -2441: -2441: using std::swap; -2441: -2441: -2441: -2441: -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: -2441: ((void) 0); -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_normalized_sp_i; Parma_Polyhedra_Library::Coefficient& normalized_sp_i = holder_normalized_sp_i.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_normalized_sp_o; Parma_Polyhedra_Library::Coefficient& normalized_sp_o = holder_normalized_sp_o.item(); -2441: -2441: bool dest_sorted = dest.is_sorted(); -2441: const dimension_type dest_first_pending_row = dest.first_pending_row(); -2441: -2441: -2441: std::vector redundant_source_rows; -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp > holder_sat_num_ones; std::vector& sat_num_ones = holder_sat_num_ones.item(); -2441: sat_num_ones.resize(dest_num_rows, 0); -2441: for (dimension_type i = dest_num_rows; i-- > 0; ) { -2441: sat_num_ones[i] = sat[i].count_ones(); -2441: } -2441: -2441: -2441: -2441: -2441: for (dimension_type k = start; k < source_num_rows; ++k) { -2441: const source_row_type& source_k = source[k]; -2441: # 437 "../../src/Polyhedron_conversion_templates.hh" -2441: Parma_Polyhedra_Library::Dirty_Temp > holder_scalar_prod; std::vector& scalar_prod = holder_scalar_prod.item(); -2441: if (dest_num_rows > scalar_prod.size()) { -2441: scalar_prod.insert(scalar_prod.end(), -2441: dest_num_rows - scalar_prod.size(), -2441: Coefficient_zero()); -2441: } -2441: -2441: -2441: dimension_type index_non_zero = 0; -2441: for ( ; index_non_zero < dest_num_rows; ++index_non_zero) { -2441: do { } while (false); -2441: Scalar_Products::assign(scalar_prod[index_non_zero], -2441: source_k, -2441: dest.sys.rows[index_non_zero]); -2441: do { Weightwatch_Traits::weight += (17)*(source_space_dim); } while (false); -2441: if (scalar_prod[index_non_zero] != 0) { -2441: -2441: break; -2441: } -2441: -2441: -2441: -2441: maybe_abandon(); -2441: } -2441: for (dimension_type i = index_non_zero + 1; i < dest_num_rows; ++i) { -2441: do { } while (false); -2441: Scalar_Products::assign(scalar_prod[i], source_k, dest.sys.rows[i]); -2441: do { Weightwatch_Traits::weight += (25)*(source_space_dim); } while (false); -2441: -2441: -2441: -2441: maybe_abandon(); -2441: } -2441: # 478 "../../src/Polyhedron_conversion_templates.hh" -2441: if (index_non_zero < num_lines_or_equalities) { -2441: -2441: -2441: -2441: -2441: dest.sys.rows[index_non_zero].set_is_ray_or_point_or_inequality(); -2441: -2441: -2441: -2441: if (scalar_prod[index_non_zero] < 0) { -2441: -2441: -2441: neg_assign(scalar_prod[index_non_zero]); -2441: neg_assign(dest.sys.rows[index_non_zero].expr); -2441: -2441: -2441: } -2441: -2441: -2441: -2441: dest_sorted = false; -2441: --num_lines_or_equalities; -2441: if (index_non_zero != num_lines_or_equalities) { -2441: swap(dest.sys.rows[index_non_zero], -2441: dest.sys.rows[num_lines_or_equalities]); -2441: swap(scalar_prod[index_non_zero], -2441: scalar_prod[num_lines_or_equalities]); -2441: } -2441: const dest_row_type& dest_nle = dest.sys.rows[num_lines_or_equalities]; -2441: # 523 "../../src/Polyhedron_conversion_templates.hh" -2441: Coefficient& scalar_prod_nle = scalar_prod[num_lines_or_equalities]; -2441: ((void) 0); -2441: for (dimension_type -2441: i = index_non_zero; i < num_lines_or_equalities; ++i) { -2441: if (scalar_prod[i] != 0) { -2441: # 540 "../../src/Polyhedron_conversion_templates.hh" -2441: normalize2(scalar_prod[i], -2441: scalar_prod_nle, -2441: normalized_sp_i, -2441: normalized_sp_o); -2441: dest_row_type& dest_i = dest.sys.rows[i]; -2441: neg_assign(normalized_sp_i); -2441: dest_i.expr.linear_combine(dest_nle.expr, -2441: normalized_sp_o, normalized_sp_i); -2441: dest_i.strong_normalize(); -2441: -2441: -2441: scalar_prod[i] = 0; -2441: -2441: } -2441: } -2441: # 563 "../../src/Polyhedron_conversion_templates.hh" -2441: for (dimension_type -2441: i = num_lines_or_equalities + 1; i < dest_num_rows; ++i) { -2441: if (scalar_prod[i] != 0) { -2441: # 578 "../../src/Polyhedron_conversion_templates.hh" -2441: normalize2(scalar_prod[i], -2441: scalar_prod_nle, -2441: normalized_sp_i, -2441: normalized_sp_o); -2441: dest_row_type& dest_i = dest.sys.rows[i]; -2441: do { } while (false); -2441: neg_assign(normalized_sp_i); -2441: dest_i.expr.linear_combine(dest_nle.expr, -2441: normalized_sp_o, normalized_sp_i); -2441: dest_i.strong_normalize(); -2441: -2441: -2441: scalar_prod[i] = 0; -2441: -2441: do { Weightwatch_Traits::weight += (41)*(source_space_dim); } while (false); -2441: } -2441: -2441: -2441: -2441: maybe_abandon(); -2441: } -2441: -2441: -2441: -2441: -2441: Bit_Row& sat_nle = sat[num_lines_or_equalities]; -2441: if (source_k.is_ray_or_point_or_inequality()) { -2441: sat_nle.set(k - redundant_source_rows.size()); -2441: -2441: ++sat_num_ones[num_lines_or_equalities]; -2441: -2441: } -2441: else { -2441: -2441: -2441: -2441: --dest_num_rows; -2441: swap(dest.sys.rows[num_lines_or_equalities], -2441: dest.sys.rows[dest_num_rows]); -2441: recyclable_dest_rows.resize(recyclable_dest_rows.size() + 1); -2441: swap(dest.sys.rows.back(), recyclable_dest_rows.back()); -2441: dest.sys.rows.pop_back(); -2441: ((void) 0); -2441: -2441: swap(scalar_prod_nle, scalar_prod[dest_num_rows]); -2441: swap(sat_nle, sat[dest_num_rows]); -2441: -2441: swap(sat_num_ones[num_lines_or_equalities], -2441: sat_num_ones[dest_num_rows]); -2441: -2441: -2441: } -2441: -2441: -2441: continue; -2441: } -2441: -2441: -2441: ((void) 0); -2441: # 649 "../../src/Polyhedron_conversion_templates.hh" -2441: dimension_type lines_or_equal_bound = num_lines_or_equalities; -2441: dimension_type inf_bound = dest_num_rows; -2441: -2441: -2441: while (inf_bound > lines_or_equal_bound -2441: && scalar_prod[lines_or_equal_bound] == 0) { -2441: ++lines_or_equal_bound; -2441: } -2441: dimension_type sup_bound = lines_or_equal_bound; -2441: while (inf_bound > sup_bound) { -2441: const int sp_sign = sgn(scalar_prod[sup_bound]); -2441: if (sp_sign == 0) { -2441: -2441: swap(dest.sys.rows[sup_bound], dest.sys.rows[lines_or_equal_bound]); -2441: swap(scalar_prod[sup_bound], scalar_prod[lines_or_equal_bound]); -2441: swap(sat[sup_bound], sat[lines_or_equal_bound]); -2441: -2441: swap(sat_num_ones[sup_bound], sat_num_ones[lines_or_equal_bound]); -2441: -2441: ++lines_or_equal_bound; -2441: ++sup_bound; -2441: dest_sorted = false; -2441: } -2441: else if (sp_sign < 0) { -2441: -2441: --inf_bound; -2441: swap(dest.sys.rows[sup_bound], dest.sys.rows[inf_bound]); -2441: swap(sat[sup_bound], sat[inf_bound]); -2441: swap(scalar_prod[sup_bound], scalar_prod[inf_bound]); -2441: -2441: swap(sat_num_ones[sup_bound], sat_num_ones[inf_bound]); -2441: -2441: dest_sorted = false; -2441: } -2441: else { -2441: -2441: ++sup_bound; -2441: } -2441: } -2441: -2441: if (sup_bound == dest_num_rows) { -2441: -2441: -2441: -2441: -2441: -2441: if (source_k.is_ray_or_point_or_inequality()) { -2441: redundant_source_rows.push_back(k); -2441: } -2441: else { -2441: -2441: -2441: -2441: ((void) 0); -2441: while (dest_num_rows != lines_or_equal_bound) { -2441: recyclable_dest_rows.resize(recyclable_dest_rows.size() + 1); -2441: swap(dest.sys.rows.back(), recyclable_dest_rows.back()); -2441: dest.sys.rows.pop_back(); -2441: --dest_num_rows; -2441: } -2441: ((void) 0); -2441: } -2441: -2441: -2441: continue; -2441: } -2441: -2441: -2441: -2441: if (sup_bound == num_lines_or_equalities) { -2441: -2441: -2441: -2441: ((void) 0); -2441: while (dest_num_rows != sup_bound) { -2441: recyclable_dest_rows.resize(recyclable_dest_rows.size() + 1); -2441: swap(dest.sys.rows.back(), recyclable_dest_rows.back()); -2441: dest.sys.rows.pop_back(); -2441: --dest_num_rows; -2441: } -2441: ((void) 0); -2441: -2441: -2441: continue; -2441: } -2441: # 744 "../../src/Polyhedron_conversion_templates.hh" -2441: const dimension_type bound = dest_num_rows; -2441: # 755 "../../src/Polyhedron_conversion_templates.hh" -2441: const dimension_type min_saturators -2441: = source_num_columns - num_lines_or_equalities - 2; -2441: -2441: const dimension_type max_saturators = k - redundant_source_rows.size(); -2441: -2441: -2441: -2441: -2441: -2441: for (dimension_type i = lines_or_equal_bound; i < sup_bound; ++i) { -2441: for (dimension_type j = sup_bound; j < bound; ++j) { -2441: -2441: -2441: -2441: -2441: -2441: ((void) 0) -2441: ; -2441: ((void) 0) -2441: ; -2441: -2441: -2441: -2441: -2441: -2441: Bit_Row new_satrow(sat[i], sat[j]); -2441: # 790 "../../src/Polyhedron_conversion_templates.hh" -2441: dimension_type new_satrow_ones = new_satrow.count_ones(); -2441: -2441: -2441: -2441: const dimension_type num_common_satur -2441: = max_saturators - new_satrow_ones; -2441: if (num_common_satur < min_saturators) { -2441: -2441: continue; -2441: } -2441: # 808 "../../src/Polyhedron_conversion_templates.hh" -2441: const dimension_type max_ones_i_j -2441: = std::max(sat_num_ones[i], sat_num_ones[j]); -2441: if (max_ones_i_j + 1 == new_satrow_ones) { -2441: -2441: goto are_adjacent; -2441: } -2441: -2441: -2441: -2441: { -2441: bool redundant = false; -2441: do { } while (false); -2441: for (dimension_type l = num_lines_or_equalities; l < bound; ++l) { -2441: if (l != i && l != j -2441: && subset_or_equal(sat[l], new_satrow)) { -2441: -2441: -2441: redundant = true; -2441: break; -2441: } -2441: } -2441: ((void) 0); -2441: do { Weightwatch_Traits::weight += (15)*(bound - num_lines_or_equalities); } while (false); -2441: if (redundant) { -2441: -2441: continue; -2441: } -2441: } -2441: -2441: -2441: are_adjacent: -2441: -2441: -2441: -2441: dest_row_type new_row; -2441: if (recyclable_dest_rows.empty()) { -2441: sat.add_recycled_row(new_satrow); -2441: -2441: sat_num_ones.push_back(new_satrow_ones); -2441: -2441: } -2441: else { -2441: swap(new_row, recyclable_dest_rows.back()); -2441: recyclable_dest_rows.pop_back(); -2441: new_row.set_space_dimension_no_ok(source_space_dim); -2441: swap(sat[dest_num_rows], new_satrow); -2441: -2441: swap(sat_num_ones[dest_num_rows], new_satrow_ones); -2441: -2441: } -2441: # 871 "../../src/Polyhedron_conversion_templates.hh" -2441: normalize2(scalar_prod[i], -2441: scalar_prod[j], -2441: normalized_sp_i, -2441: normalized_sp_o); -2441: do { } while (false); -2441: -2441: neg_assign(normalized_sp_o); -2441: new_row = dest.sys.rows[j]; -2441: -2441: ((void) 0); -2441: ((void) 0); -2441: new_row.expr.linear_combine(dest.sys.rows[i].expr, -2441: normalized_sp_i, normalized_sp_o); -2441: -2441: do { Weightwatch_Traits::weight += (86)*(source_space_dim); } while (false); -2441: new_row.strong_normalize(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: ((void) 0); -2441: if (scalar_prod.size() <= dest_num_rows) { -2441: scalar_prod.push_back(Coefficient_zero()); -2441: } -2441: else { -2441: scalar_prod[dest_num_rows] = Coefficient_zero(); -2441: } -2441: dest.sys.rows.resize(dest.sys.rows.size() + 1); -2441: swap(dest.sys.rows.back(), new_row); -2441: -2441: ++dest_num_rows; -2441: } -2441: -2441: -2441: -2441: maybe_abandon(); -2441: } -2441: -2441: -2441: dimension_type j; -2441: if (source_k.is_ray_or_point_or_inequality()) { -2441: -2441: -2441: j = sup_bound; -2441: -2441: -2441: -2441: -2441: -2441: const dimension_type new_k = k - redundant_source_rows.size(); -2441: for (dimension_type l = lines_or_equal_bound; -2441: l < sup_bound; ++l) { -2441: sat[l].set(new_k); -2441: -2441: ++sat_num_ones[l]; -2441: -2441: } -2441: } -2441: else { -2441: -2441: -2441: j = lines_or_equal_bound; -2441: } -2441: -2441: -2441: -2441: -2441: dimension_type i = dest_num_rows; -2441: while (j < bound && i > bound) { -2441: --i; -2441: swap(dest.sys.rows[i], dest.sys.rows[j]); -2441: swap(scalar_prod[i], scalar_prod[j]); -2441: swap(sat[i], sat[j]); -2441: -2441: swap(sat_num_ones[i], sat_num_ones[j]); -2441: -2441: ++j; -2441: dest_sorted = false; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: const dimension_type new_num_rows = (j == bound) ? i : j; -2441: ((void) 0); -2441: while (dest_num_rows != new_num_rows) { -2441: recyclable_dest_rows.resize(recyclable_dest_rows.size() + 1); -2441: swap(dest.sys.rows.back(), recyclable_dest_rows.back()); -2441: dest.sys.rows.pop_back(); -2441: --dest_num_rows; -2441: } -2441: ((void) 0); -2441: } -2441: -2441: -2441: -2441: if (redundant_source_rows.size() > 0) { -2441: source.remove_rows(redundant_source_rows); -2441: sat.remove_trailing_columns(redundant_source_rows.size()); -2441: } -2441: # 985 "../../src/Polyhedron_conversion_templates.hh" -2441: if (start > 0 && start < source.num_rows()) { -2441: source.set_sorted(compare(source[start - 1], source[start]) <= 0); -2441: } -2441: -2441: source.unset_pending_rows(); -2441: -2441: -2441: -2441: if (!recyclable_dest_rows.empty()) { -2441: const dimension_type num_removed_rows = recyclable_dest_rows.size(); -2441: sat.remove_trailing_rows(num_removed_rows); -2441: } -2441: if (dest_sorted) { -2441: -2441: -2441: -2441: for (dimension_type i = dest_first_pending_row; -2441: i < dest_num_rows; ++i) { -2441: if (compare(dest.sys.rows[i - 1], dest.sys.rows[i]) > 0) { -2441: dest_sorted = false; -2441: break; -2441: } -2441: } -2441: } -2441: # 1017 "../../src/Polyhedron_conversion_templates.hh" -2441: dest.sys.index_first_pending = dest.num_rows(); -2441: dest.set_sorted(dest_sorted); -2441: ((void) 0); -2441: -2441: return num_lines_or_equalities; -2441: } -2441: -2441: } -2441: # 2860 "../../src/Polyhedron_defs.hh" 2 -2441: # 1 "../../src/Polyhedron_minimize_templates.hh" 1 -2441: # 31 "../../src/Polyhedron_minimize_templates.hh" -2441: namespace Parma_Polyhedra_Library { -2441: # 69 "../../src/Polyhedron_minimize_templates.hh" -2441: template -2441: bool -2441: Polyhedron::minimize(const bool con_to_gen, -2441: Source_Linear_System& source, -2441: Dest_Linear_System& dest, -2441: Bit_Matrix& sat) { -2441: -2441: typedef typename Dest_Linear_System::row_type dest_row_type; -2441: -2441: -2441: ((void) 0); -2441: -2441: -2441: -2441: -2441: -2441: ((void) 0); -2441: -2441: -2441: if (!source.is_sorted()) { -2441: source.sort_rows(); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: dimension_type dest_num_rows -2441: = source.topology() == NECESSARILY_CLOSED ? source.space_dimension() + 1 -2441: : source.space_dimension() + 2; -2441: -2441: dest.clear(); -2441: dest.set_space_dimension(source.space_dimension()); -2441: -2441: -2441: for (dimension_type i = 0; i < dest_num_rows; ++i) { -2441: Linear_Expression expr; -2441: expr.set_space_dimension(dest_num_rows - 1); -2441: if (i == 0) { -2441: expr += 1; -2441: } -2441: else { -2441: expr += Variable(i - 1); -2441: } -2441: dest_row_type dest_i(expr, dest_row_type::LINE_OR_EQUALITY, NECESSARILY_CLOSED); -2441: if (dest.topology() == NOT_NECESSARILY_CLOSED) { -2441: dest_i.mark_as_not_necessarily_closed(); -2441: } -2441: dest.sys.insert_no_ok(dest_i, Recycle_Input()); -2441: } -2441: -2441: -2441: dest.set_sorted(false); -2441: # 141 "../../src/Polyhedron_minimize_templates.hh" -2441: Bit_Matrix tmp_sat(dest_num_rows, source.num_rows()); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: const dimension_type num_lines_or_equalities -2441: = conversion(source, 0U, dest, tmp_sat, dest_num_rows); -2441: -2441: dest_num_rows = dest.num_rows(); -2441: # 166 "../../src/Polyhedron_minimize_templates.hh" -2441: dimension_type first_point; -2441: if (dest.is_necessarily_closed()) { -2441: for (first_point = num_lines_or_equalities; -2441: first_point < dest_num_rows; -2441: ++first_point) { -2441: if (dest[first_point].expr.inhomogeneous_term() > 0) { -2441: break; -2441: } -2441: } -2441: } -2441: else { -2441: for (first_point = num_lines_or_equalities; -2441: first_point < dest_num_rows; -2441: ++first_point) { -2441: if (dest[first_point].expr.get(Variable(dest.space_dimension())) > 0) { -2441: break; -2441: } -2441: } -2441: } -2441: -2441: if (first_point == dest_num_rows) { -2441: if (con_to_gen) { -2441: -2441: return true; -2441: } -2441: else { -2441: # 200 "../../src/Polyhedron_minimize_templates.hh" -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return false; -2441: } -2441: } -2441: else { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: sat.transpose_assign(tmp_sat); -2441: simplify(source, sat); -2441: return false; -2441: } -2441: } -2441: # 264 "../../src/Polyhedron_minimize_templates.hh" -2441: template -2441: bool -2441: Polyhedron::add_and_minimize(const bool con_to_gen, -2441: Source_Linear_System1& source1, -2441: Dest_Linear_System& dest, -2441: Bit_Matrix& sat, -2441: const Source_Linear_System2& source2) { -2441: -2441: ((void) 0); -2441: -2441: -2441: ((void) 0); -2441: -2441: ((void) 0); -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: const dimension_type old_source1_num_rows = source1.num_rows(); -2441: -2441: dimension_type k1 = 0; -2441: dimension_type k2 = 0; -2441: dimension_type source2_num_rows = source2.num_rows(); -2441: while (k1 < old_source1_num_rows && k2 < source2_num_rows) { -2441: -2441: -2441: -2441: -2441: -2441: -2441: const int cmp = compare(source1[k1], source2[k2]); -2441: if (cmp == 0) { -2441: -2441: ++k2; -2441: -2441: -2441: ++k1; -2441: } -2441: else if (cmp < 0) { -2441: -2441: ++k1; -2441: } -2441: else { -2441: -2441: -2441: -2441: source1.add_pending_row(source2[k2]); -2441: -2441: ++k2; -2441: } -2441: } -2441: -2441: if (k2 < source2_num_rows) { -2441: -2441: -2441: -2441: for ( ; k2 < source2_num_rows; ++k2) { -2441: source1.add_pending_row(source2[k2]); -2441: } -2441: } -2441: -2441: if (source1.num_pending_rows() == 0) { -2441: -2441: -2441: -2441: return false; -2441: } -2441: return add_and_minimize(con_to_gen, source1, dest, sat); -2441: } -2441: # 370 "../../src/Polyhedron_minimize_templates.hh" -2441: template -2441: bool -2441: Polyhedron::add_and_minimize(const bool con_to_gen, -2441: Source_Linear_System& source, -2441: Dest_Linear_System& dest, -2441: Bit_Matrix& sat) { -2441: ((void) 0); -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: -2441: -2441: sat.resize(dest.num_rows(), source.num_rows()); -2441: -2441: -2441: -2441: const dimension_type num_lines_or_equalities -2441: = conversion(source, source.first_pending_row(), -2441: dest, sat, -2441: dest.num_lines_or_equalities()); -2441: -2441: -2441: const dimension_type dest_num_rows = dest.num_rows(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: dimension_type first_point; -2441: if (dest.is_necessarily_closed()) { -2441: for (first_point = num_lines_or_equalities; -2441: first_point < dest_num_rows; -2441: ++first_point) { -2441: if (dest[first_point].expr.inhomogeneous_term() > 0) { -2441: break; -2441: } -2441: } -2441: } -2441: else { -2441: for (first_point = num_lines_or_equalities; -2441: first_point < dest_num_rows; -2441: ++first_point) { -2441: if (dest[first_point].expr.get(Variable(dest.space_dimension())) > 0) { -2441: break; -2441: } -2441: } -2441: } -2441: -2441: if (first_point == dest_num_rows) { -2441: if (con_to_gen) { -2441: -2441: return true; -2441: } -2441: else { -2441: # 434 "../../src/Polyhedron_minimize_templates.hh" -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return false; -2441: } -2441: } -2441: else { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: sat.transpose(); -2441: simplify(source, sat); -2441: -2441: sat.transpose(); -2441: return false; -2441: } -2441: } -2441: -2441: } -2441: # 2861 "../../src/Polyhedron_defs.hh" 2 -2441: # 1 "../../src/Polyhedron_simplify_templates.hh" 1 -2441: # 32 "../../src/Polyhedron_simplify_templates.hh" -2441: namespace Parma_Polyhedra_Library { -2441: # 82 "../../src/Polyhedron_simplify_templates.hh" -2441: template -2441: dimension_type -2441: Polyhedron::simplify(Linear_System1& sys, Bit_Matrix& sat) { -2441: dimension_type num_rows = sys.num_rows(); -2441: const dimension_type num_cols_sat = sat.num_columns(); -2441: -2441: using std::swap; -2441: -2441: -2441: dimension_type num_lines_or_equalities = 0; -2441: while (num_lines_or_equalities < num_rows -2441: && sys[num_lines_or_equalities].is_line_or_equality()) { -2441: ++num_lines_or_equalities; -2441: } -2441g++ -DHAVE_CONFIG_H -I. -I../.. -I../../src -I../../src -I../../tests -I../../utils -DNDEBUG=1 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -frounding-math -g -O2 -ffile-prefix-map=/build/ppl-1.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -g -fpermissive -W -Wall -c -o powerset1.o powerset1.cc -: -2441: -2441: -2441: if (num_rows > simplify_num_saturators_size) { -2441: delete [] simplify_num_saturators_p; -2441: simplify_num_saturators_p = 0; -2441: simplify_num_saturators_size = 0; -2441: const size_t max_size -2441: = std::numeric_limits::max() / sizeof(dimension_type); -2441: const size_t new_size = compute_capacity(num_rows, max_size); -2441: simplify_num_saturators_p = new dimension_type[new_size]; -2441: simplify_num_saturators_size = new_size; -2441: } -2441: dimension_type* const num_saturators = simplify_num_saturators_p; -2441: -2441: bool sys_sorted = sys.is_sorted(); -2441: -2441: -2441: -2441: -2441: for (dimension_type i = num_lines_or_equalities; i < num_rows; ++i) { -2441: if (sat[i].empty()) { -2441: -2441: -2441: -2441: sys.sys.rows[i].set_is_line_or_equality(); -2441: -2441: sys.sys.rows[i].sign_normalize(); -2441: -2441: -2441: if (i != num_lines_or_equalities) { -2441: sys.sys.rows[i].m_swap(sys.sys.rows[num_lines_or_equalities]); -2441: swap(sat[i], sat[num_lines_or_equalities]); -2441: swap(num_saturators[i], num_saturators[num_lines_or_equalities]); -2441: } -2441: ++num_lines_or_equalities; -2441: -2441: sys_sorted = false; -2441: } -2441: else { -2441: -2441: -2441: -2441: num_saturators[i] = num_cols_sat - sat[i].count_ones(); -2441: } -2441: } -2441: -2441: sys.set_sorted(sys_sorted); -2441: ((void) 0); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: const dimension_type rank = sys.gauss(num_lines_or_equalities); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: if (rank < num_lines_or_equalities) { -2441: # 169 "../../src/Polyhedron_simplify_templates.hh" -2441: for (dimension_type redundant = rank, -2441: erasing = num_rows; -2441: redundant < num_lines_or_equalities -2441: && erasing > num_lines_or_equalities; -2441: ) { -2441: --erasing; -2441: sys.remove_row(redundant); -2441: swap(sat[redundant], sat[erasing]); -2441: swap(num_saturators[redundant], num_saturators[erasing]); -2441: ++redundant; -2441: } -2441: -2441: -2441: -2441: -2441: num_rows -= num_lines_or_equalities - rank; -2441: -2441: -2441: -2441: sys.remove_trailing_rows(sys.num_rows() - num_rows); -2441: -2441: ((void) 0); -2441: -2441: sat.remove_trailing_rows(num_lines_or_equalities - rank); -2441: -2441: -2441: num_lines_or_equalities = rank; -2441: } -2441: -2441: const dimension_type old_num_rows = sys.num_rows(); -2441: # 230 "../../src/Polyhedron_simplify_templates.hh" -2441: const dimension_type sys_num_columns -2441: = sys.topology() == NECESSARILY_CLOSED ? sys.space_dimension() + 1 -2441: : sys.space_dimension() + 2; -2441: const dimension_type min_saturators -2441: = sys_num_columns - num_lines_or_equalities - 1; -2441: for (dimension_type i = num_lines_or_equalities; i < num_rows; ) { -2441: if (num_saturators[i] < min_saturators) { -2441: -2441: --num_rows; -2441: sys.remove_row(i); -2441: swap(sat[i], sat[num_rows]); -2441: swap(num_saturators[i], num_saturators[num_rows]); -2441: } -2441: else { -2441: ++i; -2441: } -2441: } -2441: -2441: -2441: for (dimension_type i = num_lines_or_equalities; i < num_rows; ) { -2441: bool redundant = false; -2441: -2441: -2441: -2441: -2441: -2441: -2441: for (dimension_type j = num_lines_or_equalities; j < num_rows; ) { -2441: if (i == j) { -2441: -2441: ++j; -2441: } -2441: else { -2441: # 271 "../../src/Polyhedron_simplify_templates.hh" -2441: bool strict_subset; -2441: if (subset_or_equal(sat[j], sat[i], strict_subset)) { -2441: if (strict_subset) { -2441: -2441: -2441: -2441: -2441: -2441: redundant = true; -2441: break; -2441: } -2441: else { -2441: -2441: -2441: -2441: -2441: --num_rows; -2441: sys.remove_row(j); -2441: ((void) 0); -2441: swap(sat[j], sat[num_rows]); -2441: swap(num_saturators[j], num_saturators[num_rows]); -2441: } -2441: } -2441: else { -2441: -2441: -2441: -2441: ++j; -2441: } -2441: } -2441: } -2441: if (redundant) { -2441: -2441: --num_rows; -2441: sys.remove_row(i); -2441: ((void) 0); -2441: swap(sat[i], sat[num_rows]); -2441: swap(num_saturators[i], num_saturators[num_rows]); -2441: } -2441: else { -2441: -2441: ++i; -2441: } -2441: } -2441: -2441: -2441: -2441: sat.remove_trailing_rows(old_num_rows - num_rows); -2441: # 335 "../../src/Polyhedron_simplify_templates.hh" -2441: sys.back_substitute(num_lines_or_equalities); -2441: -2441: -2441: -2441: -2441: return num_lines_or_equalities; -2441: } -2441: -2441: } -2441: # 2862 "../../src/Polyhedron_defs.hh" 2 -2441: # 35 "../../src/Box_templates.hh" 2 -2441: # 1 "../../src/Grid_defs.hh" 1 -2441: # 37 "../../src/Grid_defs.hh" -2441: # 1 "../../src/Grid_Generator_System_defs.hh" 1 -2441: # 36 "../../src/Grid_Generator_System_defs.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: namespace IO_Operators { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: std::ostream& operator<<(std::ostream& s, const Grid_Generator_System& gs); -2441: -2441: } -2441: -2441: -2441: -2441: void swap(Grid_Generator_System& x, Grid_Generator_System& y); -2441: -2441: -2441: -2441: bool operator==(const Grid_Generator_System& x, -2441: const Grid_Generator_System& y); -2441: -2441: } -2441: # 175 "../../src/Grid_Generator_System_defs.hh" -2441: class Parma_Polyhedra_Library::Grid_Generator_System { -2441: public: -2441: typedef Grid_Generator row_type; -2441: -2441: static const Representation default_representation = SPARSE; -2441: -2441: -2441: explicit Grid_Generator_System(Representation r = default_representation); -2441: -2441: -2441: explicit Grid_Generator_System(const Grid_Generator& g, -2441: Representation r = default_representation); -2441: -2441: -2441: explicit Grid_Generator_System(dimension_type dim, -2441: Representation r = default_representation); -2441: -2441: -2441: -2441: Grid_Generator_System(const Grid_Generator_System& gs); -2441: -2441: -2441: Grid_Generator_System(const Grid_Generator_System& gs, Representation r); -2441: -2441: -2441: ~Grid_Generator_System(); -2441: -2441: -2441: Grid_Generator_System& operator=(const Grid_Generator_System& y); -2441: -2441: -2441: Representation representation() const; -2441: -2441: -2441: void set_representation(Representation r); -2441: -2441: -2441: static dimension_type max_space_dimension(); -2441: -2441: -2441: dimension_type space_dimension() const; -2441: -2441: -2441: -2441: -2441: -2441: void clear(); -2441: # 231 "../../src/Grid_Generator_System_defs.hh" -2441: void insert(const Grid_Generator& g); -2441: -2441: -2441: -2441: -2441: -2441: void insert(Grid_Generator& g, Recycle_Input); -2441: -2441: -2441: -2441: -2441: -2441: void insert(Grid_Generator_System& gs, Recycle_Input); -2441: -2441: -2441: static void initialize(); -2441: -2441: -2441: static void finalize(); -2441: -2441: -2441: -2441: -2441: -2441: static const Grid_Generator_System& zero_dim_univ(); -2441: # 278 "../../src/Grid_Generator_System_defs.hh" -2441: class const_iterator -2441: : public std::iterator { -2441: public: -2441: -2441: const_iterator(); -2441: -2441: -2441: const_iterator(const const_iterator& y); -2441: -2441: -2441: ~const_iterator(); -2441: -2441: -2441: const_iterator& operator=(const const_iterator& y); -2441: -2441: -2441: const Grid_Generator& operator*() const; -2441: -2441: -2441: const Grid_Generator* operator->() const; -2441: -2441: -2441: const_iterator& operator++(); -2441: -2441: -2441: const_iterator operator++(int); -2441: -2441: -2441: -2441: -2441: -2441: bool operator==(const const_iterator& y) const; -2441: -2441: -2441: -2441: -2441: -2441: bool operator!=(const const_iterator& y) const; -2441: -2441: private: -2441: friend class Grid_Generator_System; -2441: -2441: Linear_System::const_iterator i; -2441: -2441: -2441: const_iterator(const Linear_System::const_iterator& y); -2441: }; -2441: -2441: -2441: bool empty() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_iterator begin() const; -2441: -2441: -2441: const_iterator end() const; -2441: -2441: -2441: dimension_type num_rows() const; -2441: -2441: -2441: dimension_type num_parameters() const; -2441: -2441: -2441: dimension_type num_lines() const; -2441: -2441: -2441: -2441: -2441: -2441: bool has_points() const; -2441: -2441: -2441: bool is_equal_to(const Grid_Generator_System& y) const; -2441: -2441: -2441: bool OK() const; -2441: -2441: void ascii_dump() const; void ascii_dump(std::ostream& s) const; void print() const; -2441: # 375 "../../src/Grid_Generator_System_defs.hh" -2441: bool ascii_load(std::istream& s); -2441: -2441: -2441: memory_size_type total_memory_in_bytes() const; -2441: -2441: -2441: memory_size_type external_memory_in_bytes() const; -2441: -2441: -2441: void m_swap(Grid_Generator_System& y); -2441: -2441: private: -2441: -2441: const Grid_Generator& operator[](dimension_type k) const; -2441: # 419 "../../src/Grid_Generator_System_defs.hh" -2441: void affine_image(Variable v, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference denominator); -2441: -2441: -2441: void set_sorted(bool b); -2441: # 441 "../../src/Grid_Generator_System_defs.hh" -2441: void add_universe_rows_and_columns(dimension_type dims); -2441: -2441: -2441: void set_space_dimension(dimension_type space_dim); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void remove_space_dimensions(const Variables_Set& vars); -2441: -2441: -2441: -2441: void shift_space_dimensions(Variable v, dimension_type n); -2441: -2441: -2441: void unset_pending_rows(); -2441: # 473 "../../src/Grid_Generator_System_defs.hh" -2441: void permute_space_dimensions(const std::vector& cycle); -2441: -2441: bool has_no_rows() const; -2441: -2441: -2441: void remove_trailing_rows(dimension_type n); -2441: -2441: void insert_verbatim(const Grid_Generator& g); -2441: -2441: -2441: Topology topology() const; -2441: -2441: -2441: dimension_type first_pending_row() const; -2441: -2441: Linear_System sys; -2441: -2441: -2441: -2441: -2441: -2441: static const Grid_Generator_System* zero_dim_univ_p; -2441: -2441: friend bool -2441: operator==(const Grid_Generator_System& x, const Grid_Generator_System& y); -2441: -2441: -2441: void set_index_first_pending_row(dimension_type i); -2441: -2441: -2441: -2441: -2441: -2441: -2441: void remove_invalid_lines_and_parameters(); -2441: -2441: friend class Polyhedron; -2441: friend class Grid; -2441: }; -2441: # 38 "../../src/Grid_defs.hh" 2 -2441: # 1 "../../src/Grid_Generator_System_inlines.hh" 1 -2441: # 29 "../../src/Grid_Generator_System_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: inline void -2441: Grid_Generator_System::set_sorted(bool b) { -2441: sys.set_sorted(b); -2441: } -2441: -2441: inline void -2441: Grid_Generator_System::unset_pending_rows() { -2441: sys.unset_pending_rows(); -2441: } -2441: -2441: inline void -2441: Grid_Generator_System::set_index_first_pending_row(const dimension_type i) { -2441: sys.set_index_first_pending_row(i); -2441: } -2441: -2441: inline void -2441: Grid_Generator_System -2441: ::permute_space_dimensions(const std::vector& cycle) { -2441: return sys.permute_space_dimensions(cycle); -2441: } -2441: -2441: inline bool -2441: Grid_Generator_System::is_equal_to(const Grid_Generator_System& y) const { -2441: return (sys == y.sys); -2441: } -2441: -2441: inline -2441: Grid_Generator_System::Grid_Generator_System(Representation r) -2441: : sys(NECESSARILY_CLOSED, r) { -2441: sys.set_sorted(false); -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: Grid_Generator_System::Grid_Generator_System(const Grid_Generator_System& gs) -2441: : sys(gs.sys) { -2441: } -2441: -2441: inline -2441: Grid_Generator_System::Grid_Generator_System(const Grid_Generator_System& gs, -2441: Representation r) -2441: : sys(gs.sys, r) { -2441: } -2441: -2441: inline -2441: Grid_Generator_System::Grid_Generator_System(dimension_type dim, -2441: Representation r) -2441: : sys(NECESSARILY_CLOSED, r) { -2441: sys.set_space_dimension(dim); -2441: sys.set_sorted(false); -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: Grid_Generator_System::Grid_Generator_System(const Grid_Generator& g, -2441: Representation r) -2441: : sys(NECESSARILY_CLOSED, r) { -2441: sys.insert(g); -2441: sys.set_sorted(false); -2441: } -2441: -2441: inline -2441: Grid_Generator_System::~Grid_Generator_System() { -2441: } -2441: -2441: inline Grid_Generator_System& -2441: Grid_Generator_System::operator=(const Grid_Generator_System& y) { -2441: Grid_Generator_System tmp = y; -2441: swap(*this, tmp); -2441: return *this; -2441: } -2441: -2441: inline Representation -2441: Grid_Generator_System::representation() const { -2441: return sys.representation(); -2441: } -2441: -2441: inline void -2441: Grid_Generator_System::set_representation(Representation r) { -2441: sys.set_representation(r); -2441: } -2441: -2441: inline dimension_type -2441: Grid_Generator_System::max_space_dimension() { -2441: -2441: return Linear_System::max_space_dimension() - 1; -2441: } -2441: -2441: inline dimension_type -2441: Grid_Generator_System::space_dimension() const { -2441: return sys.space_dimension(); -2441: } -2441: -2441: inline const Grid_Generator_System& -2441: Grid_Generator_System::zero_dim_univ() { -2441: ((void) 0); -2441: return *zero_dim_univ_p; -2441: } -2441: -2441: inline void -2441: Grid_Generator_System::clear() { -2441: sys.clear(); -2441: sys.set_sorted(false); -2441: sys.unset_pending_rows(); -2441: ((void) 0); -2441: } -2441: -2441: inline void -2441: Grid_Generator_System::m_swap(Grid_Generator_System& y) { -2441: swap(sys, y.sys); -2441: } -2441: -2441: inline memory_size_type -2441: Grid_Generator_System::external_memory_in_bytes() const { -2441: return sys.external_memory_in_bytes(); -2441: } -2441: -2441: inline memory_size_type -2441: Grid_Generator_System::total_memory_in_bytes() const { -2441: return external_memory_in_bytes() + sizeof(*this); -2441: } -2441: -2441: inline dimension_type -2441: Grid_Generator_System::num_rows() const { -2441: return sys.num_rows(); -2441: } -2441: -2441: inline -2441: Grid_Generator_System::const_iterator::const_iterator() -2441: : i() { -2441: } -2441: -2441: inline -2441: Grid_Generator_System::const_iterator::const_iterator(const const_iterator& y) -2441: : i(y.i) { -2441: } -2441: -2441: inline -2441: Grid_Generator_System::const_iterator::~const_iterator() { -2441: } -2441: -2441: inline Grid_Generator_System::const_iterator& -2441: Grid_Generator_System::const_iterator::operator=(const const_iterator& y) { -2441: i = y.i; -2441: return *this; -2441: } -2441: -2441: inline const Grid_Generator& -2441: Grid_Generator_System::const_iterator::operator*() const { -2441: return *i; -2441: } -2441: -2441: inline const Grid_Generator* -2441: Grid_Generator_System::const_iterator::operator->() const { -2441: return i.operator->(); -2441: } -2441: -2441: inline Grid_Generator_System::const_iterator& -2441: Grid_Generator_System::const_iterator::operator++() { -2441: ++i; -2441: return *this; -2441: } -2441: -2441: inline Grid_Generator_System::const_iterator -2441: Grid_Generator_System::const_iterator::operator++(int) { -2441: const const_iterator tmp = *this; -2441: operator++(); -2441: return tmp; -2441: } -2441: -2441: inline bool -2441: Grid_Generator_System -2441: ::const_iterator::operator==(const const_iterator& y) const { -2441: return i == y.i; -2441: } -2441: -2441: inline bool -2441: Grid_Generator_System -2441: ::const_iterator::operator!=(const const_iterator& y) const { -2441: return i != y.i; -2441: } -2441: -2441: inline bool -2441: Grid_Generator_System::empty() const { -2441: return sys.has_no_rows(); -2441: } -2441: -2441: inline -2441: Grid_Generator_System::const_iterator -2441: ::const_iterator(const Linear_System::const_iterator& y) -2441: : i(y) { -2441: } -2441: -2441: inline Grid_Generator_System::const_iterator -2441: Grid_Generator_System::begin() const { -2441: return static_cast(sys.begin()); -2441: } -2441: -2441: inline Grid_Generator_System::const_iterator -2441: Grid_Generator_System::end() const { -2441: return static_cast(sys.end()); -2441: } -2441: -2441: inline const Grid_Generator& -2441: Grid_Generator_System::operator[](const dimension_type k) const { -2441: return sys[k]; -2441: } -2441: -2441: inline bool -2441: Grid_Generator_System::has_no_rows() const { -2441: return sys.has_no_rows(); -2441: } -2441: -2441: inline void -2441: Grid_Generator_System::remove_trailing_rows(dimension_type n) { -2441: sys.remove_trailing_rows(n); -2441: } -2441: -2441: inline void -2441: Grid_Generator_System::insert_verbatim(const Grid_Generator& g) { -2441: sys.insert(g); -2441: } -2441: -2441: inline Topology -2441: Grid_Generator_System::topology() const { -2441: return sys.topology(); -2441: } -2441: -2441: inline dimension_type -2441: Grid_Generator_System::first_pending_row() const { -2441: return sys.first_pending_row(); -2441: } -2441: -2441: -2441: inline bool -2441: operator==(const Grid_Generator_System& x, -2441: const Grid_Generator_System& y) { -2441: return x.is_equal_to(y); -2441: } -2441: -2441: -2441: inline void -2441: swap(Grid_Generator_System& x, Grid_Generator_System& y) { -2441: x.m_swap(y); -2441: } -2441: -2441: } -2441: # 39 "../../src/Grid_defs.hh" 2 -2441: -2441: -2441: -2441: # 1 "../../src/Grid_Certificate_types.hh" 1 -2441: # 16 "../../src/Grid_Certificate_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: class Grid_Certificate; -2441: -2441: } -2441: # 43 "../../src/Grid_defs.hh" 2 -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: namespace IO_Operators { -2441: # 63 "../../src/Grid_defs.hh" -2441: std::ostream& -2441: operator<<(std::ostream& s, const Grid& gr); -2441: -2441: } -2441: -2441: -2441: -2441: void swap(Grid& x, Grid& y); -2441: # 80 "../../src/Grid_defs.hh" -2441: bool operator==(const Grid& x, const Grid& y); -2441: # 90 "../../src/Grid_defs.hh" -2441: bool operator!=(const Grid& x, const Grid& y); -2441: -2441: } -2441: # 363 "../../src/Grid_defs.hh" -2441: class Parma_Polyhedra_Library::Grid { -2441: public: -2441: -2441: typedef Coefficient coefficient_type; -2441: -2441: -2441: static dimension_type max_space_dimension(); -2441: -2441: -2441: -2441: -2441: -2441: static bool can_recycle_congruence_systems(); -2441: -2441: -2441: -2441: -2441: -2441: static bool can_recycle_constraint_systems(); -2441: # 395 "../../src/Grid_defs.hh" -2441: explicit Grid(dimension_type num_dimensions = 0, -2441: Degenerate_Element kind = UNIVERSE); -2441: # 409 "../../src/Grid_defs.hh" -2441: explicit Grid(const Congruence_System& cgs); -2441: # 427 "../../src/Grid_defs.hh" -2441: Grid(Congruence_System& cgs, Recycle_Input dummy); -2441: # 443 "../../src/Grid_defs.hh" -2441: explicit Grid(const Constraint_System& cs); -2441: # 464 "../../src/Grid_defs.hh" -2441: Grid(Constraint_System& cs, Recycle_Input dummy); -2441: # 480 "../../src/Grid_defs.hh" -2441: explicit Grid(const Grid_Generator_System& ggs); -2441: # 500 "../../src/Grid_defs.hh" -2441: Grid(Grid_Generator_System& ggs, Recycle_Input dummy); -2441: # 518 "../../src/Grid_defs.hh" -2441: template -2441: explicit Grid(const Box& box, -2441: Complexity_Class complexity = ANY_COMPLEXITY); -2441: # 538 "../../src/Grid_defs.hh" -2441: template -2441: explicit Grid(const BD_Shape& bd, -2441: Complexity_Class complexity = ANY_COMPLEXITY); -2441: # 558 "../../src/Grid_defs.hh" -2441: template -2441: explicit Grid(const Octagonal_Shape& os, -2441: Complexity_Class complexity = ANY_COMPLEXITY); -2441: # 580 "../../src/Grid_defs.hh" -2441: explicit Grid(const Polyhedron& ph, -2441: Complexity_Class complexity = ANY_COMPLEXITY); -2441: -2441: -2441: -2441: -2441: -2441: Grid(const Grid& y, -2441: Complexity_Class complexity = ANY_COMPLEXITY); -2441: -2441: -2441: -2441: -2441: -2441: Grid& operator=(const Grid& y); -2441: -2441: -2441: -2441: -2441: -2441: dimension_type space_dimension() const; -2441: -2441: -2441: -2441: -2441: -2441: dimension_type affine_dimension() const; -2441: -2441: -2441: -2441: -2441: -2441: Constraint_System constraints() const; -2441: -2441: -2441: -2441: -2441: -2441: Constraint_System minimized_constraints() const; -2441: -2441: -2441: const Congruence_System& congruences() const; -2441: -2441: -2441: const Congruence_System& minimized_congruences() const; -2441: -2441: -2441: const Grid_Generator_System& grid_generators() const; -2441: -2441: -2441: const Grid_Generator_System& minimized_grid_generators() const; -2441: # 640 "../../src/Grid_defs.hh" -2441: Poly_Con_Relation relation_with(const Congruence& cg) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: Poly_Gen_Relation -2441: relation_with(const Grid_Generator& g) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: Poly_Gen_Relation -2441: relation_with(const Generator& g) const; -2441: # 668 "../../src/Grid_defs.hh" -2441: Poly_Con_Relation relation_with(const Constraint& c) const; -2441: -2441: -2441: bool is_empty() const; -2441: -2441: -2441: bool is_universe() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool is_topologically_closed() const; -2441: # 691 "../../src/Grid_defs.hh" -2441: bool is_disjoint_from(const Grid& y) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool is_discrete() const; -2441: -2441: -2441: bool is_bounded() const; -2441: -2441: -2441: -2441: -2441: -2441: bool contains_integer_point() const; -2441: # 717 "../../src/Grid_defs.hh" -2441: bool constrains(Variable var) const; -2441: # 726 "../../src/Grid_defs.hh" -2441: bool bounds_from_above(const Linear_Expression& expr) const; -2441: # 735 "../../src/Grid_defs.hh" -2441: bool bounds_from_below(const Linear_Expression& expr) const; -2441: # 764 "../../src/Grid_defs.hh" -2441: bool maximize(const Linear_Expression& expr, -2441: Coefficient& sup_n, Coefficient& sup_d, bool& maximum) const; -2441: # 798 "../../src/Grid_defs.hh" -2441: bool maximize(const Linear_Expression& expr, -2441: Coefficient& sup_n, Coefficient& sup_d, bool& maximum, -2441: Generator& point) const; -2441: # 829 "../../src/Grid_defs.hh" -2441: bool minimize(const Linear_Expression& expr, -2441: Coefficient& inf_n, Coefficient& inf_d, bool& minimum) const; -2441: # 863 "../../src/Grid_defs.hh" -2441: bool minimize(const Linear_Expression& expr, -2441: Coefficient& inf_n, Coefficient& inf_d, bool& minimum, -2441: Generator& point) const; -2441: # 897 "../../src/Grid_defs.hh" -2441: bool frequency(const Linear_Expression& expr, -2441: Coefficient& freq_n, Coefficient& freq_d, -2441: Coefficient& val_n, Coefficient& val_d) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool contains(const Grid& y) const; -2441: # 915 "../../src/Grid_defs.hh" -2441: bool strictly_contains(const Grid& y) const; -2441: # 934 "../../src/Grid_defs.hh" -2441: bool OK(bool check_not_empty = false) const; -2441: # 947 "../../src/Grid_defs.hh" -2441: void add_congruence(const Congruence& cg); -2441: # 957 "../../src/Grid_defs.hh" -2441: void add_grid_generator(const Grid_Generator& g); -2441: # 968 "../../src/Grid_defs.hh" -2441: void add_congruences(const Congruence_System& cgs); -2441: # 983 "../../src/Grid_defs.hh" -2441: void add_recycled_congruences(Congruence_System& cgs); -2441: # 995 "../../src/Grid_defs.hh" -2441: void add_constraint(const Constraint& c); -2441: # 1008 "../../src/Grid_defs.hh" -2441: void add_constraints(const Constraint_System& cs); -2441: # 1025 "../../src/Grid_defs.hh" -2441: void add_recycled_constraints(Constraint_System& cs); -2441: # 1035 "../../src/Grid_defs.hh" -2441: void refine_with_congruence(const Congruence& cg); -2441: # 1045 "../../src/Grid_defs.hh" -2441: void refine_with_congruences(const Congruence_System& cgs); -2441: # 1056 "../../src/Grid_defs.hh" -2441: void refine_with_constraint(const Constraint& c); -2441: # 1066 "../../src/Grid_defs.hh" -2441: void refine_with_constraints(const Constraint_System& cs); -2441: # 1081 "../../src/Grid_defs.hh" -2441: void add_grid_generators(const Grid_Generator_System& gs); -2441: # 1098 "../../src/Grid_defs.hh" -2441: void add_recycled_grid_generators(Grid_Generator_System& gs); -2441: # 1110 "../../src/Grid_defs.hh" -2441: void unconstrain(Variable var); -2441: # 1124 "../../src/Grid_defs.hh" -2441: void unconstrain(const Variables_Set& vars); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void intersection_assign(const Grid& y); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void upper_bound_assign(const Grid& y); -2441: # 1150 "../../src/Grid_defs.hh" -2441: bool upper_bound_assign_if_exact(const Grid& y); -2441: # 1162 "../../src/Grid_defs.hh" -2441: void difference_assign(const Grid& y); -2441: # 1173 "../../src/Grid_defs.hh" -2441: bool simplify_using_context_assign(const Grid& y); -2441: # 1236 "../../src/Grid_defs.hh" -2441: void affine_image(Variable var, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference denominator -2441: = Coefficient_one()); -2441: # 1300 "../../src/Grid_defs.hh" -2441: void affine_preimage(Variable var, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference denominator -2441: = Coefficient_one()); -2441: # 1335 "../../src/Grid_defs.hh" -2441: void -2441: generalized_affine_image(Variable var, -2441: Relation_Symbol relsym, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference denominator -2441: = Coefficient_one(), -2441: Coefficient_traits::const_reference modulus -2441: = Coefficient_zero()); -2441: # 1374 "../../src/Grid_defs.hh" -2441: void -2441: generalized_affine_preimage(Variable var, -2441: Relation_Symbol relsym, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference denominator -2441: = Coefficient_one(), -2441: Coefficient_traits::const_reference modulus -2441: = Coefficient_zero()); -2441: # 1407 "../../src/Grid_defs.hh" -2441: void -2441: generalized_affine_image(const Linear_Expression& lhs, -2441: Relation_Symbol relsym, -2441: const Linear_Expression& rhs, -2441: Coefficient_traits::const_reference modulus -2441: = Coefficient_zero()); -2441: # 1438 "../../src/Grid_defs.hh" -2441: void -2441: generalized_affine_preimage(const Linear_Expression& lhs, -2441: Relation_Symbol relsym, -2441: const Linear_Expression& rhs, -2441: Coefficient_traits::const_reference modulus -2441: = Coefficient_zero()); -2441: # 1471 "../../src/Grid_defs.hh" -2441: void bounded_affine_image(Variable var, -2441: const Linear_Expression& lb_expr, -2441: const Linear_Expression& ub_expr, -2441: Coefficient_traits::const_reference denominator -2441: = Coefficient_one()); -2441: # 1503 "../../src/Grid_defs.hh" -2441: void bounded_affine_preimage(Variable var, -2441: const Linear_Expression& lb_expr, -2441: const Linear_Expression& ub_expr, -2441: Coefficient_traits::const_reference denominator -2441: = Coefficient_one()); -2441: # 1516 "../../src/Grid_defs.hh" -2441: void time_elapse_assign(const Grid& y); -2441: # 1563 "../../src/Grid_defs.hh" -2441: void wrap_assign(const Variables_Set& vars, -2441: Bounded_Integer_Type_Width w, -2441: Bounded_Integer_Type_Representation r, -2441: Bounded_Integer_Type_Overflow o, -2441: const Constraint_System* cs_p = 0, -2441: unsigned complexity_threshold = 16, -2441: bool wrap_individually = true); -2441: # 1579 "../../src/Grid_defs.hh" -2441: void drop_some_non_integer_points(Complexity_Class complexity -2441: = ANY_COMPLEXITY); -2441: # 1594 "../../src/Grid_defs.hh" -2441: void drop_some_non_integer_points(const Variables_Set& vars, -2441: Complexity_Class complexity -2441: = ANY_COMPLEXITY); -2441: -2441: -2441: void topological_closure_assign(); -2441: # 1616 "../../src/Grid_defs.hh" -2441: void congruence_widening_assign(const Grid& y, unsigned* tp = -2441: # 1616 "../../src/Grid_defs.hh" 3 4 -2441: __null -2441: # 1616 "../../src/Grid_defs.hh" -2441: ); -2441: # 1633 "../../src/Grid_defs.hh" -2441: void generator_widening_assign(const Grid& y, unsigned* tp = -2441: # 1633 "../../src/Grid_defs.hh" 3 4 -2441: __null -2441: # 1633 "../../src/Grid_defs.hh" -2441: ); -2441: # 1654 "../../src/Grid_defs.hh" -2441: void widening_assign(const Grid& y, unsigned* tp = -2441: # 1654 "../../src/Grid_defs.hh" 3 4 -2441: __null -2441: # 1654 "../../src/Grid_defs.hh" -2441: ); -2441: # 1676 "../../src/Grid_defs.hh" -2441: void limited_congruence_extrapolation_assign(const Grid& y, -2441: const Congruence_System& cgs, -2441: unsigned* tp = -2441: # 1678 "../../src/Grid_defs.hh" 3 4 -2441: __null -2441: # 1678 "../../src/Grid_defs.hh" -2441: ); -2441: # 1700 "../../src/Grid_defs.hh" -2441: void limited_generator_extrapolation_assign(const Grid& y, -2441: const Congruence_System& cgs, -2441: unsigned* tp = -2441: # 1702 "../../src/Grid_defs.hh" 3 4 -2441: __null -2441: # 1702 "../../src/Grid_defs.hh" -2441: ); -2441: # 1723 "../../src/Grid_defs.hh" -2441: void limited_extrapolation_assign(const Grid& y, -2441: const Congruence_System& cgs, -2441: unsigned* tp = -2441: # 1725 "../../src/Grid_defs.hh" 3 4 -2441: __null -2441: # 1725 "../../src/Grid_defs.hh" -2441: ); -2441: # 1758 "../../src/Grid_defs.hh" -2441: void add_space_dimensions_and_embed(dimension_type m); -2441: # 1786 "../../src/Grid_defs.hh" -2441: void add_space_dimensions_and_project(dimension_type m); -2441: # 1796 "../../src/Grid_defs.hh" -2441: void concatenate_assign(const Grid& y); -2441: # 1808 "../../src/Grid_defs.hh" -2441: void remove_space_dimensions(const Variables_Set& vars); -2441: # 1819 "../../src/Grid_defs.hh" -2441: void remove_higher_space_dimensions(dimension_type new_dimension); -2441: # 1868 "../../src/Grid_defs.hh" -2441: template -2441: void map_space_dimensions(const Partial_Function& pfunc); -2441: # 1894 "../../src/Grid_defs.hh" -2441: void expand_space_dimension(Variable var, dimension_type m); -2441: # 1920 "../../src/Grid_defs.hh" -2441: void fold_space_dimensions(const Variables_Set& vars, Variable dest); -2441: -2441: -2441: -2441: friend bool operator==(const Grid& x, const Grid& y); -2441: -2441: friend class Parma_Polyhedra_Library::Grid_Certificate; -2441: -2441: template friend class Parma_Polyhedra_Library::Box; -2441: -2441: -2441: -2441: -2441: -2441: ~Grid(); -2441: -2441: -2441: -2441: -2441: -2441: void m_swap(Grid& y); -2441: -2441: void ascii_dump() const; void ascii_dump(std::ostream& s) const; void print() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool ascii_load(std::istream& s); -2441: -2441: -2441: memory_size_type total_memory_in_bytes() const; -2441: -2441: -2441: memory_size_type external_memory_in_bytes() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: int32_t hash_code() const; -2441: -2441: -2441: -2441: private: -2441: -2441: -2441: Congruence_System con_sys; -2441: -2441: -2441: Grid_Generator_System gen_sys; -2441: -2441: -2441: # 1 "../../src/Grid_Status_idefs.hh" 1 -2441: # 71 "../../src/Grid_Status_idefs.hh" -2441: class Status { -2441: public: -2441: -2441: Status(); -2441: -2441: -2441: -2441: bool test_zero_dim_univ() const; -2441: void reset_zero_dim_univ(); -2441: void set_zero_dim_univ(); -2441: -2441: bool test_empty() const; -2441: void reset_empty(); -2441: void set_empty(); -2441: -2441: bool test_c_up_to_date() const; -2441: void reset_c_up_to_date(); -2441: void set_c_up_to_date(); -2441: -2441: bool test_g_up_to_date() const; -2441: void reset_g_up_to_date(); -2441: void set_g_up_to_date(); -2441: -2441: bool test_c_minimized() const; -2441: void reset_c_minimized(); -2441: void set_c_minimized(); -2441: -2441: bool test_g_minimized() const; -2441: void reset_g_minimized(); -2441: void set_g_minimized(); -2441: -2441: bool test_sat_c_up_to_date() const; -2441: void reset_sat_c_up_to_date(); -2441: void set_sat_c_up_to_date(); -2441: -2441: bool test_sat_g_up_to_date() const; -2441: void reset_sat_g_up_to_date(); -2441: void set_sat_g_up_to_date(); -2441: -2441: bool test_c_pending() const; -2441: void reset_c_pending(); -2441: void set_c_pending(); -2441: -2441: bool test_g_pending() const; -2441: void reset_g_pending(); -2441: void set_g_pending(); -2441: -2441: -2441: -2441: bool OK() const; -2441: -2441: void ascii_dump() const; void ascii_dump(std::ostream& s) const; void print() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool ascii_load(std::istream& s); -2441: -2441: private: -2441: -2441: typedef unsigned int flags_t; -2441: -2441: -2441: -2441: static const flags_t ZERO_DIM_UNIV = 0U; -2441: static const flags_t EMPTY = 1U << 0; -2441: static const flags_t C_UP_TO_DATE = 1U << 1; -2441: static const flags_t G_UP_TO_DATE = 1U << 2; -2441: static const flags_t C_MINIMIZED = 1U << 3; -2441: static const flags_t G_MINIMIZED = 1U << 4; -2441: static const flags_t SAT_C_UP_TO_DATE = 1U << 5; -2441: static const flags_t SAT_G_UP_TO_DATE = 1U << 6; -2441: static const flags_t CS_PENDING = 1U << 7; -2441: static const flags_t GS_PENDING = 1U << 8; -2441: -2441: -2441: -2441: flags_t flags; -2441: -2441: -2441: Status(flags_t mask); -2441: -2441: -2441: bool test_all(flags_t mask) const; -2441: -2441: -2441: bool test_any(flags_t mask) const; -2441: -2441: -2441: void set(flags_t mask); -2441: -2441: -2441: void reset(flags_t mask); -2441: }; -2441: # 1977 "../../src/Grid_defs.hh" 2 -2441: -2441: -2441: -2441: Status status; -2441: -2441: -2441: dimension_type space_dim; -2441: -2441: enum Dimension_Kind { -2441: PARAMETER = 0, -2441: LINE = 1, -2441: GEN_VIRTUAL = 2, -2441: PROPER_CONGRUENCE = PARAMETER, -2441: CON_VIRTUAL = LINE, -2441: EQUALITY = GEN_VIRTUAL -2441: }; -2441: -2441: typedef std::vector Dimension_Kinds; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: Dimension_Kinds dim_kinds; -2441: # 2012 "../../src/Grid_defs.hh" -2441: void construct(dimension_type num_dimensions, Degenerate_Element kind); -2441: # 2022 "../../src/Grid_defs.hh" -2441: void construct(Congruence_System& cgs); -2441: # 2032 "../../src/Grid_defs.hh" -2441: void construct(Grid_Generator_System& ggs); -2441: # 2042 "../../src/Grid_defs.hh" -2441: bool marked_empty() const; -2441: -2441: -2441: bool congruences_are_up_to_date() const; -2441: -2441: -2441: bool generators_are_up_to_date() const; -2441: -2441: -2441: bool congruences_are_minimized() const; -2441: -2441: -2441: bool generators_are_minimized() const; -2441: # 2065 "../../src/Grid_defs.hh" -2441: void set_zero_dim_univ(); -2441: -2441: -2441: -2441: -2441: -2441: void set_empty(); -2441: -2441: -2441: void set_congruences_up_to_date(); -2441: -2441: -2441: void set_generators_up_to_date(); -2441: -2441: -2441: void set_congruences_minimized(); -2441: -2441: -2441: void set_generators_minimized(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void clear_empty(); -2441: -2441: -2441: void clear_congruences_up_to_date(); -2441: -2441: -2441: void clear_generators_up_to_date(); -2441: -2441: -2441: void clear_congruences_minimized(); -2441: -2441: -2441: void clear_generators_minimized(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void update_congruences() const; -2441: # 2122 "../../src/Grid_defs.hh" -2441: bool update_generators() const; -2441: # 2138 "../../src/Grid_defs.hh" -2441: bool minimize() const; -2441: -2441: -2441: -2441: enum Three_Valued_Boolean { -2441: TVB_TRUE, -2441: TVB_FALSE, -2441: TVB_DONT_KNOW -2441: }; -2441: -2441: -2441: Three_Valued_Boolean quick_equivalence_test(const Grid& y) const; -2441: -2441: -2441: bool is_included_in(const Grid& y) const; -2441: # 2172 "../../src/Grid_defs.hh" -2441: bool bounds(const Linear_Expression& expr, const char* method_call) const; -2441: # 2206 "../../src/Grid_defs.hh" -2441: bool max_min(const Linear_Expression& expr, -2441: const char* method_call, -2441: Coefficient& ext_n, Coefficient& ext_d, bool& included, -2441: Generator* point = -2441: # 2209 "../../src/Grid_defs.hh" 3 4 -2441: __null -2441: # 2209 "../../src/Grid_defs.hh" -2441: ) const; -2441: # 2243 "../../src/Grid_defs.hh" -2441: bool frequency_no_check(const Linear_Expression& expr, -2441: Coefficient& freq_n, Coefficient& freq_d, -2441: Coefficient& val_n, Coefficient& val_d) const; -2441: # 2257 "../../src/Grid_defs.hh" -2441: bool bounds_no_check(const Linear_Expression& expr) const; -2441: # 2267 "../../src/Grid_defs.hh" -2441: void add_congruence_no_check(const Congruence& cg); -2441: # 2282 "../../src/Grid_defs.hh" -2441: void add_constraint_no_check(const Constraint& c); -2441: # 2295 "../../src/Grid_defs.hh" -2441: void refine_no_check(const Constraint& c); -2441: -2441: -2441: -2441: -2441: -2441: void select_wider_congruences(const Grid& y, -2441: Congruence_System& selected_cgs) const; -2441: -2441: -2441: void select_wider_generators(const Grid& y, -2441: Grid_Generator_System& widened_ggs) const; -2441: # 2324 "../../src/Grid_defs.hh" -2441: void add_space_dimensions(Congruence_System& cgs, -2441: Grid_Generator_System& gs, -2441: dimension_type dims); -2441: # 2342 "../../src/Grid_defs.hh" -2441: void add_space_dimensions(Grid_Generator_System& gs, -2441: Congruence_System& cgs, -2441: dimension_type dims); -2441: # 2367 "../../src/Grid_defs.hh" -2441: static void -2441: normalize_divisors(Grid_Generator_System& sys, -2441: Coefficient& divisor, -2441: const Grid_Generator* first_point = -2441: # 2370 "../../src/Grid_defs.hh" 3 4 -2441: __null -2441: # 2370 "../../src/Grid_defs.hh" -2441: ); -2441: # 2381 "../../src/Grid_defs.hh" -2441: static void -2441: normalize_divisors(Grid_Generator_System& sys); -2441: # 2401 "../../src/Grid_defs.hh" -2441: static void normalize_divisors(Grid_Generator_System& sys, -2441: Grid_Generator_System& gen_sys); -2441: -2441: -2441: -2441: -2441: -2441: static void conversion(Congruence_System& source, -2441: Grid_Generator_System& dest, -2441: Dimension_Kinds& dim_kinds); -2441: -2441: -2441: -2441: -2441: -2441: static void conversion(Grid_Generator_System& source, -2441: Congruence_System& dest, -2441: Dimension_Kinds& dim_kinds); -2441: -2441: -2441: -2441: -2441: -2441: -2441: static bool simplify(Congruence_System& cgs, -2441: Dimension_Kinds& dim_kinds); -2441: -2441: -2441: -2441: -2441: -2441: static void simplify(Grid_Generator_System& ggs, -2441: Dimension_Kinds& dim_kinds); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: static void reduce_line_with_line(Grid_Generator& row, -2441: Grid_Generator& pivot, -2441: dimension_type column); -2441: # 2452 "../../src/Grid_defs.hh" -2441: static void reduce_equality_with_equality(Congruence& row, -2441: const Congruence& pivot, -2441: dimension_type column); -2441: # 2469 "../../src/Grid_defs.hh" -2441: template -2441: static void reduce_pc_with_pc(R& row, -2441: R& pivot, -2441: dimension_type column, -2441: dimension_type start, -2441: dimension_type end); -2441: # 2486 "../../src/Grid_defs.hh" -2441: static void reduce_parameter_with_line(Grid_Generator& row, -2441: const Grid_Generator& pivot, -2441: dimension_type column, -2441: Swapping_Vector& sys, -2441: dimension_type num_columns); -2441: # 2501 "../../src/Grid_defs.hh" -2441: static void reduce_congruence_with_equality(Congruence& row, -2441: const Congruence& pivot, -2441: dimension_type column, -2441: Swapping_Vector& sys); -2441: # 2539 "../../src/Grid_defs.hh" -2441: template -2441: -2441: -2441: -2441: -2441: static void reduce_reduced(Swapping_Vector& sys, -2441: dimension_type dim, -2441: dimension_type pivot_index, -2441: dimension_type start, dimension_type end, -2441: const Dimension_Kinds& sys_dim_kinds, -2441: bool generators = true); -2441: -2441: -2441: -2441: -2441: -2441: static void multiply_grid(const Coefficient& multiplier, -2441: Congruence& cg, -2441: Swapping_Vector& dest, -2441: dimension_type num_rows); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: static void multiply_grid(const Coefficient& multiplier, -2441: Grid_Generator& gen, -2441: Swapping_Vector& dest, -2441: dimension_type num_rows); -2441: -2441: -2441: -2441: -2441: -2441: static bool lower_triangular(const Congruence_System& sys, -2441: const Dimension_Kinds& dim_kinds); -2441: -2441: -2441: -2441: -2441: -2441: static bool upper_triangular(const Grid_Generator_System& sys, -2441: const Dimension_Kinds& dim_kinds); -2441: # 2608 "../../src/Grid_defs.hh" -2441: protected: -2441: void throw_dimension_incompatible(const char* method, -2441: const char* other_name, -2441: dimension_type other_dim) const; -2441: void throw_dimension_incompatible(const char* method, -2441: const char* gr_name, -2441: const Grid& gr) const; -2441: void throw_dimension_incompatible(const char* method, -2441: const char* le_name, -2441: const Linear_Expression& le) const; -2441: void throw_dimension_incompatible(const char* method, -2441: const char* cg_name, -2441: const Congruence& cg) const; -2441: void throw_dimension_incompatible(const char* method, -2441: const char* c_name, -2441: const Constraint& c) const; -2441: void throw_dimension_incompatible(const char* method, -2441: const char* g_name, -2441: const Grid_Generator& g) const; -2441: void throw_dimension_incompatible(const char* method, -2441: const char* g_name, -2441: const Generator& g) const; -2441: void throw_dimension_incompatible(const char* method, -2441: const char* cgs_name, -2441: const Congruence_System& cgs) const; -2441: void throw_dimension_incompatible(const char* method, -2441: const char* cs_name, -2441: const Constraint_System& cs) const; -2441: void throw_dimension_incompatible(const char* method, -2441: const char* gs_name, -2441: const Grid_Generator_System& gs) const; -2441: void throw_dimension_incompatible(const char* method, -2441: const char* var_name, -2441: Variable var) const; -2441: void throw_dimension_incompatible(const char* method, -2441: dimension_type required_space_dim) const; -2441: -2441: static void throw_invalid_argument(const char* method, -2441: const char* reason); -2441: static void throw_invalid_constraint(const char* method, -2441: const char* c_name); -2441: static void throw_invalid_constraints(const char* method, -2441: const char* cs_name); -2441: static void throw_invalid_generator(const char* method, -2441: const char* g_name); -2441: static void throw_invalid_generators(const char* method, -2441: const char* gs_name); -2441: -2441: -2441: -2441: -2441: }; -2441: -2441: # 1 "../../src/Grid_Status_inlines.hh" 1 -2441: # 27 "../../src/Grid_Status_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: inline -2441: Grid::Status::Status(flags_t mask) -2441: : flags(mask) { -2441: } -2441: -2441: inline -2441: Grid::Status::Status() -2441: : flags(ZERO_DIM_UNIV) { -2441: } -2441: -2441: inline bool -2441: Grid::Status::test_all(flags_t mask) const { -2441: return (flags & mask) == mask; -2441: } -2441: -2441: inline bool -2441: Grid::Status::test_any(flags_t mask) const { -2441: return (flags & mask) != 0; -2441: } -2441: -2441: inline void -2441: Grid::Status::set(flags_t mask) { -2441: flags |= mask; -2441: } -2441: -2441: inline void -2441: Grid::Status::reset(flags_t mask) { -2441: flags &= ~mask; -2441: } -2441: -2441: inline bool -2441: Grid::Status::test_zero_dim_univ() const { -2441: return flags == ZERO_DIM_UNIV; -2441: } -2441: -2441: inline void -2441: Grid::Status::reset_zero_dim_univ() { -2441: -2441: if (flags == ZERO_DIM_UNIV) { -2441: -2441: flags = EMPTY; -2441: } -2441: } -2441: -2441: inline void -2441: Grid::Status::set_zero_dim_univ() { -2441: -2441: flags = ZERO_DIM_UNIV; -2441: } -2441: -2441: inline bool -2441: Grid::Status::test_empty() const { -2441: return test_any(EMPTY); -2441: } -2441: -2441: inline void -2441: Grid::Status::reset_empty() { -2441: reset(EMPTY); -2441: } -2441: -2441: inline void -2441: Grid::Status::set_empty() { -2441: flags = EMPTY; -2441: } -2441: -2441: inline bool -2441: Grid::Status::test_c_up_to_date() const { -2441: return test_any(C_UP_TO_DATE); -2441: } -2441: -2441: inline void -2441: Grid::Status::reset_c_up_to_date() { -2441: reset(C_UP_TO_DATE); -2441: } -2441: -2441: inline void -2441: Grid::Status::set_c_up_to_date() { -2441: set(C_UP_TO_DATE); -2441: } -2441: -2441: inline bool -2441: Grid::Status::test_g_up_to_date() const { -2441: return test_any(G_UP_TO_DATE); -2441: } -2441: -2441: inline void -2441: Grid::Status::reset_g_up_to_date() { -2441: reset(G_UP_TO_DATE); -2441: } -2441: -2441: inline void -2441: Grid::Status::set_g_up_to_date() { -2441: set(G_UP_TO_DATE); -2441: } -2441: -2441: inline bool -2441: Grid::Status::test_c_minimized() const { -2441: return test_any(C_MINIMIZED); -2441: } -2441: -2441: inline void -2441: Grid::Status::reset_c_minimized() { -2441: reset(C_MINIMIZED); -2441: } -2441: -2441: inline void -2441: Grid::Status::set_c_minimized() { -2441: set(C_MINIMIZED); -2441: } -2441: -2441: inline bool -2441: Grid::Status::test_g_minimized() const { -2441: return test_any(G_MINIMIZED); -2441: } -2441: -2441: inline void -2441: Grid::Status::reset_g_minimized() { -2441: reset(G_MINIMIZED); -2441: } -2441: -2441: inline void -2441: Grid::Status::set_g_minimized() { -2441: set(G_MINIMIZED); -2441: } -2441: -2441: -2441: inline bool -2441: Grid::Status::test_c_pending() const { -2441: return test_any(CS_PENDING); -2441: } -2441: -2441: inline void -2441: Grid::Status::reset_c_pending() { -2441: reset(CS_PENDING); -2441: } -2441: -2441: inline void -2441: Grid::Status::set_c_pending() { -2441: set(CS_PENDING); -2441: } -2441: -2441: inline bool -2441: Grid::Status::test_g_pending() const { -2441: return test_any(GS_PENDING); -2441: } -2441: -2441: inline void -2441: Grid::Status::reset_g_pending() { -2441: reset(GS_PENDING); -2441: } -2441: -2441: inline void -2441: Grid::Status::set_g_pending() { -2441: set(GS_PENDING); -2441: } -2441: -2441: -2441: inline bool -2441: Grid::Status::test_sat_c_up_to_date() const { -2441: return test_any(SAT_C_UP_TO_DATE); -2441: } -2441: -2441: inline void -2441: Grid::Status::reset_sat_c_up_to_date() { -2441: reset(SAT_C_UP_TO_DATE); -2441: } -2441: -2441: inline void -2441: Grid::Status::set_sat_c_up_to_date() { -2441: set(SAT_C_UP_TO_DATE); -2441: } -2441: -2441: inline bool -2441: Grid::Status::test_sat_g_up_to_date() const { -2441: return test_any(SAT_G_UP_TO_DATE); -2441: } -2441: -2441: inline void -2441: Grid::Status::reset_sat_g_up_to_date() { -2441: reset(SAT_G_UP_TO_DATE); -2441: } -2441: -2441: inline void -2441: Grid::Status::set_sat_g_up_to_date() { -2441: set(SAT_G_UP_TO_DATE); -2441: } -2441: -2441: } -2441: # 2662 "../../src/Grid_defs.hh" 2 -2441: # 1 "../../src/Grid_inlines.hh" 1 -2441: # 32 "../../src/Grid_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: inline bool -2441: Grid::marked_empty() const { -2441: return status.test_empty(); -2441: } -2441: -2441: inline bool -2441: Grid::congruences_are_up_to_date() const { -2441: return status.test_c_up_to_date(); -2441: } -2441: -2441: inline bool -2441: Grid::generators_are_up_to_date() const { -2441: return status.test_g_up_to_date(); -2441: } -2441: -2441: inline bool -2441: Grid::congruences_are_minimized() const { -2441: return status.test_c_minimized(); -2441: } -2441: -2441: inline bool -2441: Grid::generators_are_minimized() const { -2441: return status.test_g_minimized(); -2441: } -2441: -2441: inline void -2441: Grid::set_generators_up_to_date() { -2441: status.set_g_up_to_date(); -2441: } -2441: -2441: inline void -2441: Grid::set_congruences_up_to_date() { -2441: status.set_c_up_to_date(); -2441: } -2441: -2441: inline void -2441: Grid::set_congruences_minimized() { -2441: set_congruences_up_to_date(); -2441: status.set_c_minimized(); -2441: } -2441: -2441: inline void -2441: Grid::set_generators_minimized() { -2441: set_generators_up_to_date(); -2441: status.set_g_minimized(); -2441: } -2441: -2441: inline void -2441: Grid::clear_empty() { -2441: status.reset_empty(); -2441: } -2441: -2441: inline void -2441: Grid::clear_congruences_minimized() { -2441: status.reset_c_minimized(); -2441: } -2441: -2441: inline void -2441: Grid::clear_generators_minimized() { -2441: status.reset_g_minimized(); -2441: } -2441: -2441: inline void -2441: Grid::clear_congruences_up_to_date() { -2441: clear_congruences_minimized(); -2441: status.reset_c_up_to_date(); -2441: -2441: } -2441: -2441: inline void -2441: Grid::clear_generators_up_to_date() { -2441: clear_generators_minimized(); -2441: status.reset_g_up_to_date(); -2441: -2441: } -2441: -2441: inline dimension_type -2441: Grid::max_space_dimension() { -2441: -2441: -2441: return std::min(std::numeric_limits::max() - 1, -2441: std::min(Congruence_System::max_space_dimension(), -2441: Grid_Generator_System::max_space_dimension() -2441: ) -2441: ); -2441: } -2441: -2441: inline -2441: Grid::Grid(dimension_type num_dimensions, -2441: const Degenerate_Element kind) -2441: : con_sys(), -2441: gen_sys(check_space_dimension_overflow(num_dimensions, -2441: max_space_dimension(), -2441: "PPL::Grid::", -2441: "Grid(n, k)", -2441: "n exceeds the maximum " -2441: "allowed space dimension")) { -2441: construct(num_dimensions, kind); -2441: ((void) 0); -2441: } -2441: -2441: inline -2441: Grid::Grid(const Congruence_System& cgs) -2441: : con_sys(check_space_dimension_overflow(cgs.space_dimension(), -2441: max_space_dimension(), -2441: "PPL::Grid::", -2441: "Grid(cgs)", -2441: "the space dimension of cgs " -2441: "exceeds the maximum allowed " -2441: "space dimension")), -2441: gen_sys(cgs.space_dimension()) { -2441: Congruence_System cgs_copy(cgs); -2441: construct(cgs_copy); -2441: } -2441: -2441: inline -2441: Grid::Grid(Congruence_System& cgs, Recycle_Input) -2441: : con_sys(check_space_dimension_overflow(cgs.space_dimension(), -2441: max_space_dimension(), -2441: "PPL::Grid::", -2441: "Grid(cgs, recycle)", -2441: "the space dimension of cgs " -2441: "exceeds the maximum allowed " -2441: "space dimension")), -2441: gen_sys(cgs.space_dimension()) { -2441: construct(cgs); -2441: } -2441: -2441: inline -2441: Grid::Grid(const Grid_Generator_System& ggs) -2441: : con_sys(check_space_dimension_overflow(ggs.space_dimension(), -2441: max_space_dimension(), -2441: "PPL::Grid::", -2441: "Grid(ggs)", -2441: "the space dimension of ggs " -2441: "exceeds the maximum allowed " -2441: "space dimension")), -2441: gen_sys(ggs.space_dimension()) { -2441: Grid_Generator_System ggs_copy(ggs); -2441: construct(ggs_copy); -2441: } -2441: -2441: inline -2441: Grid::Grid(Grid_Generator_System& ggs, Recycle_Input) -2441: : con_sys(check_space_dimension_overflow(ggs.space_dimension(), -2441: max_space_dimension(), -2441: "PPL::Grid::", -2441: "Grid(ggs, recycle)", -2441: "the space dimension of ggs " -2441: "exceeds the maximum allowed " -2441: "space dimension")), -2441: gen_sys(ggs.space_dimension()) { -2441: construct(ggs); -2441: } -2441: -2441: template -2441: inline -2441: Grid::Grid(const BD_Shape& bd, Complexity_Class) -2441: : con_sys(check_space_dimension_overflow(bd.space_dimension(), -2441: max_space_dimension(), -2441: "PPL::Grid::", -2441: "Grid(bd)", -2441: "the space dimension of bd " -2441: "exceeds the maximum allowed " -2441: "space dimension")), -2441: gen_sys(bd.space_dimension()) { -2441: Congruence_System cgs = bd.congruences(); -2441: construct(cgs); -2441: } -2441: -2441: template -2441: inline -2441: Grid::Grid(const Octagonal_Shape& os, Complexity_Class) -2441: : con_sys(check_space_dimension_overflow(os.space_dimension(), -2441: max_space_dimension(), -2441: "PPL::Grid::", -2441: "Grid(os)", -2441: "the space dimension of os " -2441: "exceeds the maximum allowed " -2441: "space dimension")), -2441: gen_sys(os.space_dimension()) { -2441: Congruence_System cgs = os.congruences(); -2441: construct(cgs); -2441: } -2441: -2441: inline -2441: Grid::~Grid() { -2441: } -2441: -2441: inline dimension_type -2441: Grid::space_dimension() const { -2441: return space_dim; -2441: } -2441: -2441: inline memory_size_type -2441: Grid::total_memory_in_bytes() const { -2441: return sizeof(*this) + external_memory_in_bytes(); -2441: } -2441: -2441: inline int32_t -2441: Grid::hash_code() const { -2441: return hash_code_from_dimension(space_dimension()); -2441: } -2441: -2441: inline Constraint_System -2441: Grid::constraints() const { -2441: return Constraint_System(congruences()); -2441: } -2441: -2441: inline Constraint_System -2441: Grid::minimized_constraints() const { -2441: return Constraint_System(minimized_congruences()); -2441: } -2441: -2441: inline void -2441: Grid::m_swap(Grid& y) { -2441: using std::swap; -2441: swap(con_sys, y.con_sys); -2441: swap(gen_sys, y.gen_sys); -2441: swap(status, y.status); -2441: swap(space_dim, y.space_dim); -2441: swap(dim_kinds, y.dim_kinds); -2441: } -2441: -2441: inline void -2441: Grid::add_congruence(const Congruence& cg) { -2441: -2441: if (space_dim < cg.space_dimension()) { -2441: throw_dimension_incompatible("add_congruence(cg)", "cg", cg); -2441: } -2441: -2441: if (!marked_empty()) { -2441: add_congruence_no_check(cg); -2441: } -2441: } -2441: -2441: inline void -2441: Grid::add_congruences(const Congruence_System& cgs) { -2441: -2441: -2441: if (space_dim < cgs.space_dimension()) { -2441: throw_dimension_incompatible("add_congruences(cgs)", "cgs", cgs); -2441: } -2441: -2441: if (!marked_empty()) { -2441: Congruence_System cgs_copy = cgs; -2441: add_recycled_congruences(cgs_copy); -2441: } -2441: } -2441: -2441: inline void -2441: Grid::refine_with_congruence(const Congruence& cg) { -2441: add_congruence(cg); -2441: } -2441: -2441: inline void -2441: Grid::refine_with_congruences(const Congruence_System& cgs) { -2441: add_congruences(cgs); -2441: } -2441: -2441: inline bool -2441: Grid::can_recycle_constraint_systems() { -2441: return true; -2441: } -2441: -2441: inline bool -2441: Grid::can_recycle_congruence_systems() { -2441: return true; -2441: } -2441: -2441: inline void -2441: Grid::add_constraint(const Constraint& c) { -2441: -2441: if (space_dim < c.space_dimension()) { -2441: throw_dimension_incompatible("add_constraint(c)", "c", c); -2441: } -2441: if (!marked_empty()) { -2441: add_constraint_no_check(c); -2441: } -2441: } -2441: -2441: inline void -2441: Grid::add_recycled_constraints(Constraint_System& cs) { -2441: -2441: add_constraints(cs); -2441: } -2441: -2441: inline bool -2441: Grid::bounds_from_above(const Linear_Expression& expr) const { -2441: return bounds(expr, "bounds_from_above(e)"); -2441: } -2441: -2441: inline bool -2441: Grid::bounds_from_below(const Linear_Expression& expr) const { -2441: return bounds(expr, "bounds_from_below(e)"); -2441: } -2441: -2441: inline bool -2441: Grid::maximize(const Linear_Expression& expr, -2441: Coefficient& sup_n, Coefficient& sup_d, bool& maximum) const { -2441: return max_min(expr, "maximize(e, ...)", sup_n, sup_d, maximum); -2441: } -2441: -2441: inline bool -2441: Grid::maximize(const Linear_Expression& expr, -2441: Coefficient& sup_n, Coefficient& sup_d, bool& maximum, -2441: Generator& point) const { -2441: return max_min(expr, "maximize(e, ...)", sup_n, sup_d, maximum, &point); -2441: } -2441: -2441: inline bool -2441: Grid::minimize(const Linear_Expression& expr, -2441: Coefficient& inf_n, Coefficient& inf_d, bool& minimum) const { -2441: return max_min(expr, "minimize(e, ...)", inf_n, inf_d, minimum); -2441: } -2441: -2441: inline bool -2441: Grid::minimize(const Linear_Expression& expr, -2441: Coefficient& inf_n, Coefficient& inf_d, bool& minimum, -2441: Generator& point) const { -2441: return max_min(expr, "minimize(e, ...)", inf_n, inf_d, minimum, &point); -2441: } -2441: -2441: inline void -2441: Grid::normalize_divisors(Grid_Generator_System& sys) { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_divisor; Parma_Polyhedra_Library::Coefficient& divisor = holder_divisor.item(); -2441: divisor = 1; -2441: normalize_divisors(sys, divisor); -2441: } -2441: -2441: -2441: inline bool -2441: operator!=(const Grid& x, const Grid& y) { -2441: return !(x == y); -2441: } -2441: -2441: inline bool -2441: Grid::strictly_contains(const Grid& y) const { -2441: const Grid& x = *this; -2441: return x.contains(y) && !y.contains(x); -2441: } -2441: -2441: inline void -2441: Grid::topological_closure_assign() { -2441: } -2441: -2441: -2441: inline void -2441: swap(Grid& x, Grid& y) { -2441: x.m_swap(y); -2441: } -2441: -2441: } -2441: # 2663 "../../src/Grid_defs.hh" 2 -2441: # 1 "../../src/Grid_templates.hh" 1 -2441: # 33 "../../src/Grid_templates.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: Grid::Grid(const Box& box, Complexity_Class) -2441: : con_sys(), -2441: gen_sys() { -2441: space_dim = check_space_dimension_overflow(box.space_dimension(), -2441: max_space_dimension(), -2441: "PPL::Grid::", -2441: "Grid(box, from_bounding_box)", -2441: "the space dimension of box " -2441: "exceeds the maximum allowed " -2441: "space dimension"); -2441: -2441: if (box.is_empty()) { -2441: -2441: set_empty(); -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: if (space_dim == 0) { -2441: set_zero_dim_univ(); -2441: } -2441: else { -2441: -2441: con_sys.set_space_dimension(space_dim); -2441: gen_sys.set_space_dimension(space_dim); -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_l_n; Parma_Polyhedra_Library::Coefficient& l_n = holder_l_n.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_l_d; Parma_Polyhedra_Library::Coefficient& l_d = holder_l_d.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_u_n; Parma_Polyhedra_Library::Coefficient& u_n = holder_u_n.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_u_d; Parma_Polyhedra_Library::Coefficient& u_d = holder_u_d.item(); -2441: gen_sys.insert(grid_point()); -2441: for (dimension_type k = space_dim; k-- > 0; ) { -2441: const Variable v_k = Variable(k); -2441: bool closed = false; -2441: -2441: if (box.has_lower_bound(v_k, l_n, l_d, closed)) { -2441: if (box.has_upper_bound(v_k, u_n, u_d, closed)) { -2441: if (l_n * u_d == u_n * l_d) { -2441: -2441: -2441: con_sys.insert(l_d * v_k == l_n); -2441: -2441: -2441: -2441: Grid_Generator& point = gen_sys.sys.rows[0]; -2441: -2441: -2441: -2441: const Coefficient& point_divisor = point.divisor(); -2441: gcd_assign(u_n, l_d, point_divisor); -2441: -2441: exact_div_assign(u_n, point_divisor, u_n); -2441: if (l_d < 0) { -2441: neg_assign(u_n); -2441: } -2441: -2441: point.scale_to_divisor(l_d * u_n); -2441: -2441: if (l_d < 0) { -2441: neg_assign(u_n); -2441: } -2441: -2441: point.expr.set(Variable(k), l_n * u_n); -2441: ((void) 0); -2441: -2441: ((void) 0); -2441: -2441: continue; -2441: } -2441: } -2441: } -2441: -2441: gen_sys.insert(grid_line(v_k)); -2441: } -2441: set_congruences_up_to_date(); -2441: set_generators_up_to_date(); -2441: } -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Grid::map_space_dimensions(const Partial_Function& pfunc) { -2441: if (space_dim == 0) { -2441: return; -2441: } -2441: -2441: if (pfunc.has_empty_codomain()) { -2441: -2441: if (marked_empty() -2441: || (!generators_are_up_to_date() && !update_generators())) { -2441: -2441: space_dim = 0; -2441: set_empty(); -2441: } -2441: else { -2441: -2441: set_zero_dim_univ(); -2441: } -2441: -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: dimension_type new_space_dimension = pfunc.max_in_codomain() + 1; -2441: -2441: if (new_space_dimension == space_dim) { -2441: -2441: -2441: -2441: -2441: -2441: std::vector cycle; -2441: cycle.reserve(space_dim); -2441: -2441: -2441: std::deque visited(space_dim); -2441: -2441: for (dimension_type i = space_dim; i-- > 0; ) { -2441: if (!visited[i]) { -2441: dimension_type j = i; -2441: do { -2441: visited[j] = true; -2441: -2441: dimension_type k = 0; -2441: if (!pfunc.maps(j, k)) { -2441: throw_invalid_argument("map_space_dimensions(pfunc)", -2441: " pfunc is inconsistent"); -2441: } -2441: if (k == j) { -2441: break; -2441: } -2441: -2441: cycle.push_back(Variable(j)); -2441: -2441: j = k; -2441: } while (!visited[j]); -2441: -2441: -2441: -2441: -2441: -2441: if (cycle.size() >= 2) { -2441: -2441: if (congruences_are_up_to_date()) { -2441: con_sys.permute_space_dimensions(cycle); -2441: clear_congruences_minimized(); -2441: } -2441: -2441: if (generators_are_up_to_date()) { -2441: gen_sys.permute_space_dimensions(cycle); -2441: clear_generators_minimized(); -2441: } -2441: } -2441: -2441: cycle.clear(); -2441: } -2441: } -2441: -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: -2441: -2441: -2441: const Grid_Generator_System& old_gensys = grid_generators(); -2441: -2441: if (old_gensys.has_no_rows()) { -2441: -2441: Grid new_grid(new_space_dimension, EMPTY); -2441: m_swap(new_grid); -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: -2441: std::vector pfunc_maps(space_dim, not_a_dimension()); -2441: for (dimension_type j = space_dim; j-- > 0; ) { -2441: dimension_type pfunc_j; -2441: if (pfunc.maps(j, pfunc_j)) { -2441: pfunc_maps[j] = pfunc_j; -2441: } -2441: } -2441: -2441: Grid_Generator_System new_gensys; -2441: -2441: new_gensys.set_sorted(false); -2441: -2441: Grid_Generator_System::const_iterator i; -2441: Grid_Generator_System::const_iterator old_gensys_end = old_gensys.end(); -2441: for (i = old_gensys.begin(); i != old_gensys_end; ++i) { -2441: if (i->is_point()) { -2441: break; -2441: } -2441: } -2441: ((void) 0); -2441: const Coefficient& system_divisor = i->divisor(); -2441: for (i = old_gensys.begin(); i != old_gensys_end; ++i) { -2441: const Grid_Generator& old_g = *i; -2441: const Grid_Generator::expr_type old_g_e = old_g.expression(); -2441: Linear_Expression expr; -2441: expr.set_space_dimension(new_space_dimension); -2441: bool all_zeroes = true; -2441: for (Grid_Generator::expr_type::const_iterator j = old_g_e.begin(), -2441: j_end = old_g_e.end(); j != j_end; ++j) { -2441: const dimension_type mapped_id = pfunc_maps[j.variable().id()]; -2441: if (mapped_id != not_a_dimension()) { -2441: add_mul_assign(expr, *j, Variable(mapped_id)); -2441: all_zeroes = false; -2441: } -2441: } -2441: switch (old_g.type()) { -2441: case Grid_Generator::LINE: -2441: if (!all_zeroes) { -2441: new_gensys.insert(grid_line(expr)); -2441: } -2441: break; -2441: case Grid_Generator::PARAMETER: -2441: if (!all_zeroes) { -2441: new_gensys.insert(parameter(expr, system_divisor)); -2441: } -2441: break; -2441: case Grid_Generator::POINT: -2441: new_gensys.insert(grid_point(expr, old_g.divisor())); -2441: break; -2441: } -2441: } -2441: -2441: Grid new_grid(new_gensys); -2441: m_swap(new_grid); -2441: -2441: ((void) 0); -2441: } -2441: -2441: -2441: -2441: template -2441: void -2441: Grid::reduce_reduced(Swapping_Vector& rows, -2441: const dimension_type dim, -2441: const dimension_type pivot_index, -2441: const dimension_type start, -2441: const dimension_type end, -2441: const Dimension_Kinds& sys_dim_kinds, -2441: const bool generators) { -2441: -2441: typedef typename M::row_type M_row_type; -2441: -2441: const M_row_type& pivot = rows[pivot_index]; -2441: const Coefficient& pivot_dim = pivot.expr.get(dim); -2441: -2441: if (pivot_dim == 0) { -2441: return; -2441: } -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_pivot_dim_half; Parma_Polyhedra_Library::Coefficient& pivot_dim_half = holder_pivot_dim_half.item(); -2441: pivot_dim_half = (pivot_dim + 1) / 2; -2441: const Dimension_Kind row_kind = sys_dim_kinds[dim]; -2441: const bool row_is_line_or_equality -2441: = (row_kind == (generators ? LINE : EQUALITY)); -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_num_rows_to_subtract; Parma_Polyhedra_Library::Coefficient& num_rows_to_subtract = holder_num_rows_to_subtract.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_row_dim_remainder; Parma_Polyhedra_Library::Coefficient& row_dim_remainder = holder_row_dim_remainder.item(); -2441: for (dimension_type kinds_index = dim, -2441: row_index = pivot_index; row_index-- > 0; ) { -2441: if (generators) { -2441: --kinds_index; -2441: -2441: while (sys_dim_kinds[kinds_index] == GEN_VIRTUAL) { -2441: --kinds_index; -2441: } -2441: } -2441: else { -2441: ++kinds_index; -2441: -2441: while (sys_dim_kinds[kinds_index] == CON_VIRTUAL) { -2441: ++kinds_index; -2441: } -2441: } -2441: -2441: -2441: if (row_is_line_or_equality -2441: || (row_kind == PARAMETER -2441: && sys_dim_kinds[kinds_index] == PARAMETER)) { -2441: M_row_type& row = rows[row_index]; -2441: -2441: const Coefficient& row_dim = row.expr.get(dim); -2441: -2441: num_rows_to_subtract = row_dim / pivot_dim; -2441: -2441: -2441: -2441: -2441: -2441: row_dim_remainder = row_dim % pivot_dim; -2441: if (row_dim_remainder < 0) { -2441: if (row_dim_remainder <= -pivot_dim_half) { -2441: --num_rows_to_subtract; -2441: } -2441: } -2441: else if (row_dim_remainder > 0 && row_dim_remainder > pivot_dim_half) { -2441: ++num_rows_to_subtract; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: if (num_rows_to_subtract != 0) { -2441: row.expr.linear_combine(pivot.expr, -2441: Coefficient_one(), -num_rows_to_subtract, -2441: start, end + 1); -2441: } -2441: } -2441: } -2441: } -2441: -2441: } -2441: # 2664 "../../src/Grid_defs.hh" 2 -2441: # 36 "../../src/Box_templates.hh" 2 -2441: -2441: -2441: # 1 "../../src/BD_Shape_defs.hh" 1 -2441: # 44 "../../src/BD_Shape_defs.hh" -2441: # 1 "../../src/DB_Matrix_defs.hh" 1 -2441: # 27 "../../src/DB_Matrix_defs.hh" -2441: # 1 "../../src/DB_Matrix_types.hh" 1 -2441: # 16 "../../src/DB_Matrix_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: class DB_Matrix; -2441: -2441: } -2441: # 28 "../../src/DB_Matrix_defs.hh" 2 -2441: -2441: # 1 "../../src/DB_Row_defs.hh" 1 -2441: # 27 "../../src/DB_Row_defs.hh" -2441: # 1 "../../src/DB_Row_types.hh" 1 -2441: # 16 "../../src/DB_Row_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: class DB_Row_Impl_Handler; -2441: -2441: template -2441: class DB_Row; -2441: -2441: } -2441: # 28 "../../src/DB_Row_defs.hh" 2 -2441: -2441: # 1 "../../src/Ptr_Iterator_defs.hh" 1 -2441: # 27 "../../src/Ptr_Iterator_defs.hh" -2441: # 1 "../../src/Ptr_Iterator_types.hh" 1 -2441: # 16 "../../src/Ptr_Iterator_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: namespace Implementation { -2441: -2441: template -2441: class Ptr_Iterator; -2441: -2441: } -2441: -2441: } -2441: # 28 "../../src/Ptr_Iterator_defs.hh" 2 -2441: -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: namespace Implementation { -2441: -2441: template -2441: bool operator==(const Ptr_Iterator

& x, const Ptr_Iterator& y); -2441: -2441: template -2441: bool operator!=(const Ptr_Iterator

& x, const Ptr_Iterator& y); -2441: -2441: template -2441: bool operator<(const Ptr_Iterator

& x, const Ptr_Iterator& y); -2441: -2441: template -2441: bool operator<=(const Ptr_Iterator

& x, const Ptr_Iterator& y); -2441: -2441: template -2441: bool operator>(const Ptr_Iterator

& x, const Ptr_Iterator& y); -2441: -2441: template -2441: bool operator>=(const Ptr_Iterator

& x, const Ptr_Iterator& y); -2441: -2441: template -2441: typename Ptr_Iterator

::difference_type -2441: operator-(const Ptr_Iterator

& x, const Ptr_Iterator& y); -2441: -2441: template -2441: Ptr_Iterator

operator+(typename Ptr_Iterator

::difference_type m, -2441: const Ptr_Iterator

& y); -2441: -2441: } -2441: -2441: } -2441: -2441: -2441: -2441: -2441: template -2441: class Parma_Polyhedra_Library::Implementation::Ptr_Iterator -2441: : public std::iterator::iterator_category, -2441: typename std::iterator_traits

::value_type, -2441: typename std::iterator_traits

::difference_type, -2441: typename std::iterator_traits

::pointer, -2441: typename std::iterator_traits

::reference> { -2441: public: -2441: typedef typename std::iterator_traits

::difference_type difference_type; -2441: typedef typename std::iterator_traits

::reference reference; -2441: typedef typename std::iterator_traits

::pointer pointer; -2441: -2441: -2441: Ptr_Iterator(); -2441: -2441: -2441: explicit Ptr_Iterator(const P& q); -2441: -2441: -2441: -2441: -2441: -2441: template -2441: Ptr_Iterator(const Ptr_Iterator& q); -2441: -2441: -2441: reference operator*() const; -2441: -2441: -2441: pointer operator->() const; -2441: -2441: -2441: reference operator[](const difference_type m) const; -2441: -2441: -2441: Ptr_Iterator& operator++(); -2441: -2441: -2441: Ptr_Iterator operator++(int); -2441: -2441: -2441: Ptr_Iterator& operator--(); -2441: -2441: -2441: Ptr_Iterator operator--(int); -2441: -2441: -2441: Ptr_Iterator& operator+=(const difference_type m); -2441: -2441: -2441: Ptr_Iterator& operator-=(const difference_type m); -2441: -2441: -2441: difference_type operator-(const Ptr_Iterator& y) const; -2441: -2441: -2441: Ptr_Iterator operator+(const difference_type m) const; -2441: -2441: -2441: Ptr_Iterator operator-(const difference_type m) const; -2441: -2441: private: -2441: -2441: P p; -2441: -2441: -2441: const P& base() const; -2441: -2441: template -2441: friend bool Parma_Polyhedra_Library::Implementation:: -2441: operator==(const Ptr_Iterator& x, const Ptr_Iterator& y); -2441: -2441: template -2441: friend bool Parma_Polyhedra_Library::Implementation:: -2441: operator!=(const Ptr_Iterator& x, const Ptr_Iterator& y); -2441: -2441: template -2441: friend bool Parma_Polyhedra_Library::Implementation:: -2441: operator<(const Ptr_Iterator& x, const Ptr_Iterator& y); -2441: -2441: template -2441: friend bool Parma_Polyhedra_Library::Implementation:: -2441: operator<=(const Ptr_Iterator& x, const Ptr_Iterator& y); -2441: -2441: template -2441: friend bool Parma_Polyhedra_Library::Implementation:: -2441: operator>(const Ptr_Iterator& x, const Ptr_Iterator& y); -2441: -2441: template -2441: friend bool Parma_Polyhedra_Library::Implementation:: -2441: operator>=(const Ptr_Iterator& x, const Ptr_Iterator& y); -2441: -2441: template -2441: friend typename Ptr_Iterator::difference_type -2441: Parma_Polyhedra_Library::Implementation:: -2441: operator-(const Ptr_Iterator& x, const Ptr_Iterator& y); -2441: -2441: friend Ptr_Iterator

-2441: Parma_Polyhedra_Library::Implementation:: -2441: operator+<>(typename Ptr_Iterator

::difference_type m, -2441: const Ptr_Iterator

& y); -2441: }; -2441: -2441: # 1 "../../src/Ptr_Iterator_inlines.hh" 1 -2441: # 27 "../../src/Ptr_Iterator_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: namespace Implementation { -2441: -2441: template -2441: inline const P& -2441: Ptr_Iterator

::base() const { -2441: return p; -2441: } -2441: -2441: template -2441: inline -2441: Ptr_Iterator

::Ptr_Iterator() -2441: : p(P()) { -2441: } -2441: -2441: template -2441: inline -2441: Ptr_Iterator

::Ptr_Iterator(const P& q) -2441: : p(q) { -2441: } -2441: -2441: template -2441: template -2441: inline -2441: Ptr_Iterator

::Ptr_Iterator(const Ptr_Iterator& q) -2441: : p(q.base()) { -2441: } -2441: -2441: template -2441: inline typename Ptr_Iterator

::reference -2441: Ptr_Iterator

::operator*() const { -2441: return *p; -2441: } -2441: -2441: template -2441: inline typename Ptr_Iterator

::pointer -2441: Ptr_Iterator

::operator->() const { -2441: return p; -2441: } -2441: -2441: template -2441: inline typename Ptr_Iterator

::reference -2441: Ptr_Iterator

::operator[](const difference_type m) const { -2441: return p[m]; -2441: } -2441: -2441: template -2441: inline Ptr_Iterator

& -2441: Ptr_Iterator

::operator++() { -2441: ++p; -2441: return *this; -2441: } -2441: -2441: template -2441: inline Ptr_Iterator

-2441: Ptr_Iterator

::operator++(int) { -2441: return Ptr_Iterator(p++); -2441: } -2441: -2441: template -2441: inline Ptr_Iterator

& -2441: Ptr_Iterator

::operator--() { -2441: --p; -2441: return *this; -2441: } -2441: -2441: template -2441: inline Ptr_Iterator

-2441: Ptr_Iterator

::operator--(int) { -2441: return Ptr_Iterator(p--); -2441: } -2441: -2441: -2441: template -2441: inline Ptr_Iterator

& -2441: Ptr_Iterator

::operator+=(const difference_type m) { -2441: p += m; -2441: return *this; -2441: } -2441: -2441: template -2441: inline Ptr_Iterator

& -2441: Ptr_Iterator

::operator-=(const difference_type m) { -2441: p -= m; -2441: return *this; -2441: } -2441: -2441: template -2441: inline typename Ptr_Iterator

::difference_type -2441: Ptr_Iterator

::operator-(const Ptr_Iterator& y) const { -2441: return p - y.p; -2441: } -2441: -2441: template -2441: inline Ptr_Iterator

-2441: Ptr_Iterator

::operator+(const difference_type m) const { -2441: return Ptr_Iterator(p + m); -2441: } -2441: -2441: template -2441: inline Ptr_Iterator

-2441: Ptr_Iterator

::operator-(const difference_type m) const { -2441: return Ptr_Iterator(p - m); -2441: } -2441: -2441: template -2441: inline bool -2441: operator==(const Ptr_Iterator

& x, const Ptr_Iterator& y) { -2441: return x.base() == y.base(); -2441: } -2441: -2441: template -2441: inline bool -2441: operator!=(const Ptr_Iterator

& x, const Ptr_Iterator& y) { -2441: return x.base() != y.base(); -2441: } -2441: -2441: template -2441: inline bool -2441: operator<(const Ptr_Iterator

& x, const Ptr_Iterator& y) { -2441: return x.base() < y.base(); -2441: } -2441: -2441: template -2441: inline bool -2441: operator<=(const Ptr_Iterator

& x, const Ptr_Iterator& y) { -2441: return x.base() <= y.base(); -2441: } -2441: -2441: template -2441: inline bool -2441: operator>(const Ptr_Iterator

& x, const Ptr_Iterator& y) { -2441: return x.base() > y.base(); -2441: } -2441: -2441: template -2441: inline bool -2441: operator>=(const Ptr_Iterator

& x, const Ptr_Iterator& y) { -2441: return x.base() >= y.base(); -2441: } -2441: -2441: template -2441: inline typename Ptr_Iterator

::difference_type -2441: operator-(const Ptr_Iterator

& x, const Ptr_Iterator& y) { -2441: return x.base() - y.base(); -2441: } -2441: -2441: template -2441: inline Ptr_Iterator

-2441: operator+(typename Ptr_Iterator

::difference_type m, -2441: const Ptr_Iterator

& y) { -2441: return Ptr_Iterator

(m + y.base()); -2441: } -2441: -2441: } -2441: -2441: } -2441: # 171 "../../src/Ptr_Iterator_defs.hh" 2 -2441: # 30 "../../src/DB_Row_defs.hh" 2 -2441: # 57 "../../src/DB_Row_defs.hh" -2441: template -2441: class Parma_Polyhedra_Library::DB_Row_Impl_Handler { -2441: public: -2441: -2441: DB_Row_Impl_Handler(); -2441: -2441: -2441: ~DB_Row_Impl_Handler(); -2441: -2441: class Impl; -2441: -2441: -2441: Impl* impl; -2441: -2441: -2441: -2441: -2441: -2441: -2441: private: -2441: -2441: DB_Row_Impl_Handler(const DB_Row_Impl_Handler&); -2441: -2441: -2441: DB_Row_Impl_Handler& operator=(const DB_Row_Impl_Handler&); -2441: }; -2441: # 119 "../../src/DB_Row_defs.hh" -2441: template -2441: class Parma_Polyhedra_Library::DB_Row : private DB_Row_Impl_Handler { -2441: public: -2441: -2441: DB_Row(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void construct(dimension_type sz); -2441: # 145 "../../src/DB_Row_defs.hh" -2441: void construct(dimension_type sz, dimension_type capacity); -2441: # 159 "../../src/DB_Row_defs.hh" -2441: template -2441: void construct_upward_approximation(const DB_Row& y, -2441: dimension_type capacity); -2441: -2441: -2441: -2441: -2441: DB_Row(dimension_type sz); -2441: -2441: -2441: DB_Row(dimension_type sz, dimension_type capacity); -2441: -2441: -2441: DB_Row(const DB_Row& y); -2441: -2441: -2441: -2441: -2441: -2441: DB_Row(const DB_Row& y, dimension_type capacity); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: DB_Row(const DB_Row& y, dimension_type sz, dimension_type capacity); -2441: -2441: -2441: ~DB_Row(); -2441: -2441: -2441: DB_Row& operator=(const DB_Row& y); -2441: -2441: -2441: void m_swap(DB_Row& y); -2441: -2441: -2441: void assign(DB_Row& y); -2441: # 208 "../../src/DB_Row_defs.hh" -2441: void allocate(dimension_type capacity); -2441: # 218 "../../src/DB_Row_defs.hh" -2441: void expand_within_capacity(dimension_type new_size); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void shrink(dimension_type new_size); -2441: -2441: -2441: static dimension_type max_size(); -2441: -2441: -2441: dimension_type size() const; -2441: -2441: -2441: -2441: -2441: T& operator[](dimension_type k); -2441: -2441: -2441: const T& operator[](dimension_type k) const; -2441: -2441: -2441: -2441: typedef Implementation::Ptr_Iterator iterator; -2441: -2441: -2441: typedef Implementation::Ptr_Iterator const_iterator; -2441: -2441: -2441: -2441: -2441: -2441: -2441: iterator begin(); -2441: -2441: -2441: iterator end(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_iterator begin() const; -2441: -2441: -2441: const_iterator end() const; -2441: -2441: -2441: -2441: -2441: -2441: memory_size_type total_memory_in_bytes() const; -2441: -2441: -2441: -2441: -2441: -2441: memory_size_type external_memory_in_bytes() const; -2441: -2441: -2441: -2441: -2441: -2441: memory_size_type total_memory_in_bytes(dimension_type capacity) const; -2441: -2441: -2441: -2441: -2441: -2441: memory_size_type external_memory_in_bytes(dimension_type capacity) const; -2441: -2441: -2441: bool OK(dimension_type row_size, dimension_type row_capacity) const; -2441: -2441: private: -2441: template friend class Parma_Polyhedra_Library::DB_Row; -2441: -2441: -2441: void copy_construct_coefficients(const DB_Row& y); -2441: -2441: -2441: -2441: -2441: -2441: }; -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: -2441: -2441: template -2441: void swap(DB_Row& x, DB_Row& y); -2441: -2441: -2441: -2441: -2441: -2441: template -2441: void iter_swap(typename std::vector >::iterator x, -2441: typename std::vector >::iterator y); -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: bool operator==(const DB_Row& x, const DB_Row& y); -2441: -2441: -2441: template -2441: bool operator!=(const DB_Row& x, const DB_Row& y); -2441: -2441: -2441: -2441: -2441: } -2441: # 351 "../../src/DB_Row_defs.hh" -2441: template -2441: class Parma_Polyhedra_Library::DB_Row_Impl_Handler::Impl { -2441: public: -2441: # 362 "../../src/DB_Row_defs.hh" -2441: static void* operator new(size_t fixed_size, dimension_type capacity); -2441: -2441: -2441: static void operator delete(void* p); -2441: -2441: -2441: -2441: -2441: -2441: static void operator delete(void* p, dimension_type capacity); -2441: -2441: -2441: -2441: Impl(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: ~Impl(); -2441: -2441: -2441: -2441: -2441: -2441: void expand_within_capacity(dimension_type new_size); -2441: -2441: -2441: -2441: -2441: -2441: void shrink(dimension_type new_size); -2441: -2441: -2441: void copy_construct_coefficients(const Impl& y); -2441: -2441: -2441: -2441: -2441: -2441: template -2441: void construct_upward_approximation(const U& y); -2441: -2441: -2441: static dimension_type max_size(); -2441: -2441: -2441: -2441: -2441: dimension_type size() const; -2441: -2441: -2441: void set_size(dimension_type new_sz); -2441: -2441: -2441: void bump_size(); -2441: -2441: -2441: -2441: -2441: -2441: T& operator[](dimension_type k); -2441: -2441: -2441: const T& operator[](dimension_type k) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: memory_size_type total_memory_in_bytes() const; -2441: -2441: -2441: memory_size_type total_memory_in_bytes(dimension_type capacity) const; -2441: -2441: -2441: memory_size_type external_memory_in_bytes() const; -2441: -2441: private: -2441: friend class DB_Row; -2441: -2441: -2441: dimension_type size_; -2441: -2441: -2441: T vec_[ -2441: -2441: 0 -2441: -2441: -2441: -2441: ]; -2441: -2441: -2441: Impl(const Impl& y); -2441: -2441: -2441: Impl& operator=(const Impl&); -2441: -2441: -2441: void copy_construct(const Impl& y); -2441: }; -2441: -2441: # 1 "../../src/DB_Row_inlines.hh" 1 -2441: # 34 "../../src/DB_Row_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: inline void* -2441: DB_Row_Impl_Handler::Impl::operator new(const size_t fixed_size, -2441: const dimension_type capacity) { -2441: -2441: return ::operator new(fixed_size + capacity*sizeof(T)); -2441: -2441: -2441: -2441: -2441: } -2441: -2441: template -2441: inline void -2441: DB_Row_Impl_Handler::Impl::operator delete(void* p) { -2441: ::operator delete(p); -2441: } -2441: -2441: template -2441: inline void -2441: DB_Row_Impl_Handler::Impl::operator delete(void* p, dimension_type) { -2441: ::operator delete(p); -2441: } -2441: -2441: template -2441: inline memory_size_type -2441: DB_Row_Impl_Handler::Impl -2441: ::total_memory_in_bytes(dimension_type capacity) const { -2441: return -2441: sizeof(*this) -2441: + capacity*sizeof(T) -2441: -2441: -2441: -2441: + external_memory_in_bytes(); -2441: } -2441: -2441: template -2441: inline memory_size_type -2441: DB_Row_Impl_Handler::Impl::total_memory_in_bytes() const { -2441: -2441: -2441: return total_memory_in_bytes(size_); -2441: } -2441: -2441: template -2441: inline dimension_type -2441: DB_Row_Impl_Handler::Impl::max_size() { -2441: return std::numeric_limits::max() / sizeof(T); -2441: } -2441: -2441: template -2441: inline dimension_type -2441: DB_Row_Impl_Handler::Impl::size() const { -2441: return size_; -2441: } -2441: -2441: template -2441: inline void -2441: DB_Row_Impl_Handler::Impl::set_size(const dimension_type new_sz) { -2441: size_ = new_sz; -2441: } -2441: -2441: template -2441: inline void -2441: DB_Row_Impl_Handler::Impl::bump_size() { -2441: ++size_; -2441: } -2441: -2441: template -2441: inline -2441: DB_Row_Impl_Handler::Impl::Impl() -2441: : size_(0) { -2441: } -2441: -2441: template -2441: inline -2441: DB_Row_Impl_Handler::Impl::~Impl() { -2441: shrink(0); -2441: } -2441: -2441: template -2441: inline -2441: DB_Row_Impl_Handler::DB_Row_Impl_Handler() -2441: : impl(0) { -2441: -2441: -2441: -2441: } -2441: -2441: template -2441: inline -2441: DB_Row_Impl_Handler::~DB_Row_Impl_Handler() { -2441: delete impl; -2441: } -2441: -2441: template -2441: inline T& -2441: DB_Row_Impl_Handler::Impl::operator[](const dimension_type k) { -2441: ((void) 0); -2441: return vec_[k]; -2441: } -2441: -2441: template -2441: inline const T& -2441: DB_Row_Impl_Handler::Impl::operator[](const dimension_type k) const { -2441: ((void) 0); -2441: return vec_[k]; -2441: } -2441: -2441: template -2441: inline dimension_type -2441: DB_Row::max_size() { -2441: return DB_Row_Impl_Handler::Impl::max_size(); -2441: } -2441: -2441: template -2441: inline dimension_type -2441: DB_Row::size() const { -2441: return this->impl->size(); -2441: } -2441: # 166 "../../src/DB_Row_inlines.hh" -2441: template -2441: inline -2441: DB_Row::DB_Row() -2441: : DB_Row_Impl_Handler() { -2441: } -2441: -2441: template -2441: inline void -2441: DB_Row::allocate( -2441: -2441: const -2441: -2441: dimension_type capacity) { -2441: DB_Row& x = *this; -2441: ((void) 0); -2441: -2441: -2441: -2441: -2441: -2441: ((void) 0); -2441: x.impl = new(capacity) typename DB_Row_Impl_Handler::Impl(); -2441: -2441: -2441: -2441: -2441: } -2441: -2441: template -2441: inline void -2441: DB_Row::expand_within_capacity(const dimension_type new_size) { -2441: DB_Row& x = *this; -2441: ((void) 0); -2441: -2441: -2441: -2441: x.impl->expand_within_capacity(new_size); -2441: } -2441: -2441: template -2441: inline void -2441: DB_Row::copy_construct_coefficients(const DB_Row& y) { -2441: DB_Row& x = *this; -2441: ((void) 0); -2441: -2441: -2441: -2441: x.impl->copy_construct_coefficients(*(y.impl)); -2441: } -2441: -2441: template -2441: template -2441: inline void -2441: DB_Row::construct_upward_approximation(const DB_Row& y, -2441: const dimension_type capacity) { -2441: DB_Row& x = *this; -2441: ((void) 0); -2441: allocate(capacity); -2441: ((void) 0); -2441: x.impl->construct_upward_approximation(*(y.impl)); -2441: } -2441: -2441: template -2441: inline void -2441: DB_Row::construct(const dimension_type sz, -2441: const dimension_type capacity) { -2441: ((void) 0); -2441: allocate(capacity); -2441: expand_within_capacity(sz); -2441: } -2441: -2441: template -2441: inline void -2441: DB_Row::construct(const dimension_type sz) { -2441: construct(sz, sz); -2441: } -2441: -2441: template -2441: inline -2441: DB_Row::DB_Row(const dimension_type sz, -2441: const dimension_type capacity) -2441: : DB_Row_Impl_Handler() { -2441: construct(sz, capacity); -2441: } -2441: -2441: template -2441: inline -2441: DB_Row::DB_Row(const dimension_type sz) { -2441: construct(sz); -2441: } -2441: -2441: template -2441: inline -2441: DB_Row::DB_Row(const DB_Row& y) -2441: : DB_Row_Impl_Handler() { -2441: if (y.impl != 0) { -2441: allocate(compute_capacity(y.size(), max_size())); -2441: copy_construct_coefficients(y); -2441: } -2441: } -2441: -2441: template -2441: inline -2441: DB_Row::DB_Row(const DB_Row& y, -2441: const dimension_type capacity) -2441: : DB_Row_Impl_Handler() { -2441: ((void) 0); -2441: ((void) 0); -2441: allocate(capacity); -2441: copy_construct_coefficients(y); -2441: } -2441: -2441: template -2441: inline -2441: DB_Row::DB_Row(const DB_Row& y, -2441: const dimension_type sz, -2441: const dimension_type capacity) -2441: : DB_Row_Impl_Handler() { -2441: ((void) 0); -2441: ((void) 0); -2441: allocate(capacity); -2441: copy_construct_coefficients(y); -2441: expand_within_capacity(sz); -2441: } -2441: -2441: template -2441: inline -2441: DB_Row::~DB_Row() { -2441: } -2441: -2441: template -2441: inline void -2441: DB_Row::shrink(const dimension_type new_size) { -2441: DB_Row& x = *this; -2441: ((void) 0); -2441: x.impl->shrink(new_size); -2441: } -2441: -2441: template -2441: inline void -2441: DB_Row::m_swap(DB_Row& y) { -2441: using std::swap; -2441: DB_Row& x = *this; -2441: swap(x.impl, y.impl); -2441: -2441: -2441: -2441: } -2441: -2441: template -2441: inline void -2441: DB_Row::assign(DB_Row& y) { -2441: DB_Row& x = *this; -2441: x.impl = y.impl; -2441: -2441: -2441: -2441: } -2441: -2441: template -2441: inline DB_Row& -2441: DB_Row::operator=(const DB_Row& y) { -2441: DB_Row tmp(y); -2441: m_swap(tmp); -2441: return *this; -2441: } -2441: -2441: template -2441: inline T& -2441: DB_Row::operator[](const dimension_type k) { -2441: DB_Row& x = *this; -2441: return (*x.impl)[k]; -2441: } -2441: -2441: template -2441: inline const T& -2441: DB_Row::operator[](const dimension_type k) const { -2441: const DB_Row& x = *this; -2441: return (*x.impl)[k]; -2441: } -2441: -2441: template -2441: inline typename DB_Row::iterator -2441: DB_Row::begin() { -2441: DB_Row& x = *this; -2441: return iterator(x.impl->vec_); -2441: } -2441: -2441: template -2441: inline typename DB_Row::iterator -2441: DB_Row::end() { -2441: DB_Row& x = *this; -2441: return iterator(x.impl->vec_ + x.impl->size_); -2441: } -2441: -2441: template -2441: inline typename DB_Row::const_iterator -2441: DB_Row::begin() const { -2441: const DB_Row& x = *this; -2441: return const_iterator(x.impl->vec_); -2441: } -2441: -2441: template -2441: inline typename DB_Row::const_iterator -2441: DB_Row::end() const { -2441: const DB_Row& x = *this; -2441: return const_iterator(x.impl->vec_ + x.impl->size_); -2441: } -2441: -2441: template -2441: inline memory_size_type -2441: DB_Row::external_memory_in_bytes(dimension_type capacity) const { -2441: const DB_Row& x = *this; -2441: return x.impl->total_memory_in_bytes(capacity); -2441: } -2441: -2441: template -2441: inline memory_size_type -2441: DB_Row::total_memory_in_bytes(dimension_type capacity) const { -2441: return sizeof(*this) + external_memory_in_bytes(capacity); -2441: } -2441: -2441: template -2441: inline memory_size_type -2441: DB_Row::external_memory_in_bytes() const { -2441: const DB_Row& x = *this; -2441: -2441: -2441: -2441: return x.impl->total_memory_in_bytes(); -2441: -2441: } -2441: -2441: template -2441: inline memory_size_type -2441: DB_Row::total_memory_in_bytes() const { -2441: return sizeof(*this) + external_memory_in_bytes(); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: operator!=(const DB_Row& x, const DB_Row& y) { -2441: return !(x == y); -2441: } -2441: -2441: -2441: template -2441: inline void -2441: swap(DB_Row& x, DB_Row& y) { -2441: x.m_swap(y); -2441: } -2441: -2441: -2441: template -2441: inline void -2441: iter_swap(typename std::vector >::iterator x, -2441: typename std::vector >::iterator y) { -2441: swap(*x, *y); -2441: } -2441: -2441: } -2441: # 468 "../../src/DB_Row_defs.hh" 2 -2441: # 1 "../../src/DB_Row_templates.hh" 1 -2441: # 29 "../../src/DB_Row_templates.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: template -2441: void -2441: DB_Row_Impl_Handler::Impl::construct_upward_approximation(const U& y) { -2441: const dimension_type y_size = y.size(); -2441: -2441: -2441: for (dimension_type i = 0; i < y_size; ++i) { -2441: construct(vec_[i], y[i], ROUND_UP); -2441: bump_size(); -2441: } -2441: # 53 "../../src/DB_Row_templates.hh" -2441: } -2441: -2441: template -2441: void -2441: DB_Row_Impl_Handler:: -2441: Impl::expand_within_capacity(const dimension_type new_size) { -2441: ((void) 0); -2441: # 68 "../../src/DB_Row_templates.hh" -2441: for (dimension_type i = size(); i < new_size; ++i) { -2441: new(&vec_[i]) T(PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: bump_size(); -2441: } -2441: } -2441: -2441: template -2441: void -2441: DB_Row_Impl_Handler::Impl::shrink(dimension_type new_size) { -2441: const dimension_type old_size = size(); -2441: ((void) 0); -2441: -2441: set_size(new_size); -2441: # 89 "../../src/DB_Row_templates.hh" -2441: for (dimension_type i = old_size; i-- > new_size; ) { -2441: vec_[i].~T(); -2441: } -2441: } -2441: -2441: template -2441: void -2441: DB_Row_Impl_Handler::Impl::copy_construct_coefficients(const Impl& y) { -2441: const dimension_type y_size = y.size(); -2441: -2441: -2441: for (dimension_type i = 0; i < y_size; ++i) { -2441: new(&vec_[i]) T(y.vec_[i]); -2441: bump_size(); -2441: } -2441: # 115 "../../src/DB_Row_templates.hh" -2441: } -2441: -2441: template -2441: memory_size_type -2441: DB_Row_Impl_Handler::Impl::external_memory_in_bytes() const { -2441: memory_size_type n = 0; -2441: for (dimension_type i = size(); i-- > 0; ) { -2441: n += Parma_Polyhedra_Library::external_memory_in_bytes(vec_[i]); -2441: } -2441: return n; -2441: } -2441: -2441: template -2441: bool -2441: DB_Row::OK(const dimension_type row_size, -2441: const dimension_type -2441: -2441: -2441: -2441: ) const { -2441: -2441: -2441: -2441: -2441: -2441: const DB_Row& x = *this; -2441: bool is_broken = false; -2441: # 163 "../../src/DB_Row_templates.hh" -2441: if (x.size() != row_size) { -2441: -2441: -2441: -2441: -2441: -2441: is_broken = true; -2441: } -2441: # 183 "../../src/DB_Row_templates.hh" -2441: for (dimension_type i = x.size(); i-- > 0; ) { -2441: const T& element = x[i]; -2441: -2441: if (!element.OK()) { -2441: is_broken = true; -2441: break; -2441: } -2441: -2441: if (is_not_a_number(element)) { -2441: -2441: -2441: -2441: -2441: is_broken = true; -2441: break; -2441: } -2441: } -2441: -2441: return !is_broken; -2441: } -2441: -2441: -2441: template -2441: bool -2441: operator==(const DB_Row& x, const DB_Row& y) { -2441: if (x.size() != y.size()) { -2441: return false; -2441: } -2441: for (dimension_type i = x.size(); i-- > 0; ) { -2441: if (x[i] != y[i]) { -2441: return false; -2441: } -2441: } -2441: return true; -2441: } -2441: -2441: } -2441: # 469 "../../src/DB_Row_defs.hh" 2 -2441: # 30 "../../src/DB_Matrix_defs.hh" 2 -2441: -2441: -2441: -2441: -2441: -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: namespace IO_Operators { -2441: -2441: -2441: -2441: -2441: -2441: template -2441: std::ostream& -2441: operator<<(std::ostream& s, const DB_Matrix& c); -2441: -2441: } -2441: -2441: } -2441: # 61 "../../src/DB_Matrix_defs.hh" -2441: template -2441: class Parma_Polyhedra_Library::DB_Matrix { -2441: public: -2441: -2441: static dimension_type max_num_rows(); -2441: -2441: -2441: static dimension_type max_num_columns(); -2441: -2441: -2441: -2441: -2441: -2441: DB_Matrix(); -2441: -2441: -2441: explicit DB_Matrix(dimension_type n_rows); -2441: -2441: -2441: DB_Matrix(const DB_Matrix& y); -2441: -2441: -2441: template -2441: explicit DB_Matrix(const DB_Matrix& y); -2441: -2441: -2441: ~DB_Matrix(); -2441: -2441: -2441: DB_Matrix& operator=(const DB_Matrix& y); -2441: -2441: -2441: -2441: -2441: -2441: class const_iterator { -2441: private: -2441: typedef typename std::vector >::const_iterator Iter; -2441: -2441: Iter i; -2441: -2441: public: -2441: typedef std::forward_iterator_tag iterator_category; -2441: typedef typename std::iterator_traits::value_type value_type; -2441: typedef typename std::iterator_traits::difference_type -2441: difference_type; -2441: typedef typename std::iterator_traits::pointer pointer; -2441: typedef typename std::iterator_traits::reference reference; -2441: -2441: -2441: const_iterator(); -2441: -2441: -2441: -2441: -2441: -2441: explicit const_iterator(const Iter& b); -2441: -2441: -2441: const_iterator(const const_iterator& y); -2441: -2441: -2441: const_iterator& operator=(const const_iterator& y); -2441: -2441: -2441: reference operator*() const; -2441: -2441: -2441: pointer operator->() const; -2441: -2441: -2441: const_iterator& operator++(); -2441: -2441: -2441: const_iterator operator++(int); -2441: -2441: -2441: -2441: -2441: -2441: bool operator==(const const_iterator& y) const; -2441: -2441: -2441: -2441: -2441: -2441: bool operator!=(const const_iterator& y) const; -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_iterator begin() const; -2441: -2441: -2441: const_iterator end() const; -2441: -2441: private: -2441: template friend class DB_Matrix; -2441: -2441: -2441: std::vector > rows; -2441: -2441: -2441: dimension_type row_size; -2441: -2441: -2441: -2441: -2441: -2441: dimension_type row_capacity; -2441: -2441: public: -2441: -2441: void m_swap(DB_Matrix& y); -2441: # 188 "../../src/DB_Matrix_defs.hh" -2441: void grow(dimension_type new_n_rows); -2441: # 198 "../../src/DB_Matrix_defs.hh" -2441: void resize_no_copy(dimension_type new_n_rows); -2441: -2441: -2441: dimension_type num_rows() const; -2441: -2441: -2441: -2441: -2441: DB_Row& operator[](dimension_type k); -2441: -2441: -2441: const DB_Row& operator[](dimension_type k) const; -2441: -2441: -2441: void ascii_dump() const; void ascii_dump(std::ostream& s) const; void print() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool ascii_load(std::istream& s); -2441: -2441: -2441: memory_size_type total_memory_in_bytes() const; -2441: -2441: -2441: memory_size_type external_memory_in_bytes() const; -2441: -2441: -2441: bool OK() const; -2441: }; -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: -2441: -2441: template -2441: void swap(DB_Matrix& x, DB_Matrix& y); -2441: -2441: -2441: -2441: -2441: -2441: template -2441: bool operator==(const DB_Matrix& x, const DB_Matrix& y); -2441: -2441: -2441: -2441: -2441: -2441: template -2441: bool operator!=(const DB_Matrix& x, const DB_Matrix& y); -2441: # 267 "../../src/DB_Matrix_defs.hh" -2441: template -2441: bool rectilinear_distance_assign(Checked_Number& r, -2441: const DB_Matrix& x, -2441: const DB_Matrix& y, -2441: Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2); -2441: # 289 "../../src/DB_Matrix_defs.hh" -2441: template -2441: bool euclidean_distance_assign(Checked_Number& r, -2441: const DB_Matrix& x, -2441: const DB_Matrix& y, -2441: Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2); -2441: # 311 "../../src/DB_Matrix_defs.hh" -2441: template -2441: bool l_infinity_distance_assign(Checked_Number& r, -2441: const DB_Matrix& x, -2441: const DB_Matrix& y, -2441: Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2); -2441: -2441: } -2441: -2441: # 1 "../../src/DB_Matrix_inlines.hh" 1 -2441: # 33 "../../src/DB_Matrix_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: inline void -2441: DB_Matrix::m_swap(DB_Matrix& y) { -2441: using std::swap; -2441: swap(rows, y.rows); -2441: swap(row_size, y.row_size); -2441: swap(row_capacity, y.row_capacity); -2441: } -2441: -2441: template -2441: inline dimension_type -2441: DB_Matrix::max_num_rows() { -2441: return std::vector >().max_size(); -2441: } -2441: -2441: template -2441: inline dimension_type -2441: DB_Matrix::max_num_columns() { -2441: return DB_Row::max_size(); -2441: } -2441: -2441: template -2441: inline memory_size_type -2441: DB_Matrix::total_memory_in_bytes() const { -2441: return sizeof(*this) + external_memory_in_bytes(); -2441: } -2441: -2441: template -2441: inline -2441: DB_Matrix::const_iterator::const_iterator() -2441: : i(Iter()) { -2441: } -2441: -2441: template -2441: inline -2441: DB_Matrix::const_iterator::const_iterator(const Iter& b) -2441: : i(b) { -2441: } -2441: -2441: template -2441: inline -2441: DB_Matrix::const_iterator::const_iterator(const const_iterator& y) -2441: : i(y.i) { -2441: } -2441: -2441: template -2441: inline typename DB_Matrix::const_iterator& -2441: DB_Matrix::const_iterator::operator=(const const_iterator& y) { -2441: i = y.i; -2441: return *this; -2441: } -2441: -2441: template -2441: inline typename DB_Matrix::const_iterator::reference -2441: DB_Matrix::const_iterator::operator*() const { -2441: return *i; -2441: } -2441: -2441: template -2441: inline typename DB_Matrix::const_iterator::pointer -2441: DB_Matrix::const_iterator::operator->() const { -2441: return &*i; -2441: } -2441: -2441: template -2441: inline typename DB_Matrix::const_iterator& -2441: DB_Matrix::const_iterator::operator++() { -2441: ++i; -2441: return *this; -2441: } -2441: -2441: template -2441: inline typename DB_Matrix::const_iterator -2441: DB_Matrix::const_iterator::operator++(int) { -2441: return const_iterator(i++); -2441: } -2441: -2441: template -2441: inline bool -2441: DB_Matrix::const_iterator::operator==(const const_iterator& y) const { -2441: return i == y.i; -2441: } -2441: -2441: template -2441: inline bool -2441: DB_Matrix::const_iterator::operator!=(const const_iterator& y) const { -2441: return !operator==(y); -2441: } -2441: -2441: template -2441: inline typename DB_Matrix::const_iterator -2441: DB_Matrix::begin() const { -2441: return const_iterator(rows.begin()); -2441: } -2441: -2441: template -2441: inline typename DB_Matrix::const_iterator -2441: DB_Matrix::end() const { -2441: return const_iterator(rows.end()); -2441: } -2441: -2441: template -2441: inline -2441: DB_Matrix::DB_Matrix() -2441: : rows(), -2441: row_size(0), -2441: row_capacity(0) { -2441: } -2441: -2441: template -2441: inline -2441: DB_Matrix::~DB_Matrix() { -2441: } -2441: -2441: template -2441: inline DB_Row& -2441: DB_Matrix::operator[](const dimension_type k) { -2441: ((void) 0); -2441: return rows[k]; -2441: } -2441: -2441: template -2441: inline const DB_Row& -2441: DB_Matrix::operator[](const dimension_type k) const { -2441: ((void) 0); -2441: return rows[k]; -2441: } -2441: -2441: template -2441: inline dimension_type -2441: DB_Matrix::num_rows() const { -2441: return rows.size(); -2441: } -2441: -2441: -2441: -2441: -2441: template -2441: inline bool -2441: operator!=(const DB_Matrix& x, const DB_Matrix& y) { -2441: return !(x == y); -2441: } -2441: -2441: template -2441: inline -2441: DB_Matrix::DB_Matrix(const DB_Matrix& y) -2441: : rows(y.rows), -2441: row_size(y.row_size), -2441: row_capacity(compute_capacity(y.row_size, max_num_columns())) { -2441: } -2441: -2441: template -2441: inline DB_Matrix& -2441: DB_Matrix::operator=(const DB_Matrix& y) { -2441: -2441: -2441: -2441: -2441: if (this != &y) { -2441: -2441: rows = y.rows; -2441: row_size = y.row_size; -2441: -2441: -2441: row_capacity = compute_capacity(y.row_size, max_num_columns()); -2441: } -2441: return *this; -2441: } -2441: -2441: -2441: -2441: -2441: template -2441: inline bool -2441: l_m_distance_assign(Checked_Number& r, -2441: const DB_Matrix& x, -2441: const DB_Matrix& y, -2441: const Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2) { -2441: const dimension_type x_num_rows = x.num_rows(); -2441: if (x_num_rows != y.num_rows()) { -2441: return false; -2441: } -2441: assign_r(tmp0, 0, ROUND_NOT_NEEDED); -2441: for (dimension_type i = x_num_rows; i-- > 0; ) { -2441: const DB_Row& x_i = x[i]; -2441: const DB_Row& y_i = y[i]; -2441: for (dimension_type j = x_num_rows; j-- > 0; ) { -2441: const T& x_i_j = x_i[j]; -2441: const T& y_i_j = y_i[j]; -2441: if (is_plus_infinity(x_i_j)) { -2441: if (is_plus_infinity(y_i_j)) { -2441: continue; -2441: } -2441: else { -2441: pinf: -2441: assign_r(r, PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: return true; -2441: } -2441: } -2441: else if (is_plus_infinity(y_i_j)) { -2441: goto pinf; -2441: } -2441: const Temp* tmp1p; -2441: const Temp* tmp2p; -2441: if (x_i_j > y_i_j) { -2441: maybe_assign(tmp1p, tmp1, x_i_j, dir); -2441: maybe_assign(tmp2p, tmp2, y_i_j, inverse(dir)); -2441: } -2441: else { -2441: maybe_assign(tmp1p, tmp1, y_i_j, dir); -2441: maybe_assign(tmp2p, tmp2, x_i_j, inverse(dir)); -2441: } -2441: sub_assign_r(tmp1, *tmp1p, *tmp2p, dir); -2441: ((void) 0); -2441: Specialization::combine(tmp0, tmp1, dir); -2441: } -2441: } -2441: Specialization::finalize(tmp0, dir); -2441: assign_r(r, tmp0, dir); -2441: return true; -2441: } -2441: -2441: -2441: -2441: -2441: template -2441: inline bool -2441: rectilinear_distance_assign(Checked_Number& r, -2441: const DB_Matrix& x, -2441: const DB_Matrix& y, -2441: const Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2) { -2441: return -2441: l_m_distance_assign >(r, x, y, -2441: dir, -2441: tmp0, -2441: tmp1, -2441: tmp2); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline bool -2441: euclidean_distance_assign(Checked_Number& r, -2441: const DB_Matrix& x, -2441: const DB_Matrix& y, -2441: const Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2) { -2441: return -2441: l_m_distance_assign >(r, x, y, -2441: dir, -2441: tmp0, -2441: tmp1, -2441: tmp2); -2441: } -2441: -2441: -2441: -2441: -2441: template -2441: inline bool -2441: l_infinity_distance_assign(Checked_Number& r, -2441: const DB_Matrix& x, -2441: const DB_Matrix& y, -2441: const Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2) { -2441: return -2441: l_m_distance_assign >(r, x, y, -2441: dir, -2441: tmp0, -2441: tmp1, -2441: tmp2); -2441: } -2441: -2441: -2441: -2441: -2441: template -2441: inline void -2441: swap(DB_Matrix& x, DB_Matrix& y) { -2441: x.m_swap(y); -2441: } -2441: -2441: } -2441: # 323 "../../src/DB_Matrix_defs.hh" 2 -2441: # 1 "../../src/DB_Matrix_templates.hh" 1 -2441: # 27 "../../src/DB_Matrix_templates.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: DB_Matrix::DB_Matrix(const dimension_type n_rows) -2441: : rows(n_rows), -2441: row_size(n_rows), -2441: row_capacity(compute_capacity(n_rows, max_num_columns())) { -2441: -2441: for (dimension_type i = 0; i < n_rows; ++i) { -2441: rows[i].construct(n_rows, row_capacity); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: template -2441: DB_Matrix::DB_Matrix(const DB_Matrix& y) -2441: : rows(y.rows.size()), -2441: row_size(y.row_size), -2441: row_capacity(compute_capacity(y.row_size, max_num_columns())) { -2441: -2441: for (dimension_type i = 0, n_rows = rows.size(); i < n_rows; ++i) { -2441: rows[i].construct_upward_approximation(y[i], row_capacity); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: DB_Matrix::grow(const dimension_type new_n_rows) { -2441: const dimension_type old_n_rows = rows.size(); -2441: ((void) 0); -2441: -2441: if (new_n_rows > old_n_rows) { -2441: if (new_n_rows <= row_capacity) { -2441: -2441: if (rows.capacity() < new_n_rows) { -2441: -2441: std::vector > new_rows; -2441: new_rows.reserve(compute_capacity(new_n_rows, max_num_rows())); -2441: new_rows.insert(new_rows.end(), new_n_rows, DB_Row()); -2441: -2441: dimension_type i = new_n_rows; -2441: while (i-- > old_n_rows) { -2441: new_rows[i].construct(new_n_rows, row_capacity); -2441: } -2441: -2441: ++i; -2441: while (i-- > 0) { -2441: swap(new_rows[i], rows[i]); -2441: } -2441: -2441: using std::swap; -2441: swap(rows, new_rows); -2441: } -2441: else { -2441: -2441: rows.insert(rows.end(), new_n_rows - old_n_rows, DB_Row()); -2441: for (dimension_type i = new_n_rows; i-- > old_n_rows; ) { -2441: rows[i].construct(new_n_rows, row_capacity); -2441: } -2441: } -2441: } -2441: else { -2441: -2441: DB_Matrix new_matrix; -2441: new_matrix.rows.reserve(compute_capacity(new_n_rows, max_num_rows())); -2441: new_matrix.rows.insert(new_matrix.rows.end(), new_n_rows, DB_Row()); -2441: -2441: new_matrix.row_size = new_n_rows; -2441: new_matrix.row_capacity = compute_capacity(new_n_rows, -2441: max_num_columns()); -2441: dimension_type i = new_n_rows; -2441: while (i-- > old_n_rows) { -2441: new_matrix.rows[i].construct(new_matrix.row_size, -2441: new_matrix.row_capacity); -2441: } -2441: -2441: ++i; -2441: while (i-- > 0) { -2441: -2441: DB_Row new_row(rows[i], -2441: new_matrix.row_size, -2441: new_matrix.row_capacity); -2441: swap(new_matrix.rows[i], new_row); -2441: } -2441: -2441: m_swap(new_matrix); -2441: return; -2441: } -2441: } -2441: -2441: if (new_n_rows > row_size) { -2441: -2441: if (new_n_rows <= row_capacity) { -2441: -2441: for (dimension_type i = old_n_rows; i-- > 0; ) { -2441: rows[i].expand_within_capacity(new_n_rows); -2441: } -2441: } -2441: else { -2441: -2441: -2441: const dimension_type new_row_capacity -2441: = compute_capacity(new_n_rows, max_num_columns()); -2441: for (dimension_type i = old_n_rows; i-- > 0; ) { -2441: -2441: DB_Row new_row(rows[i], new_n_rows, new_row_capacity); -2441: swap(rows[i], new_row); -2441: } -2441: row_capacity = new_row_capacity; -2441: } -2441: -2441: row_size = new_n_rows; -2441: } -2441: } -2441: -2441: template -2441: void -2441: DB_Matrix::resize_no_copy(const dimension_type new_n_rows) { -2441: dimension_type old_n_rows = rows.size(); -2441: -2441: if (new_n_rows > old_n_rows) { -2441: -2441: if (new_n_rows <= row_capacity) { -2441: -2441: if (rows.capacity() < new_n_rows) { -2441: -2441: std::vector > new_rows; -2441: new_rows.reserve(compute_capacity(new_n_rows, max_num_rows())); -2441: new_rows.insert(new_rows.end(), new_n_rows, DB_Row()); -2441: -2441: -2441: dimension_type i = new_n_rows; -2441: while (i-- > old_n_rows) { -2441: new_rows[i].construct(new_n_rows, row_capacity); -2441: -2441: } -2441: ++i; -2441: while (i-- > 0) { -2441: swap(new_rows[i], rows[i]); -2441: } -2441: -2441: using std::swap; -2441: swap(rows, new_rows); -2441: } -2441: else { -2441: -2441: rows.insert(rows.end(), new_n_rows - old_n_rows, DB_Row()); -2441: -2441: -2441: for (dimension_type i = new_n_rows; i-- > old_n_rows; ) { -2441: rows[i].construct(new_n_rows, row_capacity); -2441: } -2441: } -2441: } -2441: else { -2441: -2441: DB_Matrix new_matrix(new_n_rows); -2441: m_swap(new_matrix); -2441: return; -2441: } -2441: } -2441: else if (new_n_rows < old_n_rows) { -2441: -2441: rows.resize(new_n_rows); -2441: -2441: for (dimension_type i = new_n_rows; i-- > 0; ) { -2441: rows[i].shrink(new_n_rows); -2441: } -2441: old_n_rows = new_n_rows; -2441: } -2441: -2441: if (new_n_rows > row_size) { -2441: -2441: if (new_n_rows <= row_capacity) { -2441: -2441: for (dimension_type i = old_n_rows; i-- > 0; ) { -2441: rows[i].expand_within_capacity(new_n_rows); -2441: } -2441: } -2441: else { -2441: -2441: -2441: const dimension_type new_row_capacity -2441: = compute_capacity(new_n_rows, max_num_columns()); -2441: for (dimension_type i = old_n_rows; i-- > 0; ) { -2441: DB_Row new_row(new_n_rows, new_row_capacity); -2441: swap(rows[i], new_row); -2441: } -2441: row_capacity = new_row_capacity; -2441: } -2441: } -2441: -2441: row_size = new_n_rows; -2441: } -2441: -2441: template -2441: void -2441: DB_Matrix::ascii_dump(std::ostream& s) const { -2441: const DB_Matrix& x = *this; -2441: const char separator = ' '; -2441: const dimension_type nrows = x.num_rows(); -2441: s << nrows << separator << "\n"; -2441: for (dimension_type i = 0; i < nrows; ++i) { -2441: for (dimension_type j = 0; j < nrows; ++j) { -2441: using namespace IO_Operators; -2441: s << x[i][j] << separator; -2441: } -2441: s << "\n"; -2441: } -2441: } -2441: -2441: template void DB_Matrix::ascii_dump() const { ascii_dump(std::cerr); } template void DB_Matrix::print() const { using IO_Operators::operator<<; std::cerr << *this; } -2441: -2441: template -2441: bool -2441: DB_Matrix::ascii_load(std::istream& s) { -2441: dimension_type nrows; -2441: if (!(s >> nrows)) { -2441: return false; -2441: } -2441: resize_no_copy(nrows); -2441: DB_Matrix& x = *this; -2441: for (dimension_type i = 0; i < nrows; ++i) { -2441: for (dimension_type j = 0; j < nrows; ++j) { -2441: Result r = input(x[i][j], s, ROUND_CHECK); -2441: if (result_relation(r) != VR_EQ || is_minus_infinity(x[i][j])) { -2441: return false; -2441: } -2441: } -2441: } -2441: -2441: -2441: ((void) 0); -2441: return true; -2441: } -2441: -2441: -2441: -2441: -2441: template -2441: bool -2441: operator==(const DB_Matrix& x, const DB_Matrix& y) { -2441: const dimension_type x_num_rows = x.num_rows(); -2441: if (x_num_rows != y.num_rows()) { -2441: return false; -2441: } -2441: for (dimension_type i = x_num_rows; i-- > 0; ) { -2441: if (x[i] != y[i]) { -2441: return false; -2441: } -2441: } -2441: return true; -2441: } -2441: -2441: template -2441: memory_size_type -2441: DB_Matrix::external_memory_in_bytes() const { -2441: memory_size_type n = rows.capacity() * sizeof(DB_Row); -2441: for (dimension_type i = num_rows(); i-- > 0; ) { -2441: n += rows[i].external_memory_in_bytes(row_capacity); -2441: } -2441: return n; -2441: } -2441: -2441: template -2441: bool -2441: DB_Matrix::OK() const { -2441: -2441: -2441: -2441: -2441: -2441: -2441: if (num_rows() != row_size) { -2441: -2441: -2441: -2441: -2441: -2441: -2441: return false; -2441: } -2441: -2441: const DB_Matrix& x = *this; -2441: const dimension_type n_rows = x.num_rows(); -2441: for (dimension_type i = 0; i < n_rows; ++i) { -2441: if (!x[i].OK(row_size, row_capacity)) { -2441: return false; -2441: } -2441: } -2441: -2441: -2441: return true; -2441: } -2441: -2441: -2441: -2441: -2441: template -2441: std::ostream& -2441: IO_Operators::operator<<(std::ostream& s, const DB_Matrix& c) { -2441: const dimension_type n = c.num_rows(); -2441: for (dimension_type i = 0; i < n; ++i) { -2441: for (dimension_type j = 0; j < n; ++j) { -2441: s << c[i][j] << " "; -2441: } -2441: s << "\n"; -2441: } -2441: return s; -2441: } -2441: -2441: } -2441: # 324 "../../src/DB_Matrix_defs.hh" 2 -2441: # 45 "../../src/BD_Shape_defs.hh" 2 -2441: -2441: -2441: # 1 "../../src/WRD_coefficient_types_defs.hh" 1 -2441: # 29 "../../src/WRD_coefficient_types_defs.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: struct WRD_Extended_Number_Policy { -2441: -2441: enum const_bool_value_check_overflow { check_overflow = (true) }; -2441: -2441: -2441: enum const_bool_value_check_inf_add_inf { check_inf_add_inf = (false) }; -2441: -2441: -2441: enum const_bool_value_check_inf_sub_inf { check_inf_sub_inf = (false) }; -2441: -2441: -2441: enum const_bool_value_check_inf_mul_zero { check_inf_mul_zero = (false) }; -2441: -2441: -2441: enum const_bool_value_check_div_zero { check_div_zero = (false) }; -2441: -2441: -2441: enum const_bool_value_check_inf_div_inf { check_inf_div_inf = (false) }; -2441: -2441: -2441: enum const_bool_value_check_inf_mod { check_inf_mod = (false) }; -2441: -2441: -2441: enum const_bool_value_check_sqrt_neg { check_sqrt_neg = (false) }; -2441: -2441: -2441: enum const_bool_value_has_nan { has_nan = (true) }; -2441: -2441: -2441: enum const_bool_value_has_infinity { has_infinity = (true) }; -2441: -2441: -2441: -2441: -2441: -2441: enum const_bool_value_fpu_check_inexact { fpu_check_inexact = (true) }; -2441: -2441: -2441: enum const_bool_value_fpu_check_nan_result { fpu_check_nan_result = (false) }; -2441: # 87 "../../src/WRD_coefficient_types_defs.hh" -2441: static void handle_result(Result r); -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: struct Debug_WRD_Extended_Number_Policy { -2441: -2441: enum const_bool_value_check_overflow { check_overflow = (true) }; -2441: -2441: -2441: enum const_bool_value_check_inf_add_inf { check_inf_add_inf = (true) }; -2441: -2441: -2441: enum const_bool_value_check_inf_sub_inf { check_inf_sub_inf = (true) }; -2441: -2441: -2441: enum const_bool_value_check_inf_mul_zero { check_inf_mul_zero = (true) }; -2441: -2441: -2441: enum const_bool_value_check_div_zero { check_div_zero = (true) }; -2441: -2441: -2441: enum const_bool_value_check_inf_div_inf { check_inf_div_inf = (true) }; -2441: -2441: -2441: enum const_bool_value_check_inf_mod { check_inf_mod = (true) }; -2441: -2441: -2441: enum const_bool_value_check_sqrt_neg { check_sqrt_neg = (true) }; -2441: -2441: -2441: enum const_bool_value_has_nan { has_nan = (true) }; -2441: -2441: -2441: enum const_bool_value_has_infinity { has_infinity = (true) }; -2441: -2441: -2441: -2441: -2441: -2441: enum const_bool_value_fpu_check_inexact { fpu_check_inexact = (true) }; -2441: -2441: -2441: enum const_bool_value_fpu_check_nan_result { fpu_check_nan_result = (true) }; -2441: # 146 "../../src/WRD_coefficient_types_defs.hh" -2441: static void handle_result(Result r); -2441: }; -2441: -2441: } -2441: -2441: # 1 "../../src/WRD_coefficient_types_inlines.hh" 1 -2441: # 27 "../../src/WRD_coefficient_types_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: inline void -2441: WRD_Extended_Number_Policy::handle_result(Result r) { -2441: if (result_class(r) == VC_NAN) { -2441: throw_result_exception(r); -2441: } -2441: } -2441: -2441: inline void -2441: Debug_WRD_Extended_Number_Policy::handle_result(Result r) { -2441: if (result_class(r) == VC_NAN) { -2441: throw_result_exception(r); -2441: } -2441: } -2441: -2441: } -2441: # 152 "../../src/WRD_coefficient_types_defs.hh" 2 -2441: # 48 "../../src/BD_Shape_defs.hh" 2 -2441: # 56 "../../src/BD_Shape_defs.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: namespace IO_Operators { -2441: # 68 "../../src/BD_Shape_defs.hh" -2441: template -2441: std::ostream& -2441: operator<<(std::ostream& s, const BD_Shape& bds); -2441: -2441: } -2441: -2441: -2441: -2441: template -2441: void swap(BD_Shape& x, BD_Shape& y); -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: bool operator==(const BD_Shape& x, const BD_Shape& y); -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: bool operator!=(const BD_Shape& x, const BD_Shape& y); -2441: # 106 "../../src/BD_Shape_defs.hh" -2441: template -2441: bool rectilinear_distance_assign(Checked_Number& r, -2441: const BD_Shape& x, -2441: const BD_Shape& y, -2441: Rounding_Dir dir); -2441: # 123 "../../src/BD_Shape_defs.hh" -2441: template -2441: bool rectilinear_distance_assign(Checked_Number& r, -2441: const BD_Shape& x, -2441: const BD_Shape& y, -2441: Rounding_Dir dir); -2441: # 140 "../../src/BD_Shape_defs.hh" -2441: template -2441: bool rectilinear_distance_assign(Checked_Number& r, -2441: const BD_Shape& x, -2441: const BD_Shape& y, -2441: Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2); -2441: # 160 "../../src/BD_Shape_defs.hh" -2441: template -2441: bool euclidean_distance_assign(Checked_Number& r, -2441: const BD_Shape& x, -2441: const BD_Shape& y, -2441: Rounding_Dir dir); -2441: # 177 "../../src/BD_Shape_defs.hh" -2441: template -2441: bool euclidean_distance_assign(Checked_Number& r, -2441: const BD_Shape& x, -2441: const BD_Shape& y, -2441: Rounding_Dir dir); -2441: # 194 "../../src/BD_Shape_defs.hh" -2441: template -2441: bool euclidean_distance_assign(Checked_Number& r, -2441: const BD_Shape& x, -2441: const BD_Shape& y, -2441: Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2); -2441: # 214 "../../src/BD_Shape_defs.hh" -2441: template -2441: bool l_infinity_distance_assign(Checked_Number& r, -2441: const BD_Shape& x, -2441: const BD_Shape& y, -2441: Rounding_Dir dir); -2441: # 231 "../../src/BD_Shape_defs.hh" -2441: template -2441: bool l_infinity_distance_assign(Checked_Number& r, -2441: const BD_Shape& x, -2441: const BD_Shape& y, -2441: Rounding_Dir dir); -2441: # 248 "../../src/BD_Shape_defs.hh" -2441: template -2441: bool l_infinity_distance_assign(Checked_Number& r, -2441: const BD_Shape& x, -2441: const BD_Shape& y, -2441: Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2); -2441: -2441: -2441: -2441: class BD_Shape_Helpers { -2441: public: -2441: # 294 "../../src/BD_Shape_defs.hh" -2441: static bool extract_bounded_difference(const Constraint& c, -2441: dimension_type& c_num_vars, -2441: dimension_type& c_first_var, -2441: dimension_type& c_second_var, -2441: Coefficient& c_coeff); -2441: }; -2441: -2441: -2441: -2441: -2441: -2441: void compute_leader_indices(const std::vector& predecessor, -2441: std::vector& indices); -2441: -2441: } -2441: # 411 "../../src/BD_Shape_defs.hh" -2441: template -2441: class Parma_Polyhedra_Library::BD_Shape { -2441: private: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: typedef Checked_Number N; -2441: -2441: -2441: public: -2441: -2441: typedef T coefficient_type_base; -2441: -2441: -2441: -2441: -2441: -2441: typedef N coefficient_type; -2441: -2441: -2441: static dimension_type max_space_dimension(); -2441: -2441: -2441: -2441: -2441: static bool can_recycle_constraint_systems(); -2441: -2441: -2441: -2441: -2441: static bool can_recycle_congruence_systems(); -2441: # 458 "../../src/BD_Shape_defs.hh" -2441: explicit BD_Shape(dimension_type num_dimensions = 0, -2441: Degenerate_Element kind = UNIVERSE); -2441: -2441: -2441: -2441: -2441: -2441: BD_Shape(const BD_Shape& y, -2441: Complexity_Class complexity = ANY_COMPLEXITY); -2441: -2441: -2441: -2441: -2441: -2441: template -2441: explicit BD_Shape(const BD_Shape& y, -2441: Complexity_Class complexity = ANY_COMPLEXITY); -2441: # 487 "../../src/BD_Shape_defs.hh" -2441: explicit BD_Shape(const Constraint_System& cs); -2441: # 500 "../../src/BD_Shape_defs.hh" -2441: explicit BD_Shape(const Congruence_System& cgs); -2441: # 510 "../../src/BD_Shape_defs.hh" -2441: explicit BD_Shape(const Generator_System& gs); -2441: # 519 "../../src/BD_Shape_defs.hh" -2441: explicit BD_Shape(const Polyhedron& ph, -2441: Complexity_Class complexity = ANY_COMPLEXITY); -2441: # 538 "../../src/BD_Shape_defs.hh" -2441: template -2441: explicit BD_Shape(const Box& box, -2441: Complexity_Class complexity = ANY_COMPLEXITY); -2441: # 558 "../../src/BD_Shape_defs.hh" -2441: explicit BD_Shape(const Grid& grid, -2441: Complexity_Class complexity = ANY_COMPLEXITY); -2441: # 577 "../../src/BD_Shape_defs.hh" -2441: template -2441: explicit BD_Shape(const Octagonal_Shape& os, -2441: Complexity_Class complexity = ANY_COMPLEXITY); -2441: -2441: -2441: -2441: -2441: -2441: BD_Shape& operator=(const BD_Shape& y); -2441: -2441: -2441: -2441: -2441: -2441: void m_swap(BD_Shape& y); -2441: -2441: -2441: ~BD_Shape(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: dimension_type space_dimension() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: dimension_type affine_dimension() const; -2441: -2441: -2441: Constraint_System constraints() const; -2441: -2441: -2441: Constraint_System minimized_constraints() const; -2441: -2441: -2441: Congruence_System congruences() const; -2441: -2441: -2441: -2441: -2441: -2441: Congruence_System minimized_congruences() const; -2441: # 633 "../../src/BD_Shape_defs.hh" -2441: bool bounds_from_above(const Linear_Expression& expr) const; -2441: # 642 "../../src/BD_Shape_defs.hh" -2441: bool bounds_from_below(const Linear_Expression& expr) const; -2441: # 668 "../../src/BD_Shape_defs.hh" -2441: bool maximize(const Linear_Expression& expr, -2441: Coefficient& sup_n, Coefficient& sup_d, bool& maximum) const; -2441: # 699 "../../src/BD_Shape_defs.hh" -2441: bool maximize(const Linear_Expression& expr, -2441: Coefficient& sup_n, Coefficient& sup_d, bool& maximum, -2441: Generator& g) const; -2441: # 727 "../../src/BD_Shape_defs.hh" -2441: bool minimize(const Linear_Expression& expr, -2441: Coefficient& inf_n, Coefficient& inf_d, bool& minimum) const; -2441: # 758 "../../src/BD_Shape_defs.hh" -2441: bool minimize(const Linear_Expression& expr, -2441: Coefficient& inf_n, Coefficient& inf_d, bool& minimum, -2441: Generator& g) const; -2441: # 790 "../../src/BD_Shape_defs.hh" -2441: bool frequency(const Linear_Expression& expr, -2441: Coefficient& freq_n, Coefficient& freq_d, -2441: Coefficient& val_n, Coefficient& val_d) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool contains(const BD_Shape& y) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool strictly_contains(const BD_Shape& y) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool is_disjoint_from(const BD_Shape& y) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: Poly_Con_Relation relation_with(const Constraint& c) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: Poly_Con_Relation relation_with(const Congruence& cg) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: Poly_Gen_Relation relation_with(const Generator& g) const; -2441: -2441: -2441: bool is_empty() const; -2441: -2441: -2441: bool is_universe() const; -2441: -2441: -2441: bool is_discrete() const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_topologically_closed() const; -2441: -2441: -2441: bool is_bounded() const; -2441: -2441: -2441: -2441: -2441: -2441: bool contains_integer_point() const; -2441: # 868 "../../src/BD_Shape_defs.hh" -2441: bool constrains(Variable var) const; -2441: -2441: -2441: -2441: -2441: -2441: bool OK() const; -2441: # 892 "../../src/BD_Shape_defs.hh" -2441: void add_constraint(const Constraint& c); -2441: # 904 "../../src/BD_Shape_defs.hh" -2441: void add_congruence(const Congruence& cg); -2441: # 918 "../../src/BD_Shape_defs.hh" -2441: void add_constraints(const Constraint_System& cs); -2441: # 937 "../../src/BD_Shape_defs.hh" -2441: void add_recycled_constraints(Constraint_System& cs); -2441: # 951 "../../src/BD_Shape_defs.hh" -2441: void add_congruences(const Congruence_System& cgs); -2441: # 969 "../../src/BD_Shape_defs.hh" -2441: void add_recycled_congruences(Congruence_System& cgs); -2441: # 981 "../../src/BD_Shape_defs.hh" -2441: void refine_with_constraint(const Constraint& c); -2441: # 994 "../../src/BD_Shape_defs.hh" -2441: void refine_with_congruence(const Congruence& cg); -2441: # 1007 "../../src/BD_Shape_defs.hh" -2441: void refine_with_constraints(const Constraint_System& cs); -2441: # 1020 "../../src/BD_Shape_defs.hh" -2441: void refine_with_congruences(const Congruence_System& cgs); -2441: # 1043 "../../src/BD_Shape_defs.hh" -2441: template -2441: void refine_with_linear_form_inequality( -2441: const Linear_Form >& left, -2441: const Linear_Form >& right); -2441: # 1076 "../../src/BD_Shape_defs.hh" -2441: template -2441: void generalized_refine_with_linear_form_inequality( -2441: const Linear_Form >& left, -2441: const Linear_Form >& right, -2441: Relation_Symbol relsym); -2441: # 1112 "../../src/BD_Shape_defs.hh" -2441: template -2441: void export_interval_constraints(U& dest) const; -2441: # 1125 "../../src/BD_Shape_defs.hh" -2441: void unconstrain(Variable var); -2441: # 1139 "../../src/BD_Shape_defs.hh" -2441: void unconstrain(const Variables_Set& vars); -2441: -2441: -2441: -2441: -2441: -2441: -2441: void intersection_assign(const BD_Shape& y); -2441: # 1155 "../../src/BD_Shape_defs.hh" -2441: void upper_bound_assign(const BD_Shape& y); -2441: # 1165 "../../src/BD_Shape_defs.hh" -2441: bool upper_bound_assign_if_exact(const BD_Shape& y); -2441: # 1181 "../../src/BD_Shape_defs.hh" -2441: bool integer_upper_bound_assign_if_exact(const BD_Shape& y); -2441: # 1190 "../../src/BD_Shape_defs.hh" -2441: void difference_assign(const BD_Shape& y); -2441: # 1201 "../../src/BD_Shape_defs.hh" -2441: bool simplify_using_context_assign(const BD_Shape& y); -2441: # 1222 "../../src/BD_Shape_defs.hh" -2441: void affine_image(Variable var, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference denominator -2441: = Coefficient_one()); -2441: # 1244 "../../src/BD_Shape_defs.hh" -2441: template -2441: void affine_form_image(Variable var, -2441: const Linear_Form >& lf); -2441: # 1267 "../../src/BD_Shape_defs.hh" -2441: void affine_preimage(Variable var, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference denominator -2441: = Coefficient_one()); -2441: # 1296 "../../src/BD_Shape_defs.hh" -2441: void generalized_affine_image(Variable var, -2441: Relation_Symbol relsym, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference denominator -2441: = Coefficient_one()); -2441: # 1321 "../../src/BD_Shape_defs.hh" -2441: void generalized_affine_image(const Linear_Expression& lhs, -2441: Relation_Symbol relsym, -2441: const Linear_Expression& rhs); -2441: # 1349 "../../src/BD_Shape_defs.hh" -2441: void generalized_affine_preimage(Variable var, -2441: Relation_Symbol relsym, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference -2441: denominator = Coefficient_one()); -2441: # 1374 "../../src/BD_Shape_defs.hh" -2441: void generalized_affine_preimage(const Linear_Expression& lhs, -2441: Relation_Symbol relsym, -2441: const Linear_Expression& rhs); -2441: # 1404 "../../src/BD_Shape_defs.hh" -2441: void bounded_affine_image(Variable var, -2441: const Linear_Expression& lb_expr, -2441: const Linear_Expression& ub_expr, -2441: Coefficient_traits::const_reference denominator -2441: = Coefficient_one()); -2441: # 1436 "../../src/BD_Shape_defs.hh" -2441: void bounded_affine_preimage(Variable var, -2441: const Linear_Expression& lb_expr, -2441: const Linear_Expression& ub_expr, -2441: Coefficient_traits::const_reference denominator -2441: = Coefficient_one()); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void time_elapse_assign(const BD_Shape& y); -2441: # 1496 "../../src/BD_Shape_defs.hh" -2441: void wrap_assign(const Variables_Set& vars, -2441: Bounded_Integer_Type_Width w, -2441: Bounded_Integer_Type_Representation r, -2441: Bounded_Integer_Type_Overflow o, -2441: const Constraint_System* cs_p = 0, -2441: unsigned complexity_threshold = 16, -2441: bool wrap_individually = true); -2441: # 1515 "../../src/BD_Shape_defs.hh" -2441: void drop_some_non_integer_points(Complexity_Class complexity -2441: = ANY_COMPLEXITY); -2441: # 1533 "../../src/BD_Shape_defs.hh" -2441: void drop_some_non_integer_points(const Variables_Set& vars, -2441: Complexity_Class complexity -2441: = ANY_COMPLEXITY); -2441: -2441: -2441: void topological_closure_assign(); -2441: # 1555 "../../src/BD_Shape_defs.hh" -2441: void CC76_extrapolation_assign(const BD_Shape& y, unsigned* tp = 0); -2441: # 1578 "../../src/BD_Shape_defs.hh" -2441: template -2441: void CC76_extrapolation_assign(const BD_Shape& y, -2441: Iterator first, Iterator last, -2441: unsigned* tp = 0); -2441: # 1598 "../../src/BD_Shape_defs.hh" -2441: void BHMZ05_widening_assign(const BD_Shape& y, unsigned* tp = 0); -2441: # 1620 "../../src/BD_Shape_defs.hh" -2441: void limited_BHMZ05_extrapolation_assign(const BD_Shape& y, -2441: const Constraint_System& cs, -2441: unsigned* tp = 0); -2441: # 1643 "../../src/BD_Shape_defs.hh" -2441: void CC76_narrowing_assign(const BD_Shape& y); -2441: # 1665 "../../src/BD_Shape_defs.hh" -2441: void limited_CC76_extrapolation_assign(const BD_Shape& y, -2441: const Constraint_System& cs, -2441: unsigned* tp = 0); -2441: # 1684 "../../src/BD_Shape_defs.hh" -2441: void H79_widening_assign(const BD_Shape& y, unsigned* tp = 0); -2441: -2441: -2441: void widening_assign(const BD_Shape& y, unsigned* tp = 0); -2441: # 1708 "../../src/BD_Shape_defs.hh" -2441: void limited_H79_extrapolation_assign(const BD_Shape& y, -2441: const Constraint_System& cs, -2441: unsigned* tp = 0); -2441: # 1735 "../../src/BD_Shape_defs.hh" -2441: void add_space_dimensions_and_embed(dimension_type m); -2441: # 1758 "../../src/BD_Shape_defs.hh" -2441: void add_space_dimensions_and_project(dimension_type m); -2441: # 1768 "../../src/BD_Shape_defs.hh" -2441: void concatenate_assign(const BD_Shape& y); -2441: # 1779 "../../src/BD_Shape_defs.hh" -2441: void remove_space_dimensions(const Variables_Set& vars); -2441: # 1789 "../../src/BD_Shape_defs.hh" -2441: void remove_higher_space_dimensions(dimension_type new_dimension); -2441: # 1828 "../../src/BD_Shape_defs.hh" -2441: template -2441: void map_space_dimensions(const Partial_Function& pfunc); -2441: # 1852 "../../src/BD_Shape_defs.hh" -2441: void expand_space_dimension(Variable var, dimension_type m); -2441: # 1877 "../../src/BD_Shape_defs.hh" -2441: void fold_space_dimensions(const Variables_Set& vars, Variable dest); -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: void refine_fp_interval_abstract_store(Box >& -2441: store) const; -2441: -2441: -2441: -2441: -2441: void ascii_dump() const; void ascii_dump(std::ostream& s) const; void print() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool ascii_load(std::istream& s); -2441: -2441: -2441: memory_size_type total_memory_in_bytes() const; -2441: -2441: -2441: memory_size_type external_memory_in_bytes() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: int32_t hash_code() const; -2441: -2441: friend bool operator==(const BD_Shape& x, const BD_Shape& y); -2441: -2441: template -2441: friend bool Parma_Polyhedra_Library -2441: ::rectilinear_distance_assign(Checked_Number& r, -2441: const BD_Shape& x, const BD_Shape& y, -2441: const Rounding_Dir dir, -2441: Temp& tmp0, Temp& tmp1, Temp& tmp2); -2441: template -2441: friend bool Parma_Polyhedra_Library -2441: ::euclidean_distance_assign(Checked_Number& r, -2441: const BD_Shape& x, const BD_Shape& y, -2441: const Rounding_Dir dir, -2441: Temp& tmp0, Temp& tmp1, Temp& tmp2); -2441: template -2441: friend bool Parma_Polyhedra_Library -2441: ::l_infinity_distance_assign(Checked_Number& r, -2441: const BD_Shape& x, const BD_Shape& y, -2441: const Rounding_Dir dir, -2441: Temp& tmp0, Temp& tmp1, Temp& tmp2); -2441: -2441: private: -2441: template friend class Parma_Polyhedra_Library::BD_Shape; -2441: template friend class Parma_Polyhedra_Library::Box; -2441: -2441: -2441: DB_Matrix dbm; -2441: -2441: -2441: # 1 "../../src/BDS_Status_idefs.hh" 1 -2441: # 50 "../../src/BDS_Status_idefs.hh" -2441: class Status { -2441: public: -2441: -2441: Status(); -2441: -2441: -2441: -2441: bool test_zero_dim_univ() const; -2441: void reset_zero_dim_univ(); -2441: void set_zero_dim_univ(); -2441: -2441: bool test_empty() const; -2441: void reset_empty(); -2441: void set_empty(); -2441: -2441: bool test_shortest_path_closed() const; -2441: void reset_shortest_path_closed(); -2441: void set_shortest_path_closed(); -2441: -2441: bool test_shortest_path_reduced() const; -2441: void reset_shortest_path_reduced(); -2441: void set_shortest_path_reduced(); -2441: -2441: -2441: -2441: bool OK() const; -2441: -2441: void ascii_dump() const; void ascii_dump(std::ostream& s) const; void print() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool ascii_load(std::istream& s); -2441: -2441: private: -2441: -2441: typedef unsigned int flags_t; -2441: -2441: -2441: -2441: static const flags_t ZERO_DIM_UNIV = 0U; -2441: static const flags_t EMPTY = 1U << 0; -2441: static const flags_t SHORTEST_PATH_CLOSED = 1U << 1; -2441: static const flags_t SHORTEST_PATH_REDUCED = 1U << 2; -2441: -2441: -2441: -2441: flags_t flags; -2441: -2441: -2441: Status(flags_t mask); -2441: -2441: -2441: bool test_all(flags_t mask) const; -2441: -2441: -2441: bool test_any(flags_t mask) const; -2441: -2441: -2441: void set(flags_t mask); -2441: -2441: -2441: void reset(flags_t mask); -2441: }; -2441: # 1944 "../../src/BD_Shape_defs.hh" 2 -2441: -2441: -2441: -2441: Status status; -2441: -2441: -2441: Bit_Matrix redundancy_dbm; -2441: -2441: -2441: bool marked_zero_dim_univ() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool marked_empty() const; -2441: # 1970 "../../src/BD_Shape_defs.hh" -2441: bool marked_shortest_path_closed() const; -2441: # 1979 "../../src/BD_Shape_defs.hh" -2441: bool marked_shortest_path_reduced() const; -2441: -2441: -2441: void set_empty(); -2441: -2441: -2441: void set_zero_dim_univ(); -2441: -2441: -2441: void set_shortest_path_closed(); -2441: -2441: -2441: void set_shortest_path_reduced(); -2441: -2441: -2441: void reset_shortest_path_closed(); -2441: -2441: -2441: void reset_shortest_path_reduced(); -2441: -2441: -2441: void shortest_path_closure_assign() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: void shortest_path_reduction_assign() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool is_shortest_path_reduced() const; -2441: # 2027 "../../src/BD_Shape_defs.hh" -2441: void incremental_shortest_path_closure_assign(Variable var) const; -2441: # 2046 "../../src/BD_Shape_defs.hh" -2441: bool bounds(const Linear_Expression& expr, bool from_above) const; -2441: # 2079 "../../src/BD_Shape_defs.hh" -2441: bool max_min(const Linear_Expression& expr, -2441: bool maximize, -2441: Coefficient& ext_n, Coefficient& ext_d, bool& included, -2441: Generator& g) const; -2441: # 2110 "../../src/BD_Shape_defs.hh" -2441: bool max_min(const Linear_Expression& expr, -2441: bool maximize, -2441: Coefficient& ext_n, Coefficient& ext_d, bool& included) const; -2441: # 2128 "../../src/BD_Shape_defs.hh" -2441: bool BFT00_upper_bound_assign_if_exact(const BD_Shape& y); -2441: # 2146 "../../src/BD_Shape_defs.hh" -2441: template -2441: bool BHZ09_upper_bound_assign_if_exact(const BD_Shape& y); -2441: # 2159 "../../src/BD_Shape_defs.hh" -2441: void refine_no_check(const Constraint& c); -2441: # 2173 "../../src/BD_Shape_defs.hh" -2441: void refine_no_check(const Congruence& cg); -2441: -2441: -2441: void add_dbm_constraint(dimension_type i, dimension_type j, const N& k); -2441: -2441: -2441: void add_dbm_constraint(dimension_type i, dimension_type j, -2441: Coefficient_traits::const_reference numer, -2441: Coefficient_traits::const_reference denom); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void refine(Variable var, Relation_Symbol relsym, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference denominator -2441: = Coefficient_one()); -2441: -2441: -2441: void forget_all_dbm_constraints(dimension_type v); -2441: -2441: void forget_binary_dbm_constraints(dimension_type v); -2441: # 2214 "../../src/BD_Shape_defs.hh" -2441: void deduce_v_minus_u_bounds(dimension_type v, -2441: dimension_type last_v, -2441: const Linear_Expression& sc_expr, -2441: Coefficient_traits::const_reference sc_denom, -2441: const N& ub_v); -2441: -2441: -2441: -2441: -2441: -2441: template -2441: void inhomogeneous_affine_form_image(const dimension_type& var_id, -2441: const Interval& b); -2441: -2441: -2441: -2441: -2441: -2441: template -2441: void -2441: one_variable_affine_form_image(const dimension_type& var_id, -2441: const Interval& b, -2441: const Interval& w_coeff, -2441: const dimension_type& w_id, -2441: const dimension_type& space_dim); -2441: -2441: -2441: -2441: -2441: -2441: template -2441: void -2441: two_variables_affine_form_image(const dimension_type& var_id, -2441: const Linear_Form >& lf, -2441: const dimension_type& space_dim); -2441: -2441: -2441: -2441: -2441: -2441: template -2441: void -2441: left_inhomogeneous_refine(const dimension_type& right_t, -2441: const dimension_type& right_w_id, -2441: const Linear_Form >& left, -2441: const Linear_Form >& right); -2441: -2441: -2441: -2441: -2441: -2441: template -2441: void -2441: left_one_var_refine(const dimension_type& left_w_id, -2441: const dimension_type& right_t, -2441: const dimension_type& right_w_id, -2441: const Linear_Form >& left, -2441: const Linear_Form >& right); -2441: -2441: -2441: -2441: -2441: -2441: template -2441: void general_refine(const dimension_type& left_w_id, -2441: const dimension_type& right_w_id, -2441: const Linear_Form >& left, -2441: const Linear_Form >& right); -2441: -2441: template -2441: void linear_form_upper_bound(const Linear_Form >& -2441: lf, -2441: N& result) const; -2441: # 2304 "../../src/BD_Shape_defs.hh" -2441: void deduce_u_minus_v_bounds(dimension_type v, -2441: dimension_type last_v, -2441: const Linear_Expression& sc_expr, -2441: Coefficient_traits::const_reference sc_denom, -2441: const N& minus_lb_v); -2441: -2441: -2441: -2441: -2441: -2441: void get_limiting_shape(const Constraint_System& cs, -2441: BD_Shape& limiting_shape) const; -2441: -2441: -2441: -2441: -2441: -2441: void compute_predecessors(std::vector& predecessor) const; -2441: -2441: -2441: -2441: -2441: -2441: void compute_leaders(std::vector& leaders) const; -2441: -2441: void drop_some_non_integer_points_helper(N& elem); -2441: -2441: friend std::ostream& -2441: Parma_Polyhedra_Library::IO_Operators -2441: ::operator<<<>(std::ostream& s, const BD_Shape& c); -2441: -2441: -2441: -2441: void throw_dimension_incompatible(const char* method, -2441: const BD_Shape& y) const; -2441: -2441: void throw_dimension_incompatible(const char* method, -2441: dimension_type required_dim) const; -2441: -2441: void throw_dimension_incompatible(const char* method, -2441: const Constraint& c) const; -2441: -2441: void throw_dimension_incompatible(const char* method, -2441: const Congruence& cg) const; -2441: -2441: void throw_dimension_incompatible(const char* method, -2441: const Generator& g) const; -2441: -2441: void throw_dimension_incompatible(const char* method, -2441: const char* le_name, -2441: const Linear_Expression& le) const; -2441: -2441: template -2441: void -2441: throw_dimension_incompatible(const char* method, -2441: const char* lf_name, -2441: const Linear_Form >& -2441: lf) const; -2441: -2441: static void throw_expression_too_complex(const char* method, -2441: const Linear_Expression& le); -2441: -2441: static void throw_invalid_argument(const char* method, const char* reason); -2441: -2441: }; -2441: -2441: # 1 "../../src/BDS_Status_inlines.hh" 1 -2441: # 27 "../../src/BDS_Status_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: inline -2441: BD_Shape::Status::Status(flags_t mask) -2441: : flags(mask) { -2441: } -2441: -2441: template -2441: inline -2441: BD_Shape::Status::Status() -2441: : flags(ZERO_DIM_UNIV) { -2441: } -2441: -2441: template -2441: inline bool -2441: BD_Shape::Status::test_all(flags_t mask) const { -2441: return (flags & mask) == mask; -2441: } -2441: -2441: template -2441: inline bool -2441: BD_Shape::Status::test_any(flags_t mask) const { -2441: return (flags & mask) != 0; -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape::Status::set(flags_t mask) { -2441: flags |= mask; -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape::Status::reset(flags_t mask) { -2441: flags &= ~mask; -2441: } -2441: -2441: template -2441: inline bool -2441: BD_Shape::Status::test_zero_dim_univ() const { -2441: return flags == ZERO_DIM_UNIV; -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape::Status::reset_zero_dim_univ() { -2441: -2441: if (flags == ZERO_DIM_UNIV) { -2441: -2441: flags = EMPTY; -2441: } -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape::Status::set_zero_dim_univ() { -2441: -2441: flags = ZERO_DIM_UNIV; -2441: } -2441: -2441: template -2441: inline bool -2441: BD_Shape::Status::test_empty() const { -2441: return test_any(EMPTY); -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape::Status::reset_empty() { -2441: reset(EMPTY); -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape::Status::set_empty() { -2441: flags = EMPTY; -2441: } -2441: -2441: template -2441: inline bool -2441: BD_Shape::Status::test_shortest_path_closed() const { -2441: return test_any(SHORTEST_PATH_CLOSED); -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape::Status::reset_shortest_path_closed() { -2441: -2441: reset(SHORTEST_PATH_CLOSED | SHORTEST_PATH_REDUCED); -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape::Status::set_shortest_path_closed() { -2441: set(SHORTEST_PATH_CLOSED); -2441: } -2441: -2441: template -2441: inline bool -2441: BD_Shape::Status::test_shortest_path_reduced() const { -2441: return test_any(SHORTEST_PATH_REDUCED); -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape::Status::reset_shortest_path_reduced() { -2441: reset(SHORTEST_PATH_REDUCED); -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape::Status::set_shortest_path_reduced() { -2441: ((void) 0); -2441: set(SHORTEST_PATH_REDUCED); -2441: } -2441: -2441: template -2441: bool -2441: BD_Shape::Status::OK() const { -2441: if (test_zero_dim_univ()) { -2441: -2441: return true; -2441: } -2441: -2441: if (test_empty()) { -2441: Status copy = *this; -2441: copy.reset_empty(); -2441: if (copy.test_zero_dim_univ()) { -2441: return true; -2441: } -2441: else { -2441: -2441: -2441: -2441: -2441: return false; -2441: } -2441: } -2441: -2441: -2441: if (test_shortest_path_reduced()) { -2441: if (test_shortest_path_closed()) { -2441: return true; -2441: } -2441: else { -2441: -2441: -2441: -2441: -2441: -2441: return false; -2441: } -2441: } -2441: -2441: -2441: return true; -2441: } -2441: -2441: -2441: namespace Implementation { -2441: -2441: namespace BD_Shapes { -2441: -2441: -2441: extern const char* zero_dim_univ; -2441: extern const char* empty; -2441: extern const char* sp_closed; -2441: extern const char* sp_reduced; -2441: const char yes = '+'; -2441: const char no = '-'; -2441: const char separator = ' '; -2441: # 207 "../../src/BDS_Status_inlines.hh" -2441: inline bool -2441: get_field(std::istream& s, const char* keyword, bool& positive) { -2441: std::string str; -2441: if (!(s >> str) -2441: || (str[0] != yes && str[0] != no) -2441: || str.substr(1) != keyword) { -2441: return false; -2441: } -2441: positive = (str[0] == yes); -2441: return true; -2441: } -2441: -2441: } -2441: -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::Status::ascii_dump(std::ostream& s) const { -2441: using namespace Implementation::BD_Shapes; -2441: s << (test_zero_dim_univ() ? yes : no) << zero_dim_univ << separator -2441: << (test_empty() ? yes : no) << empty << separator -2441: << separator -2441: << (test_shortest_path_closed() ? yes : no) << sp_closed << separator -2441: << (test_shortest_path_reduced() ? yes : no) << sp_reduced << separator; -2441: } -2441: -2441: template void BD_Shape::Status::ascii_dump() const { ascii_dump(std::cerr); } template void BD_Shape::Status::print() const { std::cerr << "No user level output operator defined " << "for " "BD_Shape::Status" << "." << std::endl; } -2441: -2441: template -2441: bool -2441: BD_Shape::Status::ascii_load(std::istream& s) { -2441: using namespace Implementation::BD_Shapes; -2441: bool positive = Suppress_Uninitialized_Warnings_Type::synonym(); -2441: -2441: if (!get_field(s, zero_dim_univ, positive)) { -2441: return false; -2441: } -2441: if (positive) { -2441: set_zero_dim_univ(); -2441: } -2441: -2441: if (!get_field(s, empty, positive)) { -2441: return false; -2441: } -2441: if (positive) { -2441: set_empty(); -2441: } -2441: -2441: if (!get_field(s, sp_closed, positive)) { -2441: return false; -2441: } -2441: if (positive) { -2441: set_shortest_path_closed(); -2441: } -2441: else { -2441: reset_shortest_path_closed(); -2441: } -2441: -2441: if (!get_field(s, sp_reduced, positive)) { -2441: return false; -2441: } -2441: if (positive) { -2441: set_shortest_path_reduced(); -2441: } -2441: else { -2441: reset_shortest_path_reduced(); -2441: } -2441: -2441: -2441: ((void) 0); -2441: return true; -2441: } -2441: -2441: } -2441: # 2371 "../../src/BD_Shape_defs.hh" 2 -2441: # 1 "../../src/BD_Shape_inlines.hh" 1 -2441: # 29 "../../src/BD_Shape_inlines.hh" -2441: # 1 "../../src/C_Polyhedron_defs.hh" 1 -2441: # 27 "../../src/C_Polyhedron_defs.hh" -2441: # 1 "../../src/C_Polyhedron_types.hh" 1 -2441: # 16 "../../src/C_Polyhedron_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: class C_Polyhedron; -2441: -2441: } -2441: # 28 "../../src/C_Polyhedron_defs.hh" 2 -2441: # 1 "../../src/NNC_Polyhedron_types.hh" 1 -2441: # 16 "../../src/NNC_Polyhedron_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: class NNC_Polyhedron; -2441: -2441: } -2441: # 29 "../../src/C_Polyhedron_defs.hh" 2 -2441: # 59 "../../src/C_Polyhedron_defs.hh" -2441: class Parma_Polyhedra_Library::C_Polyhedron : public Polyhedron { -2441: public: -2441: # 75 "../../src/C_Polyhedron_defs.hh" -2441: explicit C_Polyhedron(dimension_type num_dimensions = 0, -2441: Degenerate_Element kind = UNIVERSE); -2441: # 88 "../../src/C_Polyhedron_defs.hh" -2441: explicit C_Polyhedron(const Constraint_System& cs); -2441: # 106 "../../src/C_Polyhedron_defs.hh" -2441: C_Polyhedron(Constraint_System& cs, Recycle_Input dummy); -2441: # 119 "../../src/C_Polyhedron_defs.hh" -2441: explicit C_Polyhedron(const Generator_System& gs); -2441: # 138 "../../src/C_Polyhedron_defs.hh" -2441: C_Polyhedron(Generator_System& gs, Recycle_Input dummy); -2441: # 147 "../../src/C_Polyhedron_defs.hh" -2441: explicit C_Polyhedron(const Congruence_System& cgs); -2441: # 163 "../../src/C_Polyhedron_defs.hh" -2441: C_Polyhedron(Congruence_System& cgs, Recycle_Input dummy); -2441: # 175 "../../src/C_Polyhedron_defs.hh" -2441: explicit C_Polyhedron(const NNC_Polyhedron& y, -2441: Complexity_Class complexity = ANY_COMPLEXITY); -2441: # 194 "../../src/C_Polyhedron_defs.hh" -2441: template -2441: explicit C_Polyhedron(const Box& box, -2441: Complexity_Class complexity = ANY_COMPLEXITY); -2441: # 210 "../../src/C_Polyhedron_defs.hh" -2441: template -2441: explicit C_Polyhedron(const BD_Shape& bd, -2441: Complexity_Class complexity = ANY_COMPLEXITY); -2441: # 226 "../../src/C_Polyhedron_defs.hh" -2441: template -2441: explicit C_Polyhedron(const Octagonal_Shape& os, -2441: Complexity_Class complexity = ANY_COMPLEXITY); -2441: # 242 "../../src/C_Polyhedron_defs.hh" -2441: explicit C_Polyhedron(const Grid& grid, -2441: Complexity_Class complexity = ANY_COMPLEXITY); -2441: -2441: -2441: -2441: -2441: -2441: C_Polyhedron(const C_Polyhedron& y, -2441: Complexity_Class complexity = ANY_COMPLEXITY); -2441: -2441: -2441: -2441: -2441: -2441: C_Polyhedron& operator=(const C_Polyhedron& y); -2441: -2441: -2441: C_Polyhedron& operator=(const NNC_Polyhedron& y); -2441: -2441: -2441: ~C_Polyhedron(); -2441: # 272 "../../src/C_Polyhedron_defs.hh" -2441: bool poly_hull_assign_if_exact(const C_Polyhedron& y); -2441: -2441: -2441: bool upper_bound_assign_if_exact(const C_Polyhedron& y); -2441: # 286 "../../src/C_Polyhedron_defs.hh" -2441: void positive_time_elapse_assign(const Polyhedron& y); -2441: }; -2441: -2441: # 1 "../../src/C_Polyhedron_inlines.hh" 1 -2441: # 30 "../../src/C_Polyhedron_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: inline -2441: C_Polyhedron::~C_Polyhedron() { -2441: } -2441: -2441: inline -2441: C_Polyhedron::C_Polyhedron(dimension_type num_dimensions, -2441: Degenerate_Element kind) -2441: : Polyhedron(NECESSARILY_CLOSED, -2441: check_space_dimension_overflow(num_dimensions, -2441: NECESSARILY_CLOSED, -2441: "C_Polyhedron(n, k)", -2441: "n exceeds the maximum " -2441: "allowed space dimension"), -2441: kind) { -2441: } -2441: -2441: inline -2441: C_Polyhedron::C_Polyhedron(const Constraint_System& cs) -2441: : Polyhedron(NECESSARILY_CLOSED, -2441: check_obj_space_dimension_overflow(cs, NECESSARILY_CLOSED, -2441: "C_Polyhedron(cs)", -2441: "the space dimension of cs " -2441: "exceeds the maximum allowed " -2441: "space dimension")) { -2441: } -2441: -2441: inline -2441: C_Polyhedron::C_Polyhedron(Constraint_System& cs, Recycle_Input) -2441: : Polyhedron(NECESSARILY_CLOSED, -2441: check_obj_space_dimension_overflow(cs, NECESSARILY_CLOSED, -2441: "C_Polyhedron(cs, recycle)", -2441: "the space dimension of cs " -2441: "exceeds the maximum allowed " -2441: "space dimension"), -2441: Recycle_Input()) { -2441: } -2441: -2441: inline -2441: C_Polyhedron::C_Polyhedron(const Generator_System& gs) -2441: : Polyhedron(NECESSARILY_CLOSED, -2441: check_obj_space_dimension_overflow(gs, NECESSARILY_CLOSED, -2441: "C_Polyhedron(gs)", -2441: "the space dimension of gs " -2441: "exceeds the maximum allowed " -2441: "space dimension")) { -2441: } -2441: -2441: inline -2441: C_Polyhedron::C_Polyhedron(Generator_System& gs, Recycle_Input) -2441: : Polyhedron(NECESSARILY_CLOSED, -2441: check_obj_space_dimension_overflow(gs, NECESSARILY_CLOSED, -2441: "C_Polyhedron(gs, recycle)", -2441: "the space dimension of gs " -2441: "exceeds the maximum allowed " -2441: "space dimension"), -2441: Recycle_Input()) { -2441: } -2441: -2441: template -2441: inline -2441: C_Polyhedron::C_Polyhedron(const Box& box, Complexity_Class) -2441: : Polyhedron(NECESSARILY_CLOSED, -2441: check_obj_space_dimension_overflow(box, NECESSARILY_CLOSED, -2441: "C_Polyhedron(box)", -2441: "the space dimension of box " -2441: "exceeds the maximum allowed " -2441: "space dimension")) { -2441: } -2441: -2441: template -2441: inline -2441: C_Polyhedron::C_Polyhedron(const BD_Shape& bd, Complexity_Class) -2441: : Polyhedron(NECESSARILY_CLOSED, -2441: check_space_dimension_overflow(bd.space_dimension(), -2441: NECESSARILY_CLOSED, -2441: "C_Polyhedron(bd)", -2441: "the space dimension of bd " -2441: "exceeds the maximum allowed " -2441: "space dimension"), -2441: UNIVERSE) { -2441: add_constraints(bd.constraints()); -2441: } -2441: -2441: template -2441: inline -2441: C_Polyhedron::C_Polyhedron(const Octagonal_Shape& os, Complexity_Class) -2441: : Polyhedron(NECESSARILY_CLOSED, -2441: check_space_dimension_overflow(os.space_dimension(), -2441: NECESSARILY_CLOSED, -2441: "C_Polyhedron(os)", -2441: "the space dimension of os " -2441: "exceeds the maximum allowed " -2441: "space dimension"), -2441: UNIVERSE) { -2441: add_constraints(os.constraints()); -2441: } -2441: -2441: inline -2441: C_Polyhedron::C_Polyhedron(const C_Polyhedron& y, Complexity_Class) -2441: : Polyhedron(y) { -2441: } -2441: -2441: inline C_Polyhedron& -2441: C_Polyhedron::operator=(const C_Polyhedron& y) { -2441: Polyhedron::operator=(y); -2441: return *this; -2441: } -2441: -2441: inline C_Polyhedron& -2441: C_Polyhedron::operator=(const NNC_Polyhedron& y) { -2441: C_Polyhedron c_y(y); -2441: m_swap(c_y); -2441: return *this; -2441: } -2441: -2441: inline bool -2441: C_Polyhedron::upper_bound_assign_if_exact(const C_Polyhedron& y) { -2441: return poly_hull_assign_if_exact(y); -2441: } -2441: -2441: } -2441: # 290 "../../src/C_Polyhedron_defs.hh" 2 -2441: # 30 "../../src/BD_Shape_inlines.hh" 2 -2441: -2441: # 1 "../../src/Octagonal_Shape_defs.hh" 1 -2441: # 36 "../../src/Octagonal_Shape_defs.hh" -2441: # 1 "../../src/OR_Matrix_defs.hh" 1 -2441: # 27 "../../src/OR_Matrix_defs.hh" -2441: # 1 "../../src/OR_Matrix_types.hh" 1 -2441: # 16 "../../src/OR_Matrix_types.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: class OR_Matrix; -2441: -2441: } -2441: # 28 "../../src/OR_Matrix_defs.hh" 2 -2441: # 50 "../../src/OR_Matrix_defs.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: -2441: -2441: template -2441: bool operator==(const OR_Matrix& x, const OR_Matrix& y); -2441: -2441: namespace IO_Operators { -2441: -2441: -2441: -2441: -2441: -2441: template -2441: std::ostream& -2441: operator<<(std::ostream& s, const OR_Matrix& m); -2441: -2441: } -2441: -2441: } -2441: # 104 "../../src/OR_Matrix_defs.hh" -2441: template -2441: class Parma_Polyhedra_Library::OR_Matrix { -2441: private: -2441: -2441: -2441: -2441: -2441: template -2441: class Pseudo_Row { -2441: public: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: Pseudo_Row(const Pseudo_Row& y); -2441: -2441: -2441: ~Pseudo_Row(); -2441: -2441: -2441: U& operator[](dimension_type k) const; -2441: -2441: -2441: Pseudo_Row(); -2441: -2441: -2441: Pseudo_Row& operator=(const Pseudo_Row& y); -2441: -2441: -2441: private: -2441: # 149 "../../src/OR_Matrix_defs.hh" -2441: explicit Pseudo_Row(U& y); -2441: -2441: -2441: -2441: -2441: U* first; -2441: # 181 "../../src/OR_Matrix_defs.hh" -2441: template friend class Pseudo_Row; -2441: template friend class any_row_iterator; -2441: -2441: -2441: friend class OR_Matrix; -2441: }; -2441: -2441: public: -2441: -2441: typedef Pseudo_Row row_reference_type; -2441: -2441: -2441: typedef Pseudo_Row const_row_reference_type; -2441: -2441: private: -2441: -2441: -2441: -2441: -2441: template -2441: class any_row_iterator { -2441: public: -2441: typedef std::random_access_iterator_tag iterator_category; -2441: typedef Pseudo_Row value_type; -2441: typedef long difference_type; -2441: typedef const Pseudo_Row* pointer; -2441: typedef const Pseudo_Row& reference; -2441: -2441: -2441: any_row_iterator(dimension_type n_rows); -2441: -2441: -2441: -2441: -2441: -2441: explicit any_row_iterator(U& base); -2441: -2441: -2441: -2441: -2441: -2441: template -2441: any_row_iterator(const any_row_iterator& y); -2441: -2441: -2441: -2441: -2441: -2441: template -2441: any_row_iterator& operator=(const any_row_iterator& y); -2441: -2441: -2441: reference operator*() const; -2441: -2441: -2441: pointer operator->() const; -2441: -2441: -2441: any_row_iterator& operator++(); -2441: -2441: -2441: any_row_iterator operator++(int); -2441: -2441: -2441: any_row_iterator& operator--(); -2441: -2441: -2441: any_row_iterator operator--(int); -2441: -2441: -2441: reference operator[](difference_type m) const; -2441: -2441: -2441: any_row_iterator& operator+=(difference_type m); -2441: -2441: -2441: template -2441: typename Enable_If<(static_cast(-1) > 0), any_row_iterator&>::type -2441: operator+=(Unsigned m); -2441: -2441: -2441: any_row_iterator& operator-=(difference_type m); -2441: -2441: -2441: difference_type operator-(const any_row_iterator& y) const; -2441: -2441: -2441: any_row_iterator operator+(difference_type m) const; -2441: -2441: -2441: template -2441: typename Enable_If<(static_cast(-1) > 0), any_row_iterator>::type -2441: operator+(Unsigned m) const; -2441: -2441: -2441: any_row_iterator operator-(difference_type m) const; -2441: -2441: -2441: bool operator==(const any_row_iterator& y) const; -2441: -2441: -2441: -2441: -2441: -2441: bool operator!=(const any_row_iterator& y) const; -2441: -2441: -2441: bool operator<(const any_row_iterator& y) const; -2441: -2441: -2441: -2441: -2441: -2441: bool operator<=(const any_row_iterator& y) const; -2441: -2441: -2441: bool operator>(const any_row_iterator& y) const; -2441: -2441: -2441: -2441: -2441: -2441: bool operator>=(const any_row_iterator& y) const; -2441: -2441: dimension_type row_size() const; -2441: -2441: dimension_type index() const; -2441: -2441: private: -2441: -2441: Pseudo_Row value; -2441: -2441: -2441: dimension_type e; -2441: -2441: -2441: dimension_type i; -2441: # 326 "../../src/OR_Matrix_defs.hh" -2441: template friend class any_row_iterator; -2441: -2441: }; -2441: -2441: public: -2441: -2441: typedef any_row_iterator row_iterator; -2441: -2441: -2441: typedef any_row_iterator const_row_iterator; -2441: -2441: -2441: typedef typename DB_Row::iterator element_iterator; -2441: -2441: -2441: typedef typename DB_Row::const_iterator const_element_iterator; -2441: -2441: public: -2441: -2441: static dimension_type max_num_rows(); -2441: # 355 "../../src/OR_Matrix_defs.hh" -2441: OR_Matrix(dimension_type num_dimensions); -2441: -2441: -2441: OR_Matrix(const OR_Matrix& y); -2441: -2441: -2441: template -2441: explicit OR_Matrix(const OR_Matrix& y); -2441: -2441: -2441: ~OR_Matrix(); -2441: -2441: -2441: OR_Matrix& operator=(const OR_Matrix& y); -2441: -2441: private: -2441: template friend class OR_Matrix; -2441: # 381 "../../src/OR_Matrix_defs.hh" -2441: DB_Row vec; -2441: -2441: -2441: dimension_type space_dim; -2441: -2441: -2441: dimension_type vec_capacity; -2441: -2441: -2441: OR_Matrix(); -2441: -2441: -2441: -2441: -2441: -2441: static dimension_type row_first_element_index(dimension_type k); -2441: -2441: public: -2441: -2441: static dimension_type row_size(dimension_type k); -2441: -2441: -2441: void m_swap(OR_Matrix& y); -2441: # 417 "../../src/OR_Matrix_defs.hh" -2441: void grow(dimension_type new_dim); -2441: # 427 "../../src/OR_Matrix_defs.hh" -2441: void shrink(dimension_type new_dim); -2441: # 441 "../../src/OR_Matrix_defs.hh" -2441: void resize_no_copy(dimension_type new_dim); -2441: -2441: -2441: dimension_type space_dimension() const; -2441: -2441: -2441: dimension_type num_rows() const; -2441: -2441: -2441: -2441: -2441: row_reference_type operator[](dimension_type k); -2441: -2441: -2441: const_row_reference_type operator[](dimension_type k) const; -2441: # 464 "../../src/OR_Matrix_defs.hh" -2441: row_iterator row_begin(); -2441: -2441: -2441: row_iterator row_end(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_row_iterator row_begin() const; -2441: -2441: -2441: const_row_iterator row_end() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: element_iterator element_begin(); -2441: -2441: -2441: element_iterator element_end(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: const_element_iterator element_begin() const; -2441: -2441: -2441: const_element_iterator element_end() const; -2441: -2441: -2441: void clear(); -2441: -2441: void ascii_dump() const; void ascii_dump(std::ostream& s) const; void print() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool ascii_load(std::istream& s); -2441: -2441: -2441: memory_size_type total_memory_in_bytes() const; -2441: -2441: -2441: memory_size_type external_memory_in_bytes() const; -2441: -2441: friend bool operator==(const OR_Matrix& x, const OR_Matrix& y); -2441: -2441: -2441: bool OK() const; -2441: }; -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: -2441: -2441: -2441: template -2441: void swap(OR_Matrix& x, OR_Matrix& y); -2441: -2441: -2441: -2441: -2441: -2441: template -2441: bool operator!=(const OR_Matrix& x, const OR_Matrix& y); -2441: # 552 "../../src/OR_Matrix_defs.hh" -2441: template -2441: bool rectilinear_distance_assign(Checked_Number& r, -2441: const OR_Matrix& x, -2441: const OR_Matrix& y, -2441: Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2); -2441: # 574 "../../src/OR_Matrix_defs.hh" -2441: template -2441: bool euclidean_distance_assign(Checked_Number& r, -2441: const OR_Matrix& x, -2441: const OR_Matrix& y, -2441: Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2); -2441: # 596 "../../src/OR_Matrix_defs.hh" -2441: template -2441: bool l_infinity_distance_assign(Checked_Number& r, -2441: const OR_Matrix& x, -2441: const OR_Matrix& y, -2441: Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2); -2441: -2441: } -2441: -2441: # 1 "../../src/OR_Matrix_inlines.hh" 1 -2441: # 35 "../../src/OR_Matrix_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: inline dimension_type -2441: OR_Matrix::row_first_element_index(const dimension_type k) { -2441: return ((k + 1)*(k + 1))/2; -2441: } -2441: -2441: template -2441: inline dimension_type -2441: OR_Matrix::row_size(const dimension_type k) { -2441: return k + 2 - k % 2; -2441: } -2441: # 60 "../../src/OR_Matrix_inlines.hh" -2441: template -2441: template -2441: inline -2441: OR_Matrix::Pseudo_Row::Pseudo_Row() -2441: : first(0) -2441: -2441: -2441: -2441: { -2441: } -2441: -2441: template -2441: template -2441: inline -2441: OR_Matrix::Pseudo_Row::Pseudo_Row(U& y -2441: -2441: -2441: -2441: ) -2441: : first(&y) -2441: -2441: -2441: -2441: { -2441: } -2441: -2441: template -2441: template -2441: template -2441: inline -2441: OR_Matrix::Pseudo_Row::Pseudo_Row(const Pseudo_Row& y) -2441: : first(y.first) -2441: -2441: -2441: -2441: { -2441: } -2441: -2441: template -2441: template -2441: inline OR_Matrix::Pseudo_Row& -2441: OR_Matrix::Pseudo_Row::operator=(const Pseudo_Row& y) { -2441: first = y.first; -2441: -2441: -2441: -2441: return *this; -2441: } -2441: -2441: template -2441: template -2441: inline -2441: OR_Matrix::Pseudo_Row::~Pseudo_Row() { -2441: } -2441: -2441: template -2441: template -2441: inline U& -2441: OR_Matrix::Pseudo_Row::operator[](const dimension_type k) const { -2441: -2441: -2441: -2441: return *(first + k); -2441: } -2441: -2441: template -2441: template -2441: inline -2441: OR_Matrix::any_row_iterator -2441: ::any_row_iterator(const dimension_type n_rows) -2441: : value(), -2441: e(n_rows) -2441: -2441: { -2441: -2441: -2441: -2441: -2441: } -2441: -2441: template -2441: template -2441: inline -2441: OR_Matrix::any_row_iterator::any_row_iterator(U& base) -2441: : value(base -2441: -2441: -2441: -2441: ), -2441: e(0), -2441: i(0) { -2441: } -2441: -2441: template -2441: template -2441: template -2441: inline -2441: OR_Matrix::any_row_iterator -2441: ::any_row_iterator(const any_row_iterator& y) -2441: : value(y.value), -2441: e(y.e), -2441: i(y.i) { -2441: } -2441: -2441: template -2441: template -2441: template -2441: inline typename OR_Matrix::template any_row_iterator& -2441: OR_Matrix::any_row_iterator::operator=(const any_row_iterator& y) { -2441: value = y.value; -2441: e = y.e; -2441: i = y.i; -2441: return *this; -2441: } -2441: -2441: template -2441: template -2441: inline typename OR_Matrix::template any_row_iterator::reference -2441: OR_Matrix::any_row_iterator::operator*() const { -2441: return value; -2441: } -2441: -2441: template -2441: template -2441: inline typename OR_Matrix::template any_row_iterator::pointer -2441: OR_Matrix::any_row_iterator::operator->() const { -2441: return &value; -2441: } -2441: -2441: template -2441: template -2441: inline typename OR_Matrix::template any_row_iterator& -2441: OR_Matrix::any_row_iterator::operator++() { -2441: ++e; -2441: dimension_type increment = e; -2441: if (e % 2 != 0) { -2441: ++increment; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: i += increment; -2441: value.first += increment; -2441: return *this; -2441: } -2441: -2441: template -2441: template -2441: inline typename OR_Matrix::template any_row_iterator -2441: OR_Matrix::any_row_iterator::operator++(int) { -2441: any_row_iterator old = *this; -2441: ++(*this); -2441: return old; -2441: } -2441: -2441: template -2441: template -2441: inline typename OR_Matrix::template any_row_iterator& -2441: OR_Matrix::any_row_iterator::operator--() { -2441: dimension_type decrement = e + 1; -2441: --e; -2441: if (e % 2 != 0) { -2441: ++decrement; -2441: -2441: -2441: -2441: } -2441: i -= decrement; -2441: value.first -= decrement; -2441: return *this; -2441: } -2441: -2441: template -2441: template -2441: inline typename OR_Matrix::template any_row_iterator -2441: OR_Matrix::any_row_iterator::operator--(int) { -2441: any_row_iterator old = *this; -2441: --(*this); -2441: return old; -2441: } -2441: -2441: template -2441: template -2441: inline typename OR_Matrix::template any_row_iterator& -2441: OR_Matrix::any_row_iterator::operator+=(const difference_type m) { -2441: difference_type e_dt = static_cast(e); -2441: difference_type i_dt = static_cast(i); -2441: difference_type increment = m + (m * m) / 2 + m * e_dt; -2441: if (e_dt % 2 == 0 && m % 2 != 0) { -2441: ++increment; -2441: } -2441: e_dt += m; -2441: i_dt += increment; -2441: e = static_cast(e_dt); -2441: i = static_cast(i_dt); -2441: value.first += increment; -2441: -2441: -2441: -2441: -2441: -2441: return *this; -2441: } -2441: -2441: template -2441: template -2441: template -2441: inline typename -2441: Enable_If<(static_cast(-1) > 0), -2441: typename OR_Matrix::template any_row_iterator& >::type -2441: OR_Matrix::any_row_iterator::operator+=(Unsigned m) { -2441: dimension_type n = m; -2441: dimension_type increment = n + (n*n)/2 + n*e; -2441: if (e % 2 == 0 && n % 2 != 0) { -2441: ++increment; -2441: } -2441: e += n; -2441: i += increment; -2441: value.first += increment; -2441: -2441: -2441: -2441: return *this; -2441: } -2441: -2441: template -2441: template -2441: inline typename OR_Matrix::template any_row_iterator& -2441: OR_Matrix::any_row_iterator::operator-=(difference_type m) { -2441: return *this += -m; -2441: } -2441: -2441: template -2441: template -2441: inline typename OR_Matrix::template any_row_iterator::difference_type -2441: OR_Matrix::any_row_iterator::operator-(const any_row_iterator& y) const { -2441: return e - y.e; -2441: } -2441: -2441: template -2441: template -2441: inline typename OR_Matrix::template any_row_iterator -2441: OR_Matrix::any_row_iterator::operator+(difference_type m) const { -2441: any_row_iterator r = *this; -2441: r += m; -2441: return r; -2441: } -2441: -2441: template -2441: template -2441: template -2441: inline typename -2441: Enable_If<(static_cast(-1) > 0), -2441: typename OR_Matrix::template any_row_iterator >::type -2441: OR_Matrix::any_row_iterator::operator+(Unsigned m) const { -2441: any_row_iterator r = *this; -2441: r += m; -2441: return r; -2441: } -2441: -2441: template -2441: template -2441: inline typename OR_Matrix::template any_row_iterator -2441: OR_Matrix::any_row_iterator::operator-(const difference_type m) const { -2441: any_row_iterator r = *this; -2441: r -= m; -2441: return r; -2441: } -2441: -2441: template -2441: template -2441: inline bool -2441: OR_Matrix::any_row_iterator -2441: ::operator==(const any_row_iterator& y) const { -2441: return e == y.e; -2441: } -2441: -2441: template -2441: template -2441: inline bool -2441: OR_Matrix::any_row_iterator -2441: ::operator!=(const any_row_iterator& y) const { -2441: return e != y.e; -2441: } -2441: -2441: template -2441: template -2441: inline bool -2441: OR_Matrix::any_row_iterator::operator<(const any_row_iterator& y) const { -2441: return e < y.e; -2441: } -2441: -2441: template -2441: template -2441: inline bool -2441: OR_Matrix::any_row_iterator -2441: ::operator<=(const any_row_iterator& y) const { -2441: return e <= y.e; -2441: } -2441: -2441: template -2441: template -2441: inline bool -2441: OR_Matrix::any_row_iterator::operator>(const any_row_iterator& y) const { -2441: return e > y.e; -2441: } -2441: -2441: template -2441: template -2441: inline bool -2441: OR_Matrix::any_row_iterator -2441: ::operator>=(const any_row_iterator& y) const { -2441: return e >= y.e; -2441: } -2441: -2441: template -2441: template -2441: inline dimension_type -2441: OR_Matrix::any_row_iterator::row_size() const { -2441: return OR_Matrix::row_size(e); -2441: } -2441: -2441: template -2441: template -2441: inline dimension_type -2441: OR_Matrix::any_row_iterator::index() const { -2441: return e; -2441: } -2441: -2441: template -2441: inline typename OR_Matrix::row_iterator -2441: OR_Matrix::row_begin() { -2441: return num_rows() == 0 ? row_iterator(0) : row_iterator(vec[0]); -2441: } -2441: -2441: template -2441: inline typename OR_Matrix::row_iterator -2441: OR_Matrix::row_end() { -2441: return row_iterator(num_rows()); -2441: } -2441: -2441: template -2441: inline typename OR_Matrix::const_row_iterator -2441: OR_Matrix::row_begin() const { -2441: return num_rows() == 0 ? const_row_iterator(0) : const_row_iterator(vec[0]); -2441: } -2441: -2441: template -2441: inline typename OR_Matrix::const_row_iterator -2441: OR_Matrix::row_end() const { -2441: return const_row_iterator(num_rows()); -2441: } -2441: -2441: template -2441: inline typename OR_Matrix::element_iterator -2441: OR_Matrix::element_begin() { -2441: return vec.begin(); -2441: } -2441: -2441: template -2441: inline typename OR_Matrix::element_iterator -2441: OR_Matrix::element_end() { -2441: return vec.end(); -2441: } -2441: -2441: template -2441: inline typename OR_Matrix::const_element_iterator -2441: OR_Matrix::element_begin() const { -2441: return vec.begin(); -2441: } -2441: -2441: template -2441: inline typename OR_Matrix::const_element_iterator -2441: OR_Matrix::element_end() const { -2441: return vec.end(); -2441: } -2441: -2441: template -2441: inline void -2441: OR_Matrix::m_swap(OR_Matrix& y) { -2441: using std::swap; -2441: swap(vec, y.vec); -2441: swap(space_dim, y.space_dim); -2441: swap(vec_capacity, y.vec_capacity); -2441: } -2441: -2441: -2441: -2441: -2441: inline dimension_type -2441: isqrt(dimension_type x) { -2441: dimension_type r = 0; -2441: const dimension_type FIRST_BIT_MASK = 0x40000000U; -2441: for (dimension_type t = FIRST_BIT_MASK; t != 0; t >>= 2) { -2441: const dimension_type s = r + t; -2441: if (s <= x) { -2441: x -= s; -2441: r = s + t; -2441: } -2441: r >>= 1; -2441: } -2441: return r; -2441: } -2441: -2441: template -2441: inline dimension_type -2441: OR_Matrix::max_num_rows() { -2441: -2441: -2441: const dimension_type k = isqrt(2*DB_Row::max_size() + 1); -2441: return (k - 1) - (k - 1) % 2; -2441: } -2441: -2441: template -2441: inline memory_size_type -2441: OR_Matrix::total_memory_in_bytes() const { -2441: return sizeof(*this) + external_memory_in_bytes(); -2441: } -2441: -2441: template -2441: inline -2441: OR_Matrix::OR_Matrix(const dimension_type num_dimensions) -2441: : vec(2*num_dimensions*(num_dimensions + 1)), -2441: space_dim(num_dimensions), -2441: vec_capacity(vec.size()) { -2441: } -2441: -2441: template -2441: inline -2441: OR_Matrix::~OR_Matrix() { -2441: } -2441: -2441: template -2441: inline typename OR_Matrix::row_reference_type -2441: OR_Matrix::operator[](dimension_type k) { -2441: return row_reference_type(vec[row_first_element_index(k)] -2441: -2441: -2441: -2441: ); -2441: } -2441: -2441: template -2441: inline typename OR_Matrix::const_row_reference_type -2441: OR_Matrix::operator[](dimension_type k) const { -2441: return const_row_reference_type(vec[row_first_element_index(k)] -2441: -2441: -2441: -2441: ); -2441: } -2441: -2441: template -2441: inline dimension_type -2441: OR_Matrix::space_dimension() const { -2441: return space_dim; -2441: } -2441: -2441: template -2441: inline dimension_type -2441: OR_Matrix::num_rows() const { -2441: return 2*space_dimension(); -2441: } -2441: -2441: template -2441: inline void -2441: OR_Matrix::clear() { -2441: OR_Matrix(0).m_swap(*this); -2441: } -2441: -2441: -2441: -2441: -2441: template -2441: inline bool -2441: operator==(const OR_Matrix& x, const OR_Matrix& y) { -2441: return x.space_dim == y.space_dim && x.vec == y.vec; -2441: } -2441: -2441: -2441: -2441: -2441: template -2441: inline bool -2441: operator!=(const OR_Matrix& x, const OR_Matrix& y) { -2441: return !(x == y); -2441: } -2441: -2441: template -2441: inline -2441: OR_Matrix::OR_Matrix(const OR_Matrix& y) -2441: : vec(y.vec), -2441: space_dim(y.space_dim), -2441: vec_capacity(compute_capacity(y.vec.size(), -2441: DB_Row::max_size())) { -2441: } -2441: -2441: template -2441: template -2441: inline -2441: OR_Matrix::OR_Matrix(const OR_Matrix& y) -2441: : vec(), -2441: space_dim(y.space_dim), -2441: vec_capacity(compute_capacity(y.vec.size(), -2441: DB_Row::max_size())) { -2441: vec.construct_upward_approximation(y.vec, vec_capacity); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline OR_Matrix& -2441: OR_Matrix::operator=(const OR_Matrix& y) { -2441: vec = y.vec; -2441: space_dim = y.space_dim; -2441: vec_capacity = compute_capacity(y.vec.size(), DB_Row::max_size()); -2441: return *this; -2441: } -2441: -2441: template -2441: inline void -2441: OR_Matrix::grow(const dimension_type new_dim) { -2441: ((void) 0); -2441: if (new_dim > space_dim) { -2441: const dimension_type new_size = 2*new_dim*(new_dim + 1); -2441: if (new_size <= vec_capacity) { -2441: -2441: vec.expand_within_capacity(new_size); -2441: space_dim = new_dim; -2441: } -2441: else { -2441: -2441: OR_Matrix new_matrix(new_dim); -2441: element_iterator j = new_matrix.element_begin(); -2441: for (element_iterator i = element_begin(), -2441: mend = element_end(); i != mend; ++i, ++j) { -2441: assign_or_swap(*j, *i); -2441: } -2441: m_swap(new_matrix); -2441: } -2441: } -2441: } -2441: -2441: template -2441: inline void -2441: OR_Matrix::shrink(const dimension_type new_dim) { -2441: ((void) 0); -2441: const dimension_type new_size = 2*new_dim*(new_dim + 1); -2441: vec.shrink(new_size); -2441: space_dim = new_dim; -2441: } -2441: -2441: template -2441: inline void -2441: OR_Matrix::resize_no_copy(const dimension_type new_dim) { -2441: if (new_dim > space_dim) { -2441: const dimension_type new_size = 2*new_dim*(new_dim + 1); -2441: if (new_size <= vec_capacity) { -2441: -2441: vec.expand_within_capacity(new_size); -2441: space_dim = new_dim; -2441: } -2441: else { -2441: -2441: OR_Matrix new_matrix(new_dim); -2441: m_swap(new_matrix); -2441: } -2441: } -2441: else if (new_dim < space_dim) { -2441: shrink(new_dim); -2441: } -2441: } -2441: -2441: -2441: -2441: -2441: template -2441: inline bool -2441: l_m_distance_assign(Checked_Number& r, -2441: const OR_Matrix& x, -2441: const OR_Matrix& y, -2441: const Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2) { -2441: if (x.num_rows() != y.num_rows()) { -2441: return false; -2441: } -2441: assign_r(tmp0, 0, ROUND_NOT_NEEDED); -2441: for (typename OR_Matrix::const_element_iterator -2441: i = x.element_begin(), j = y.element_begin(), -2441: mat_end = x.element_end(); i != mat_end; ++i, ++j) { -2441: const T& x_i = *i; -2441: const T& y_i = *j; -2441: if (is_plus_infinity(x_i)) { -2441: if (is_plus_infinity(y_i)) { -2441: continue; -2441: } -2441: else { -2441: pinf: -2441: assign_r(r, PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: return true; -2441: } -2441: } -2441: else if (is_plus_infinity(y_i)) { -2441: goto pinf; -2441: } -2441: const Temp* tmp1p; -2441: const Temp* tmp2p; -2441: if (x_i > y_i) { -2441: maybe_assign(tmp1p, tmp1, x_i, dir); -2441: maybe_assign(tmp2p, tmp2, y_i, inverse(dir)); -2441: } -2441: else { -2441: maybe_assign(tmp1p, tmp1, y_i, dir); -2441: maybe_assign(tmp2p, tmp2, x_i, inverse(dir)); -2441: } -2441: sub_assign_r(tmp1, *tmp1p, *tmp2p, dir); -2441: ((void) 0); -2441: Specialization::combine(tmp0, tmp1, dir); -2441: } -2441: -2441: Specialization::finalize(tmp0, dir); -2441: assign_r(r, tmp0, dir); -2441: return true; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: template -2441: inline bool -2441: rectilinear_distance_assign(Checked_Number& r, -2441: const OR_Matrix& x, -2441: const OR_Matrix& y, -2441: const Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2) { -2441: return -2441: l_m_distance_assign >(r, x, y, -2441: dir, -2441: tmp0, -2441: tmp1, -2441: tmp2); -2441: } -2441: -2441: -2441: -2441: -2441: template -2441: inline bool -2441: euclidean_distance_assign(Checked_Number& r, -2441: const OR_Matrix& x, -2441: const OR_Matrix& y, -2441: const Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2) { -2441: return -2441: l_m_distance_assign >(r, x, y, -2441: dir, -2441: tmp0, -2441: tmp1, -2441: tmp2); -2441: } -2441: -2441: -2441: -2441: -2441: template -2441: inline bool -2441: l_infinity_distance_assign(Checked_Number& r, -2441: const OR_Matrix& x, -2441: const OR_Matrix& y, -2441: const Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2) { -2441: return -2441: l_m_distance_assign >(r, x, y, -2441: dir, -2441: tmp0, -2441: tmp1, -2441: tmp2); -2441: } -2441: -2441: -2441: template -2441: inline void -2441: swap(OR_Matrix& x, OR_Matrix& y) { -2441: x.m_swap(y); -2441: } -2441: -2441: } -2441: # 608 "../../src/OR_Matrix_defs.hh" 2 -2441: # 1 "../../src/OR_Matrix_templates.hh" 1 -2441: # 29 "../../src/OR_Matrix_templates.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: memory_size_type -2441: OR_Matrix::external_memory_in_bytes() const{ -2441: return vec.external_memory_in_bytes(); -2441: } -2441: -2441: template -2441: bool -2441: OR_Matrix::OK() const { -2441: -2441: -2441: -2441: -2441: -2441: const dimension_type dim = space_dimension(); -2441: if (vec.size() != 2*dim*(dim + 1)) { -2441: -2441: -2441: -2441: -2441: -2441: return false; -2441: } -2441: -2441: -2441: if (!vec.OK(vec.size(), vec_capacity)) { -2441: return false; -2441: } -2441: -2441: -2441: return true; -2441: } -2441: -2441: template -2441: void -2441: OR_Matrix::ascii_dump(std::ostream& s) const { -2441: const OR_Matrix& x = *this; -2441: const char separator = ' '; -2441: dimension_type space = x.space_dimension(); -2441: s << space << separator << "\n"; -2441: for (const_row_iterator i = x.row_begin(), -2441: x_row_end = x.row_end(); i != x_row_end; ++i) { -2441: const_row_reference_type r = *i; -2441: dimension_type rs = i.row_size(); -2441: for (dimension_type j = 0; j < rs; ++j) { -2441: using namespace IO_Operators; -2441: s << r[j] << separator; -2441: } -2441: s << "\n"; -2441: } -2441: } -2441: -2441: template void OR_Matrix::ascii_dump() const { ascii_dump(std::cerr); } template void OR_Matrix::print() const { using IO_Operators::operator<<; std::cerr << *this; } -2441: -2441: template -2441: bool -2441: OR_Matrix::ascii_load(std::istream& s) { -2441: dimension_type space; -2441: if (!(s >> space)) { -2441: return false; -2441: } -2441: resize_no_copy(space); -2441: for (row_iterator i = row_begin(), -2441: this_row_end = row_end(); i != this_row_end; ++i) { -2441: row_reference_type r_i = *i; -2441: const dimension_type rs = i.row_size(); -2441: for (dimension_type j = 0; j < rs; ++j) { -2441: Result r = input(r_i[j], s, ROUND_CHECK); -2441: if (result_relation(r) != VR_EQ || is_minus_infinity(r_i[j])) { -2441: return false; -2441: } -2441: } -2441: } -2441: ((void) 0); -2441: return true; -2441: } -2441: -2441: -2441: -2441: -2441: template -2441: std::ostream& -2441: IO_Operators::operator<<(std::ostream& s, const OR_Matrix& m) { -2441: for (typename OR_Matrix::const_row_iterator m_iter = m.row_begin(), -2441: m_end = m.row_end(); m_iter != m_end; ++m_iter) { -2441: typename OR_Matrix::const_row_reference_type r_m = *m_iter; -2441: const dimension_type mr_size = m_iter.row_size(); -2441: for (dimension_type j = 0; j < mr_size; ++j) { -2441: s << r_m[j] << " "; -2441: } -2441: s << "\n"; -2441: } -2441: return s; -2441: } -2441: -2441: } -2441: # 609 "../../src/OR_Matrix_defs.hh" 2 -2441: # 37 "../../src/Octagonal_Shape_defs.hh" 2 -2441: # 52 "../../src/Octagonal_Shape_defs.hh" -2441: # 1 "/usr/include/c++/8/climits" 1 3 -2441: # 39 "/usr/include/c++/8/climits" 3 -2441: -2441: # 40 "/usr/include/c++/8/climits" 3 -2441: -2441: -2441: # 1 "/usr/lib/gcc/i686-linux-gnu/8/include-fixed/limits.h" 1 3 4 -2441: # 43 "/usr/include/c++/8/climits" 2 3 -2441: # 53 "../../src/Octagonal_Shape_defs.hh" 2 -2441: -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: namespace IO_Operators { -2441: # 67 "../../src/Octagonal_Shape_defs.hh" -2441: template -2441: std::ostream& -2441: operator<<(std::ostream& s, const Octagonal_Shape& oct); -2441: -2441: } -2441: -2441: -2441: -2441: template -2441: void swap(Octagonal_Shape& x, Octagonal_Shape& y); -2441: # 85 "../../src/Octagonal_Shape_defs.hh" -2441: template -2441: bool operator==(const Octagonal_Shape& x, const Octagonal_Shape& y); -2441: # 95 "../../src/Octagonal_Shape_defs.hh" -2441: template -2441: bool operator!=(const Octagonal_Shape& x, const Octagonal_Shape& y); -2441: # 109 "../../src/Octagonal_Shape_defs.hh" -2441: template -2441: bool rectilinear_distance_assign(Checked_Number& r, -2441: const Octagonal_Shape& x, -2441: const Octagonal_Shape& y, -2441: Rounding_Dir dir); -2441: # 126 "../../src/Octagonal_Shape_defs.hh" -2441: template -2441: bool rectilinear_distance_assign(Checked_Number& r, -2441: const Octagonal_Shape& x, -2441: const Octagonal_Shape& y, -2441: Rounding_Dir dir); -2441: # 143 "../../src/Octagonal_Shape_defs.hh" -2441: template -2441: bool rectilinear_distance_assign(Checked_Number& r, -2441: const Octagonal_Shape& x, -2441: const Octagonal_Shape& y, -2441: Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2); -2441: # 163 "../../src/Octagonal_Shape_defs.hh" -2441: template -2441: bool euclidean_distance_assign(Checked_Number& r, -2441: const Octagonal_Shape& x, -2441: const Octagonal_Shape& y, -2441: Rounding_Dir dir); -2441: # 180 "../../src/Octagonal_Shape_defs.hh" -2441: template -2441: bool euclidean_distance_assign(Checked_Number& r, -2441: const Octagonal_Shape& x, -2441: const Octagonal_Shape& y, -2441: Rounding_Dir dir); -2441: # 197 "../../src/Octagonal_Shape_defs.hh" -2441: template -2441: bool euclidean_distance_assign(Checked_Number& r, -2441: const Octagonal_Shape& x, -2441: const Octagonal_Shape& y, -2441: Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2); -2441: # 217 "../../src/Octagonal_Shape_defs.hh" -2441: template -2441: bool l_infinity_distance_assign(Checked_Number& r, -2441: const Octagonal_Shape& x, -2441: const Octagonal_Shape& y, -2441: Rounding_Dir dir); -2441: # 234 "../../src/Octagonal_Shape_defs.hh" -2441: template -2441: bool l_infinity_distance_assign(Checked_Number& r, -2441: const Octagonal_Shape& x, -2441: const Octagonal_Shape& y, -2441: Rounding_Dir dir); -2441: # 251 "../../src/Octagonal_Shape_defs.hh" -2441: template -2441: bool l_infinity_distance_assign(Checked_Number& r, -2441: const Octagonal_Shape& x, -2441: const Octagonal_Shape& y, -2441: Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2); -2441: -2441: -2441: -2441: class Octagonal_Shape_Helper { -2441: public: -2441: # 304 "../../src/Octagonal_Shape_defs.hh" -2441: static bool extract_octagonal_difference(const Constraint& c, -2441: dimension_type c_space_dim, -2441: dimension_type& c_num_vars, -2441: dimension_type& c_first_var, -2441: dimension_type& c_second_var, -2441: Coefficient& c_coeff, -2441: Coefficient& c_term); -2441: }; -2441: -2441: } -2441: # 419 "../../src/Octagonal_Shape_defs.hh" -2441: template -2441: class Parma_Polyhedra_Library::Octagonal_Shape { -2441: private: -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: typedef Checked_Number N; -2441: -2441: -2441: public: -2441: -2441: -2441: typedef T coefficient_type_base; -2441: -2441: -2441: -2441: -2441: -2441: typedef N coefficient_type; -2441: -2441: -2441: static dimension_type max_space_dimension(); -2441: -2441: -2441: -2441: -2441: static bool can_recycle_constraint_systems(); -2441: -2441: -2441: -2441: -2441: static bool can_recycle_congruence_systems(); -2441: # 467 "../../src/Octagonal_Shape_defs.hh" -2441: explicit Octagonal_Shape(dimension_type num_dimensions = 0, -2441: Degenerate_Element kind = UNIVERSE); -2441: -2441: -2441: -2441: -2441: -2441: Octagonal_Shape(const Octagonal_Shape& y, -2441: Complexity_Class complexity = ANY_COMPLEXITY); -2441: -2441: -2441: -2441: -2441: -2441: template -2441: explicit Octagonal_Shape(const Octagonal_Shape& y, -2441: Complexity_Class complexity = ANY_COMPLEXITY); -2441: # 496 "../../src/Octagonal_Shape_defs.hh" -2441: explicit Octagonal_Shape(const Constraint_System& cs); -2441: # 509 "../../src/Octagonal_Shape_defs.hh" -2441: explicit Octagonal_Shape(const Congruence_System& cgs); -2441: # 519 "../../src/Octagonal_Shape_defs.hh" -2441: explicit Octagonal_Shape(const Generator_System& gs); -2441: # 528 "../../src/Octagonal_Shape_defs.hh" -2441: explicit Octagonal_Shape(const Polyhedron& ph, -2441: Complexity_Class complexity = ANY_COMPLEXITY); -2441: # 547 "../../src/Octagonal_Shape_defs.hh" -2441: template -2441: explicit Octagonal_Shape(const Box& box, -2441: Complexity_Class complexity = ANY_COMPLEXITY); -2441: # 567 "../../src/Octagonal_Shape_defs.hh" -2441: explicit Octagonal_Shape(const Grid& grid, -2441: Complexity_Class complexity = ANY_COMPLEXITY); -2441: # 586 "../../src/Octagonal_Shape_defs.hh" -2441: template -2441: explicit Octagonal_Shape(const BD_Shape& bd, -2441: Complexity_Class complexity = ANY_COMPLEXITY); -2441: -2441: -2441: -2441: -2441: -2441: Octagonal_Shape& operator=(const Octagonal_Shape& y); -2441: -2441: -2441: -2441: -2441: -2441: void m_swap(Octagonal_Shape& y); -2441: -2441: -2441: ~Octagonal_Shape(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: dimension_type space_dimension() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: dimension_type affine_dimension() const; -2441: -2441: -2441: Constraint_System constraints() const; -2441: -2441: -2441: Constraint_System minimized_constraints() const; -2441: -2441: -2441: Congruence_System congruences() const; -2441: -2441: -2441: -2441: -2441: -2441: Congruence_System minimized_congruences() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool contains(const Octagonal_Shape& y) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool strictly_contains(const Octagonal_Shape& y) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool is_disjoint_from(const Octagonal_Shape& y) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: Poly_Con_Relation relation_with(const Constraint& c) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: Poly_Con_Relation relation_with(const Congruence& cg) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: Poly_Gen_Relation relation_with(const Generator& g) const; -2441: -2441: -2441: bool is_empty() const; -2441: -2441: -2441: bool is_universe() const; -2441: -2441: -2441: bool is_discrete() const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_bounded() const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_topologically_closed() const; -2441: -2441: -2441: -2441: -2441: -2441: bool contains_integer_point() const; -2441: # 715 "../../src/Octagonal_Shape_defs.hh" -2441: bool constrains(Variable var) const; -2441: # 724 "../../src/Octagonal_Shape_defs.hh" -2441: bool bounds_from_above(const Linear_Expression& expr) const; -2441: # 733 "../../src/Octagonal_Shape_defs.hh" -2441: bool bounds_from_below(const Linear_Expression& expr) const; -2441: # 759 "../../src/Octagonal_Shape_defs.hh" -2441: bool maximize(const Linear_Expression& expr, -2441: Coefficient& sup_n, Coefficient& sup_d, bool& maximum) const; -2441: # 790 "../../src/Octagonal_Shape_defs.hh" -2441: bool maximize(const Linear_Expression& expr, -2441: Coefficient& sup_n, Coefficient& sup_d, bool& maximum, -2441: Generator& g) const; -2441: # 818 "../../src/Octagonal_Shape_defs.hh" -2441: bool minimize(const Linear_Expression& expr, -2441: Coefficient& inf_n, Coefficient& inf_d, bool& minimum) const; -2441: # 849 "../../src/Octagonal_Shape_defs.hh" -2441: bool minimize(const Linear_Expression& expr, -2441: Coefficient& inf_n, Coefficient& inf_d, bool& minimum, -2441: Generator& g) const; -2441: # 881 "../../src/Octagonal_Shape_defs.hh" -2441: bool frequency(const Linear_Expression& expr, -2441: Coefficient& freq_n, Coefficient& freq_d, -2441: Coefficient& val_n, Coefficient& val_d) const; -2441: -2441: -2441: bool OK() const; -2441: # 904 "../../src/Octagonal_Shape_defs.hh" -2441: void add_constraint(const Constraint& c); -2441: # 918 "../../src/Octagonal_Shape_defs.hh" -2441: void add_constraints(const Constraint_System& cs); -2441: # 937 "../../src/Octagonal_Shape_defs.hh" -2441: void add_recycled_constraints(Constraint_System& cs); -2441: # 949 "../../src/Octagonal_Shape_defs.hh" -2441: void add_congruence(const Congruence& cg); -2441: # 962 "../../src/Octagonal_Shape_defs.hh" -2441: void add_congruences(const Congruence_System& cgs); -2441: # 980 "../../src/Octagonal_Shape_defs.hh" -2441: void add_recycled_congruences(Congruence_System& cgs); -2441: # 992 "../../src/Octagonal_Shape_defs.hh" -2441: void refine_with_constraint(const Constraint& c); -2441: # 1005 "../../src/Octagonal_Shape_defs.hh" -2441: void refine_with_congruence(const Congruence& cg); -2441: # 1018 "../../src/Octagonal_Shape_defs.hh" -2441: void refine_with_constraints(const Constraint_System& cs); -2441: # 1031 "../../src/Octagonal_Shape_defs.hh" -2441: void refine_with_congruences(const Congruence_System& cgs); -2441: # 1054 "../../src/Octagonal_Shape_defs.hh" -2441: template -2441: void refine_with_linear_form_inequality( -2441: const Linear_Form< Interval >& left, -2441: const Linear_Form< Interval >& right); -2441: # 1087 "../../src/Octagonal_Shape_defs.hh" -2441: template -2441: void generalized_refine_with_linear_form_inequality( -2441: const Linear_Form< Interval >& left, -2441: const Linear_Form< Interval >& right, -2441: Relation_Symbol relsym); -2441: # 1103 "../../src/Octagonal_Shape_defs.hh" -2441: void unconstrain(Variable var); -2441: # 1117 "../../src/Octagonal_Shape_defs.hh" -2441: void unconstrain(const Variables_Set& vars); -2441: -2441: -2441: -2441: -2441: -2441: -2441: void intersection_assign(const Octagonal_Shape& y); -2441: # 1133 "../../src/Octagonal_Shape_defs.hh" -2441: void upper_bound_assign(const Octagonal_Shape& y); -2441: # 1145 "../../src/Octagonal_Shape_defs.hh" -2441: bool upper_bound_assign_if_exact(const Octagonal_Shape& y); -2441: # 1168 "../../src/Octagonal_Shape_defs.hh" -2441: bool integer_upper_bound_assign_if_exact(const Octagonal_Shape& y); -2441: # 1177 "../../src/Octagonal_Shape_defs.hh" -2441: void difference_assign(const Octagonal_Shape& y); -2441: # 1188 "../../src/Octagonal_Shape_defs.hh" -2441: bool simplify_using_context_assign(const Octagonal_Shape& y); -2441: # 1208 "../../src/Octagonal_Shape_defs.hh" -2441: void affine_image(Variable var, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference denominator -2441: = Coefficient_one()); -2441: # 1234 "../../src/Octagonal_Shape_defs.hh" -2441: template -2441: void affine_form_image(Variable var, -2441: const Linear_Form< Interval >& lf); -2441: # 1256 "../../src/Octagonal_Shape_defs.hh" -2441: void affine_preimage(Variable var, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference denominator -2441: = Coefficient_one()); -2441: # 1285 "../../src/Octagonal_Shape_defs.hh" -2441: void generalized_affine_image(Variable var, -2441: Relation_Symbol relsym, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference denominator -2441: = Coefficient_one()); -2441: # 1310 "../../src/Octagonal_Shape_defs.hh" -2441: void generalized_affine_image(const Linear_Expression& lhs, -2441: Relation_Symbol relsym, -2441: const Linear_Expression& rhs); -2441: # 1340 "../../src/Octagonal_Shape_defs.hh" -2441: void bounded_affine_image(Variable var, -2441: const Linear_Expression& lb_expr, -2441: const Linear_Expression& ub_expr, -2441: Coefficient_traits::const_reference denominator -2441: = Coefficient_one()); -2441: # 1370 "../../src/Octagonal_Shape_defs.hh" -2441: void generalized_affine_preimage(Variable var, -2441: Relation_Symbol relsym, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference -2441: denominator = Coefficient_one()); -2441: # 1395 "../../src/Octagonal_Shape_defs.hh" -2441: void generalized_affine_preimage(const Linear_Expression& lhs, -2441: Relation_Symbol relsym, -2441: const Linear_Expression& rhs); -2441: # 1425 "../../src/Octagonal_Shape_defs.hh" -2441: void bounded_affine_preimage(Variable var, -2441: const Linear_Expression& lb_expr, -2441: const Linear_Expression& ub_expr, -2441: Coefficient_traits::const_reference denominator -2441: = Coefficient_one()); -2441: # 1438 "../../src/Octagonal_Shape_defs.hh" -2441: void time_elapse_assign(const Octagonal_Shape& y); -2441: # 1486 "../../src/Octagonal_Shape_defs.hh" -2441: void wrap_assign(const Variables_Set& vars, -2441: Bounded_Integer_Type_Width w, -2441: Bounded_Integer_Type_Representation r, -2441: Bounded_Integer_Type_Overflow o, -2441: const Constraint_System* cs_p = 0, -2441: unsigned complexity_threshold = 16, -2441: bool wrap_individually = true); -2441: # 1505 "../../src/Octagonal_Shape_defs.hh" -2441: void drop_some_non_integer_points(Complexity_Class complexity -2441: = ANY_COMPLEXITY); -2441: # 1523 "../../src/Octagonal_Shape_defs.hh" -2441: void drop_some_non_integer_points(const Variables_Set& vars, -2441: Complexity_Class complexity -2441: = ANY_COMPLEXITY); -2441: -2441: -2441: void topological_closure_assign(); -2441: # 1545 "../../src/Octagonal_Shape_defs.hh" -2441: void CC76_extrapolation_assign(const Octagonal_Shape& y, unsigned* tp = 0); -2441: # 1568 "../../src/Octagonal_Shape_defs.hh" -2441: template -2441: void CC76_extrapolation_assign(const Octagonal_Shape& y, -2441: Iterator first, Iterator last, -2441: unsigned* tp = 0); -2441: # 1588 "../../src/Octagonal_Shape_defs.hh" -2441: void BHMZ05_widening_assign(const Octagonal_Shape& y, unsigned* tp = 0); -2441: -2441: -2441: void widening_assign(const Octagonal_Shape& y, unsigned* tp = 0); -2441: # 1613 "../../src/Octagonal_Shape_defs.hh" -2441: void limited_BHMZ05_extrapolation_assign(const Octagonal_Shape& y, -2441: const Constraint_System& cs, -2441: unsigned* tp = 0); -2441: # 1627 "../../src/Octagonal_Shape_defs.hh" -2441: void CC76_narrowing_assign(const Octagonal_Shape& y); -2441: # 1649 "../../src/Octagonal_Shape_defs.hh" -2441: void limited_CC76_extrapolation_assign(const Octagonal_Shape& y, -2441: const Constraint_System& cs, -2441: unsigned* tp = 0); -2441: # 1676 "../../src/Octagonal_Shape_defs.hh" -2441: void add_space_dimensions_and_embed(dimension_type m); -2441: # 1699 "../../src/Octagonal_Shape_defs.hh" -2441: void add_space_dimensions_and_project(dimension_type m); -2441: # 1709 "../../src/Octagonal_Shape_defs.hh" -2441: void concatenate_assign(const Octagonal_Shape& y); -2441: # 1720 "../../src/Octagonal_Shape_defs.hh" -2441: void remove_space_dimensions(const Variables_Set& vars); -2441: # 1730 "../../src/Octagonal_Shape_defs.hh" -2441: void remove_higher_space_dimensions(dimension_type new_dimension); -2441: # 1768 "../../src/Octagonal_Shape_defs.hh" -2441: template -2441: void map_space_dimensions(const Partial_Function& pfunc); -2441: # 1792 "../../src/Octagonal_Shape_defs.hh" -2441: void expand_space_dimension(Variable var, dimension_type m); -2441: # 1817 "../../src/Octagonal_Shape_defs.hh" -2441: void fold_space_dimensions(const Variables_Set& vars, Variable dest); -2441: # 1849 "../../src/Octagonal_Shape_defs.hh" -2441: template -2441: void export_interval_constraints(U& dest) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: template -2441: void refine_fp_interval_abstract_store( -2441: Box< Interval >& store) const; -2441: -2441: -2441: -2441: void ascii_dump() const; void ascii_dump(std::ostream& s) const; void print() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool ascii_load(std::istream& s); -2441: -2441: -2441: memory_size_type total_memory_in_bytes() const; -2441: -2441: -2441: memory_size_type external_memory_in_bytes() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: int32_t hash_code() const; -2441: -2441: friend bool -2441: operator==(const Octagonal_Shape& x, const Octagonal_Shape& y); -2441: -2441: template -2441: friend bool Parma_Polyhedra_Library -2441: ::rectilinear_distance_assign(Checked_Number& r, -2441: const Octagonal_Shape& x, -2441: const Octagonal_Shape& y, -2441: const Rounding_Dir dir, -2441: Temp& tmp0, Temp& tmp1, Temp& tmp2); -2441: template -2441: friend bool Parma_Polyhedra_Library -2441: ::euclidean_distance_assign(Checked_Number& r, -2441: const Octagonal_Shape& x, -2441: const Octagonal_Shape& y, -2441: const Rounding_Dir dir, -2441: Temp& tmp0, Temp& tmp1, Temp& tmp2); -2441: template -2441: friend bool Parma_Polyhedra_Library -2441: ::l_infinity_distance_assign(Checked_Number& r, -2441: const Octagonal_Shape& x, -2441: const Octagonal_Shape& y, -2441: const Rounding_Dir dir, -2441: Temp& tmp0, Temp& tmp1, Temp& tmp2); -2441: -2441: private: -2441: template friend class Parma_Polyhedra_Library::Octagonal_Shape; -2441: template friend class Parma_Polyhedra_Library::Box; -2441: -2441: -2441: OR_Matrix matrix; -2441: -2441: -2441: dimension_type space_dim; -2441: # 1928 "../../src/Octagonal_Shape_defs.hh" -2441: # 1 "../../src/Og_Status_idefs.hh" 1 -2441: # 45 "../../src/Og_Status_idefs.hh" -2441: class Status { -2441: public: -2441: -2441: Status(); -2441: -2441: -2441: -2441: bool test_zero_dim_univ() const; -2441: void reset_zero_dim_univ(); -2441: void set_zero_dim_univ(); -2441: -2441: bool test_empty() const; -2441: void reset_empty(); -2441: void set_empty(); -2441: -2441: bool test_strongly_closed() const; -2441: void reset_strongly_closed(); -2441: void set_strongly_closed(); -2441: -2441: -2441: -2441: bool OK() const; -2441: -2441: -2441: -2441: -2441: -2441: void ascii_dump(std::ostream& s) const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool ascii_load(std::istream& s); -2441: -2441: private: -2441: -2441: typedef unsigned int flags_t; -2441: -2441: -2441: -2441: static const flags_t ZERO_DIM_UNIV = 0U; -2441: static const flags_t EMPTY = 1U << 0; -2441: static const flags_t STRONGLY_CLOSED = 1U << 1; -2441: -2441: -2441: -2441: flags_t flags; -2441: -2441: -2441: Status(flags_t mask); -2441: -2441: -2441: bool test_all(flags_t mask) const; -2441: -2441: -2441: bool test_any(flags_t mask) const; -2441: -2441: -2441: void set(flags_t mask); -2441: -2441: -2441: void reset(flags_t mask); -2441: -2441: }; -2441: # 1929 "../../src/Octagonal_Shape_defs.hh" 2 -2441: -2441: -2441: -2441: Status status; -2441: -2441: -2441: bool marked_zero_dim_univ() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: bool marked_empty() const; -2441: # 1951 "../../src/Octagonal_Shape_defs.hh" -2441: bool marked_strongly_closed() const; -2441: -2441: -2441: void set_zero_dim_univ(); -2441: -2441: -2441: void set_empty(); -2441: -2441: -2441: void set_strongly_closed(); -2441: -2441: -2441: void reset_strongly_closed(); -2441: -2441: N& matrix_at(dimension_type i, dimension_type j); -2441: const N& matrix_at(dimension_type i, dimension_type j) const; -2441: # 1978 "../../src/Octagonal_Shape_defs.hh" -2441: template -2441: void linear_form_upper_bound( -2441: const Linear_Form< Interval >& lf, -2441: N& result) const; -2441: -2441: -2441: static void interval_coefficient_upper_bound(const N& var_ub, -2441: const N& minus_var_ub, -2441: const N& int_ub, const N& int_lb, -2441: N& result); -2441: # 1999 "../../src/Octagonal_Shape_defs.hh" -2441: void refine_no_check(const Constraint& c); -2441: # 2013 "../../src/Octagonal_Shape_defs.hh" -2441: void refine_no_check(const Congruence& cg); -2441: -2441: -2441: void add_octagonal_constraint(dimension_type i, -2441: dimension_type j, -2441: const N& k); -2441: -2441: -2441: void add_octagonal_constraint(dimension_type i, -2441: dimension_type j, -2441: Coefficient_traits::const_reference numer, -2441: Coefficient_traits::const_reference denom); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: void refine(Variable var, -2441: Relation_Symbol relsym, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference denominator -2441: = Coefficient_one()); -2441: -2441: -2441: void forget_all_octagonal_constraints(dimension_type v_id); -2441: -2441: -2441: void forget_binary_octagonal_constraints(dimension_type v_id); -2441: # 2071 "../../src/Octagonal_Shape_defs.hh" -2441: void deduce_v_pm_u_bounds(dimension_type v_id, -2441: dimension_type last_id, -2441: const Linear_Expression& sc_expr, -2441: Coefficient_traits::const_reference sc_denom, -2441: const N& ub_v); -2441: # 2105 "../../src/Octagonal_Shape_defs.hh" -2441: void deduce_minus_v_pm_u_bounds(dimension_type v_id, -2441: dimension_type last_id, -2441: const Linear_Expression& sc_expr, -2441: Coefficient_traits::const_reference sc_denom, -2441: const N& minus_lb_v); -2441: -2441: -2441: -2441: -2441: -2441: void get_limiting_octagon(const Constraint_System& cs, -2441: Octagonal_Shape& limiting_octagon) const; -2441: -2441: -2441: -2441: -2441: void compute_successors(std::vector& successor) const; -2441: -2441: -2441: -2441: -2441: -2441: void compute_leaders(std::vector& successor, -2441: std::vector& no_sing_leaders, -2441: bool& exist_sing_class, -2441: dimension_type& sing_leader) const; -2441: -2441: -2441: -2441: -2441: -2441: void compute_leaders(std::vector& leaders) const; -2441: # 2146 "../../src/Octagonal_Shape_defs.hh" -2441: void non_redundant_matrix_entries(std::vector& non_redundant) const; -2441: -2441: -2441: void strong_reduction_assign() const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_strongly_reduced() const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_strong_coherent() const; -2441: -2441: bool tight_coherence_would_make_empty() const; -2441: # 2172 "../../src/Octagonal_Shape_defs.hh" -2441: void strong_closure_assign() const; -2441: -2441: -2441: void strong_coherence_assign(); -2441: # 2185 "../../src/Octagonal_Shape_defs.hh" -2441: void tight_closure_assign(); -2441: # 2198 "../../src/Octagonal_Shape_defs.hh" -2441: void incremental_strong_closure_assign(Variable var) const; -2441: # 2217 "../../src/Octagonal_Shape_defs.hh" -2441: bool bounds(const Linear_Expression& expr, bool from_above) const; -2441: # 2245 "../../src/Octagonal_Shape_defs.hh" -2441: bool max_min(const Linear_Expression& expr, -2441: bool maximize, -2441: Coefficient& ext_n, Coefficient& ext_d, bool& included) const; -2441: # 2280 "../../src/Octagonal_Shape_defs.hh" -2441: bool max_min(const Linear_Expression& expr, -2441: bool maximize, -2441: Coefficient& ext_n, Coefficient& ext_d, bool& included, -2441: Generator& g) const; -2441: -2441: void drop_some_non_integer_points_helper(N& elem); -2441: -2441: friend std::ostream& -2441: Parma_Polyhedra_Library::IO_Operators -2441: ::operator<<<>(std::ostream& s, const Octagonal_Shape& c); -2441: -2441: -2441: -2441: void throw_dimension_incompatible(const char* method, -2441: const Octagonal_Shape& y) const; -2441: -2441: void throw_dimension_incompatible(const char* method, -2441: dimension_type required_dim) const; -2441: -2441: void throw_dimension_incompatible(const char* method, -2441: const Constraint& c) const; -2441: -2441: void throw_dimension_incompatible(const char* method, -2441: const Congruence& cg) const; -2441: -2441: void throw_dimension_incompatible(const char* method, -2441: const Generator& g) const; -2441: -2441: void throw_dimension_incompatible(const char* method, -2441: const char* le_name, -2441: const Linear_Expression& le) const; -2441: -2441: template -2441: void throw_dimension_incompatible(const char* method, -2441: const char* lf_name, -2441: const Linear_Form& lf) const; -2441: -2441: static void throw_constraint_incompatible(const char* method); -2441: -2441: static void throw_expression_too_complex(const char* method, -2441: const Linear_Expression& le); -2441: -2441: static void throw_invalid_argument(const char* method, const char* reason); -2441: -2441: }; -2441: -2441: # 1 "../../src/Og_Status_inlines.hh" 1 -2441: # 27 "../../src/Og_Status_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: inline -2441: Octagonal_Shape::Status::Status(flags_t mask) -2441: : flags(mask) { -2441: } -2441: -2441: template -2441: inline -2441: Octagonal_Shape::Status::Status() -2441: : flags(ZERO_DIM_UNIV) { -2441: } -2441: -2441: template -2441: inline bool -2441: Octagonal_Shape::Status::test_all(flags_t mask) const { -2441: return (flags & mask) == mask; -2441: } -2441: -2441: template -2441: inline bool -2441: Octagonal_Shape::Status::test_any(flags_t mask) const { -2441: return (flags & mask) != 0; -2441: } -2441: -2441: template -2441: inline void -2441: Octagonal_Shape::Status::set(flags_t mask) { -2441: flags |= mask; -2441: } -2441: -2441: template -2441: inline void -2441: Octagonal_Shape::Status::reset(flags_t mask) { -2441: flags &= ~mask; -2441: } -2441: -2441: template -2441: inline bool -2441: Octagonal_Shape::Status::test_zero_dim_univ() const { -2441: return flags == ZERO_DIM_UNIV; -2441: } -2441: -2441: template -2441: inline void -2441: Octagonal_Shape::Status::reset_zero_dim_univ() { -2441: -2441: if (flags == ZERO_DIM_UNIV) { -2441: -2441: flags = EMPTY; -2441: } -2441: } -2441: -2441: template -2441: inline void -2441: Octagonal_Shape::Status::set_zero_dim_univ() { -2441: -2441: flags = ZERO_DIM_UNIV; -2441: } -2441: -2441: template -2441: inline bool -2441: Octagonal_Shape::Status::test_empty() const { -2441: return test_any(EMPTY); -2441: } -2441: -2441: template -2441: inline void -2441: Octagonal_Shape::Status::reset_empty() { -2441: reset(EMPTY); -2441: } -2441: -2441: template -2441: inline void -2441: Octagonal_Shape::Status::set_empty() { -2441: flags = EMPTY; -2441: } -2441: -2441: template -2441: inline bool -2441: Octagonal_Shape::Status::test_strongly_closed() const { -2441: return test_any(STRONGLY_CLOSED); -2441: } -2441: -2441: template -2441: inline void -2441: Octagonal_Shape::Status::reset_strongly_closed() { -2441: reset(STRONGLY_CLOSED); -2441: } -2441: -2441: template -2441: inline void -2441: Octagonal_Shape::Status::set_strongly_closed() { -2441: set(STRONGLY_CLOSED); -2441: } -2441: -2441: template -2441: inline bool -2441: Octagonal_Shape::Status::OK() const { -2441: if (test_zero_dim_univ()) { -2441: -2441: return true; -2441: } -2441: -2441: if (test_empty()) { -2441: Status copy = *this; -2441: copy.reset_empty(); -2441: if (copy.test_zero_dim_univ()) { -2441: return true; -2441: } -2441: else { -2441: -2441: -2441: -2441: -2441: return false; -2441: } -2441: } -2441: -2441: -2441: return true; -2441: } -2441: -2441: -2441: namespace Implementation { -2441: -2441: namespace Octagonal_Shapes { -2441: -2441: extern const char* zero_dim_univ; -2441: extern const char* empty; -2441: extern const char* strong_closed; -2441: const char yes = '+'; -2441: const char no = '-'; -2441: const char separator = ' '; -2441: # 170 "../../src/Og_Status_inlines.hh" -2441: inline bool -2441: get_field(std::istream& s, const char* keyword, bool& positive) { -2441: std::string str; -2441: if (!(s >> str) -2441: || (str[0] != yes && str[0] != no) -2441: || str.substr(1) != keyword) { -2441: return false; -2441: } -2441: positive = (str[0] == yes); -2441: return true; -2441: } -2441: -2441: } -2441: -2441: } -2441: -2441: template -2441: inline void -2441: Octagonal_Shape::Status::ascii_dump(std::ostream& s) const { -2441: using namespace Implementation::Octagonal_Shapes; -2441: s << (test_zero_dim_univ() ? yes : no) << zero_dim_univ -2441: << separator -2441: << (test_empty() ? yes : no) << empty -2441: << separator -2441: << separator -2441: << (test_strongly_closed() ? yes : no) << strong_closed -2441: << separator; -2441: } -2441: -2441: template -2441: inline bool -2441: Octagonal_Shape::Status::ascii_load(std::istream& s) { -2441: using namespace Implementation::Octagonal_Shapes; -2441: bool positive = Suppress_Uninitialized_Warnings_Type::synonym(); -2441: -2441: if (!get_field(s, zero_dim_univ, positive)) { -2441: return false; -2441: } -2441: if (positive) { -2441: set_zero_dim_univ(); -2441: } -2441: -2441: if (!get_field(s, empty, positive)) { -2441: return false; -2441: } -2441: -2441: if (positive) { -2441: set_empty(); -2441: } -2441: -2441: if (!get_field(s, strong_closed, positive)) { -2441: return false; -2441: } -2441: if (positive) { -2441: set_strongly_closed(); -2441: } -2441: else { -2441: reset_strongly_closed(); -2441: } -2441: -2441: ((void) 0); -2441: return true; -2441: } -2441: -2441: } -2441: # 2327 "../../src/Octagonal_Shape_defs.hh" 2 -2441: # 1 "../../src/Octagonal_Shape_inlines.hh" 1 -2441: # 31 "../../src/Octagonal_Shape_inlines.hh" -2441: # 1 "../../src/BD_Shape_defs.hh" 1 -2441: # 32 "../../src/Octagonal_Shape_inlines.hh" 2 -2441: -2441: -2441: # 1 "../../src/wrap_assign.hh" 1 -2441: # 33 "../../src/wrap_assign.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: namespace Implementation { -2441: -2441: struct Wrap_Dim_Translations { -2441: Variable var; -2441: Coefficient first_quadrant; -2441: Coefficient last_quadrant; -2441: Wrap_Dim_Translations(Variable v, -2441: Coefficient_traits::const_reference f, -2441: Coefficient_traits::const_reference l) -2441: : var(v), first_quadrant(f), last_quadrant(l) { -2441: } -2441: }; -2441: -2441: typedef std::vector Wrap_Translations; -2441: -2441: template -2441: void -2441: wrap_assign_ind(PSET& pointset, -2441: Variables_Set& vars, -2441: Wrap_Translations::const_iterator first, -2441: Wrap_Translations::const_iterator end, -2441: Bounded_Integer_Type_Width w, -2441: Coefficient_traits::const_reference min_value, -2441: Coefficient_traits::const_reference max_value, -2441: const Constraint_System& cs, -2441: Coefficient& tmp1, -2441: Coefficient& tmp2) { -2441: const dimension_type space_dim = pointset.space_dimension(); -2441: for (Wrap_Translations::const_iterator i = first; i != end; ++i) { -2441: const Wrap_Dim_Translations& wrap_dim_translations = *i; -2441: const Variable x(wrap_dim_translations.var); -2441: const Coefficient& first_quadrant = wrap_dim_translations.first_quadrant; -2441: const Coefficient& last_quadrant = wrap_dim_translations.last_quadrant; -2441: Coefficient& quadrant = tmp1; -2441: Coefficient& shift = tmp2; -2441: PSET hull(space_dim, EMPTY); -2441: for (quadrant = first_quadrant; quadrant <= last_quadrant; ++quadrant) { -2441: PSET p(pointset); -2441: if (quadrant != 0) { -2441: mul_2exp_assign(shift, quadrant, w); -2441: p.affine_image(x, x - shift, 1); -2441: } -2441: -2441: vars.erase(x.id()); -2441: -2441: -2441: -2441: if (vars.empty()) { -2441: p.refine_with_constraints(cs); -2441: } -2441: else { -2441: for (Constraint_System::const_iterator j = cs.begin(), -2441: cs_end = cs.end(); j != cs_end; ++j) { -2441: if (j->expression().all_zeroes(vars)) { -2441: -2441: p.refine_with_constraint(*j); -2441: } -2441: } -2441: } -2441: p.refine_with_constraint(min_value <= x); -2441: p.refine_with_constraint(x <= max_value); -2441: hull.upper_bound_assign(p); -2441: } -2441: pointset.m_swap(hull); -2441: } -2441: } -2441: -2441: template -2441: void -2441: wrap_assign_col(PSET& dest, -2441: const PSET& src, -2441: const Variables_Set& vars, -2441: Wrap_Translations::const_iterator first, -2441: Wrap_Translations::const_iterator end, -2441: Bounded_Integer_Type_Width w, -2441: Coefficient_traits::const_reference min_value, -2441: Coefficient_traits::const_reference max_value, -2441: const Constraint_System* cs_p, -2441: Coefficient& tmp) { -2441: if (first == end) { -2441: PSET p(src); -2441: if (cs_p != 0) { -2441: p.refine_with_constraints(*cs_p); -2441: } -2441: for (Variables_Set::const_iterator i = vars.begin(), -2441: vars_end = vars.end(); i != vars_end; ++i) { -2441: const Variable x(*i); -2441: p.refine_with_constraint(min_value <= x); -2441: p.refine_with_constraint(x <= max_value); -2441: } -2441: dest.upper_bound_assign(p); -2441: } -2441: else { -2441: const Wrap_Dim_Translations& wrap_dim_translations = *first; -2441: const Variable x(wrap_dim_translations.var); -2441: const Coefficient& first_quadrant = wrap_dim_translations.first_quadrant; -2441: const Coefficient& last_quadrant = wrap_dim_translations.last_quadrant; -2441: Coefficient& shift = tmp; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_quadrant; Parma_Polyhedra_Library::Coefficient& quadrant = holder_quadrant.item(); -2441: for (quadrant = first_quadrant; quadrant <= last_quadrant; ++quadrant) { -2441: if (quadrant != 0) { -2441: mul_2exp_assign(shift, quadrant, w); -2441: PSET p(src); -2441: p.affine_image(x, x - shift, 1); -2441: wrap_assign_col(dest, p, vars, first+1, end, w, min_value, max_value, -2441: cs_p, tmp); -2441: } -2441: else { -2441: wrap_assign_col(dest, src, vars, first+1, end, w, min_value, max_value, -2441: cs_p, tmp); -2441: } -2441: } -2441: } -2441: } -2441: -2441: template -2441: void -2441: wrap_assign(PSET& pointset, -2441: const Variables_Set& vars, -2441: const Bounded_Integer_Type_Width w, -2441: const Bounded_Integer_Type_Representation r, -2441: const Bounded_Integer_Type_Overflow o, -2441: const Constraint_System* cs_p, -2441: const unsigned complexity_threshold, -2441: const bool wrap_individually, -2441: const char* class_name) { -2441: -2441: -2441: -2441: -2441: if (cs_p != 0) { -2441: const dimension_type vars_space_dim = vars.space_dimension(); -2441: if (cs_p->space_dimension() > vars_space_dim) { -2441: std::ostringstream s; -2441: s << "PPL::" << class_name << "::wrap_assign(..., cs_p, ...):" -2441: << std::endl -2441: << "vars.space_dimension() == " << vars_space_dim -2441: << ", cs_p->space_dimension() == " << cs_p->space_dimension() << "."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: # 191 "../../src/wrap_assign.hh" -2441: } -2441: -2441: -2441: if (vars.empty()) { -2441: if (cs_p != 0) { -2441: pointset.refine_with_constraints(*cs_p); -2441: } -2441: return; -2441: } -2441: -2441: -2441: const dimension_type space_dim = pointset.space_dimension(); -2441: if (vars.space_dimension() > space_dim) { -2441: std::ostringstream s; -2441: s << "PPL::" << class_name << "::wrap_assign(vs, ...):" << std::endl -2441: << "this->space_dimension() == " << space_dim -2441: << ", required space dimension == " << vars.space_dimension() << "."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: -2441: if (pointset.is_empty()) { -2441: return; -2441: } -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_min_value; Parma_Polyhedra_Library::Coefficient& min_value = holder_min_value.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_max_value; Parma_Polyhedra_Library::Coefficient& max_value = holder_max_value.item(); -2441: if (r == UNSIGNED) { -2441: min_value = 0; -2441: mul_2exp_assign(max_value, Coefficient_one(), w); -2441: --max_value; -2441: } -2441: else { -2441: ((void) 0); -2441: mul_2exp_assign(max_value, Coefficient_one(), w-1); -2441: neg_assign(min_value, max_value); -2441: --max_value; -2441: } -2441: -2441: -2441: -2441: -2441: Wrap_Translations translations; -2441: -2441: -2441: -2441: Variables_Set dimensions_to_be_translated; -2441: -2441: -2441: -2441: -2441: -2441: -2441: unsigned collective_wrap_complexity = 1; -2441: -2441: -2441: -2441: bool collective_wrap_too_complex = false; -2441: -2441: if (!wrap_individually) { -2441: translations.reserve(space_dim); -2441: } -2441: -2441: -2441: -2441: Constraint_System full_range_bounds; -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_l_n; Parma_Polyhedra_Library::Coefficient& l_n = holder_l_n.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_l_d; Parma_Polyhedra_Library::Coefficient& l_d = holder_l_d.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_u_n; Parma_Polyhedra_Library::Coefficient& u_n = holder_u_n.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_u_d; Parma_Polyhedra_Library::Coefficient& u_d = holder_u_d.item(); -2441: -2441: for (Variables_Set::const_iterator i = vars.begin(), -2441: vars_end = vars.end(); i != vars_end; ++i) { -2441: -2441: const Variable x(*i); -2441: -2441: bool extremum; -2441: -2441: if (!pointset.minimize(x, l_n, l_d, extremum)) { -2441: set_full_range: -2441: pointset.unconstrain(x); -2441: full_range_bounds.insert(min_value <= x); -2441: full_range_bounds.insert(x <= max_value); -2441: continue; -2441: } -2441: -2441: if (!pointset.maximize(x, u_n, u_d, extremum)) { -2441: goto set_full_range; -2441: } -2441: -2441: div_assign_r(l_n, l_n, l_d, ROUND_DOWN); -2441: div_assign_r(u_n, u_n, u_d, ROUND_DOWN); -2441: l_n -= min_value; -2441: u_n -= min_value; -2441: div_2exp_assign_r(l_n, l_n, w, ROUND_DOWN); -2441: div_2exp_assign_r(u_n, u_n, w, ROUND_DOWN); -2441: Coefficient& first_quadrant = l_n; -2441: const Coefficient& last_quadrant = u_n; -2441: -2441: -2441: if (first_quadrant == 0 && last_quadrant == 0) { -2441: continue; -2441: } -2441: -2441: -2441: if (o == OVERFLOW_IMPOSSIBLE) { -2441: if (first_quadrant < 0) { -2441: full_range_bounds.insert(min_value <= x); -2441: } -2441: if (last_quadrant > 0) { -2441: full_range_bounds.insert(x <= max_value); -2441: } -2441: continue; -2441: } -2441: -2441: if (o == OVERFLOW_UNDEFINED || collective_wrap_too_complex) { -2441: goto set_full_range; -2441: } -2441: -2441: Coefficient& quadrants = u_d; -2441: quadrants = last_quadrant - first_quadrant + 1; -2441: -2441: unsigned extension = Suppress_Uninitialized_Warnings_Type::synonym(); -2441: Result res = assign_r(extension, quadrants, ROUND_IGNORE); -2441: if (result_overflow(res) != 0 || extension > complexity_threshold) { -2441: goto set_full_range; -2441: } -2441: -2441: if (!wrap_individually && !collective_wrap_too_complex) { -2441: res = mul_assign_r(collective_wrap_complexity, -2441: collective_wrap_complexity, extension, ROUND_IGNORE); -2441: if (result_overflow(res) != 0 -2441: || collective_wrap_complexity > complexity_threshold) { -2441: collective_wrap_too_complex = true; -2441: } -2441: if (collective_wrap_too_complex) { -2441: -2441: for (Wrap_Translations::const_iterator j = translations.begin(), -2441: translations_end = translations.end(); -2441: j != translations_end; -2441: ++j) { -2441: const Variable y(j->var); -2441: pointset.unconstrain(y); -2441: full_range_bounds.insert(min_value <= y); -2441: full_range_bounds.insert(y <= max_value); -2441: } -2441: } -2441: } -2441: -2441: if (wrap_individually && cs_p == 0) { -2441: Coefficient& quadrant = first_quadrant; -2441: -2441: -2441: Coefficient& shift = l_d; -2441: PSET hull(space_dim, EMPTY); -2441: for ( ; quadrant <= last_quadrant; ++quadrant) { -2441: PSET p(pointset); -2441: if (quadrant != 0) { -2441: mul_2exp_assign(shift, quadrant, w); -2441: p.affine_image(x, x - shift, 1); -2441: } -2441: p.refine_with_constraint(min_value <= x); -2441: p.refine_with_constraint(x <= max_value); -2441: hull.upper_bound_assign(p); -2441: } -2441: pointset.m_swap(hull); -2441: } -2441: else if (wrap_individually || !collective_wrap_too_complex) { -2441: ((void) 0); -2441: dimensions_to_be_translated.insert(x); -2441: translations -2441: .push_back(Wrap_Dim_Translations(x, first_quadrant, last_quadrant)); -2441: } -2441: } -2441: -2441: if (!translations.empty()) { -2441: if (wrap_individually) { -2441: ((void) 0); -2441: wrap_assign_ind(pointset, dimensions_to_be_translated, -2441: translations.begin(), translations.end(), -2441: w, min_value, max_value, *cs_p, l_n, l_d); -2441: } -2441: else { -2441: PSET hull(space_dim, EMPTY); -2441: wrap_assign_col(hull, pointset, dimensions_to_be_translated, -2441: translations.begin(), translations.end(), -2441: w, min_value, max_value, cs_p, l_n); -2441: pointset.m_swap(hull); -2441: } -2441: } -2441: -2441: if (cs_p != 0) { -2441: pointset.refine_with_constraints(*cs_p); -2441: } -2441: pointset.refine_with_constraints(full_range_bounds); -2441: } -2441: -2441: } -2441: -2441: } -2441: # 35 "../../src/Octagonal_Shape_inlines.hh" 2 -2441: -2441: -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: namespace Implementation { -2441: -2441: namespace Octagonal_Shapes { -2441: -2441: -2441: -2441: -2441: -2441: inline dimension_type -2441: coherent_index(const dimension_type i) { -2441: return (i % 2 != 0) ? (i-1) : (i+1); -2441: } -2441: -2441: } -2441: -2441: } -2441: -2441: template -2441: inline dimension_type -2441: Octagonal_Shape::max_space_dimension() { -2441: return OR_Matrix::max_num_rows()/2; -2441: } -2441: -2441: template -2441: inline bool -2441: Octagonal_Shape::marked_zero_dim_univ() const { -2441: return status.test_zero_dim_univ(); -2441: } -2441: -2441: template -2441: inline bool -2441: Octagonal_Shape::marked_strongly_closed() const { -2441: return status.test_strongly_closed(); -2441: } -2441: -2441: template -2441: inline bool -2441: Octagonal_Shape::marked_empty() const { -2441: return status.test_empty(); -2441: } -2441: -2441: template -2441: inline void -2441: Octagonal_Shape::set_zero_dim_univ() { -2441: status.set_zero_dim_univ(); -2441: } -2441: -2441: template -2441: inline void -2441: Octagonal_Shape::set_empty() { -2441: status.set_empty(); -2441: } -2441: -2441: template -2441: inline void -2441: Octagonal_Shape::set_strongly_closed() { -2441: status.set_strongly_closed(); -2441: } -2441: -2441: template -2441: inline void -2441: Octagonal_Shape::reset_strongly_closed() { -2441: status.reset_strongly_closed(); -2441: } -2441: -2441: template -2441: inline -2441: Octagonal_Shape::Octagonal_Shape(const dimension_type num_dimensions, -2441: const Degenerate_Element kind) -2441: : matrix(num_dimensions), space_dim(num_dimensions), status() { -2441: if (kind == EMPTY) { -2441: set_empty(); -2441: } -2441: else if (num_dimensions > 0) { -2441: -2441: set_strongly_closed(); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline -2441: Octagonal_Shape::Octagonal_Shape(const Octagonal_Shape& y, Complexity_Class) -2441: : matrix(y.matrix), space_dim(y.space_dim), status(y.status) { -2441: } -2441: -2441: template -2441: template -2441: inline -2441: Octagonal_Shape::Octagonal_Shape(const Octagonal_Shape& y, -2441: Complexity_Class) -2441: -2441: -2441: : matrix((y.strong_closure_assign(), y.matrix)), -2441: space_dim(y.space_dim), -2441: status() { -2441: -2441: if (y.marked_empty()) { -2441: set_empty(); -2441: } -2441: else if (y.marked_zero_dim_univ()) { -2441: set_zero_dim_univ(); -2441: } -2441: } -2441: -2441: template -2441: inline -2441: Octagonal_Shape::Octagonal_Shape(const Constraint_System& cs) -2441: : matrix(cs.space_dimension()), -2441: space_dim(cs.space_dimension()), -2441: status() { -2441: if (cs.space_dimension() > 0) { -2441: -2441: set_strongly_closed(); -2441: } -2441: add_constraints(cs); -2441: } -2441: -2441: template -2441: inline -2441: Octagonal_Shape::Octagonal_Shape(const Congruence_System& cgs) -2441: : matrix(cgs.space_dimension()), -2441: space_dim(cgs.space_dimension()), -2441: status() { -2441: if (cgs.space_dimension() > 0) { -2441: -2441: set_strongly_closed(); -2441: } -2441: add_congruences(cgs); -2441: } -2441: -2441: template -2441: template -2441: inline -2441: Octagonal_Shape::Octagonal_Shape(const Box& box, -2441: Complexity_Class) -2441: : matrix(box.space_dimension()), -2441: space_dim(box.space_dimension()), -2441: status() { -2441: -2441: if (box.is_empty()) { -2441: set_empty(); -2441: } -2441: else if (box.space_dimension() > 0) { -2441: -2441: set_strongly_closed(); -2441: refine_with_constraints(box.constraints()); -2441: } -2441: } -2441: -2441: template -2441: inline -2441: Octagonal_Shape::Octagonal_Shape(const Grid& grid, -2441: Complexity_Class) -2441: : matrix(grid.space_dimension()), -2441: space_dim(grid.space_dimension()), -2441: status() { -2441: if (grid.space_dimension() > 0) { -2441: -2441: set_strongly_closed(); -2441: } -2441: -2441: refine_with_congruences(grid.minimized_congruences()); -2441: } -2441: -2441: template -2441: template -2441: inline -2441: Octagonal_Shape::Octagonal_Shape(const BD_Shape& bd, -2441: Complexity_Class) -2441: : matrix(bd.space_dimension()), -2441: space_dim(bd.space_dimension()), -2441: status() { -2441: -2441: if (bd.is_empty()) { -2441: set_empty(); -2441: } -2441: else if (bd.space_dimension() > 0) { -2441: -2441: set_strongly_closed(); -2441: refine_with_constraints(bd.constraints()); -2441: } -2441: } -2441: -2441: template -2441: inline Congruence_System -2441: Octagonal_Shape::congruences() const { -2441: return minimized_congruences(); -2441: } -2441: -2441: template -2441: inline Octagonal_Shape& -2441: Octagonal_Shape::operator=(const Octagonal_Shape& y) { -2441: matrix = y.matrix; -2441: space_dim = y.space_dim; -2441: status = y.status; -2441: return *this; -2441: } -2441: -2441: template -2441: inline -2441: Octagonal_Shape::~Octagonal_Shape() { -2441: } -2441: -2441: template -2441: inline void -2441: Octagonal_Shape::m_swap(Octagonal_Shape& y) { -2441: using std::swap; -2441: swap(matrix, y.matrix); -2441: swap(space_dim, y.space_dim); -2441: swap(status, y.status); -2441: } -2441: -2441: template -2441: inline dimension_type -2441: Octagonal_Shape::space_dimension() const { -2441: return space_dim; -2441: } -2441: -2441: template -2441: inline bool -2441: Octagonal_Shape::is_discrete() const { -2441: return affine_dimension() == 0; -2441: } -2441: -2441: template -2441: inline bool -2441: Octagonal_Shape::is_empty() const { -2441: strong_closure_assign(); -2441: return marked_empty(); -2441: } -2441: -2441: template -2441: inline bool -2441: Octagonal_Shape::bounds_from_above(const Linear_Expression& expr) const { -2441: return bounds(expr, true); -2441: } -2441: -2441: template -2441: inline bool -2441: Octagonal_Shape::bounds_from_below(const Linear_Expression& expr) const { -2441: return bounds(expr, false); -2441: } -2441: -2441: template -2441: inline bool -2441: Octagonal_Shape::maximize(const Linear_Expression& expr, -2441: Coefficient& sup_n, Coefficient& sup_d, -2441: bool& maximum) const { -2441: return max_min(expr, true, sup_n, sup_d, maximum); -2441: } -2441: -2441: template -2441: inline bool -2441: Octagonal_Shape::maximize(const Linear_Expression& expr, -2441: Coefficient& sup_n, Coefficient& sup_d, -2441: bool& maximum, -2441: Generator& g) const { -2441: return max_min(expr, true, sup_n, sup_d, maximum, g); -2441: } -2441: -2441: template -2441: inline bool -2441: Octagonal_Shape::minimize(const Linear_Expression& expr, -2441: Coefficient& inf_n, Coefficient& inf_d, -2441: bool& minimum) const { -2441: return max_min(expr, false, inf_n, inf_d, minimum); -2441: } -2441: -2441: template -2441: inline bool -2441: Octagonal_Shape::minimize(const Linear_Expression& expr, -2441: Coefficient& inf_n, Coefficient& inf_d, -2441: bool& minimum, -2441: Generator& g) const { -2441: return max_min(expr, false, inf_n, inf_d, minimum, g); -2441: } -2441: -2441: template -2441: inline bool -2441: Octagonal_Shape::is_topologically_closed() const { -2441: return true; -2441: } -2441: -2441: template -2441: inline void -2441: Octagonal_Shape::topological_closure_assign() { -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: operator==(const Octagonal_Shape& x, const Octagonal_Shape& y) { -2441: if (x.space_dim != y.space_dim) { -2441: -2441: return false; -2441: } -2441: -2441: if (x.space_dim == 0) { -2441: if (x.marked_empty()) { -2441: return y.marked_empty(); -2441: } -2441: else { -2441: return !y.marked_empty(); -2441: } -2441: } -2441: -2441: x.strong_closure_assign(); -2441: y.strong_closure_assign(); -2441: -2441: -2441: if (x.marked_empty()) { -2441: return y.marked_empty(); -2441: } -2441: if (y.marked_empty()) { -2441: return false; -2441: } -2441: -2441: return x.matrix == y.matrix; -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: operator!=(const Octagonal_Shape& x, const Octagonal_Shape& y) { -2441: return !(x == y); -2441: } -2441: -2441: template -2441: inline const typename Octagonal_Shape::coefficient_type& -2441: Octagonal_Shape::matrix_at(const dimension_type i, -2441: const dimension_type j) const { -2441: ((void) 0); -2441: using namespace Implementation::Octagonal_Shapes; -2441: return (j < matrix.row_size(i)) -2441: ? matrix[i][j] -2441: : matrix[coherent_index(j)][coherent_index(i)]; -2441: } -2441: -2441: template -2441: inline typename Octagonal_Shape::coefficient_type& -2441: Octagonal_Shape::matrix_at(const dimension_type i, -2441: const dimension_type j) { -2441: ((void) 0); -2441: using namespace Implementation::Octagonal_Shapes; -2441: return (j < matrix.row_size(i)) -2441: ? matrix[i][j] -2441: : matrix[coherent_index(j)][coherent_index(i)]; -2441: } -2441: -2441: template -2441: inline Constraint_System -2441: Octagonal_Shape::minimized_constraints() const { -2441: strong_reduction_assign(); -2441: return constraints(); -2441: } -2441: -2441: template -2441: inline void -2441: Octagonal_Shape::add_octagonal_constraint(const dimension_type i, -2441: const dimension_type j, -2441: const N& k) { -2441: -2441: -2441: -2441: -2441: -2441: -2441: N& r_i_j = matrix[i][j]; -2441: if (r_i_j > k) { -2441: r_i_j = k; -2441: if (marked_strongly_closed()) { -2441: reset_strongly_closed(); -2441: } -2441: } -2441: } -2441: -2441: template -2441: inline void -2441: Octagonal_Shape -2441: ::add_octagonal_constraint(const dimension_type i, -2441: const dimension_type j, -2441: Coefficient_traits::const_reference numer, -2441: Coefficient_traits::const_reference denom) { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_k; N& k = holder_k.item(); -2441: div_round_up(k, numer, denom); -2441: add_octagonal_constraint(i, j, k); -2441: } -2441: -2441: template -2441: inline void -2441: Octagonal_Shape::add_constraints(const Constraint_System& cs) { -2441: for (Constraint_System::const_iterator i = cs.begin(), -2441: i_end = cs.end(); i != i_end; ++i) { -2441: add_constraint(*i); -2441: } -2441: } -2441: -2441: template -2441: inline void -2441: Octagonal_Shape::add_recycled_constraints(Constraint_System& cs) { -2441: add_constraints(cs); -2441: } -2441: -2441: template -2441: inline void -2441: Octagonal_Shape::add_recycled_congruences(Congruence_System& cgs) { -2441: add_congruences(cgs); -2441: } -2441: -2441: template -2441: inline void -2441: Octagonal_Shape::add_congruences(const Congruence_System& cgs) { -2441: for (Congruence_System::const_iterator i = cgs.begin(), -2441: cgs_end = cgs.end(); i != cgs_end; ++i) { -2441: add_congruence(*i); -2441: } -2441: } -2441: -2441: template -2441: inline void -2441: Octagonal_Shape::refine_with_constraint(const Constraint& c) { -2441: -2441: if (c.space_dimension() > space_dimension()) { -2441: throw_dimension_incompatible("refine_with_constraint(c)", c); -2441: } -2441: -2441: if (!marked_empty()) { -2441: refine_no_check(c); -2441: } -2441: } -2441: -2441: template -2441: inline void -2441: Octagonal_Shape::refine_with_constraints(const Constraint_System& cs) { -2441: -2441: if (cs.space_dimension() > space_dimension()) { -2441: throw_invalid_argument("refine_with_constraints(cs)", -2441: "cs and *this are space-dimension incompatible"); -2441: } -2441: -2441: for (Constraint_System::const_iterator i = cs.begin(), -2441: cs_end = cs.end(); !marked_empty() && i != cs_end; ++i) { -2441: refine_no_check(*i); -2441: } -2441: } -2441: -2441: template -2441: inline void -2441: Octagonal_Shape::refine_with_congruence(const Congruence& cg) { -2441: const dimension_type cg_space_dim = cg.space_dimension(); -2441: -2441: if (cg_space_dim > space_dimension()) { -2441: throw_dimension_incompatible("refine_with_congruence(cg)", cg); -2441: } -2441: if (!marked_empty()) { -2441: refine_no_check(cg); -2441: } -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::refine_with_congruences(const Congruence_System& cgs) { -2441: -2441: if (cgs.space_dimension() > space_dimension()) { -2441: throw_invalid_argument("refine_with_congruences(cgs)", -2441: "cgs and *this are space-dimension incompatible"); -2441: } -2441: -2441: for (Congruence_System::const_iterator i = cgs.begin(), -2441: cgs_end = cgs.end(); !marked_empty() && i != cgs_end; ++i) { -2441: refine_no_check(*i); -2441: } -2441: } -2441: -2441: template -2441: inline void -2441: Octagonal_Shape::refine_no_check(const Congruence& cg) { -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: if (cg.is_proper_congruence()) { -2441: if (cg.is_inconsistent()) { -2441: set_empty(); -2441: } -2441: -2441: return; -2441: } -2441: -2441: ((void) 0); -2441: Constraint c(cg); -2441: refine_no_check(c); -2441: } -2441: -2441: template -2441: inline bool -2441: Octagonal_Shape::can_recycle_constraint_systems() { -2441: return false; -2441: } -2441: -2441: template -2441: inline bool -2441: Octagonal_Shape::can_recycle_congruence_systems() { -2441: return false; -2441: } -2441: -2441: template -2441: inline void -2441: Octagonal_Shape -2441: ::remove_higher_space_dimensions(const dimension_type new_dimension) { -2441: -2441: if (new_dimension > space_dim) { -2441: throw_dimension_incompatible("remove_higher_space_dimension(nd)", -2441: new_dimension); -2441: } -2441: -2441: -2441: -2441: if (new_dimension == space_dim) { -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: strong_closure_assign(); -2441: matrix.shrink(new_dimension); -2441: -2441: -2441: if (new_dimension == 0 && !marked_empty()) { -2441: set_zero_dim_univ(); -2441: } -2441: space_dim = new_dimension; -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::wrap_assign(const Variables_Set& vars, -2441: Bounded_Integer_Type_Width w, -2441: Bounded_Integer_Type_Representation r, -2441: Bounded_Integer_Type_Overflow o, -2441: const Constraint_System* cs_p, -2441: unsigned complexity_threshold, -2441: bool wrap_individually) { -2441: Implementation::wrap_assign(*this, -2441: vars, w, r, o, cs_p, -2441: complexity_threshold, wrap_individually, -2441: "Octagonal_Shape"); -2441: } -2441: -2441: template -2441: inline void -2441: Octagonal_Shape::widening_assign(const Octagonal_Shape& y, unsigned* tp) { -2441: BHMZ05_widening_assign(y, tp); -2441: } -2441: -2441: template -2441: inline void -2441: Octagonal_Shape::CC76_extrapolation_assign(const Octagonal_Shape& y, -2441: unsigned* tp) { -2441: static N stop_points[] = { -2441: N(-2, ROUND_UP), -2441: N(-1, ROUND_UP), -2441: N( 0, ROUND_UP), -2441: N( 1, ROUND_UP), -2441: N( 2, ROUND_UP) -2441: }; -2441: CC76_extrapolation_assign(y, -2441: stop_points, -2441: stop_points -2441: + sizeof(stop_points)/sizeof(stop_points[0]), -2441: tp); -2441: } -2441: -2441: template -2441: inline void -2441: Octagonal_Shape::time_elapse_assign(const Octagonal_Shape& y) { -2441: -2441: if (space_dimension() != y.space_dimension()) { -2441: throw_dimension_incompatible("time_elapse_assign(y)", y); -2441: } -2441: -2441: -2441: C_Polyhedron ph_x(constraints()); -2441: C_Polyhedron ph_y(y.constraints()); -2441: ph_x.time_elapse_assign(ph_y); -2441: Octagonal_Shape x(ph_x); -2441: m_swap(x); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline bool -2441: Octagonal_Shape::strictly_contains(const Octagonal_Shape& y) const { -2441: const Octagonal_Shape& x = *this; -2441: return x.contains(y) && !y.contains(x); -2441: } -2441: -2441: template -2441: template -2441: inline void -2441: Octagonal_Shape::generalized_refine_with_linear_form_inequality( -2441: const Linear_Form< Interval >& left, -2441: const Linear_Form< Interval >& right, -2441: const Relation_Symbol relsym) { -2441: switch (relsym) { -2441: case EQUAL: -2441: -2441: refine_with_linear_form_inequality(left, right); -2441: refine_with_linear_form_inequality(right, left); -2441: break; -2441: case LESS_THAN: -2441: case LESS_OR_EQUAL: -2441: refine_with_linear_form_inequality(left, right); -2441: break; -2441: case GREATER_THAN: -2441: case GREATER_OR_EQUAL: -2441: refine_with_linear_form_inequality(right, left); -2441: break; -2441: case NOT_EQUAL: -2441: break; -2441: default: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: } -2441: -2441: template -2441: template -2441: inline void -2441: Octagonal_Shape:: -2441: refine_fp_interval_abstract_store( -2441: Box< Interval >& store) const { -2441: -2441: -2441: enum anonymous_enum_compile_time_check___LINE__ { compile_time_check_683 = sizeof(Parma_Polyhedra_Library::Compile_Time_Check<(!std::numeric_limits::is_exact)>) } -2441: -2441: ; -2441: -2441: typedef Interval FP_Interval_Type; -2441: store.intersection_assign(Box(*this)); -2441: -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: rectilinear_distance_assign(Checked_Number& r, -2441: const Octagonal_Shape& x, -2441: const Octagonal_Shape& y, -2441: const Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2) { -2441: -2441: if (x.space_dim != y.space_dim) { -2441: return false; -2441: } -2441: -2441: if (x.space_dim == 0) { -2441: if (x.marked_empty() == y.marked_empty()) { -2441: assign_r(r, 0, ROUND_NOT_NEEDED); -2441: } -2441: else { -2441: assign_r(r, PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: return true; -2441: } -2441: -2441: -2441: x.strong_closure_assign(); -2441: y.strong_closure_assign(); -2441: -2441: -2441: -2441: if (x.marked_empty() || y.marked_empty()) { -2441: if (x.marked_empty() == y.marked_empty()) { -2441: assign_r(r, 0, ROUND_NOT_NEEDED); -2441: } -2441: else { -2441: assign_r(r, PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: return true; -2441: } -2441: -2441: return rectilinear_distance_assign(r, x.matrix, y.matrix, dir, -2441: tmp0, tmp1, tmp2); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: rectilinear_distance_assign(Checked_Number& r, -2441: const Octagonal_Shape& x, -2441: const Octagonal_Shape& y, -2441: const Rounding_Dir dir) { -2441: typedef Checked_Number Checked_Temp; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp0; Checked_Temp& tmp0 = holder_tmp0.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp1; Checked_Temp& tmp1 = holder_tmp1.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp2; Checked_Temp& tmp2 = holder_tmp2.item(); -2441: return rectilinear_distance_assign(r, x, y, dir, tmp0, tmp1, tmp2); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: rectilinear_distance_assign(Checked_Number& r, -2441: const Octagonal_Shape& x, -2441: const Octagonal_Shape& y, -2441: const Rounding_Dir dir) { -2441: return rectilinear_distance_assign(r, x, y, dir); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: euclidean_distance_assign(Checked_Number& r, -2441: const Octagonal_Shape& x, -2441: const Octagonal_Shape& y, -2441: const Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2) { -2441: -2441: if (x.space_dim != y.space_dim) { -2441: return false; -2441: } -2441: -2441: -2441: if (x.space_dim == 0) { -2441: if (x.marked_empty() == y.marked_empty()) { -2441: assign_r(r, 0, ROUND_NOT_NEEDED); -2441: } -2441: else { -2441: assign_r(r, PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: return true; -2441: } -2441: -2441: -2441: x.strong_closure_assign(); -2441: y.strong_closure_assign(); -2441: -2441: -2441: -2441: if (x.marked_empty() || y.marked_empty()) { -2441: if (x.marked_empty() == y.marked_empty()) { -2441: assign_r(r, 0, ROUND_NOT_NEEDED); -2441: } -2441: else { -2441: assign_r(r, PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: return true; -2441: } -2441: -2441: return euclidean_distance_assign(r, x.matrix, y.matrix, dir, -2441: tmp0, tmp1, tmp2); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: euclidean_distance_assign(Checked_Number& r, -2441: const Octagonal_Shape& x, -2441: const Octagonal_Shape& y, -2441: const Rounding_Dir dir) { -2441: typedef Checked_Number Checked_Temp; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp0; Checked_Temp& tmp0 = holder_tmp0.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp1; Checked_Temp& tmp1 = holder_tmp1.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp2; Checked_Temp& tmp2 = holder_tmp2.item(); -2441: return euclidean_distance_assign(r, x, y, dir, tmp0, tmp1, tmp2); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: euclidean_distance_assign(Checked_Number& r, -2441: const Octagonal_Shape& x, -2441: const Octagonal_Shape& y, -2441: const Rounding_Dir dir) { -2441: return euclidean_distance_assign(r, x, y, dir); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: l_infinity_distance_assign(Checked_Number& r, -2441: const Octagonal_Shape& x, -2441: const Octagonal_Shape& y, -2441: const Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2) { -2441: -2441: if (x.space_dim != y.space_dim) { -2441: return false; -2441: } -2441: -2441: if (x.space_dim == 0) { -2441: if (x.marked_empty() == y.marked_empty()) { -2441: assign_r(r, 0, ROUND_NOT_NEEDED); -2441: } -2441: else { -2441: assign_r(r, PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: return true; -2441: } -2441: -2441: -2441: x.strong_closure_assign(); -2441: y.strong_closure_assign(); -2441: -2441: -2441: -2441: if (x.marked_empty() || y.marked_empty()) { -2441: if (x.marked_empty() == y.marked_empty()) { -2441: assign_r(r, 0, ROUND_NOT_NEEDED); -2441: } -2441: else { -2441: assign_r(r, PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: return true; -2441: } -2441: -2441: return l_infinity_distance_assign(r, x.matrix, y.matrix, dir, -2441: tmp0, tmp1, tmp2); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: l_infinity_distance_assign(Checked_Number& r, -2441: const Octagonal_Shape& x, -2441: const Octagonal_Shape& y, -2441: const Rounding_Dir dir) { -2441: typedef Checked_Number Checked_Temp; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp0; Checked_Temp& tmp0 = holder_tmp0.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp1; Checked_Temp& tmp1 = holder_tmp1.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp2; Checked_Temp& tmp2 = holder_tmp2.item(); -2441: return l_infinity_distance_assign(r, x, y, dir, tmp0, tmp1, tmp2); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: l_infinity_distance_assign(Checked_Number& r, -2441: const Octagonal_Shape& x, -2441: const Octagonal_Shape& y, -2441: const Rounding_Dir dir) { -2441: return l_infinity_distance_assign(r, x, y, dir); -2441: } -2441: -2441: template -2441: inline memory_size_type -2441: Octagonal_Shape::total_memory_in_bytes() const { -2441: return sizeof(*this) + external_memory_in_bytes(); -2441: } -2441: -2441: template -2441: inline int32_t -2441: Octagonal_Shape::hash_code() const { -2441: return hash_code_from_dimension(space_dimension()); -2441: } -2441: -2441: template -2441: inline void -2441: Octagonal_Shape::drop_some_non_integer_points_helper(N& elem) { -2441: if (!is_integer(elem)) { -2441: -2441: -2441: -2441: floor_assign_r(elem, elem, ROUND_DOWN); -2441: ((void) 0); -2441: reset_strongly_closed(); -2441: } -2441: } -2441: -2441: -2441: template -2441: inline void -2441: swap(Octagonal_Shape& x, Octagonal_Shape& y) { -2441: x.m_swap(y); -2441: } -2441: -2441: } -2441: # 2328 "../../src/Octagonal_Shape_defs.hh" 2 -2441: # 1 "../../src/Octagonal_Shape_templates.hh" 1 -2441: # 43 "../../src/Octagonal_Shape_templates.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: Octagonal_Shape::Octagonal_Shape(const Polyhedron& ph, -2441: const Complexity_Class complexity) -2441: : matrix(0), space_dim(0), status() { -2441: const dimension_type num_dimensions = ph.space_dimension(); -2441: -2441: if (ph.marked_empty()) { -2441: *this = Octagonal_Shape(num_dimensions, EMPTY); -2441: return; -2441: } -2441: -2441: if (num_dimensions == 0) { -2441: *this = Octagonal_Shape(num_dimensions, UNIVERSE); -2441: return; -2441: } -2441: -2441: -2441: -2441: if (complexity == ANY_COMPLEXITY -2441: || (!ph.has_pending_constraints() && ph.generators_are_up_to_date())) { -2441: *this = Octagonal_Shape(ph.generators()); -2441: return; -2441: } -2441: -2441: -2441: -2441: -2441: ((void) 0); -2441: -2441: if (!ph.has_something_pending() && ph.constraints_are_minimized()) { -2441: -2441: -2441: if (ph.is_universe()) { -2441: *this = Octagonal_Shape(num_dimensions, UNIVERSE); -2441: return; -2441: } -2441: } -2441: -2441: -2441: for (Constraint_System::const_iterator i = ph.con_sys.begin(), -2441: cs_end = ph.con_sys.end(); i != cs_end; ++i) { -2441: if (i->is_inconsistent()) { -2441: *this = Octagonal_Shape(num_dimensions, EMPTY); -2441: return; -2441: } -2441: } -2441: -2441: -2441: -2441: if (complexity == SIMPLEX_COMPLEXITY) { -2441: MIP_Problem lp(num_dimensions); -2441: lp.set_optimization_mode(MAXIMIZATION); -2441: -2441: const Constraint_System& ph_cs = ph.constraints(); -2441: if (!ph_cs.has_strict_inequalities()) { -2441: lp.add_constraints(ph_cs); -2441: } -2441: else { -2441: -2441: for (Constraint_System::const_iterator i = ph_cs.begin(), -2441: ph_cs_end = ph_cs.end(); i != ph_cs_end; ++i) { -2441: const Constraint& c = *i; -2441: if (c.is_strict_inequality()) { -2441: Linear_Expression expr(c.expression()); -2441: lp.add_constraint(expr >= 0); -2441: } -2441: else { -2441: lp.add_constraint(c); -2441: } -2441: } -2441: } -2441: -2441: -2441: if (!lp.is_satisfiable()) { -2441: *this = Octagonal_Shape(num_dimensions, EMPTY); -2441: return; -2441: } -2441: -2441: -2441: *this = Octagonal_Shape(num_dimensions, UNIVERSE); -2441: -2441: Generator g(point()); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_numer; Parma_Polyhedra_Library::Coefficient& numer = holder_numer.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_denom; Parma_Polyhedra_Library::Coefficient& denom = holder_denom.item(); -2441: for (dimension_type i = 0; i < num_dimensions; ++i) { -2441: Variable x(i); -2441: -2441: lp.set_objective_function(x); -2441: if (lp.solve() == OPTIMIZED_MIP_PROBLEM) { -2441: g = lp.optimizing_point(); -2441: lp.evaluate_objective_function(g, numer, denom); -2441: numer *= 2; -2441: div_round_up(matrix[2*i + 1][2*i], numer, denom); -2441: } -2441: -2441: for (dimension_type j = 0; j < i; ++j) { -2441: Variable y(j); -2441: lp.set_objective_function(x + y); -2441: if (lp.solve() == OPTIMIZED_MIP_PROBLEM) { -2441: g = lp.optimizing_point(); -2441: lp.evaluate_objective_function(g, numer, denom); -2441: div_round_up(matrix[2*i + 1][2*j], numer, denom); -2441: } -2441: } -2441: -2441: for (dimension_type j = 0; j < num_dimensions; ++j) { -2441: if (i == j) { -2441: continue; -2441: } -2441: Variable y(j); -2441: lp.set_objective_function(x - y); -2441: if (lp.solve() == OPTIMIZED_MIP_PROBLEM) { -2441: g = lp.optimizing_point(); -2441: lp.evaluate_objective_function(g, numer, denom); -2441: div_round_up(((i < j) ? -2441: matrix[2*j][2*i] -2441: : matrix[2*i + 1][2*j + 1]), -2441: numer, denom); -2441: } -2441: } -2441: -2441: for (dimension_type j = 0; j < num_dimensions; ++j) { -2441: if (i == j) { -2441: continue; -2441: } -2441: Variable y(j); -2441: lp.set_objective_function(x - y); -2441: if (lp.solve() == OPTIMIZED_MIP_PROBLEM) { -2441: g = lp.optimizing_point(); -2441: lp.evaluate_objective_function(g, numer, denom); -2441: div_round_up(((i < j) -2441: ? matrix[2*j][2*i] -2441: : matrix[2*i + 1][2*j + 1]), -2441: numer, denom); -2441: } -2441: } -2441: -2441: for (dimension_type j = 0; j < i; ++j) { -2441: Variable y(j); -2441: lp.set_objective_function(-x - y); -2441: if (lp.solve() == OPTIMIZED_MIP_PROBLEM) { -2441: g = lp.optimizing_point(); -2441: lp.evaluate_objective_function(g, numer, denom); -2441: div_round_up(matrix[2*i][2*j + 1], numer, denom); -2441: } -2441: } -2441: -2441: lp.set_objective_function(-x); -2441: if (lp.solve() == OPTIMIZED_MIP_PROBLEM) { -2441: g = lp.optimizing_point(); -2441: lp.evaluate_objective_function(g, numer, denom); -2441: numer *= 2; -2441: div_round_up(matrix[2*i][2*i + 1], numer, denom); -2441: } -2441: } -2441: set_strongly_closed(); -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: -2441: ((void) 0); -2441: *this = Octagonal_Shape(num_dimensions, UNIVERSE); -2441: refine_with_constraints(ph.constraints()); -2441: } -2441: -2441: template -2441: Octagonal_Shape::Octagonal_Shape(const Generator_System& gs) -2441: : matrix(gs.space_dimension()), -2441: space_dim(gs.space_dimension()), -2441: status() { -2441: const Generator_System::const_iterator gs_begin = gs.begin(); -2441: const Generator_System::const_iterator gs_end = gs.end(); -2441: if (gs_begin == gs_end) { -2441: -2441: set_empty(); -2441: return; -2441: } -2441: -2441: typedef typename OR_Matrix::row_reference_type row_reference; -2441: typename OR_Matrix::row_iterator mat_begin = matrix.row_begin(); -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp; N& tmp = holder_tmp.item(); -2441: bool mat_initialized = false; -2441: bool point_seen = false; -2441: -2441: for (Generator_System::const_iterator k = gs_begin; k != gs_end; ++k) { -2441: const Generator& g = *k; -2441: switch (g.type()) { -2441: case Generator::POINT: -2441: point_seen = true; -2441: -2441: case Generator::CLOSURE_POINT: -2441: if (!mat_initialized) { -2441: -2441: mat_initialized = true; -2441: const Coefficient& d = g.divisor(); -2441: -2441: -2441: -2441: for (dimension_type i = 0; i < space_dim; ++i) { -2441: const Coefficient& g_i = g.coefficient(Variable(i)); -2441: const dimension_type di = 2*i; -2441: row_reference x_i = *(mat_begin + di); -2441: row_reference x_ii = *(mat_begin + (di + 1)); -2441: for (dimension_type j = 0; j < i; ++j) { -2441: const Coefficient& g_j = g.coefficient(Variable(j)); -2441: const dimension_type dj = 2*j; -2441: -2441: -2441: -2441: -2441: div_round_up(x_i[dj], g_j - g_i, d); -2441: div_round_up(x_ii[dj + 1], g_i - g_j, d); -2441: -2441: div_round_up(x_i[dj + 1], -g_j - g_i, d); -2441: div_round_up(x_ii[dj], g_i + g_j, d); -2441: } -2441: -2441: div_round_up(x_i[di + 1], -g_i - g_i, d); -2441: div_round_up(x_ii[di], g_i + g_i, d); -2441: } -2441: } -2441: else { -2441: -2441: -2441: const Coefficient& d = g.divisor(); -2441: -2441: -2441: -2441: for (dimension_type i = 0; i < space_dim; ++i) { -2441: const Coefficient& g_i = g.coefficient(Variable(i)); -2441: const dimension_type di = 2*i; -2441: row_reference x_i = *(mat_begin + di); -2441: row_reference x_ii = *(mat_begin + (di + 1)); -2441: for (dimension_type j = 0; j < i; ++j) { -2441: const Coefficient& g_j = g.coefficient(Variable(j)); -2441: const dimension_type dj = 2*j; -2441: -2441: -2441: -2441: -2441: div_round_up(tmp, g_j - g_i, d); -2441: max_assign(x_i[dj], tmp); -2441: div_round_up(tmp, g_i - g_j, d); -2441: max_assign(x_ii[dj + 1], tmp); -2441: -2441: div_round_up(tmp, -g_j - g_i, d); -2441: max_assign(x_i[dj + 1], tmp); -2441: div_round_up(tmp, g_i + g_j, d); -2441: max_assign(x_ii[dj], tmp); -2441: } -2441: -2441: div_round_up(tmp, -g_i - g_i, d); -2441: max_assign(x_i[di + 1], tmp); -2441: div_round_up(tmp, g_i + g_i, d); -2441: max_assign(x_ii[di], tmp); -2441: } -2441: } -2441: break; -2441: default: -2441: -2441: break; -2441: } -2441: } -2441: -2441: if (!point_seen) { -2441: -2441: throw_invalid_argument("Octagonal_Shape(gs)", -2441: "the non-empty generator system gs " -2441: "contains no points."); -2441: } -2441: -2441: -2441: for (Generator_System::const_iterator k = gs_begin; k != gs_end; ++k) { -2441: const Generator& g = *k; -2441: switch (g.type()) { -2441: case Generator::LINE: -2441: -2441: -2441: -2441: for (dimension_type i = 0; i < space_dim; ++i) { -2441: const Coefficient& g_i = g.coefficient(Variable(i)); -2441: const dimension_type di = 2*i; -2441: row_reference x_i = *(mat_begin + di); -2441: row_reference x_ii = *(mat_begin + (di + 1)); -2441: for (dimension_type j = 0; j < i; ++j) { -2441: const Coefficient& g_j = g.coefficient(Variable(j)); -2441: const dimension_type dj = 2*j; -2441: -2441: if (g_i != g_j) { -2441: -2441: assign_r(x_i[dj], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: assign_r(x_ii[dj + 1], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: if (g_i != -g_j) { -2441: -2441: assign_r(x_i[dj + 1], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: assign_r(x_ii[dj], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: } -2441: if (g_i != 0) { -2441: -2441: assign_r(x_i[di + 1], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: assign_r(x_ii[di], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: } -2441: break; -2441: case Generator::RAY: -2441: -2441: -2441: -2441: for (dimension_type i = 0; i < space_dim; ++i) { -2441: const Coefficient& g_i = g.coefficient(Variable(i)); -2441: const dimension_type di = 2*i; -2441: row_reference x_i = *(mat_begin + di); -2441: row_reference x_ii = *(mat_begin + (di + 1)); -2441: for (dimension_type j = 0; j < i; ++j) { -2441: const Coefficient& g_j = g.coefficient(Variable(j)); -2441: const dimension_type dj = 2*j; -2441: -2441: -2441: if (g_i < g_j) { -2441: -2441: assign_r(x_i[dj], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: if (g_i > g_j) { -2441: -2441: assign_r(x_ii[dj + 1], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: if (g_i < -g_j) { -2441: -2441: assign_r(x_i[dj + 1], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: if (g_i > -g_j) { -2441: -2441: assign_r(x_ii[dj], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: } -2441: -2441: if (g_i < 0) { -2441: -2441: assign_r(x_i[di + 1], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: if (g_i > 0) { -2441: -2441: assign_r(x_ii[di], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: } -2441: break; -2441: default: -2441: -2441: break; -2441: } -2441: } -2441: set_strongly_closed(); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::add_constraint(const Constraint& c) { -2441: const dimension_type c_space_dim = c.space_dimension(); -2441: -2441: if (c_space_dim > space_dim) { -2441: throw_dimension_incompatible("add_constraint(c)", c); -2441: } -2441: -2441: if (c.is_strict_inequality()) { -2441: if (c.is_inconsistent()) { -2441: set_empty(); -2441: return; -2441: } -2441: if (c.is_tautological()) { -2441: return; -2441: } -2441: -2441: throw_invalid_argument("add_constraint(c)", -2441: "strict inequalities are not allowed"); -2441: } -2441: -2441: dimension_type num_vars = 0; -2441: dimension_type i = 0; -2441: dimension_type j = 0; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_coeff; Parma_Polyhedra_Library::Coefficient& coeff = holder_coeff.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_term; Parma_Polyhedra_Library::Coefficient& term = holder_term.item(); -2441: -2441: if (!Octagonal_Shape_Helper -2441: ::extract_octagonal_difference(c, c_space_dim, num_vars, -2441: i, j, coeff, term)) { -2441: throw_invalid_argument("add_constraint(c)", -2441: "c is not an octagonal constraint"); -2441: } -2441: -2441: if (num_vars == 0) { -2441: -2441: if (c.inhomogeneous_term() < 0 -2441: || (c.is_equality() && c.inhomogeneous_term() != 0)) { -2441: set_empty(); -2441: } -2441: return; -2441: } -2441: -2441: -2441: typename OR_Matrix::row_iterator i_iter = matrix.row_begin() + i; -2441: typename OR_Matrix::row_reference_type m_i = *i_iter; -2441: N& m_i_j = m_i[j]; -2441: -2441: if (coeff < 0) { -2441: neg_assign(coeff); -2441: } -2441: -2441: bool is_oct_changed = false; -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_d; N& d = holder_d.item(); -2441: div_round_up(d, term, coeff); -2441: if (m_i_j > d) { -2441: m_i_j = d; -2441: is_oct_changed = true; -2441: } -2441: -2441: if (c.is_equality()) { -2441: -2441: if (i % 2 == 0) { -2441: ++i_iter; -2441: } -2441: else { -2441: --i_iter; -2441: } -2441: -2441: typename OR_Matrix::row_reference_type m_ci = *i_iter; -2441: using namespace Implementation::Octagonal_Shapes; -2441: dimension_type cj = coherent_index(j); -2441: N& m_ci_cj = m_ci[cj]; -2441: -2441: neg_assign(term); -2441: div_round_up(d, term, coeff); -2441: if (m_ci_cj > d) { -2441: m_ci_cj = d; -2441: is_oct_changed = true; -2441: } -2441: } -2441: -2441: -2441: if (is_oct_changed && marked_strongly_closed()) { -2441: reset_strongly_closed(); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::add_congruence(const Congruence& cg) { -2441: const dimension_type cg_space_dim = cg.space_dimension(); -2441: -2441: -2441: if (space_dimension() < cg_space_dim) { -2441: throw_dimension_incompatible("add_congruence(cg)", cg); -2441: } -2441: -2441: -2441: if (cg.is_proper_congruence()) { -2441: if (cg.is_tautological()) { -2441: return; -2441: } -2441: if (cg.is_inconsistent()) { -2441: set_empty(); -2441: return; -2441: } -2441: -2441: throw_invalid_argument("add_congruence(cg)", -2441: "cg is a non-trivial, proper congruence"); -2441: } -2441: -2441: ((void) 0); -2441: Constraint c(cg); -2441: add_constraint(c); -2441: } -2441: -2441: template -2441: template -2441: void -2441: Octagonal_Shape::refine_with_linear_form_inequality( -2441: const Linear_Form< Interval >& left, -2441: const Linear_Form< Interval >& right) { -2441: -2441: -2441: enum anonymous_enum_compile_time_check___LINE__ { compile_time_check_534 = sizeof(Parma_Polyhedra_Library::Compile_Time_Check<(!std::numeric_limits::is_exact)>) } -2441: -2441: ; -2441: -2441: -2441: ((void) 0); -2441: -2441: -2441: -2441: -2441: const dimension_type left_space_dim = left.space_dimension(); -2441: if (space_dim < left_space_dim) { -2441: throw_dimension_incompatible( -2441: "refine_with_linear_form_inequality(left, right)", "left", left); -2441: } -2441: -2441: const dimension_type right_space_dim = right.space_dimension(); -2441: if (space_dim < right_space_dim) { -2441: throw_dimension_incompatible( -2441: "refine_with_linear_form_inequality(left, right)", "right", right); -2441: } -2441: -2441: -2441: dimension_type left_t = 0; -2441: -2441: dimension_type left_w_id = 0; -2441: -2441: -2441: dimension_type right_t = 0; -2441: -2441: dimension_type right_w_id = 0; -2441: -2441: -2441: for (dimension_type i = left_space_dim; i-- > 0; ) { -2441: if (left.coefficient(Variable(i)) != 0) { -2441: if (left_t++ == 1) { -2441: break; -2441: } -2441: else { -2441: left_w_id = i; -2441: } -2441: } -2441: } -2441: -2441: -2441: for (dimension_type i = right_space_dim; i-- > 0; ) { -2441: if (right.coefficient(Variable(i)) != 0) { -2441: if (right_t++ == 1) { -2441: break; -2441: } -2441: else { -2441: right_w_id = i; -2441: } -2441: } -2441: } -2441: -2441: typedef typename OR_Matrix::row_iterator row_iterator; -2441: typedef typename OR_Matrix::row_reference_type row_reference; -2441: typedef Interval FP_Interval_Type; -2441: -2441: -2441: -2441: -2441: if (left_t == 0) { -2441: if (right_t == 0) { -2441: -2441: -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: if (right_t == 1) { -2441: -2441: -2441: const FP_Interval_Type& right_w_coeff = -2441: right.coefficient(Variable(right_w_id)); -2441: if (right_w_coeff == 1) { -2441: const dimension_type n_right = right_w_id * 2; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_b_plus_minus_a_minus; N& b_plus_minus_a_minus = holder_b_plus_minus_a_minus.item(); -2441: const FP_Interval_Type& left_a = left.inhomogeneous_term(); -2441: const FP_Interval_Type& right_b = right.inhomogeneous_term(); -2441: sub_assign_r(b_plus_minus_a_minus, right_b.upper(), left_a.lower(), -2441: ROUND_UP); -2441: mul_2exp_assign_r(b_plus_minus_a_minus, b_plus_minus_a_minus, 1, -2441: ROUND_UP); -2441: add_octagonal_constraint(n_right, n_right + 1, b_plus_minus_a_minus); -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: if (right_w_coeff == -1) { -2441: const dimension_type n_right = right_w_id * 2; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_b_plus_minus_a_minus; N& b_plus_minus_a_minus = holder_b_plus_minus_a_minus.item(); -2441: const FP_Interval_Type& left_a = left.inhomogeneous_term(); -2441: const FP_Interval_Type& right_b = right.inhomogeneous_term(); -2441: sub_assign_r(b_plus_minus_a_minus, right_b.upper(), left_a.lower(), -2441: ROUND_UP); -2441: mul_2exp_assign_r(b_plus_minus_a_minus, b_plus_minus_a_minus, 1, -2441: ROUND_UP); -2441: add_octagonal_constraint(n_right + 1, n_right, b_plus_minus_a_minus); -2441: ((void) 0); -2441: return; -2441: } -2441: } -2441: } -2441: else if (left_t == 1) { -2441: if (right_t == 0) { -2441: -2441: -2441: const FP_Interval_Type& left_w_coeff = -2441: left.coefficient(Variable(left_w_id)); -2441: if (left_w_coeff == 1) { -2441: const dimension_type n_left = left_w_id * 2; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_a_plus_minus_b_minus; N& a_plus_minus_b_minus = holder_a_plus_minus_b_minus.item(); -2441: const FP_Interval_Type& left_b = left.inhomogeneous_term(); -2441: const FP_Interval_Type& right_a = right.inhomogeneous_term(); -2441: sub_assign_r(a_plus_minus_b_minus, right_a.upper(), left_b.lower(), -2441: ROUND_UP); -2441: mul_2exp_assign_r(a_plus_minus_b_minus, a_plus_minus_b_minus, 1, -2441: ROUND_UP); -2441: add_octagonal_constraint(n_left + 1, n_left, a_plus_minus_b_minus); -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: if (left_w_coeff == -1) { -2441: const dimension_type n_left = left_w_id * 2; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_a_plus_minus_b_minus; N& a_plus_minus_b_minus = holder_a_plus_minus_b_minus.item(); -2441: const FP_Interval_Type& left_b = left.inhomogeneous_term(); -2441: const FP_Interval_Type& right_a = right.inhomogeneous_term(); -2441: sub_assign_r(a_plus_minus_b_minus, right_a.upper(), left_b.lower(), -2441: ROUND_UP); -2441: mul_2exp_assign_r(a_plus_minus_b_minus, a_plus_minus_b_minus, 1, -2441: ROUND_UP); -2441: add_octagonal_constraint(n_left, n_left + 1, a_plus_minus_b_minus); -2441: ((void) 0); -2441: return; -2441: } -2441: } -2441: -2441: if (right_t == 1) { -2441: -2441: -2441: -2441: -2441: const FP_Interval_Type& left_w_coeff = -2441: left.coefficient(Variable(left_w_id)); -2441: const FP_Interval_Type& right_w_coeff = -2441: right.coefficient(Variable(right_w_id)); -2441: bool is_left_coeff_one = (left_w_coeff == 1); -2441: bool is_left_coeff_minus_one = (left_w_coeff == -1); -2441: bool is_right_coeff_one = (right_w_coeff == 1); -2441: bool is_right_coeff_minus_one = (right_w_coeff == -1); -2441: if (left_w_id == right_w_id) { -2441: if ((is_left_coeff_one && is_right_coeff_one) -2441: || (is_left_coeff_minus_one && is_right_coeff_minus_one)) { -2441: -2441: ((void) 0); -2441: return; -2441: } -2441: if (is_left_coeff_one && is_right_coeff_minus_one) { -2441: -2441: -2441: const dimension_type n_left = left_w_id * 2; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_a_plus_minus_b_minus; N& a_plus_minus_b_minus = holder_a_plus_minus_b_minus.item(); -2441: const FP_Interval_Type& left_b = left.inhomogeneous_term(); -2441: const FP_Interval_Type& right_a = right.inhomogeneous_term(); -2441: sub_assign_r(a_plus_minus_b_minus, right_a.upper(), left_b.lower(), -2441: ROUND_UP); -2441: add_octagonal_constraint(n_left + 1, n_left, a_plus_minus_b_minus); -2441: ((void) 0); -2441: return; -2441: } -2441: if (is_left_coeff_minus_one && is_right_coeff_one) { -2441: -2441: -2441: const dimension_type n_left = left_w_id * 2; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_a_plus_minus_b_minus; N& a_plus_minus_b_minus = holder_a_plus_minus_b_minus.item(); -2441: const FP_Interval_Type& left_b = left.inhomogeneous_term(); -2441: const FP_Interval_Type& right_a = right.inhomogeneous_term(); -2441: sub_assign_r(a_plus_minus_b_minus, right_a.upper(), left_b.lower(), -2441: ROUND_UP); -2441: add_octagonal_constraint(n_left, n_left + 1, a_plus_minus_b_minus); -2441: ((void) 0); -2441: return; -2441: } -2441: } -2441: else if (is_left_coeff_one && is_right_coeff_one) { -2441: const dimension_type n_left = left_w_id * 2; -2441: const dimension_type n_right = right_w_id * 2; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_c_plus_minus_a_minus; N& c_plus_minus_a_minus = holder_c_plus_minus_a_minus.item(); -2441: const FP_Interval_Type& left_a = left.inhomogeneous_term(); -2441: const FP_Interval_Type& right_c = right.inhomogeneous_term(); -2441: sub_assign_r(c_plus_minus_a_minus, right_c.upper(), left_a.lower(), -2441: ROUND_UP); -2441: if (left_w_id < right_w_id) { -2441: add_octagonal_constraint(n_right, n_left, c_plus_minus_a_minus); -2441: } -2441: else { -2441: add_octagonal_constraint(n_left + 1, n_right + 1, -2441: c_plus_minus_a_minus); -2441: } -2441: ((void) 0); -2441: return; -2441: } -2441: if (is_left_coeff_one && is_right_coeff_minus_one) { -2441: const dimension_type n_left = left_w_id * 2; -2441: const dimension_type n_right = right_w_id * 2; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_c_plus_minus_a_minus; N& c_plus_minus_a_minus = holder_c_plus_minus_a_minus.item(); -2441: const FP_Interval_Type& left_a = left.inhomogeneous_term(); -2441: const FP_Interval_Type& right_c = right.inhomogeneous_term(); -2441: sub_assign_r(c_plus_minus_a_minus, right_c.upper(), left_a.lower(), -2441: ROUND_UP); -2441: if (left_w_id < right_w_id) { -2441: add_octagonal_constraint(n_right + 1, n_left, c_plus_minus_a_minus); -2441: } -2441: else { -2441: add_octagonal_constraint(n_left + 1, n_right, c_plus_minus_a_minus); -2441: } -2441: ((void) 0); -2441: return; -2441: } -2441: if (is_left_coeff_minus_one && is_right_coeff_one) { -2441: const dimension_type n_left = left_w_id * 2; -2441: const dimension_type n_right = right_w_id * 2; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_c_plus_minus_a_minus; N& c_plus_minus_a_minus = holder_c_plus_minus_a_minus.item(); -2441: const FP_Interval_Type& left_a = left.inhomogeneous_term(); -2441: const FP_Interval_Type& right_c = right.inhomogeneous_term(); -2441: sub_assign_r(c_plus_minus_a_minus, right_c.upper(), left_a.lower(), -2441: ROUND_UP); -2441: if (left_w_id < right_w_id) { -2441: add_octagonal_constraint(n_right, n_left + 1, c_plus_minus_a_minus); -2441: } -2441: else { -2441: add_octagonal_constraint(n_left, n_right + 1, c_plus_minus_a_minus); -2441: } -2441: ((void) 0); -2441: return; -2441: } -2441: if (is_left_coeff_minus_one && is_right_coeff_minus_one) { -2441: const dimension_type n_left = left_w_id * 2; -2441: const dimension_type n_right = right_w_id * 2; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_c_plus_minus_a_minus; N& c_plus_minus_a_minus = holder_c_plus_minus_a_minus.item(); -2441: const FP_Interval_Type& left_a = left.inhomogeneous_term(); -2441: const FP_Interval_Type& right_c = right.inhomogeneous_term(); -2441: sub_assign_r(c_plus_minus_a_minus, right_c.upper(), left_a.lower(), -2441: ROUND_UP); -2441: if (left_w_id < right_w_id) { -2441: add_octagonal_constraint(n_right + 1, n_left + 1, -2441: c_plus_minus_a_minus); -2441: } -2441: else { -2441: add_octagonal_constraint(n_left, n_right, c_plus_minus_a_minus); -2441: } -2441: ((void) 0); -2441: return; -2441: } -2441: } -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_low_coeff; N& low_coeff = holder_low_coeff.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_high_coeff; N& high_coeff = holder_high_coeff.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_upper_bound; N& upper_bound = holder_upper_bound.item(); -2441: -2441: Linear_Form right_minus_left(right); -2441: right_minus_left -= left; -2441: -2441: dimension_type max_w_id = std::max(left_w_id, right_w_id); -2441: for (dimension_type first_v = 0; first_v < max_w_id; ++first_v) { -2441: for (dimension_type second_v = first_v + 1; -2441: second_v <= max_w_id; ++second_v) { -2441: const FP_Interval_Type& lfv_coefficient = -2441: left.coefficient(Variable(first_v)); -2441: const FP_Interval_Type& lsv_coefficient = -2441: left.coefficient(Variable(second_v)); -2441: const FP_Interval_Type& rfv_coefficient = -2441: right.coefficient(Variable(first_v)); -2441: const FP_Interval_Type& rsv_coefficient = -2441: right.coefficient(Variable(second_v)); -2441: -2441: -2441: bool do_update = false; -2441: assign_r(low_coeff, lfv_coefficient.lower(), ROUND_NOT_NEEDED); -2441: assign_r(high_coeff, lfv_coefficient.upper(), ROUND_NOT_NEEDED); -2441: if (low_coeff != 0 || high_coeff != 0) { -2441: assign_r(low_coeff, lsv_coefficient.lower(), ROUND_NOT_NEEDED); -2441: assign_r(high_coeff, lsv_coefficient.upper(), ROUND_NOT_NEEDED); -2441: if (low_coeff != 0 || high_coeff != 0) { -2441: do_update = true; -2441: } -2441: else { -2441: assign_r(low_coeff, rsv_coefficient.lower(), ROUND_NOT_NEEDED); -2441: assign_r(high_coeff, rsv_coefficient.upper(), ROUND_NOT_NEEDED); -2441: if (low_coeff != 0 || high_coeff != 0) { -2441: do_update = true; -2441: } -2441: } -2441: } -2441: else { -2441: assign_r(low_coeff, rfv_coefficient.lower(), ROUND_NOT_NEEDED); -2441: assign_r(high_coeff, rfv_coefficient.upper(), ROUND_NOT_NEEDED); -2441: if (low_coeff != 0 || high_coeff != 0) { -2441: assign_r(low_coeff, lsv_coefficient.lower(), ROUND_NOT_NEEDED); -2441: assign_r(high_coeff, lsv_coefficient.upper(), ROUND_NOT_NEEDED); -2441: if (low_coeff != 0 || high_coeff != 0) { -2441: do_update = true; -2441: } -2441: else { -2441: assign_r(low_coeff, rsv_coefficient.lower(), ROUND_NOT_NEEDED); -2441: assign_r(high_coeff, rsv_coefficient.upper(), ROUND_NOT_NEEDED); -2441: if (low_coeff != 0 || high_coeff != 0) { -2441: do_update = true; -2441: } -2441: } -2441: } -2441: } -2441: -2441: if (do_update) { -2441: Variable first(first_v); -2441: Variable second(second_v); -2441: dimension_type n_first_var = first_v * 2; -2441: dimension_type n_second_var = second_v * 2; -2441: linear_form_upper_bound(right_minus_left - first + second, -2441: upper_bound); -2441: add_octagonal_constraint(n_second_var + 1, n_first_var + 1, -2441: upper_bound); -2441: linear_form_upper_bound(right_minus_left + first + second, -2441: upper_bound); -2441: add_octagonal_constraint(n_second_var + 1, n_first_var, upper_bound); -2441: linear_form_upper_bound(right_minus_left - first - second, -2441: upper_bound); -2441: add_octagonal_constraint(n_second_var, n_first_var + 1, upper_bound); -2441: linear_form_upper_bound(right_minus_left + first - second, -2441: upper_bound); -2441: add_octagonal_constraint(n_second_var, n_first_var, upper_bound); -2441: } -2441: } -2441: } -2441: -2441: -2441: for (dimension_type v = 0; v <= max_w_id; ++v) { -2441: const FP_Interval_Type& lv_coefficient = -2441: left.coefficient(Variable(v)); -2441: const FP_Interval_Type& rv_coefficient = -2441: right.coefficient(Variable(v)); -2441: -2441: -2441: bool do_update = false; -2441: assign_r(low_coeff, lv_coefficient.lower(), ROUND_NOT_NEEDED); -2441: assign_r(high_coeff, lv_coefficient.upper(), ROUND_NOT_NEEDED); -2441: if (low_coeff != 0 || high_coeff != 0) { -2441: do_update = true; -2441: } -2441: else { -2441: assign_r(low_coeff, rv_coefficient.lower(), ROUND_NOT_NEEDED); -2441: assign_r(high_coeff, rv_coefficient.upper(), ROUND_NOT_NEEDED); -2441: if (low_coeff != 0 || high_coeff != 0) { -2441: do_update = true; -2441: } -2441: } -2441: -2441: if (do_update) { -2441: Variable var(v); -2441: dimension_type n_var = 2 * v; -2441: -2441: -2441: -2441: -2441: -2441: linear_form_upper_bound(right_minus_left + var, upper_bound); -2441: mul_2exp_assign_r(matrix[n_var + 1][n_var + 1], upper_bound, 1, -2441: ROUND_UP); -2441: linear_form_upper_bound(right_minus_left - var, upper_bound); -2441: mul_2exp_assign_r(matrix[n_var][n_var], upper_bound, 1, -2441: ROUND_UP); -2441: } -2441: } -2441: -2441: -2441: -2441: -2441: -2441: row_iterator m_ite = matrix.row_begin(); -2441: row_iterator m_end = matrix.row_end(); -2441: for (dimension_type i = 0; m_ite != m_end; i += 2) { -2441: row_reference upper = *m_ite; -2441: N& ul = upper[i]; -2441: add_octagonal_constraint(i, i + 1, ul); -2441: assign_r(ul, PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: ++m_ite; -2441: row_reference lower = *m_ite; -2441: N& lr = lower[i + 1]; -2441: add_octagonal_constraint(i + 1, i, lr); -2441: assign_r(lr, PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: ++m_ite; -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::refine_no_check(const Constraint& c) { -2441: ((void) 0); -2441: const dimension_type c_space_dim = c.space_dimension(); -2441: ((void) 0); -2441: -2441: dimension_type num_vars = 0; -2441: dimension_type i = 0; -2441: dimension_type j = 0; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_coeff; Parma_Polyhedra_Library::Coefficient& coeff = holder_coeff.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_term; Parma_Polyhedra_Library::Coefficient& term = holder_term.item(); -2441: -2441: if (!Octagonal_Shape_Helper -2441: ::extract_octagonal_difference(c, c_space_dim, num_vars, -2441: i, j, coeff, term)) { -2441: return; -2441: } -2441: -2441: if (num_vars == 0) { -2441: const Coefficient& c_inhomo = c.inhomogeneous_term(); -2441: -2441: if (c_inhomo < 0 -2441: || (c_inhomo != 0 && c.is_equality()) -2441: || (c_inhomo == 0 && c.is_strict_inequality())) { -2441: set_empty(); -2441: } -2441: return; -2441: } -2441: -2441: -2441: typename OR_Matrix::row_iterator i_iter = matrix.row_begin() + i; -2441: typename OR_Matrix::row_reference_type m_i = *i_iter; -2441: N& m_i_j = m_i[j]; -2441: -2441: if (coeff < 0) { -2441: neg_assign(coeff); -2441: } -2441: -2441: bool is_oct_changed = false; -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_d; N& d = holder_d.item(); -2441: div_round_up(d, term, coeff); -2441: if (m_i_j > d) { -2441: m_i_j = d; -2441: is_oct_changed = true; -2441: } -2441: -2441: if (c.is_equality()) { -2441: -2441: if (i % 2 == 0) { -2441: ++i_iter; -2441: } -2441: else { -2441: --i_iter; -2441: } -2441: -2441: typename OR_Matrix::row_reference_type m_ci = *i_iter; -2441: using namespace Implementation::Octagonal_Shapes; -2441: dimension_type cj = coherent_index(j); -2441: N& m_ci_cj = m_ci[cj]; -2441: -2441: neg_assign(term); -2441: div_round_up(d, term, coeff); -2441: if (m_ci_cj > d) { -2441: m_ci_cj = d; -2441: is_oct_changed = true; -2441: } -2441: } -2441: -2441: -2441: if (is_oct_changed && marked_strongly_closed()) { -2441: reset_strongly_closed(); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: dimension_type -2441: Octagonal_Shape::affine_dimension() const { -2441: const dimension_type n_rows = matrix.num_rows(); -2441: -2441: if (n_rows == 0) { -2441: return 0; -2441: } -2441: -2441: -2441: -2441: strong_closure_assign(); -2441: if (marked_empty()) { -2441: return 0; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: std::vector leaders; -2441: compute_leaders(leaders); -2441: -2441: -2441: -2441: dimension_type affine_dim = 0; -2441: for (dimension_type i = 0; i < n_rows; i += 2) { -2441: -2441: if (leaders[i] == i && leaders[i + 1] == i + 1) { -2441: ++affine_dim; -2441: } -2441: } -2441: -2441: return affine_dim; -2441: } -2441: -2441: template -2441: Congruence_System -2441: Octagonal_Shape::minimized_congruences() const { -2441: -2441: -2441: strong_closure_assign(); -2441: Congruence_System cgs(space_dim); -2441: -2441: if (space_dim == 0) { -2441: if (marked_empty()) { -2441: cgs = Congruence_System::zero_dim_empty(); -2441: } -2441: return cgs; -2441: } -2441: -2441: if (marked_empty()) { -2441: cgs.insert(Congruence::zero_dim_false()); -2441: return cgs; -2441: } -2441: -2441: -2441: -2441: -2441: std::vector leaders; -2441: compute_leaders(leaders); -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_numer; Parma_Polyhedra_Library::Coefficient& numer = holder_numer.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_denom; Parma_Polyhedra_Library::Coefficient& denom = holder_denom.item(); -2441: for (dimension_type i = 0, i_end = 2*space_dim; i != i_end; i += 2) { -2441: const dimension_type lead_i = leaders[i]; -2441: if (i == lead_i) { -2441: if (leaders[i + 1] == i) { -2441: -2441: goto singular; -2441: } -2441: else { -2441: -2441: continue; -2441: } -2441: } -2441: else { -2441: -2441: if (leaders[i + 1] == lead_i) { -2441: -2441: goto singular; -2441: } -2441: else { -2441: -2441: goto non_singular; -2441: } -2441: } -2441: -2441: singular: -2441: -2441: -2441: { -2441: const Variable x(i/2); -2441: const N& c_ii_i = matrix[i + 1][i]; -2441: -2441: -2441: -2441: -2441: numer_denom(c_ii_i, numer, denom); -2441: denom *= 2; -2441: cgs.insert(denom*x == numer); -2441: } -2441: continue; -2441: -2441: non_singular: -2441: -2441: -2441: { -2441: const N& c_i_li = matrix[i][lead_i]; -2441: -2441: -2441: -2441: -2441: -2441: const Variable x(lead_i/2); -2441: const Variable y(i/2); -2441: numer_denom(c_i_li, numer, denom); -2441: if (lead_i % 2 == 0) { -2441: cgs.insert(denom*x - denom*y == numer); -2441: } -2441: else { -2441: cgs.insert(denom*x + denom*y + numer == 0); -2441: } -2441: } -2441: continue; -2441: } -2441: return cgs; -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::concatenate_assign(const Octagonal_Shape& y) { -2441: -2441: -2441: if (y.space_dim == 0) { -2441: if (y.marked_empty()) { -2441: set_empty(); -2441: } -2441: return; -2441: } -2441: -2441: -2441: -2441: if (space_dim == 0 && marked_empty()) { -2441: add_space_dimensions_and_embed(y.space_dim); -2441: return; -2441: } -2441: -2441: -2441: -2441: dimension_type old_num_rows = matrix.num_rows(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: add_space_dimensions_and_embed(y.space_dim); -2441: typename OR_Matrix::const_element_iterator -2441: y_it = y.matrix.element_begin(); -2441: for (typename OR_Matrix::row_iterator -2441: i = matrix.row_begin() + old_num_rows, -2441: matrix_row_end = matrix.row_end(); i != matrix_row_end; ++i) { -2441: typename OR_Matrix::row_reference_type r = *i; -2441: dimension_type rs_i = i.row_size(); -2441: for (dimension_type j = old_num_rows; j < rs_i; ++j, ++y_it) { -2441: r[j] = *y_it; -2441: } -2441: } -2441: -2441: -2441: if (marked_strongly_closed()) { -2441: reset_strongly_closed(); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: bool -2441: Octagonal_Shape::contains(const Octagonal_Shape& y) const { -2441: -2441: if (space_dim != y.space_dim) { -2441: throw_dimension_incompatible("contains(y)", y); -2441: } -2441: -2441: if (space_dim == 0) { -2441: -2441: -2441: -2441: -2441: return marked_empty() ? y.marked_empty() : true; -2441: } -2441: -2441: -2441: y.strong_closure_assign(); -2441: -2441: if (y.marked_empty()) { -2441: return true; -2441: } -2441: -2441: -2441: if (is_empty()) { -2441: return false; -2441: } -2441: -2441: -2441: -2441: for (typename OR_Matrix::const_element_iterator -2441: i = matrix.element_begin(), j = y.matrix.element_begin(), -2441: matrix_element_end = matrix.element_end(); -2441: i != matrix_element_end; ++i, ++j) { -2441: if (*i < *j) { -2441: return false; -2441: } -2441: } -2441: return true; -2441: } -2441: -2441: template -2441: bool -2441: Octagonal_Shape::is_disjoint_from(const Octagonal_Shape& y) const { -2441: -2441: if (space_dim != y.space_dim) { -2441: throw_dimension_incompatible("is_disjoint_from(y)", y); -2441: } -2441: -2441: -2441: strong_closure_assign(); -2441: if (marked_empty()) { -2441: return true; -2441: } -2441: y.strong_closure_assign(); -2441: if (y.marked_empty()) { -2441: return true; -2441: } -2441: # 1257 "../../src/Octagonal_Shape_templates.hh" -2441: const dimension_type n_rows = matrix.num_rows(); -2441: -2441: typedef typename OR_Matrix::const_row_iterator row_iterator; -2441: typedef typename OR_Matrix::const_row_reference_type row_reference; -2441: -2441: const row_iterator m_begin = matrix.row_begin(); -2441: const row_iterator m_end = matrix.row_end(); -2441: -2441: const row_iterator y_begin = y.matrix.row_begin(); -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_neg_y_ci_cj; N& neg_y_ci_cj = holder_neg_y_ci_cj.item(); -2441: for (row_iterator i_iter = m_begin; i_iter != m_end; ++i_iter) { -2441: using namespace Implementation::Octagonal_Shapes; -2441: const dimension_type i = i_iter.index(); -2441: const dimension_type ci = coherent_index(i); -2441: const dimension_type rs_i = i_iter.row_size(); -2441: row_reference m_i = *i_iter; -2441: for (dimension_type j = 0; j < n_rows; ++j) { -2441: const dimension_type cj = coherent_index(j); -2441: row_reference m_cj = *(m_begin + cj); -2441: const N& m_i_j = (j < rs_i) ? m_i[j] : m_cj[ci]; -2441: row_reference y_ci = *(y_begin + ci); -2441: row_reference y_j = *(y_begin + j); -2441: const N& y_ci_cj = (j < rs_i) ? y_ci[cj] : y_j[i]; -2441: neg_assign_r(neg_y_ci_cj, y_ci_cj, ROUND_UP); -2441: if (m_i_j < neg_y_ci_cj) { -2441: return true; -2441: } -2441: } -2441: } -2441: return false; -2441: } -2441: -2441: template -2441: bool -2441: Octagonal_Shape::is_universe() const { -2441: -2441: if (marked_empty()) { -2441: return false; -2441: } -2441: -2441: -2441: -2441: if (space_dim == 0) { -2441: return true; -2441: } -2441: -2441: -2441: for (typename OR_Matrix::const_element_iterator -2441: i = matrix.element_begin(), matrix_element_end = matrix.element_end(); -2441: i != matrix_element_end; -2441: ++i) { -2441: if (!is_plus_infinity(*i)) { -2441: return false; -2441: } -2441: } -2441: -2441: return true; -2441: } -2441: -2441: template -2441: bool -2441: Octagonal_Shape::is_bounded() const { -2441: strong_closure_assign(); -2441: -2441: if (marked_empty() || space_dim == 0) { -2441: return true; -2441: } -2441: -2441: -2441: for (typename OR_Matrix::const_row_iterator i = matrix.row_begin(), -2441: matrix_row_end = matrix.row_end(); i != matrix_row_end; ++i) { -2441: typename OR_Matrix::const_row_reference_type x_i = *i; -2441: const dimension_type i_index = i.index(); -2441: for (dimension_type j = i.row_size(); j-- > 0; ) { -2441: if (i_index != j) { -2441: if (is_plus_infinity(x_i[j])) { -2441: return false; -2441: } -2441: } -2441: } -2441: } -2441: -2441: return true; -2441: } -2441: -2441: template -2441: bool -2441: Octagonal_Shape::contains_integer_point() const { -2441: -2441: if (is_empty()) { -2441: return false; -2441: } -2441: if (space_dim == 0) { -2441: return true; -2441: } -2441: -2441: -2441: if (std::numeric_limits::is_integer) { -2441: return !tight_coherence_would_make_empty(); -2441: } -2441: -2441: -2441: -2441: -2441: Octagonal_Shape oct_z(space_dim); -2441: oct_z.reset_strongly_closed(); -2441: -2441: typedef Octagonal_Shape::N Z; -2441: bool all_integers = true; -2441: typename OR_Matrix::const_element_iterator x_i = matrix.element_begin(); -2441: for (typename OR_Matrix::element_iterator -2441: z_i = oct_z.matrix.element_begin(), -2441: z_end = oct_z.matrix.element_end(); z_i != z_end; ++z_i, ++x_i) { -2441: const N& d = *x_i; -2441: if (is_plus_infinity(d)) { -2441: continue; -2441: } -2441: if (is_integer(d)) { -2441: assign_r(*z_i, d, ROUND_NOT_NEEDED); -2441: } -2441: else { -2441: all_integers = false; -2441: assign_r(*z_i, d, ROUND_DOWN); -2441: } -2441: } -2441: -2441: if (all_integers) { -2441: -2441: oct_z.set_strongly_closed(); -2441: } -2441: else { -2441: -2441: oct_z.strong_closure_assign(); -2441: if (oct_z.marked_empty()) { -2441: return false; -2441: } -2441: } -2441: return !oct_z.tight_coherence_would_make_empty(); -2441: } -2441: -2441: template -2441: bool -2441: Octagonal_Shape::frequency(const Linear_Expression& expr, -2441: Coefficient& freq_n, Coefficient& freq_d, -2441: Coefficient& val_n, Coefficient& val_d) const { -2441: -2441: if (space_dim < expr.space_dimension()) { -2441: throw_dimension_incompatible("frequency(e, ...)", "e", expr); -2441: } -2441: # 1415 "../../src/Octagonal_Shape_templates.hh" -2441: if (space_dim == 0) { -2441: if (is_empty()) { -2441: return false; -2441: } -2441: freq_n = 0; -2441: freq_d = 1; -2441: val_n = expr.inhomogeneous_term(); -2441: val_d = 1; -2441: return true; -2441: } -2441: -2441: strong_closure_assign(); -2441: -2441: if (marked_empty()) { -2441: return false; -2441: } -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_coeff; Parma_Polyhedra_Library::Coefficient& coeff = holder_coeff.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_coeff_j; Parma_Polyhedra_Library::Coefficient& coeff_j = holder_coeff_j.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_numer; Parma_Polyhedra_Library::Coefficient& numer = holder_numer.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_denom; Parma_Polyhedra_Library::Coefficient& denom = holder_denom.item(); -2441: Linear_Expression le = expr; -2441: -2441: -2441: -2441: bool constant_v = false; -2441: -2441: typedef typename OR_Matrix::const_row_iterator row_iterator; -2441: typedef typename OR_Matrix::const_row_reference_type row_reference; -2441: -2441: const row_iterator m_begin = matrix.row_begin(); -2441: const row_iterator m_end = matrix.row_end(); -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_val_denom; Parma_Polyhedra_Library::Coefficient& val_denom = holder_val_denom.item(); -2441: val_denom = 1; -2441: -2441: for (row_iterator i_iter = m_begin; i_iter != m_end; i_iter += 2) { -2441: constant_v = false; -2441: dimension_type i = i_iter.index(); -2441: const Variable v(i/2); -2441: coeff = le.coefficient(v); -2441: if (coeff == 0) { -2441: constant_v = true; -2441: continue; -2441: } -2441: -2441: row_reference m_i = *i_iter; -2441: row_reference m_ii = *(i_iter + 1); -2441: const N& m_i_ii = m_i[i + 1]; -2441: const N& m_ii_i = m_ii[i]; -2441: if ((!is_plus_infinity(m_i_ii) && !is_plus_infinity(m_ii_i)) -2441: && (is_additive_inverse(m_i_ii, m_ii_i))) { -2441: -2441: numer_denom(m_i_ii, numer, denom); -2441: denom *= 2; -2441: le -= coeff*v; -2441: le *= denom; -2441: le -= numer*coeff; -2441: val_denom *= denom; -2441: constant_v = true; -2441: continue; -2441: } -2441: -2441: -2441: else { -2441: ((void) 0); -2441: using namespace Implementation::Octagonal_Shapes; -2441: const dimension_type ci = coherent_index(i); -2441: for (row_iterator j_iter = i_iter; j_iter != m_end; j_iter += 2) { -2441: dimension_type j = j_iter.index(); -2441: const Variable vj(j/2); -2441: coeff_j = le.coefficient(vj); -2441: if (coeff_j == 0) { -2441: -2441: continue; -2441: } -2441: const dimension_type cj = coherent_index(j); -2441: const dimension_type cjj = coherent_index(j + 1); -2441: -2441: row_reference m_j = *(m_begin + j); -2441: row_reference m_cj = *(m_begin + cj); -2441: const N& m_j_i = m_j[i]; -2441: const N& m_i_j = m_cj[ci]; -2441: if ((!is_plus_infinity(m_i_j) && !is_plus_infinity(m_j_i)) -2441: && (is_additive_inverse(m_i_j, m_j_i))) { -2441: -2441: -2441: -2441: numer_denom(m_i_j, numer, denom); -2441: le -= coeff*v; -2441: le += coeff*vj; -2441: le *= denom; -2441: le -= numer*coeff; -2441: val_denom *= denom; -2441: constant_v = true; -2441: break; -2441: } -2441: -2441: m_j = *(m_begin + (j + 1)); -2441: m_cj = *(m_begin + cjj); -2441: const N& m_j_i1 = m_j[i]; -2441: const N& m_i_j1 = m_cj[ci]; -2441: if ((!is_plus_infinity(m_i_j1) && !is_plus_infinity(m_j_i1)) -2441: && (is_additive_inverse(m_i_j1, m_j_i1))) { -2441: -2441: -2441: -2441: numer_denom(m_i_j1, numer, denom); -2441: le -= coeff*v; -2441: le -= coeff*vj; -2441: le *= denom; -2441: le -= numer*coeff; -2441: val_denom *= denom; -2441: constant_v = true; -2441: break; -2441: } -2441: } -2441: if (!constant_v) { -2441: -2441: return false; -2441: } -2441: } -2441: } -2441: if (!constant_v) { -2441: -2441: return false; -2441: } -2441: -2441: -2441: freq_n = 0; -2441: freq_d = 1; -2441: -2441: -2441: normalize2(le.inhomogeneous_term(), val_denom, val_n, val_d); -2441: return true; -2441: } -2441: -2441: template -2441: bool -2441: Octagonal_Shape::constrains(const Variable var) const { -2441: -2441: const dimension_type var_space_dim = var.space_dimension(); -2441: if (space_dimension() < var_space_dim) { -2441: throw_dimension_incompatible("constrains(v)", "v", var); -2441: } -2441: -2441: -2441: -2441: if (marked_empty()) { -2441: return true; -2441: } -2441: -2441: -2441: const dimension_type n_v = 2*(var_space_dim - 1); -2441: typename OR_Matrix::const_row_iterator m_iter = matrix.row_begin() + n_v; -2441: typename OR_Matrix::const_row_reference_type r_v = *m_iter; -2441: typename OR_Matrix::const_row_reference_type r_cv = *(++m_iter); -2441: for (dimension_type h = m_iter.row_size(); h-- > 0; ) { -2441: if (!is_plus_infinity(r_v[h]) || !is_plus_infinity(r_cv[h])) { -2441: return true; -2441: } -2441: } -2441: ++m_iter; -2441: for (typename OR_Matrix::const_row_iterator m_end = matrix.row_end(); -2441: m_iter != m_end; ++m_iter) { -2441: typename OR_Matrix::const_row_reference_type r = *m_iter; -2441: if (!is_plus_infinity(r[n_v]) || !is_plus_infinity(r[n_v + 1])) { -2441: return true; -2441: } -2441: } -2441: -2441: -2441: -2441: return is_empty(); -2441: } -2441: -2441: template -2441: bool -2441: Octagonal_Shape::is_strong_coherent() const { -2441: -2441: -2441: const dimension_type num_rows = matrix.num_rows(); -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_semi_sum; N& semi_sum = holder_semi_sum.item(); -2441: -2441: -2441: -2441: -2441: -2441: for (dimension_type i = num_rows; i-- > 0; ) { -2441: typename OR_Matrix::const_row_iterator iter = matrix.row_begin() + i; -2441: typename OR_Matrix::const_row_reference_type m_i = *iter; -2441: using namespace Implementation::Octagonal_Shapes; -2441: const N& m_i_ci = m_i[coherent_index(i)]; -2441: for (dimension_type j = matrix.row_size(i); j-- > 0; ) { -2441: -2441: if (i != j) { -2441: const N& m_cj_j = matrix[coherent_index(j)][j]; -2441: if (!is_plus_infinity(m_i_ci) -2441: && !is_plus_infinity(m_cj_j)) { -2441: -2441: -2441: add_assign_r(semi_sum, m_i_ci, m_cj_j, ROUND_UP); -2441: div_2exp_assign_r(semi_sum, semi_sum, 1, ROUND_UP); -2441: if (m_i[j] > semi_sum) { -2441: return false; -2441: } -2441: } -2441: } -2441: } -2441: } -2441: return true; -2441: } -2441: -2441: template -2441: bool -2441: Octagonal_Shape::is_strongly_reduced() const { -2441: -2441: -2441: -2441: if (marked_empty()) { -2441: return true; -2441: } -2441: -2441: Octagonal_Shape x = *this; -2441: -2441: -2441: for (typename OR_Matrix::const_row_iterator iter = matrix.row_begin(), -2441: matrix_row_end = matrix.row_end(); iter != matrix_row_end; ++iter) { -2441: typename OR_Matrix::const_row_reference_type m_i = *iter; -2441: const dimension_type i = iter.index(); -2441: for (dimension_type j = iter.row_size(); j-- > 0; ) { -2441: if (!is_plus_infinity(m_i[j])) { -2441: Octagonal_Shape x_copy = *this; -2441: assign_r(x_copy.matrix[i][j], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: if (x == x_copy) { -2441: return false; -2441: } -2441: } -2441: } -2441: } -2441: -2441: return true; -2441: } -2441: -2441: template -2441: bool -2441: Octagonal_Shape::bounds(const Linear_Expression& expr, -2441: const bool from_above) const { -2441: -2441: -2441: const dimension_type expr_space_dim = expr.space_dimension(); -2441: if (space_dim < expr_space_dim) { -2441: throw_dimension_incompatible((from_above -2441: ? "bounds_from_above(e)" -2441: : "bounds_from_below(e)"), "e", expr); -2441: } -2441: strong_closure_assign(); -2441: -2441: -2441: if (space_dim == 0 || marked_empty()) { -2441: return true; -2441: } -2441: -2441: -2441: -2441: const Constraint& c = (from_above) ? expr <= 0 : expr >= 0; -2441: dimension_type num_vars = 0; -2441: dimension_type i = 0; -2441: dimension_type j = 0; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_coeff; Parma_Polyhedra_Library::Coefficient& coeff = holder_coeff.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_term; Parma_Polyhedra_Library::Coefficient& term = holder_term.item(); -2441: if (Octagonal_Shape_Helper -2441: ::extract_octagonal_difference(c, c.space_dimension(), num_vars, -2441: i, j, coeff, term)) { -2441: if (num_vars == 0) { -2441: return true; -2441: } -2441: -2441: typename OR_Matrix::const_row_iterator i_iter = matrix.row_begin() + i; -2441: typename OR_Matrix::const_row_reference_type m_i = *i_iter; -2441: return !is_plus_infinity(m_i[j]); -2441: } -2441: else { -2441: -2441: Optimization_Mode mode_bounds = -2441: from_above ? MAXIMIZATION : MINIMIZATION; -2441: MIP_Problem mip(space_dim, constraints(), expr, mode_bounds); -2441: return mip.solve() == OPTIMIZED_MIP_PROBLEM; -2441: } -2441: } -2441: -2441: template -2441: bool -2441: Octagonal_Shape::max_min(const Linear_Expression& expr, -2441: const bool maximize, -2441: Coefficient& ext_n, Coefficient& ext_d, -2441: bool& included) const { -2441: -2441: -2441: const dimension_type expr_space_dim = expr.space_dimension(); -2441: if (space_dim < expr_space_dim) { -2441: throw_dimension_incompatible((maximize -2441: ? "maximize(e, ...)" -2441: : "minimize(e, ...)"), "e", expr); -2441: } -2441: -2441: if (space_dim == 0) { -2441: if (marked_empty()) { -2441: return false; -2441: } -2441: else { -2441: ext_n = expr.inhomogeneous_term(); -2441: ext_d = 1; -2441: included = true; -2441: return true; -2441: } -2441: } -2441: -2441: strong_closure_assign(); -2441: -2441: if (marked_empty()) { -2441: return false; -2441: } -2441: -2441: -2441: -2441: const Constraint& c = (maximize) ? expr <= 0 : expr >= 0; -2441: dimension_type num_vars = 0; -2441: dimension_type i = 0; -2441: dimension_type j = 0; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_coeff; Parma_Polyhedra_Library::Coefficient& coeff = holder_coeff.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_term; Parma_Polyhedra_Library::Coefficient& term = holder_term.item(); -2441: if (!Octagonal_Shape_Helper -2441: ::extract_octagonal_difference(c, c.space_dimension(), num_vars, -2441: i, j, coeff, term)) { -2441: -2441: Optimization_Mode max_min = (maximize) ? MAXIMIZATION : MINIMIZATION; -2441: MIP_Problem mip(space_dim, constraints(), expr, max_min); -2441: if (mip.solve() == OPTIMIZED_MIP_PROBLEM) { -2441: mip.optimal_value(ext_n, ext_d); -2441: included = true; -2441: return true; -2441: } -2441: else { -2441: -2441: return false; -2441: } -2441: } -2441: else { -2441: -2441: if (num_vars == 0) { -2441: ext_n = expr.inhomogeneous_term(); -2441: ext_d = 1; -2441: included = true; -2441: return true; -2441: } -2441: -2441: -2441: typename OR_Matrix::const_row_iterator i_iter = matrix.row_begin() + i; -2441: typename OR_Matrix::const_row_reference_type m_i = *i_iter; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_d; N& d = holder_d.item(); -2441: if (!is_plus_infinity(m_i[j])) { -2441: const Coefficient& b = expr.inhomogeneous_term(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_b; Parma_Polyhedra_Library::Coefficient& minus_b = holder_minus_b.item(); -2441: neg_assign(minus_b, b); -2441: const Coefficient& sc_b = maximize ? b : minus_b; -2441: assign_r(d, sc_b, ROUND_UP); -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_coeff_expr; N& coeff_expr = holder_coeff_expr.item(); -2441: const Coefficient& coeff_i = expr.coefficient(Variable(i/2)); -2441: const int sign_i = sgn(coeff_i); -2441: if (sign_i > 0) { -2441: assign_r(coeff_expr, coeff_i, ROUND_UP); -2441: } -2441: else { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_coeff_i; Parma_Polyhedra_Library::Coefficient& minus_coeff_i = holder_minus_coeff_i.item(); -2441: neg_assign(minus_coeff_i, coeff_i); -2441: assign_r(coeff_expr, minus_coeff_i, ROUND_UP); -2441: } -2441: -2441: if (num_vars == 1) { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_m_i_j; N& m_i_j = holder_m_i_j.item(); -2441: div_2exp_assign_r(m_i_j, m_i[j], 1, ROUND_UP); -2441: add_mul_assign_r(d, coeff_expr, m_i_j, ROUND_UP); -2441: } -2441: else { -2441: add_mul_assign_r(d, coeff_expr, m_i[j], ROUND_UP); -2441: } -2441: numer_denom(d, ext_n, ext_d); -2441: if (!maximize) { -2441: neg_assign(ext_n); -2441: } -2441: included = true; -2441: return true; -2441: } -2441: -2441: -2441: return false; -2441: } -2441: } -2441: -2441: template -2441: bool -2441: Octagonal_Shape::max_min(const Linear_Expression& expr, -2441: const bool maximize, -2441: Coefficient& ext_n, Coefficient& ext_d, -2441: bool& included, Generator& g) const { -2441: -2441: -2441: const dimension_type expr_space_dim = expr.space_dimension(); -2441: if (space_dim < expr_space_dim) { -2441: throw_dimension_incompatible((maximize -2441: ? "maximize(e, ...)" -2441: : "minimize(e, ...)"), "e", expr); -2441: } -2441: -2441: if (space_dim == 0) { -2441: if (marked_empty()) { -2441: return false; -2441: } -2441: else { -2441: ext_n = expr.inhomogeneous_term(); -2441: ext_d = 1; -2441: included = true; -2441: g = point(); -2441: return true; -2441: } -2441: } -2441: -2441: strong_closure_assign(); -2441: -2441: if (marked_empty()) { -2441: return false; -2441: } -2441: if (!is_universe()) { -2441: -2441: -2441: Optimization_Mode max_min = (maximize) ? MAXIMIZATION : MINIMIZATION; -2441: MIP_Problem mip(space_dim, constraints(), expr, max_min); -2441: if (mip.solve() == OPTIMIZED_MIP_PROBLEM) { -2441: g = mip.optimizing_point(); -2441: mip.evaluate_objective_function(g, ext_n, ext_d); -2441: included = true; -2441: return true; -2441: } -2441: } -2441: -2441: return false; -2441: } -2441: -2441: template -2441: Poly_Con_Relation -2441: Octagonal_Shape::relation_with(const Congruence& cg) const { -2441: dimension_type cg_space_dim = cg.space_dimension(); -2441: -2441: -2441: if (cg_space_dim > space_dim) { -2441: throw_dimension_incompatible("relation_with(cg)", cg); -2441: } -2441: -2441: -2441: -2441: if (cg.is_equality()) { -2441: Constraint c(cg); -2441: return relation_with(c); -2441: } -2441: -2441: strong_closure_assign(); -2441: -2441: if (marked_empty()) { -2441: return Poly_Con_Relation::saturates() -2441: && Poly_Con_Relation::is_included() -2441: && Poly_Con_Relation::is_disjoint(); -2441: } -2441: -2441: if (space_dim == 0) { -2441: if (cg.is_inconsistent()) { -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: else { -2441: return Poly_Con_Relation::saturates() -2441: && Poly_Con_Relation::is_included(); -2441: } -2441: } -2441: -2441: -2441: -2441: Linear_Expression le(cg.expression()); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_min_numer; Parma_Polyhedra_Library::Coefficient& min_numer = holder_min_numer.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_min_denom; Parma_Polyhedra_Library::Coefficient& min_denom = holder_min_denom.item(); -2441: bool min_included; -2441: bool bounded_below = minimize(le, min_numer, min_denom, min_included); -2441: -2441: -2441: -2441: if (!bounded_below) { -2441: return Poly_Con_Relation::strictly_intersects(); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_max_numer; Parma_Polyhedra_Library::Coefficient& max_numer = holder_max_numer.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_max_denom; Parma_Polyhedra_Library::Coefficient& max_denom = holder_max_denom.item(); -2441: bool max_included; -2441: bool bounded_above = maximize(le, max_numer, max_denom, max_included); -2441: -2441: -2441: -2441: if (!bounded_above) { -2441: return Poly_Con_Relation::strictly_intersects(); -2441: } -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_signed_distance; Parma_Polyhedra_Library::Coefficient& signed_distance = holder_signed_distance.item(); -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_min_value; Parma_Polyhedra_Library::Coefficient& min_value = holder_min_value.item(); -2441: min_value = min_numer / min_denom; -2441: const Coefficient& modulus = cg.modulus(); -2441: signed_distance = min_value % modulus; -2441: min_value -= signed_distance; -2441: if (min_value * min_denom < min_numer) { -2441: min_value += modulus; -2441: } -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_max_value; Parma_Polyhedra_Library::Coefficient& max_value = holder_max_value.item(); -2441: max_value = max_numer / max_denom; -2441: signed_distance = max_value % modulus; -2441: max_value += signed_distance; -2441: if (max_value * max_denom > max_numer) { -2441: max_value -= modulus; -2441: } -2441: -2441: -2441: -2441: -2441: if (max_value < min_value) { -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: else { -2441: return Poly_Con_Relation::strictly_intersects(); -2441: } -2441: } -2441: -2441: template -2441: Poly_Con_Relation -2441: Octagonal_Shape::relation_with(const Constraint& c) const { -2441: dimension_type c_space_dim = c.space_dimension(); -2441: -2441: -2441: if (c_space_dim > space_dim) { -2441: throw_dimension_incompatible("relation_with(c)", c); -2441: } -2441: -2441: -2441: strong_closure_assign(); -2441: -2441: if (marked_empty()) { -2441: return Poly_Con_Relation::saturates() -2441: && Poly_Con_Relation::is_included() -2441: && Poly_Con_Relation::is_disjoint(); -2441: } -2441: -2441: if (space_dim == 0) { -2441: -2441: if ((c.is_equality() && c.inhomogeneous_term() != 0) -2441: || (c.is_inequality() && c.inhomogeneous_term() < 0)) { -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: else if (c.is_strict_inequality() && c.inhomogeneous_term() == 0) { -2441: -2441: -2441: return Poly_Con_Relation::saturates() -2441: && Poly_Con_Relation::is_disjoint(); -2441: } -2441: -2441: -2441: else if (c.is_equality() || c.inhomogeneous_term() == 0) { -2441: return Poly_Con_Relation::saturates() -2441: && Poly_Con_Relation::is_included(); -2441: } -2441: else { -2441: -2441: -2441: -2441: return Poly_Con_Relation::is_included(); -2441: } -2441: } -2441: -2441: dimension_type num_vars = 0; -2441: dimension_type i = 0; -2441: dimension_type j = 0; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_coeff; Parma_Polyhedra_Library::Coefficient& coeff = holder_coeff.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_c_term; Parma_Polyhedra_Library::Coefficient& c_term = holder_c_term.item(); -2441: if (!Octagonal_Shape_Helper -2441: ::extract_octagonal_difference(c, c_space_dim, num_vars, -2441: i, j, coeff, c_term)) { -2441: -2441: -2441: -2441: -2441: -2441: -2441: Linear_Expression le; -2441: le.set_space_dimension(c.space_dimension()); -2441: le.linear_combine(c.expr, Coefficient_one(), Coefficient_one(), -2441: 1, c_space_dim + 1); -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_max_numer; Parma_Polyhedra_Library::Coefficient& max_numer = holder_max_numer.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_max_denom; Parma_Polyhedra_Library::Coefficient& max_denom = holder_max_denom.item(); -2441: bool max_included; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_min_numer; Parma_Polyhedra_Library::Coefficient& min_numer = holder_min_numer.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_min_denom; Parma_Polyhedra_Library::Coefficient& min_denom = holder_min_denom.item(); -2441: bool min_included; -2441: bool bounded_above = maximize(le, max_numer, max_denom, max_included); -2441: bool bounded_below = minimize(le, min_numer, min_denom, min_included); -2441: if (!bounded_above) { -2441: if (!bounded_below) { -2441: return Poly_Con_Relation::strictly_intersects(); -2441: } -2441: min_numer += c.inhomogeneous_term() * min_denom; -2441: switch (sgn(min_numer)) { -2441: case 1: -2441: if (c.is_equality()) { -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: return Poly_Con_Relation::is_included(); -2441: case 0: -2441: if (c.is_strict_inequality() || c.is_equality()) { -2441: return Poly_Con_Relation::strictly_intersects(); -2441: } -2441: return Poly_Con_Relation::is_included(); -2441: case -1: -2441: return Poly_Con_Relation::strictly_intersects(); -2441: } -2441: } -2441: if (!bounded_below) { -2441: max_numer += c.inhomogeneous_term() * max_denom; -2441: switch (sgn(max_numer)) { -2441: case 1: -2441: return Poly_Con_Relation::strictly_intersects(); -2441: case 0: -2441: if (c.is_strict_inequality()) { -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: return Poly_Con_Relation::strictly_intersects(); -2441: case -1: -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: } -2441: else { -2441: max_numer += c.inhomogeneous_term() * max_denom; -2441: min_numer += c.inhomogeneous_term() * min_denom; -2441: switch (sgn(max_numer)) { -2441: case 1: -2441: switch (sgn(min_numer)) { -2441: case 1: -2441: if (c.is_equality()) { -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: return Poly_Con_Relation::is_included(); -2441: case 0: -2441: if (c.is_equality()) { -2441: return Poly_Con_Relation::strictly_intersects(); -2441: } -2441: if (c.is_strict_inequality()) { -2441: return Poly_Con_Relation::strictly_intersects(); -2441: } -2441: return Poly_Con_Relation::is_included(); -2441: case -1: -2441: return Poly_Con_Relation::strictly_intersects(); -2441: } -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: case 0: -2441: if (min_numer == 0) { -2441: if (c.is_strict_inequality()) { -2441: return Poly_Con_Relation::is_disjoint() -2441: && Poly_Con_Relation::saturates(); -2441: } -2441: return Poly_Con_Relation::is_included() -2441: && Poly_Con_Relation::saturates(); -2441: } -2441: if (c.is_strict_inequality()) { -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: return Poly_Con_Relation::strictly_intersects(); -2441: case -1: -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: } -2441: } -2441: -2441: if (num_vars == 0) { -2441: -2441: switch (sgn(c.inhomogeneous_term())) { -2441: case -1: -2441: return Poly_Con_Relation::is_disjoint(); -2441: case 0: -2441: if (c.is_strict_inequality()) { -2441: return Poly_Con_Relation::saturates() -2441: && Poly_Con_Relation::is_disjoint(); -2441: } -2441: else { -2441: return Poly_Con_Relation::saturates() -2441: && Poly_Con_Relation::is_included(); -2441: } -2441: case 1: -2441: if (c.is_equality()) { -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: else { -2441: return Poly_Con_Relation::is_included(); -2441: } -2441: } -2441: } -2441: -2441: -2441: typename OR_Matrix::const_row_iterator i_iter = matrix.row_begin() + i; -2441: typename OR_Matrix::const_row_reference_type m_i = *i_iter; -2441: const N& m_i_j = m_i[j]; -2441: -2441: if (coeff < 0) { -2441: neg_assign(coeff); -2441: } -2441: -2441: -2441: -2441: if (i % 2 == 0) { -2441: ++i_iter; -2441: } -2441: else { -2441: --i_iter; -2441: } -2441: typename OR_Matrix::const_row_reference_type m_ci = *i_iter; -2441: using namespace Implementation::Octagonal_Shapes; -2441: const N& m_ci_cj = m_ci[coherent_index(j)]; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_numer; Parma_Polyhedra_Library::Coefficient& numer = holder_numer.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_denom; Parma_Polyhedra_Library::Coefficient& denom = holder_denom.item(); -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_q_x; mpq_class& q_x = holder_q_x.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_q_y; mpq_class& q_y = holder_q_y.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_d; mpq_class& d = holder_d.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_d1; mpq_class& d1 = holder_d1.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_c_denom; mpq_class& c_denom = holder_c_denom.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_q_denom; mpq_class& q_denom = holder_q_denom.item(); -2441: assign_r(c_denom, coeff, ROUND_NOT_NEEDED); -2441: assign_r(d, c_term, ROUND_NOT_NEEDED); -2441: neg_assign_r(d1, d, ROUND_NOT_NEEDED); -2441: div_assign_r(d, d, c_denom, ROUND_NOT_NEEDED); -2441: div_assign_r(d1, d1, c_denom, ROUND_NOT_NEEDED); -2441: -2441: if (is_plus_infinity(m_i_j)) { -2441: if (!is_plus_infinity(m_ci_cj)) { -2441: -2441: -2441: -2441: -2441: -2441: -2441: numer_denom(m_ci_cj, numer, denom); -2441: assign_r(q_denom, denom, ROUND_NOT_NEEDED); -2441: assign_r(q_y, numer, ROUND_NOT_NEEDED); -2441: div_assign_r(q_y, q_y, q_denom, ROUND_NOT_NEEDED); -2441: if (q_y < d1) { -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: if (q_y == d1 && c.is_strict_inequality()) { -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: } -2441: -2441: -2441: return Poly_Con_Relation::strictly_intersects(); -2441: } -2441: -2441: -2441: numer_denom(m_i_j, numer, denom); -2441: assign_r(q_denom, denom, ROUND_NOT_NEEDED); -2441: assign_r(q_x, numer, ROUND_NOT_NEEDED); -2441: div_assign_r(q_x, q_x, q_denom, ROUND_NOT_NEEDED); -2441: -2441: if (!is_plus_infinity(m_ci_cj)) { -2441: numer_denom(m_ci_cj, numer, denom); -2441: assign_r(q_denom, denom, ROUND_NOT_NEEDED); -2441: assign_r(q_y, numer, ROUND_NOT_NEEDED); -2441: div_assign_r(q_y, q_y, q_denom, ROUND_NOT_NEEDED); -2441: if (q_x == d && q_y == d1) { -2441: if (c.is_strict_inequality()) { -2441: return Poly_Con_Relation::saturates() -2441: && Poly_Con_Relation::is_disjoint(); -2441: } -2441: else { -2441: return Poly_Con_Relation::saturates() -2441: && Poly_Con_Relation::is_included(); -2441: } -2441: } -2441: -2441: -2441: if (q_y < d1) { -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: if (q_y == d1 && c.is_strict_inequality()) { -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: } -2441: -2441: -2441: -2441: -2441: if (d > q_x) { -2441: if (c.is_equality()) { -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: else { -2441: return Poly_Con_Relation::is_included(); -2441: } -2441: } -2441: -2441: if (d == q_x && c.is_nonstrict_inequality()) { -2441: return Poly_Con_Relation::is_included(); -2441: } -2441: -2441: return Poly_Con_Relation::strictly_intersects(); -2441: } -2441: -2441: template -2441: Poly_Gen_Relation -2441: Octagonal_Shape::relation_with(const Generator& g) const { -2441: const dimension_type g_space_dim = g.space_dimension(); -2441: -2441: -2441: if (space_dim < g_space_dim) { -2441: throw_dimension_incompatible("relation_with(g)", g); -2441: } -2441: -2441: -2441: -2441: strong_closure_assign(); -2441: -2441: -2441: if (marked_empty()) { -2441: return Poly_Gen_Relation::nothing(); -2441: } -2441: -2441: -2441: -2441: if (space_dim == 0) { -2441: return Poly_Gen_Relation::subsumes(); -2441: } -2441: -2441: const bool is_line = g.is_line(); -2441: const bool is_line_or_ray = g.is_line_or_ray(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: typedef typename OR_Matrix::const_row_iterator row_iterator; -2441: typedef typename OR_Matrix::const_row_reference_type row_reference; -2441: -2441: const row_iterator m_begin = matrix.row_begin(); -2441: const row_iterator m_end = matrix.row_end(); -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_numer; Parma_Polyhedra_Library::Coefficient& numer = holder_numer.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_denom; Parma_Polyhedra_Library::Coefficient& denom = holder_denom.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_product; Parma_Polyhedra_Library::Coefficient& product = holder_product.item(); -2441: -2441: -2441: for (row_iterator i_iter = m_begin; i_iter != m_end; i_iter += 2) { -2441: dimension_type i = i_iter.index(); -2441: row_reference m_i = *i_iter; -2441: row_reference m_ii = *(i_iter + 1); -2441: const N& m_i_ii = m_i[i + 1]; -2441: const N& m_ii_i = m_ii[i]; -2441: -2441: const Variable x(i/2); -2441: const Coefficient& g_coeff_x -2441: = (x.space_dimension() > g_space_dim) -2441: ? Coefficient_zero() -2441: : g.coefficient(x); -2441: if (is_additive_inverse(m_i_ii, m_ii_i)) { -2441: -2441: -2441: -2441: -2441: numer_denom(m_ii_i, numer, denom); -2441: denom *= 2; -2441: product = denom * g_coeff_x; -2441: -2441: -2441: if (!is_line_or_ray) { -2441: neg_assign(numer); -2441: add_mul_assign(product, numer, g.divisor()); -2441: } -2441: if (product != 0) { -2441: return Poly_Gen_Relation::nothing(); -2441: } -2441: } -2441: -2441: else { -2441: if (!is_plus_infinity(m_i_ii)) { -2441: -2441: -2441: -2441: numer_denom(m_i_ii, numer, denom); -2441: denom *= -2; -2441: product = denom * g_coeff_x; -2441: -2441: -2441: if (!is_line_or_ray) { -2441: neg_assign(numer); -2441: add_mul_assign(product, numer, g.divisor()); -2441: } -2441: if (is_line && product != 0) { -2441: return Poly_Gen_Relation::nothing(); -2441: } -2441: else -2441: -2441: -2441: -2441: -2441: if (product > 0) { -2441: return Poly_Gen_Relation::nothing(); -2441: } -2441: } -2441: if (!is_plus_infinity(m_ii_i)) { -2441: -2441: numer_denom(m_ii_i, numer, denom); -2441: denom *= 2; -2441: product = denom * g_coeff_x; -2441: -2441: -2441: if (!is_line_or_ray) { -2441: neg_assign(numer); -2441: add_mul_assign(product, numer , g.divisor()); -2441: } -2441: if (is_line && product != 0) { -2441: return Poly_Gen_Relation::nothing(); -2441: } -2441: else { -2441: -2441: -2441: -2441: -2441: if (product > 0) { -2441: return Poly_Gen_Relation::nothing(); -2441: } -2441: } -2441: } -2441: } -2441: } -2441: -2441: -2441: for (row_iterator i_iter = m_begin ; i_iter != m_end; i_iter += 2) { -2441: dimension_type i = i_iter.index(); -2441: row_reference m_i = *i_iter; -2441: row_reference m_ii = *(i_iter + 1); -2441: for (dimension_type j = 0; j < i; j += 2) { -2441: const N& m_i_j = m_i[j]; -2441: const N& m_ii_jj = m_ii[j + 1]; -2441: const N& m_ii_j = m_ii[j]; -2441: const N& m_i_jj = m_i[j + 1]; -2441: const Variable x(j/2); -2441: const Variable y(i/2); -2441: const Coefficient& g_coeff_x -2441: = (x.space_dimension() > g_space_dim) -2441: ? Coefficient_zero() -2441: : g.coefficient(x); -2441: const Coefficient& g_coeff_y -2441: = (y.space_dimension() > g_space_dim) -2441: ? Coefficient_zero() -2441: : g.coefficient(y); -2441: -2441: const bool difference_is_equality = is_additive_inverse(m_ii_jj, m_i_j); -2441: if (difference_is_equality) { -2441: -2441: -2441: -2441: -2441: -2441: numer_denom(m_i_j, numer, denom); -2441: product = denom * g_coeff_x; -2441: neg_assign(denom); -2441: add_mul_assign(product, denom, g_coeff_y); -2441: -2441: -2441: if (!is_line_or_ray) { -2441: neg_assign(numer); -2441: add_mul_assign(product, numer, g.divisor()); -2441: } -2441: if (product != 0) { -2441: return Poly_Gen_Relation::nothing(); -2441: } -2441: } -2441: else { -2441: if (!is_plus_infinity(m_i_j)) { -2441: -2441: -2441: -2441: -2441: -2441: numer_denom(m_i_j, numer, denom); -2441: product = denom * g_coeff_x; -2441: neg_assign(denom); -2441: add_mul_assign(product, denom, g_coeff_y); -2441: -2441: -2441: if (!is_line_or_ray) { -2441: neg_assign(numer); -2441: add_mul_assign(product, numer, g.divisor()); -2441: } -2441: if (is_line && product != 0) { -2441: return Poly_Gen_Relation::nothing(); -2441: } -2441: else if (product > 0) { -2441: return Poly_Gen_Relation::nothing(); -2441: } -2441: } -2441: if (!is_plus_infinity(m_ii_jj)) { -2441: -2441: -2441: -2441: -2441: -2441: numer_denom(m_ii_jj, numer, denom); -2441: product = denom * g_coeff_y; -2441: neg_assign(denom); -2441: add_mul_assign(product, denom, g_coeff_x); -2441: -2441: -2441: if (!is_line_or_ray) { -2441: neg_assign(numer); -2441: add_mul_assign(product, numer, g.divisor()); -2441: } -2441: if (is_line && product != 0) { -2441: return Poly_Gen_Relation::nothing(); -2441: } -2441: else if (product > 0) { -2441: return Poly_Gen_Relation::nothing(); -2441: } -2441: } -2441: } -2441: -2441: const bool sum_is_equality = is_additive_inverse(m_i_jj, m_ii_j); -2441: if (sum_is_equality) { -2441: -2441: -2441: -2441: -2441: -2441: numer_denom(m_ii_j, numer, denom); -2441: product = denom * g_coeff_x; -2441: add_mul_assign(product, denom, g_coeff_y); -2441: -2441: -2441: if (!is_line_or_ray) { -2441: neg_assign(numer); -2441: add_mul_assign(product, numer, g.divisor()); -2441: } -2441: if (product != 0) { -2441: return Poly_Gen_Relation::nothing(); -2441: } -2441: } -2441: else { -2441: if (!is_plus_infinity(m_i_jj)) { -2441: -2441: -2441: -2441: -2441: -2441: numer_denom(m_i_jj, numer, denom); -2441: neg_assign(denom); -2441: product = denom * g_coeff_x; -2441: add_mul_assign(product, denom, g_coeff_y); -2441: -2441: -2441: if (!is_line_or_ray) { -2441: neg_assign(numer); -2441: add_mul_assign(product, numer, g.divisor()); -2441: } -2441: if (is_line && product != 0) { -2441: return Poly_Gen_Relation::nothing(); -2441: } -2441: else if (product > 0) { -2441: return Poly_Gen_Relation::nothing(); -2441: } -2441: } -2441: if (!is_plus_infinity(m_ii_j)) { -2441: -2441: -2441: -2441: -2441: -2441: numer_denom(m_ii_j, numer, denom); -2441: product = denom * g_coeff_x; -2441: add_mul_assign(product, denom, g_coeff_y); -2441: -2441: -2441: if (!is_line_or_ray) { -2441: neg_assign(numer); -2441: add_mul_assign(product, numer, g.divisor()); -2441: } -2441: if (is_line && product != 0) { -2441: return Poly_Gen_Relation::nothing(); -2441: } -2441: else if (product > 0) { -2441: return Poly_Gen_Relation::nothing(); -2441: } -2441: } -2441: } -2441: } -2441: } -2441: -2441: -2441: return Poly_Gen_Relation::subsumes(); -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::strong_closure_assign() const { -2441: -2441: if (marked_empty() || marked_strongly_closed() || space_dim == 0) { -2441: return; -2441: } -2441: -2441: -2441: Octagonal_Shape& x = const_cast&>(*this); -2441: -2441: typedef typename OR_Matrix::row_iterator row_iterator; -2441: typedef typename OR_Matrix::row_reference_type row_reference; -2441: -2441: const dimension_type n_rows = x.matrix.num_rows(); -2441: const row_iterator m_begin = x.matrix.row_begin(); -2441: const row_iterator m_end = x.matrix.row_end(); -2441: -2441: -2441: for (row_iterator i = m_begin; i != m_end; ++i) { -2441: ((void) 0); -2441: assign_r((*i)[i.index()], 0, ROUND_NOT_NEEDED); -2441: } -2441: # 2581 "../../src/Octagonal_Shape_templates.hh" -2441: typename OR_Matrix::element_iterator iter_ij; -2441: std::vector vec_k(n_rows); -2441: std::vector vec_ck(n_rows); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_sum1; N& sum1 = holder_sum1.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_sum2; N& sum2 = holder_sum2.item(); -2441: row_reference x_k; -2441: row_reference x_ck; -2441: row_reference x_i; -2441: row_reference x_ci; -2441: -2441: -2441: -2441: for (int twice = 0; twice < 2; ++twice) { -2441: -2441: row_iterator x_k_iter = m_begin; -2441: row_iterator x_i_iter = m_begin; -2441: for (dimension_type k = 0; k < n_rows; k += 2) { -2441: const dimension_type ck = k + 1; -2441: -2441: iter_ij = x.matrix.element_begin(); -2441: -2441: x_k = *x_k_iter; -2441: ++x_k_iter; -2441: x_ck = *x_k_iter; -2441: ++x_k_iter; -2441: -2441: for (dimension_type i = 0; i <= k; i += 2) { -2441: const dimension_type ci = i + 1; -2441: -2441: vec_k[i] = x_k[i]; -2441: -2441: vec_k[ci] = x_k[ci]; -2441: -2441: vec_ck[i] = x_ck[i]; -2441: -2441: vec_ck[ci] = x_ck[ci]; -2441: } -2441: x_i_iter = x_k_iter; -2441: for (dimension_type i = k + 2; i < n_rows; i += 2) { -2441: const dimension_type ci = i + 1; -2441: x_i = *x_i_iter; -2441: ++x_i_iter; -2441: x_ci = *x_i_iter; -2441: ++x_i_iter; -2441: -2441: vec_k[i] = x_ci[ck]; -2441: -2441: vec_k[ci] = x_i[ck]; -2441: -2441: vec_ck[i] = x_ci[k]; -2441: -2441: vec_ck[ci] = x_i[k]; -2441: } -2441: -2441: for (dimension_type i = 0; i < n_rows; ++i) { -2441: using namespace Implementation::Octagonal_Shapes; -2441: const dimension_type ci = coherent_index(i); -2441: const N& vec_k_ci = vec_k[ci]; -2441: const N& vec_ck_ci = vec_ck[ci]; -2441: -2441: -2441: for (dimension_type j = 0; j <= i; ) { -2441: -2441: -2441: -2441: -2441: -2441: -2441: add_assign_r(sum1, vec_ck_ci, vec_k[j], ROUND_UP); -2441: add_assign_r(sum2, vec_k_ci, vec_ck[j], ROUND_UP); -2441: min_assign(sum1, sum2); -2441: min_assign(*iter_ij, sum1); -2441: -2441: ++j; -2441: ++iter_ij; -2441: -2441: add_assign_r(sum1, vec_ck_ci, vec_k[j], ROUND_UP); -2441: add_assign_r(sum2, vec_k_ci, vec_ck[j], ROUND_UP); -2441: min_assign(sum1, sum2); -2441: min_assign(*iter_ij, sum1); -2441: -2441: ++j; -2441: ++iter_ij; -2441: } -2441: } -2441: } -2441: } -2441: -2441: -2441: -2441: for (row_iterator i = m_begin; i != m_end; ++i) { -2441: N& x_i_i = (*i)[i.index()]; -2441: if (sgn(x_i_i) < 0) { -2441: x.set_empty(); -2441: return; -2441: } -2441: else { -2441: ((void) 0); -2441: -2441: assign_r(x_i_i, PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: } -2441: -2441: -2441: x.strong_coherence_assign(); -2441: -2441: x.set_strongly_closed(); -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::strong_coherence_assign() { -2441: -2441: -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_semi_sum; N& semi_sum = holder_semi_sum.item(); -2441: for (typename OR_Matrix::row_iterator i_iter = matrix.row_begin(), -2441: i_end = matrix.row_end(); i_iter != i_end; ++i_iter) { -2441: typename OR_Matrix::row_reference_type x_i = *i_iter; -2441: const dimension_type i = i_iter.index(); -2441: using namespace Implementation::Octagonal_Shapes; -2441: const N& x_i_ci = x_i[coherent_index(i)]; -2441: -2441: if (!is_plus_infinity(x_i_ci)) { -2441: for (dimension_type j = 0, rs_i = i_iter.row_size(); -2441: j < rs_i; ++j) { -2441: if (i != j) { -2441: const N& x_cj_j = matrix[coherent_index(j)][j]; -2441: if (!is_plus_infinity(x_cj_j)) { -2441: add_assign_r(semi_sum, x_i_ci, x_cj_j, ROUND_UP); -2441: div_2exp_assign_r(semi_sum, semi_sum, 1, ROUND_UP); -2441: min_assign(x_i[j], semi_sum); -2441: } -2441: } -2441: } -2441: } -2441: } -2441: } -2441: -2441: template -2441: bool -2441: Octagonal_Shape::tight_coherence_would_make_empty() const { -2441: ((void) 0); -2441: ((void) 0); -2441: for (dimension_type i = 0; i < 2*space_dim; i += 2) { -2441: const dimension_type ci = i + 1; -2441: const N& mat_i_ci = matrix[i][ci]; -2441: if (!is_plus_infinity(mat_i_ci) -2441: -2441: && !is_even(mat_i_ci) -2441: -2441: && is_additive_inverse(mat_i_ci, matrix[ci][i])) { -2441: return true; -2441: } -2441: } -2441: return false; -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::tight_closure_assign() { -2441: enum anonymous_enum_compile_time_check___LINE__ { compile_time_check_2746 = sizeof(Parma_Polyhedra_Library::Compile_Time_Check<(std::numeric_limits::is_integer)>) } -2441: -2441: ; -2441: -2441: -2441: strong_closure_assign(); -2441: if (marked_empty()) { -2441: return; -2441: } -2441: if (tight_coherence_would_make_empty()) { -2441: set_empty(); -2441: } -2441: else { -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_temp_one; N& temp_one = holder_temp_one.item(); -2441: assign_r(temp_one, 1, ROUND_NOT_NEEDED); -2441: for (dimension_type i = 0; i < 2*space_dim; i += 2) { -2441: const dimension_type ci = i + 1; -2441: N& mat_i_ci = matrix[i][ci]; -2441: if (!is_plus_infinity(mat_i_ci) && !is_even(mat_i_ci)) { -2441: sub_assign_r(mat_i_ci, mat_i_ci, temp_one, ROUND_UP); -2441: } -2441: N& mat_ci_i = matrix[ci][i]; -2441: if (!is_plus_infinity(mat_ci_i) && !is_even(mat_ci_i)) { -2441: sub_assign_r(mat_ci_i, mat_ci_i, temp_one, ROUND_UP); -2441: } -2441: } -2441: -2441: strong_coherence_assign(); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape -2441: ::incremental_strong_closure_assign(const Variable var) const { -2441: -2441: if (var.id() >= space_dim) { -2441: throw_dimension_incompatible("incremental_strong_closure_assign(v)", -2441: var.id()); -2441: } -2441: -2441: -2441: if (marked_empty() || marked_strongly_closed()) { -2441: return; -2441: } -2441: -2441: Octagonal_Shape& x = const_cast&>(*this); -2441: -2441: typedef typename OR_Matrix::row_iterator row_iterator; -2441: typedef typename OR_Matrix::row_reference_type row_reference; -2441: -2441: const row_iterator m_begin = x.matrix.row_begin(); -2441: const row_iterator m_end = x.matrix.row_end(); -2441: -2441: -2441: for (row_iterator i = m_begin; i != m_end; ++i) { -2441: ((void) 0); -2441: assign_r((*i)[i.index()], 0, ROUND_NOT_NEEDED); -2441: } -2441: -2441: -2441: -2441: const dimension_type v = 2*var.id(); -2441: const dimension_type cv = v + 1; -2441: row_iterator v_iter = m_begin + v; -2441: row_iterator cv_iter = v_iter + 1; -2441: row_reference x_v = *v_iter; -2441: row_reference x_cv = *cv_iter; -2441: const dimension_type rs_v = v_iter.row_size(); -2441: const dimension_type n_rows = x.matrix.num_rows(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_sum; N& sum = holder_sum.item(); -2441: using namespace Implementation::Octagonal_Shapes; -2441: for (row_iterator k_iter = m_begin; k_iter != m_end; ++k_iter) { -2441: const dimension_type k = k_iter.index(); -2441: const dimension_type ck = coherent_index(k); -2441: const dimension_type rs_k = k_iter.row_size(); -2441: row_reference x_k = *k_iter; -2441: row_reference x_ck = (k % 2 != 0) ? *(k_iter-1) : *(k_iter + 1); -2441: -2441: for (row_iterator i_iter = m_begin; i_iter != m_end; ++i_iter) { -2441: const dimension_type i = i_iter.index(); -2441: const dimension_type ci = coherent_index(i); -2441: const dimension_type rs_i = i_iter.row_size(); -2441: row_reference x_i = *i_iter; -2441: row_reference x_ci = (i % 2 != 0) ? *(i_iter-1) : *(i_iter + 1); -2441: -2441: const N& x_i_k = (k < rs_i) ? x_i[k] : x_ck[ci]; -2441: if (!is_plus_infinity(x_i_k)) { -2441: const N& x_k_v = (v < rs_k) ? x_k[v] : x_cv[ck]; -2441: if (!is_plus_infinity(x_k_v)) { -2441: add_assign_r(sum, x_i_k, x_k_v, ROUND_UP); -2441: N& x_i_v = (v < rs_i) ? x_i[v] : x_cv[ci]; -2441: min_assign(x_i_v, sum); -2441: } -2441: const N& x_k_cv = (cv < rs_k) ? x_k[cv] : x_v[ck]; -2441: if (!is_plus_infinity(x_k_cv)) { -2441: add_assign_r(sum, x_i_k, x_k_cv, ROUND_UP); -2441: N& x_i_cv = (cv < rs_i) ? x_i[cv] : x_v[ci]; -2441: min_assign(x_i_cv, sum); -2441: } -2441: } -2441: const N& x_k_i = (i < rs_k) ? x_k[i] : x_ci[ck]; -2441: if (!is_plus_infinity(x_k_i)) { -2441: const N& x_v_k = (k < rs_v) ? x_v[k] : x_ck[cv]; -2441: if (!is_plus_infinity(x_v_k)) { -2441: N& x_v_i = (i < rs_v) ? x_v[i] : x_ci[cv]; -2441: add_assign_r(sum, x_v_k, x_k_i, ROUND_UP); -2441: min_assign(x_v_i, sum); -2441: } -2441: const N& x_cv_k = (k < rs_v) ? x_cv[k] : x_ck[v]; -2441: if (!is_plus_infinity(x_cv_k)) { -2441: N& x_cv_i = (i < rs_v) ? x_cv[i] : x_ci[v]; -2441: add_assign_r(sum, x_cv_k, x_k_i, ROUND_UP); -2441: min_assign(x_cv_i, sum); -2441: } -2441: } -2441: -2441: } -2441: } -2441: -2441: -2441: -2441: for (row_iterator i_iter = m_begin; i_iter != m_end; ++i_iter) { -2441: const dimension_type i = i_iter.index(); -2441: const dimension_type ci = coherent_index(i); -2441: const dimension_type rs_i = i_iter.row_size(); -2441: row_reference x_i = *i_iter; -2441: const N& x_i_v = (v < rs_i) ? x_i[v] : x_cv[ci]; -2441: -2441: -2441: -2441: for (dimension_type j = 0; j < n_rows; ++j) { -2441: const dimension_type cj = coherent_index(j); -2441: row_reference x_cj = *(m_begin + cj); -2441: N& x_i_j = (j < rs_i) ? x_i[j] : x_cj[ci]; -2441: if (!is_plus_infinity(x_i_v)) { -2441: const N& x_v_j = (j < rs_v) ? x_v[j] : x_cj[cv]; -2441: if (!is_plus_infinity(x_v_j)) { -2441: add_assign_r(sum, x_i_v, x_v_j, ROUND_UP); -2441: min_assign(x_i_j, sum); -2441: } -2441: } -2441: const N& x_i_cv = (cv < rs_i) ? x_i[cv] : x_v[ci]; -2441: if (!is_plus_infinity(x_i_cv)) { -2441: const N& x_cv_j = (j < rs_v) ? x_cv[j] : x_cj[v]; -2441: if (!is_plus_infinity(x_cv_j)) { -2441: add_assign_r(sum, x_i_cv, x_cv_j, ROUND_UP); -2441: min_assign(x_i_j, sum); -2441: } -2441: } -2441: } -2441: } -2441: -2441: -2441: -2441: for (row_iterator i = m_begin; i != m_end; ++i) { -2441: N& x_i_i = (*i)[i.index()]; -2441: if (sgn(x_i_i) < 0) { -2441: x.set_empty(); -2441: return; -2441: } -2441: else { -2441: -2441: ((void) 0); -2441: assign_r(x_i_i, PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: } -2441: -2441: -2441: x.strong_coherence_assign(); -2441: -2441: x.set_strongly_closed(); -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape -2441: ::compute_successors(std::vector& successor) const { -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: -2441: -2441: const dimension_type successor_size = matrix.num_rows(); -2441: -2441: successor.reserve(successor_size); -2441: for (dimension_type i = 0; i < successor_size; ++i) { -2441: successor.push_back(i); -2441: } -2441: -2441: for (dimension_type i = successor_size; i-- > 0; ) { -2441: typename OR_Matrix::const_row_iterator i_iter = matrix.row_begin() + i; -2441: typename OR_Matrix::const_row_reference_type m_i = *i_iter; -2441: typename OR_Matrix::const_row_reference_type m_ci -2441: = (i % 2 != 0) ? *(i_iter-1) : *(i_iter + 1); -2441: for (dimension_type j = 0; j < i; ++j) { -2441: -2441: -2441: using namespace Implementation::Octagonal_Shapes; -2441: dimension_type cj = coherent_index(j); -2441: if (is_additive_inverse(m_ci[cj], m_i[j])) { -2441: -2441: successor[j] = i; -2441: } -2441: } -2441: } -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape -2441: ::compute_leaders(std::vector& leaders) const { -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: -2441: -2441: const dimension_type leader_size = matrix.num_rows(); -2441: -2441: leaders.reserve(leader_size); -2441: for (dimension_type i = 0; i < leader_size; ++i) { -2441: leaders.push_back(i); -2441: } -2441: -2441: for (typename OR_Matrix::const_row_iterator i_iter = matrix.row_begin(), -2441: matrix_row_end = matrix.row_end(); -2441: i_iter != matrix_row_end; ++i_iter) { -2441: typename OR_Matrix::const_row_reference_type m_i = *i_iter; -2441: dimension_type i = i_iter.index(); -2441: typename OR_Matrix::const_row_reference_type m_ci -2441: = (i % 2 != 0) ? *(i_iter-1) : *(i_iter + 1); -2441: for (dimension_type j = 0; j < i; ++j) { -2441: using namespace Implementation::Octagonal_Shapes; -2441: dimension_type cj = coherent_index(j); -2441: if (is_additive_inverse(m_ci[cj], m_i[j])) { -2441: -2441: leaders[i] = leaders[j]; -2441: } -2441: } -2441: } -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape -2441: ::compute_leaders(std::vector& successor, -2441: std::vector& no_sing_leaders, -2441: bool& exist_sing_class, -2441: dimension_type& sing_leader) const { -2441: ((void) 0); -2441: ((void) 0); -2441: dimension_type successor_size = successor.size(); -2441: std::deque dealt_with(successor_size, false); -2441: for (dimension_type i = 0; i < successor_size; ++i) { -2441: dimension_type next_i = successor[i]; -2441: if (!dealt_with[i]) { -2441: -2441: -2441: using namespace Implementation::Octagonal_Shapes; -2441: if (next_i == coherent_index(i)) { -2441: exist_sing_class = true; -2441: sing_leader = i; -2441: } -2441: else { -2441: no_sing_leaders.push_back(i); -2441: } -2441: } -2441: -2441: dealt_with[next_i] = true; -2441: } -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::strong_reduction_assign() const { -2441: -2441: if (space_dim == 0) { -2441: return; -2441: } -2441: strong_closure_assign(); -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: std::vector non_red; -2441: non_redundant_matrix_entries(non_red); -2441: -2441: -2441: Octagonal_Shape& x = const_cast&>(*this); -2441: -2441: -2441: -2441: typename OR_Matrix::element_iterator x_i = x.matrix.element_begin(); -2441: for (dimension_type i = 0; i < 2 * space_dim; ++i) { -2441: const Bit_Row& non_red_i = non_red[i]; -2441: for (dimension_type j = 0, -2441: j_end = OR_Matrix::row_size(i); j < j_end; ++j, ++x_i) { -2441: if (!non_red_i[j]) { -2441: assign_r(*x_i, PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: } -2441: } -2441: x.reset_strongly_closed(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape -2441: ::non_redundant_matrix_entries(std::vector& non_redundant) const { -2441: -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: -2441: -2441: non_redundant.resize(2*space_dim); -2441: -2441: -2441: -2441: -2441: -2441: std::vector no_sing_leaders; -2441: dimension_type sing_leader = 0; -2441: bool exist_sing_class = false; -2441: std::vector successor; -2441: compute_successors(successor); -2441: compute_leaders(successor, no_sing_leaders, exist_sing_class, sing_leader); -2441: const dimension_type num_no_sing_leaders = no_sing_leaders.size(); -2441: -2441: -2441: -2441: -2441: for (dimension_type li = 0; li < num_no_sing_leaders; ++li) { -2441: const dimension_type i = no_sing_leaders[li]; -2441: using namespace Implementation::Octagonal_Shapes; -2441: const dimension_type ci = coherent_index(i); -2441: typename OR_Matrix::const_row_reference_type -2441: m_i = *(matrix.row_begin() + i); -2441: if (i % 2 == 0) { -2441: -2441: -2441: -2441: -2441: -2441: if (i != successor[i]) { -2441: dimension_type j = i; -2441: dimension_type next_j = successor[j]; -2441: while (j != next_j) { -2441: non_redundant[next_j].set(j); -2441: j = next_j; -2441: next_j = successor[j]; -2441: } -2441: const dimension_type cj = coherent_index(j); -2441: non_redundant[cj].set(ci); -2441: } -2441: } -2441: -2441: dimension_type rs_li = (li % 2 != 0) ? li : (li + 1); -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp; N& tmp = holder_tmp.item(); -2441: for (dimension_type lj = 0 ; lj <= rs_li; ++lj) { -2441: const dimension_type j = no_sing_leaders[lj]; -2441: const dimension_type cj = coherent_index(j); -2441: const N& m_i_j = m_i[j]; -2441: const N& m_i_ci = m_i[ci]; -2441: bool to_add = true; -2441: -2441: -2441: -2441: if (j != ci) { -2441: add_assign_r(tmp, m_i_ci, matrix[cj][j], ROUND_UP); -2441: div_2exp_assign_r(tmp, tmp, 1, ROUND_UP); -2441: if (m_i_j >= tmp) { -2441: -2441: continue; -2441: } -2441: } -2441: # 3140 "../../src/Octagonal_Shape_templates.hh" -2441: for (dimension_type lk = 0; lk < num_no_sing_leaders; ++lk) { -2441: const dimension_type k = no_sing_leaders[lk]; -2441: if (k != i && k != j) { -2441: dimension_type ck = coherent_index(k); -2441: if (k < j) { -2441: -2441: add_assign_r(tmp, m_i[k], matrix[cj][ck], ROUND_UP); -2441: } -2441: else if (k < i) { -2441: -2441: add_assign_r(tmp, m_i[k], matrix[k][j], ROUND_UP); -2441: } -2441: else { -2441: -2441: add_assign_r(tmp, matrix[ck][ci], matrix[k][j], ROUND_UP); -2441: } -2441: -2441: if (m_i_j >= tmp) { -2441: to_add = false; -2441: break; -2441: } -2441: } -2441: } -2441: -2441: if (to_add) { -2441: -2441: non_redundant[i].set(j); -2441: } -2441: } -2441: } -2441: -2441: -2441: -2441: -2441: -2441: if (exist_sing_class) { -2441: non_redundant[sing_leader].set(sing_leader + 1); -2441: if (successor[sing_leader + 1] != sing_leader + 1) { -2441: dimension_type j = sing_leader; -2441: dimension_type next_j = successor[j + 1]; -2441: while (next_j != j + 1) { -2441: non_redundant[next_j].set(j); -2441: j = next_j; -2441: next_j = successor[j + 1]; -2441: } -2441: non_redundant[j + 1].set(j); -2441: } -2441: else { -2441: non_redundant[sing_leader + 1].set(sing_leader); -2441: } -2441: } -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::upper_bound_assign(const Octagonal_Shape& y) { -2441: -2441: if (space_dim != y.space_dim) { -2441: throw_dimension_incompatible("upper_bound_assign(y)", y); -2441: } -2441: -2441: -2441: y.strong_closure_assign(); -2441: if (y.marked_empty()) { -2441: return; -2441: } -2441: strong_closure_assign(); -2441: if (marked_empty()) { -2441: *this = y; -2441: return; -2441: } -2441: -2441: -2441: typename OR_Matrix::const_element_iterator j = y.matrix.element_begin(); -2441: for (typename OR_Matrix::element_iterator i = matrix.element_begin(), -2441: matrix_element_end = matrix.element_end(); -2441: i != matrix_element_end; ++i, ++j) { -2441: max_assign(*i, *j); -2441: } -2441: -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::difference_assign(const Octagonal_Shape& y) { -2441: -2441: if (space_dim != y.space_dim) { -2441: throw_dimension_incompatible("difference_assign(y)", y); -2441: } -2441: -2441: Octagonal_Shape& x = *this; -2441: -2441: -2441: -2441: x.strong_closure_assign(); -2441: -2441: if (x.marked_empty()) { -2441: return; -2441: } -2441: -2441: if (y.marked_empty()) { -2441: return; -2441: } -2441: -2441: -2441: -2441: if (x.space_dim == 0) { -2441: x.set_empty(); -2441: return; -2441: } -2441: -2441: -2441: -2441: if (y.contains(x)) { -2441: x.set_empty(); -2441: return; -2441: } -2441: -2441: Octagonal_Shape new_oct(space_dim, EMPTY); -2441: -2441: -2441: -2441: const Constraint_System& y_cs = y.constraints(); -2441: for (Constraint_System::const_iterator i = y_cs.begin(), -2441: y_cs_end = y_cs.end(); i != y_cs_end; ++i) { -2441: const Constraint& c = *i; -2441: -2441: -2441: -2441: -2441: if (x.relation_with(c).implies(Poly_Con_Relation::is_included())) { -2441: continue; -2441: } -2441: Octagonal_Shape z = x; -2441: const Linear_Expression e(c.expression()); -2441: z.add_constraint(e <= 0); -2441: if (!z.is_empty()) { -2441: new_oct.upper_bound_assign(z); -2441: } -2441: if (c.is_equality()) { -2441: z = x; -2441: z.add_constraint(e >= 0); -2441: if (!z.is_empty()) { -2441: new_oct.upper_bound_assign(z); -2441: } -2441: } -2441: } -2441: *this = new_oct; -2441: ((void) 0); -2441: } -2441: -2441: template -2441: bool -2441: Octagonal_Shape::simplify_using_context_assign(const Octagonal_Shape& y) { -2441: Octagonal_Shape& x = *this; -2441: const dimension_type dim = x.space_dimension(); -2441: -2441: if (dim != y.space_dimension()) { -2441: throw_dimension_incompatible("simplify_using_context_assign(y)", y); -2441: } -2441: -2441: -2441: if (dim == 0) { -2441: if (y.marked_empty()) { -2441: x.set_zero_dim_univ(); -2441: return false; -2441: } -2441: else { -2441: return !x.marked_empty(); -2441: } -2441: } -2441: -2441: -2441: -2441: if (x.contains(y)) { -2441: Octagonal_Shape res(dim, UNIVERSE); -2441: x.m_swap(res); -2441: return false; -2441: } -2441: -2441: -2441: x.strong_closure_assign(); -2441: if (x.marked_empty()) { -2441: -2441: dimension_type i; -2441: dimension_type j; -2441: -2441: for (i = 0; i < 2*dim; i += 2) { -2441: -2441: -2441: -2441: -2441: if (!is_plus_infinity(y.matrix_at(i, i + 1))) { -2441: j = i + 1; -2441: goto found; -2441: } -2441: -2441: if (!is_plus_infinity(y.matrix_at(i + 1, i))) { -2441: j = i; -2441: ++i; -2441: goto found; -2441: } -2441: } -2441: -2441: -2441: for (i = 2; i < 2*dim; ++i) { -2441: for (j = 0; j < i; ++j) { -2441: -2441: if (!is_plus_infinity(y.matrix_at(i, j))) { -2441: goto found; -2441: } -2441: } -2441: } -2441: -2441: -2441: -2441: return false; -2441: -2441: found: -2441: -2441: ((void) 0); -2441: Octagonal_Shape res(dim, UNIVERSE); -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp; N& tmp = holder_tmp.item(); -2441: assign_r(tmp, 1, ROUND_UP); -2441: add_assign_r(tmp, tmp, y.matrix_at(i, j), ROUND_UP); -2441: -2441: neg_assign_r(res.matrix_at(j, i), tmp, ROUND_DOWN); -2441: ((void) 0); -2441: x.m_swap(res); -2441: return false; -2441: } -2441: -2441: -2441: -2441: -2441: Octagonal_Shape target = x; -2441: target.intersection_assign(y); -2441: const bool bool_result = !target.is_empty(); -2441: -2441: -2441: -2441: std::vector x_non_redundant; -2441: x.non_redundant_matrix_entries(x_non_redundant); -2441: -2441: dimension_type x_num_non_redundant = 0; -2441: for (size_t i = x_non_redundant.size(); i-- > 0 ; ) { -2441: x_num_non_redundant += x_non_redundant[i].count_ones(); -2441: } -2441: ((void) 0); -2441: -2441: -2441: -2441: -2441: Octagonal_Shape yy = y; -2441: -2441: -2441: Octagonal_Shape res(dim, UNIVERSE); -2441: -2441: dimension_type res_num_non_redundant = 0; -2441: -2441: -2441: std::vector x_leaders; -2441: x.compute_leaders(x_leaders); -2441: -2441: -2441: -2441: dimension_type sing_leader; -2441: for (sing_leader = 0; sing_leader < 2*dim; sing_leader += 2) { -2441: if (sing_leader == x_leaders[sing_leader]) { -2441: const N& x_s_ss = x.matrix_at(sing_leader, sing_leader + 1); -2441: const N& x_ss_s = x.matrix_at(sing_leader + 1, sing_leader); -2441: if (is_additive_inverse(x_s_ss, x_ss_s)) { -2441: -2441: break; -2441: } -2441: } -2441: } -2441: -2441: -2441: for (dimension_type i = sing_leader; i < 2*dim; i += 2) { -2441: if (x_leaders[i] != sing_leader) { -2441: continue; -2441: } -2441: -2441: -2441: const N& x_i_ii = x.matrix_at(i, i + 1); -2441: N& yy_i_ii = yy.matrix_at(i, i + 1); -2441: if (x_i_ii < yy_i_ii) { -2441: -2441: res.matrix_at(i, i + 1) = x_i_ii; -2441: ++res_num_non_redundant; -2441: -2441: yy_i_ii = x_i_ii; -2441: yy.reset_strongly_closed(); -2441: } -2441: const N& x_ii_i = x.matrix_at(i + 1, i); -2441: N& yy_ii_i = yy.matrix_at(i + 1, i); -2441: if (x_ii_i < yy_ii_i) { -2441: -2441: res.matrix_at(i + 1, i) = x_ii_i; -2441: ++res_num_non_redundant; -2441: -2441: yy_ii_i = x_ii_i; -2441: yy.reset_strongly_closed(); -2441: } -2441: -2441: if (!yy.marked_strongly_closed()) { -2441: Variable var_i(i/2); -2441: yy.incremental_strong_closure_assign(var_i); -2441: if (target.contains(yy)) { -2441: -2441: if (res_num_non_redundant < x_num_non_redundant) { -2441: res.reset_strongly_closed(); -2441: x.m_swap(res); -2441: } -2441: return bool_result; -2441: } -2441: } -2441: } -2441: -2441: -2441: for (dimension_type i = 0; i < 2*dim; ++i) { -2441: const dimension_type j = x_leaders[i]; -2441: if (j == i || j == sing_leader) { -2441: continue; -2441: } -2441: const N& x_i_j = x.matrix_at(i, j); -2441: ((void) 0); -2441: N& yy_i_j = yy.matrix_at(i, j); -2441: if (x_i_j < yy_i_j) { -2441: res.matrix_at(i, j) = x_i_j; -2441: ++res_num_non_redundant; -2441: -2441: yy_i_j = x_i_j; -2441: yy.reset_strongly_closed(); -2441: } -2441: const N& x_j_i = x.matrix_at(j, i); -2441: N& yy_j_i = yy.matrix_at(j, i); -2441: ((void) 0); -2441: if (x_j_i < yy_j_i) { -2441: res.matrix_at(j, i) = x_j_i; -2441: ++res_num_non_redundant; -2441: -2441: yy_j_i = x_j_i; -2441: yy.reset_strongly_closed(); -2441: } -2441: -2441: if (!yy.marked_strongly_closed()) { -2441: Variable var_j(j/2); -2441: yy.incremental_strong_closure_assign(var_j); -2441: if (target.contains(yy)) { -2441: -2441: if (res_num_non_redundant < x_num_non_redundant) { -2441: res.reset_strongly_closed(); -2441: x.m_swap(res); -2441: } -2441: return bool_result; -2441: } -2441: } -2441: } -2441: -2441: -2441: -2441: -2441: for (dimension_type i = 0; i < 2*dim; ++i) { -2441: if (i != x_leaders[i]) { -2441: continue; -2441: } -2441: const Bit_Row& x_non_redundant_i = x_non_redundant[i]; -2441: for (dimension_type j = 0; j < 2*dim; ++j) { -2441: if (j != x_leaders[j]) { -2441: continue; -2441: } -2441: if (i >= j) { -2441: if (!x_non_redundant_i[j]) { -2441: continue; -2441: } -2441: } -2441: else if (!x_non_redundant[j][i]) { -2441: continue; -2441: } -2441: N& yy_i_j = yy.matrix_at(i, j); -2441: const N& x_i_j = x.matrix_at(i, j); -2441: if (x_i_j < yy_i_j) { -2441: res.matrix_at(i, j) = x_i_j; -2441: ++res_num_non_redundant; -2441: -2441: yy_i_j = x_i_j; -2441: yy.reset_strongly_closed(); -2441: Variable var(i/2); -2441: yy.incremental_strong_closure_assign(var); -2441: if (target.contains(yy)) { -2441: -2441: if (res_num_non_redundant < x_num_non_redundant) { -2441: res.reset_strongly_closed(); -2441: x.m_swap(res); -2441: } -2441: return bool_result; -2441: } -2441: } -2441: } -2441: } -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return false; -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::add_space_dimensions_and_embed(dimension_type m) { -2441: -2441: if (m == 0) { -2441: return; -2441: } -2441: -2441: const dimension_type new_dim = space_dim + m; -2441: const bool was_zero_dim_univ = !marked_empty() && space_dim == 0; -2441: -2441: -2441: -2441: matrix.grow(new_dim); -2441: space_dim = new_dim; -2441: -2441: -2441: if (was_zero_dim_univ) { -2441: set_strongly_closed(); -2441: } -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::add_space_dimensions_and_project(dimension_type m) { -2441: -2441: if (m == 0) { -2441: return; -2441: } -2441: -2441: const dimension_type n = matrix.num_rows(); -2441: -2441: -2441: -2441: add_space_dimensions_and_embed(m); -2441: -2441: -2441: for (typename OR_Matrix::row_iterator i = matrix.row_begin() + n, -2441: matrix_row_end = matrix.row_end(); i != matrix_row_end; i += 2) { -2441: typename OR_Matrix::row_reference_type x_i = *i; -2441: typename OR_Matrix::row_reference_type x_ci = *(i + 1); -2441: const dimension_type ind = i.index(); -2441: assign_r(x_i[ind + 1], 0, ROUND_NOT_NEEDED); -2441: assign_r(x_ci[ind], 0, ROUND_NOT_NEEDED); -2441: } -2441: -2441: if (marked_strongly_closed()) { -2441: reset_strongly_closed(); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::remove_space_dimensions(const Variables_Set& vars) { -2441: -2441: -2441: -2441: if (vars.empty()) { -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: -2441: const dimension_type min_space_dim = vars.space_dimension(); -2441: if (space_dim < min_space_dim) { -2441: throw_dimension_incompatible("remove_space_dimensions(vs)", min_space_dim); -2441: } -2441: -2441: const dimension_type new_space_dim = space_dim - vars.size(); -2441: -2441: strong_closure_assign(); -2441: -2441: -2441: if (new_space_dim == 0) { -2441: matrix.shrink(0); -2441: if (!marked_empty()) { -2441: -2441: set_zero_dim_univ(); -2441: } -2441: space_dim = 0; -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: -2441: -2441: -2441: typedef typename OR_Matrix::element_iterator Elem_Iter; -2441: typedef typename std::iterator_traits::difference_type diff_t; -2441: -2441: dimension_type first = *vars.begin(); -2441: const dimension_type first_size = 2 * first * (first + 1); -2441: Elem_Iter iter = matrix.element_begin() + static_cast(first_size); -2441: -2441: for (dimension_type i = first + 1; i < space_dim; ++i) { -2441: if (vars.count(i) == 0) { -2441: typename OR_Matrix::row_iterator row_iter = matrix.row_begin() + 2*i; -2441: typename OR_Matrix::row_reference_type row_ref = *row_iter; -2441: typename OR_Matrix::row_reference_type row_ref1 = *(++row_iter); -2441: -2441: -2441: -2441: -2441: for (dimension_type j = 0; j <= i; ++j) { -2441: if (vars.count(j) == 0) { -2441: assign_or_swap(*(iter++), row_ref[2*j]); -2441: assign_or_swap(*(iter++), row_ref[2*j + 1]); -2441: } -2441: } -2441: for (dimension_type j = 0; j <= i; ++j) { -2441: if (vars.count(j) == 0) { -2441: assign_or_swap(*(iter++), row_ref1[2*j]); -2441: assign_or_swap(*(iter++), row_ref1[2*j + 1]); -2441: } -2441: } -2441: } -2441: } -2441: -2441: matrix.shrink(new_space_dim); -2441: space_dim = new_space_dim; -2441: ((void) 0); -2441: } -2441: -2441: template -2441: template -2441: void -2441: Octagonal_Shape::map_space_dimensions(const Partial_Function& pfunc) { -2441: if (space_dim == 0) { -2441: return; -2441: } -2441: -2441: if (pfunc.has_empty_codomain()) { -2441: -2441: remove_higher_space_dimensions(0); -2441: return; -2441: } -2441: -2441: const dimension_type new_space_dim = pfunc.max_in_codomain() + 1; -2441: -2441: -2441: if (new_space_dim < space_dim) { -2441: strong_closure_assign(); -2441: } -2441: -2441: -2441: if (marked_empty()) { -2441: remove_higher_space_dimensions(new_space_dim); -2441: return; -2441: } -2441: -2441: -2441: OR_Matrix x(new_space_dim); -2441: -2441: typedef typename OR_Matrix::row_iterator row_iterator; -2441: typedef typename OR_Matrix::row_reference_type row_reference; -2441: -2441: row_iterator m_begin = x.row_begin(); -2441: -2441: for (row_iterator i_iter = matrix.row_begin(), i_end = matrix.row_end(); -2441: i_iter != i_end; i_iter += 2) { -2441: dimension_type new_i; -2441: dimension_type i = i_iter.index()/2; -2441: -2441: -2441: -2441: if (pfunc.maps(i, new_i)) { -2441: row_reference r_i = *i_iter; -2441: row_reference r_ii = *(i_iter + 1); -2441: dimension_type double_new_i = 2*new_i; -2441: row_iterator x_iter = m_begin + double_new_i; -2441: row_reference x_i = *x_iter; -2441: row_reference x_ii = *(x_iter + 1); -2441: for (dimension_type j = 0; j <= i; ++j) { -2441: dimension_type new_j; -2441: -2441: if (pfunc.maps(j, new_j)) { -2441: dimension_type dj = 2*j; -2441: dimension_type double_new_j = 2*new_j; -2441: -2441: -2441: -2441: -2441: if (new_i >= new_j) { -2441: assign_or_swap(x_i[double_new_j], r_i[dj]); -2441: assign_or_swap(x_ii[double_new_j], r_ii[dj]); -2441: assign_or_swap(x_ii[double_new_j + 1], r_ii[dj + 1]); -2441: assign_or_swap(x_i[double_new_j + 1], r_i[dj + 1]); -2441: } -2441: else { -2441: row_iterator x_j_iter = m_begin + double_new_j; -2441: row_reference x_j = *x_j_iter; -2441: row_reference x_jj = *(x_j_iter + 1); -2441: assign_or_swap(x_jj[double_new_i + 1], r_i[dj]); -2441: assign_or_swap(x_jj[double_new_i], r_ii[dj]); -2441: assign_or_swap(x_j[double_new_i + 1], r_i[dj + 1]); -2441: assign_or_swap(x_j[double_new_i], r_ii[dj + 1]); -2441: } -2441: -2441: } -2441: } -2441: } -2441: } -2441: -2441: using std::swap; -2441: swap(matrix, x); -2441: space_dim = new_space_dim; -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::intersection_assign(const Octagonal_Shape& y) { -2441: -2441: if (space_dim != y.space_dim) { -2441: throw_dimension_incompatible("intersection_assign(y)", y); -2441: } -2441: -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: if (y.marked_empty()) { -2441: set_empty(); -2441: return; -2441: } -2441: -2441: -2441: -2441: if (space_dim == 0) { -2441: return; -2441: } -2441: -2441: -2441: bool changed = false; -2441: -2441: typename OR_Matrix::const_element_iterator j = y.matrix.element_begin(); -2441: for (typename OR_Matrix::element_iterator i = matrix.element_begin(), -2441: matrix_element_end = matrix.element_end(); -2441: i != matrix_element_end; -2441: ++i, ++j) { -2441: N& elem = *i; -2441: const N& y_elem = *j; -2441: if (y_elem < elem) { -2441: elem = y_elem; -2441: changed = true; -2441: } -2441: } -2441: -2441: -2441: if (changed && marked_strongly_closed()) { -2441: reset_strongly_closed(); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: template -2441: void -2441: Octagonal_Shape::CC76_extrapolation_assign(const Octagonal_Shape& y, -2441: Iterator first, Iterator last, -2441: unsigned* tp) { -2441: -2441: if (space_dim != y.space_dim) { -2441: throw_dimension_incompatible("CC76_extrapolation_assign(y)", y); -2441: } -2441: -2441: -2441: ((void) 0); -2441: -2441: -2441: -2441: if (space_dim == 0) { -2441: return; -2441: } -2441: -2441: strong_closure_assign(); -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: y.strong_closure_assign(); -2441: -2441: if (y.marked_empty()) { -2441: return; -2441: } -2441: -2441: -2441: if (tp != 0 && *tp > 0) { -2441: Octagonal_Shape x_tmp(*this); -2441: x_tmp.CC76_extrapolation_assign(y, first, last, 0); -2441: -2441: if (!contains(x_tmp)) { -2441: --(*tp); -2441: } -2441: return; -2441: } -2441: # 3858 "../../src/Octagonal_Shape_templates.hh" -2441: typename OR_Matrix::const_element_iterator j = y.matrix.element_begin(); -2441: for (typename OR_Matrix::element_iterator i = matrix.element_begin(), -2441: matrix_element_end = matrix.element_end(); -2441: i != matrix_element_end; -2441: ++i, ++j) { -2441: const N& y_elem = *j; -2441: N& elem = *i; -2441: if (y_elem < elem) { -2441: Iterator k = std::lower_bound(first, last, elem); -2441: if (k != last) { -2441: if (elem < *k) { -2441: assign_r(elem, *k, ROUND_UP); -2441: } -2441: } -2441: else { -2441: assign_r(elem, PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: } -2441: } -2441: -2441: reset_strongly_closed(); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape -2441: ::get_limiting_octagon(const Constraint_System& cs, -2441: Octagonal_Shape& limiting_octagon) const { -2441: const dimension_type cs_space_dim = cs.space_dimension(); -2441: -2441: ((void) 0); -2441: -2441: strong_closure_assign(); -2441: bool is_oct_changed = false; -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_coeff; Parma_Polyhedra_Library::Coefficient& coeff = holder_coeff.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_term; Parma_Polyhedra_Library::Coefficient& term = holder_term.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_d; N& d = holder_d.item(); -2441: -2441: for (Constraint_System::const_iterator cs_i = cs.begin(), -2441: cs_end = cs.end(); cs_i != cs_end; ++cs_i) { -2441: const Constraint& c = *cs_i; -2441: dimension_type num_vars = 0; -2441: dimension_type i = 0; -2441: dimension_type j = 0; -2441: -2441: if (!Octagonal_Shape_Helper -2441: ::extract_octagonal_difference(c, cs_space_dim, num_vars, i, j, -2441: coeff, term)) { -2441: continue; -2441: } -2441: -2441: typedef typename OR_Matrix::const_row_iterator Row_iterator; -2441: typedef typename OR_Matrix::const_row_reference_type Row_reference; -2441: typedef typename OR_Matrix::row_iterator row_iterator; -2441: typedef typename OR_Matrix::row_reference_type row_reference; -2441: Row_iterator m_begin = matrix.row_begin(); -2441: -2441: Row_iterator i_iter = m_begin + i; -2441: Row_reference m_i = *i_iter; -2441: OR_Matrix& lo_mat = limiting_octagon.matrix; -2441: row_iterator lo_iter = lo_mat.row_begin() + i; -2441: row_reference lo_m_i = *lo_iter; -2441: N& lo_m_i_j = lo_m_i[j]; -2441: if (coeff < 0) { -2441: neg_assign(coeff); -2441: } -2441: -2441: div_round_up(d, term, coeff); -2441: if (m_i[j] <= d) { -2441: if (c.is_inequality()) { -2441: if (lo_m_i_j > d) { -2441: lo_m_i_j = d; -2441: is_oct_changed = true; -2441: } -2441: else { -2441: -2441: if (i % 2 == 0) { -2441: ++i_iter; -2441: ++lo_iter; -2441: } -2441: else { -2441: --i_iter; -2441: --lo_iter; -2441: } -2441: Row_reference m_ci = *i_iter; -2441: row_reference lo_m_ci = *lo_iter; -2441: -2441: using namespace Implementation::Octagonal_Shapes; -2441: dimension_type cj = coherent_index(j); -2441: N& lo_m_ci_cj = lo_m_ci[cj]; -2441: neg_assign(term); -2441: div_round_up(d, term, coeff); -2441: if (m_ci[cj] <= d && lo_m_ci_cj > d) { -2441: lo_m_ci_cj = d; -2441: is_oct_changed = true; -2441: } -2441: } -2441: } -2441: } -2441: } -2441: -2441: -2441: if (is_oct_changed && limiting_octagon.marked_strongly_closed()) { -2441: limiting_octagon.reset_strongly_closed(); -2441: } -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape -2441: ::limited_CC76_extrapolation_assign(const Octagonal_Shape& y, -2441: const Constraint_System& cs, -2441: unsigned* tp) { -2441: -2441: -2441: if (space_dim != y.space_dim) { -2441: throw_dimension_incompatible("limited_CC76_extrapolation_assign(y, cs)", -2441: y); -2441: } -2441: -2441: const dimension_type cs_space_dim = cs.space_dimension(); -2441: if (space_dim < cs_space_dim) { -2441: throw_constraint_incompatible("limited_CC76_extrapolation_assign(y, cs)"); -2441: } -2441: -2441: -2441: if (cs.has_strict_inequalities()) { -2441: throw_constraint_incompatible("limited_CC76_extrapolation_assign(y, cs)"); -2441: } -2441: -2441: -2441: -2441: -2441: if (space_dim == 0) { -2441: return; -2441: } -2441: -2441: -2441: ((void) 0); -2441: -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: -2441: if (y.marked_empty()) { -2441: return; -2441: } -2441: -2441: Octagonal_Shape limiting_octagon(space_dim, UNIVERSE); -2441: get_limiting_octagon(cs, limiting_octagon); -2441: CC76_extrapolation_assign(y, tp); -2441: intersection_assign(limiting_octagon); -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::BHMZ05_widening_assign(const Octagonal_Shape& y, -2441: unsigned* tp) { -2441: -2441: if (space_dim != y.space_dim) { -2441: throw_dimension_incompatible("BHMZ05_widening_assign(y)", y); -2441: } -2441: -2441: -2441: ((void) 0); -2441: -2441: -2441: const dimension_type y_affine_dim = y.affine_dimension(); -2441: -2441: -2441: -2441: if (y_affine_dim == 0) { -2441: return; -2441: } -2441: -2441: -2441: -2441: const dimension_type x_affine_dim = affine_dimension(); -2441: ((void) 0); -2441: if (x_affine_dim != y_affine_dim) { -2441: return; -2441: } -2441: -2441: if (tp != 0 && *tp > 0) { -2441: Octagonal_Shape x_tmp(*this); -2441: x_tmp.BHMZ05_widening_assign(y, 0); -2441: -2441: if (!contains(x_tmp)) { -2441: --(*tp); -2441: } -2441: return; -2441: } -2441: -2441: -2441: ((void) 0); -2441: -2441: y.strong_reduction_assign(); -2441: -2441: -2441: typename OR_Matrix::const_element_iterator j = y.matrix.element_begin(); -2441: for (typename OR_Matrix::element_iterator i = matrix.element_begin(), -2441: matrix_element_end = matrix.element_end(); -2441: i != matrix_element_end; -2441: ++i, ++j) { -2441: N& elem = *i; -2441: -2441: -2441: -2441: if (*j != elem) { -2441: assign_r(elem, PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: } -2441: reset_strongly_closed(); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape -2441: ::limited_BHMZ05_extrapolation_assign(const Octagonal_Shape& y, -2441: const Constraint_System& cs, -2441: unsigned* tp) { -2441: -2441: -2441: if (space_dim != y.space_dim) { -2441: throw_dimension_incompatible("limited_BHMZ05_extrapolation_assign(y, cs)", -2441: y); -2441: } -2441: -2441: -2441: const dimension_type cs_space_dim = cs.space_dimension(); -2441: if (space_dim < cs_space_dim) { -2441: throw_constraint_incompatible("limited_CH78_extrapolation_assign(y, cs)"); -2441: } -2441: -2441: -2441: if (cs.has_strict_inequalities()) { -2441: throw_constraint_incompatible("limited_CH78_extrapolation_assign(y, cs)"); -2441: } -2441: -2441: -2441: -2441: -2441: if (space_dim == 0) { -2441: return; -2441: } -2441: -2441: -2441: ((void) 0); -2441: -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: if (y.marked_empty()) { -2441: return; -2441: } -2441: -2441: Octagonal_Shape limiting_octagon(space_dim, UNIVERSE); -2441: get_limiting_octagon(cs, limiting_octagon); -2441: BHMZ05_widening_assign(y, tp); -2441: intersection_assign(limiting_octagon); -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::CC76_narrowing_assign(const Octagonal_Shape& y) { -2441: -2441: if (space_dim != y.space_dim) { -2441: throw_dimension_incompatible("CC76_narrowing_assign(y)", y); -2441: } -2441: -2441: -2441: ((void) 0); -2441: -2441: -2441: -2441: if (space_dim == 0) { -2441: return; -2441: } -2441: -2441: y.strong_closure_assign(); -2441: -2441: if (y.marked_empty()) { -2441: return; -2441: } -2441: -2441: strong_closure_assign(); -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: -2441: -2441: bool is_oct_changed = false; -2441: typename OR_Matrix::const_element_iterator j = y.matrix.element_begin(); -2441: for (typename OR_Matrix::element_iterator i = matrix.element_begin(), -2441: matrix_element_end = matrix.element_end(); -2441: i != matrix_element_end; -2441: ++i, ++j) { -2441: if (!is_plus_infinity(*i) -2441: && !is_plus_infinity(*j) -2441: && *i != *j) { -2441: *i = *j; -2441: is_oct_changed = true; -2441: } -2441: } -2441: -2441: if (is_oct_changed && marked_strongly_closed()) { -2441: reset_strongly_closed(); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape -2441: ::deduce_v_pm_u_bounds(const dimension_type v_id, -2441: const dimension_type last_id, -2441: const Linear_Expression& sc_expr, -2441: Coefficient_traits::const_reference sc_denom, -2441: const N& ub_v) { -2441: -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_mpq_sc_denom; mpq_class& mpq_sc_denom = holder_mpq_sc_denom.item(); -2441: assign_r(mpq_sc_denom, sc_denom, ROUND_NOT_NEEDED); -2441: -2441: -2441: const dimension_type n_v = 2*v_id; -2441: typename OR_Matrix::row_reference_type m_cv = matrix[n_v + 1]; -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_half; N& half = holder_half.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_lb_u; mpq_class& minus_lb_u = holder_minus_lb_u.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_q; mpq_class& q = holder_q.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_q; mpq_class& minus_q = holder_minus_q.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_ub_u; mpq_class& ub_u = holder_ub_u.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_lb_u; mpq_class& lb_u = holder_lb_u.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_up_approx; N& up_approx = holder_up_approx.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_expr_u; Parma_Polyhedra_Library::Coefficient& minus_expr_u = holder_minus_expr_u.item(); -2441: -2441: for (Linear_Expression::const_iterator u = sc_expr.begin(), -2441: u_end = sc_expr.lower_bound(Variable(last_id + 1)); u != u_end; ++u) { -2441: const dimension_type u_id = u.variable().id(); -2441: -2441: if (u_id == v_id) { -2441: continue; -2441: } -2441: const Coefficient& expr_u = *u; -2441: -2441: const dimension_type n_u = u_id*2; -2441: -2441: if (expr_u > 0) { -2441: if (expr_u >= sc_denom) { -2441: -2441: -2441: -2441: -2441: div_2exp_assign_r(half, matrix[n_u + 1][n_u], 1, ROUND_UP); -2441: N& m_v_minus_u = (n_v < n_u) ? matrix[n_u][n_v] : m_cv[n_u + 1]; -2441: sub_assign_r(m_v_minus_u, ub_v, half, ROUND_UP); -2441: } -2441: else { -2441: -2441: typename OR_Matrix::row_reference_type m_u = matrix[n_u]; -2441: const N& m_u_cu = m_u[n_u + 1]; -2441: if (!is_plus_infinity(m_u_cu)) { -2441: -2441: -2441: -2441: -2441: assign_r(minus_lb_u, m_u_cu, ROUND_NOT_NEEDED); -2441: div_2exp_assign_r(minus_lb_u, minus_lb_u, 1, ROUND_NOT_NEEDED); -2441: assign_r(q, expr_u, ROUND_NOT_NEEDED); -2441: div_assign_r(q, q, mpq_sc_denom, ROUND_NOT_NEEDED); -2441: assign_r(ub_u, matrix[n_u + 1][n_u], ROUND_NOT_NEEDED); -2441: div_2exp_assign_r(ub_u, ub_u, 1, ROUND_NOT_NEEDED); -2441: -2441: add_assign_r(ub_u, ub_u, minus_lb_u, ROUND_NOT_NEEDED); -2441: -2441: sub_mul_assign_r(minus_lb_u, q, ub_u, ROUND_NOT_NEEDED); -2441: assign_r(up_approx, minus_lb_u, ROUND_UP); -2441: -2441: N& m_v_minus_u = (n_v < n_u) ? m_u[n_v] : m_cv[n_u + 1]; -2441: add_assign_r(m_v_minus_u, ub_v, up_approx, ROUND_UP); -2441: } -2441: } -2441: } -2441: else { -2441: ((void) 0); -2441: -2441: neg_assign(minus_expr_u, expr_u); -2441: if (minus_expr_u >= sc_denom) { -2441: -2441: -2441: -2441: -2441: div_2exp_assign_r(half, matrix[n_u][n_u + 1], 1, ROUND_UP); -2441: N& m_v_plus_u = (n_v < n_u) ? matrix[n_u + 1][n_v] : m_cv[n_u]; -2441: sub_assign_r(m_v_plus_u, ub_v, half, ROUND_UP); -2441: } -2441: else { -2441: -2441: typename OR_Matrix::row_reference_type m_cu = matrix[n_u + 1]; -2441: const N& m_cu_u = m_cu[n_u]; -2441: if (!is_plus_infinity(m_cu_u)) { -2441: -2441: -2441: -2441: -2441: assign_r(ub_u, m_cu[n_u], ROUND_NOT_NEEDED); -2441: div_2exp_assign_r(ub_u, ub_u, 1, ROUND_NOT_NEEDED); -2441: assign_r(minus_q, minus_expr_u, ROUND_NOT_NEEDED); -2441: div_assign_r(minus_q, minus_q, mpq_sc_denom, ROUND_NOT_NEEDED); -2441: assign_r(lb_u, matrix[n_u][n_u + 1], ROUND_NOT_NEEDED); -2441: div_2exp_assign_r(lb_u, lb_u, 1, ROUND_NOT_NEEDED); -2441: neg_assign_r(lb_u, lb_u, ROUND_NOT_NEEDED); -2441: -2441: sub_assign_r(lb_u, lb_u, ub_u, ROUND_NOT_NEEDED); -2441: -2441: add_mul_assign_r(ub_u, minus_q, lb_u, ROUND_NOT_NEEDED); -2441: assign_r(up_approx, ub_u, ROUND_UP); -2441: -2441: N& m_v_plus_u = (n_v < n_u) ? m_cu[n_v] : m_cv[n_u]; -2441: add_assign_r(m_v_plus_u, ub_v, up_approx, ROUND_UP); -2441: } -2441: } -2441: } -2441: } -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape -2441: ::deduce_minus_v_pm_u_bounds(const dimension_type v_id, -2441: const dimension_type last_id, -2441: const Linear_Expression& sc_expr, -2441: Coefficient_traits::const_reference sc_denom, -2441: const N& minus_lb_v) { -2441: -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_mpq_sc_denom; mpq_class& mpq_sc_denom = holder_mpq_sc_denom.item(); -2441: assign_r(mpq_sc_denom, sc_denom, ROUND_NOT_NEEDED); -2441: -2441: -2441: const dimension_type n_v = 2*v_id; -2441: typename OR_Matrix::row_reference_type m_v = matrix[n_v]; -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_half; N& half = holder_half.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_ub_u; mpq_class& ub_u = holder_ub_u.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_q; mpq_class& q = holder_q.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_lb_u; mpq_class& minus_lb_u = holder_minus_lb_u.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_up_approx; N& up_approx = holder_up_approx.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_expr_u; Parma_Polyhedra_Library::Coefficient& minus_expr_u = holder_minus_expr_u.item(); -2441: -2441: for (Linear_Expression::const_iterator u = sc_expr.begin(), -2441: u_end = sc_expr.lower_bound(Variable(last_id + 1)); u != u_end; ++u) { -2441: const dimension_type u_id = u.variable().id(); -2441: -2441: if (u_id == v_id) { -2441: continue; -2441: } -2441: const Coefficient& expr_u = *u; -2441: -2441: const dimension_type n_u = u_id*2; -2441: -2441: if (expr_u > 0) { -2441: if (expr_u >= sc_denom) { -2441: -2441: -2441: -2441: -2441: -2441: div_2exp_assign_r(half, matrix[n_u][n_u + 1], 1, ROUND_UP); -2441: N& m_u_minus_v = (n_v < n_u) ? matrix[n_u + 1][n_v + 1] : m_v[n_u]; -2441: sub_assign_r(m_u_minus_v, minus_lb_v, half, ROUND_UP); -2441: } -2441: else { -2441: -2441: typename OR_Matrix::row_reference_type m_cu = matrix[n_u + 1]; -2441: const N& m_cu_u = m_cu[n_u]; -2441: if (!is_plus_infinity(m_cu_u)) { -2441: -2441: -2441: -2441: -2441: assign_r(ub_u, m_cu[n_u], ROUND_NOT_NEEDED); -2441: div_2exp_assign_r(ub_u, ub_u, 1, ROUND_NOT_NEEDED); -2441: assign_r(q, expr_u, ROUND_NOT_NEEDED); -2441: div_assign_r(q, q, mpq_sc_denom, ROUND_NOT_NEEDED); -2441: assign_r(minus_lb_u, matrix[n_u][n_u + 1], ROUND_NOT_NEEDED); -2441: div_2exp_assign_r(minus_lb_u, minus_lb_u, 1, ROUND_NOT_NEEDED); -2441: -2441: add_assign_r(minus_lb_u, ub_u, minus_lb_u, ROUND_NOT_NEEDED); -2441: -2441: sub_mul_assign_r(ub_u, q, minus_lb_u, ROUND_NOT_NEEDED); -2441: assign_r(up_approx, ub_u, ROUND_UP); -2441: -2441: N& m_u_minus_v = (n_v < n_u) ? m_cu[n_v + 1] : m_v[n_u]; -2441: add_assign_r(m_u_minus_v, minus_lb_v, up_approx, ROUND_UP); -2441: } -2441: } -2441: } -2441: else { -2441: ((void) 0); -2441: -2441: neg_assign(minus_expr_u, expr_u); -2441: if (minus_expr_u >= sc_denom) { -2441: -2441: -2441: -2441: -2441: div_2exp_assign_r(half, matrix[n_u + 1][n_u], 1, ROUND_UP); -2441: N& m_minus_v_minus_u = (n_v < n_u) -2441: ? matrix[n_u][n_v + 1] -2441: : m_v[n_u + 1]; -2441: sub_assign_r(m_minus_v_minus_u, minus_lb_v, half, ROUND_UP); -2441: } -2441: else { -2441: -2441: typename OR_Matrix::row_reference_type m_u = matrix[n_u]; -2441: const N& m_u_cu = m_u[n_u + 1]; -2441: if (!is_plus_infinity(m_u_cu)) { -2441: -2441: -2441: -2441: -2441: assign_r(ub_u, matrix[n_u + 1][n_u], ROUND_NOT_NEEDED); -2441: div_2exp_assign_r(ub_u, ub_u, 1, ROUND_NOT_NEEDED); -2441: assign_r(q, expr_u, ROUND_NOT_NEEDED); -2441: div_assign_r(q, q, mpq_sc_denom, ROUND_NOT_NEEDED); -2441: assign_r(minus_lb_u, m_u[n_u + 1], ROUND_NOT_NEEDED); -2441: div_2exp_assign_r(minus_lb_u, minus_lb_u, 1, ROUND_NOT_NEEDED); -2441: -2441: add_assign_r(ub_u, ub_u, minus_lb_u, ROUND_NOT_NEEDED); -2441: -2441: add_mul_assign_r(minus_lb_u, q, ub_u, ROUND_NOT_NEEDED); -2441: assign_r(up_approx, minus_lb_u, ROUND_UP); -2441: -2441: N& m_minus_v_minus_u = (n_v < n_u) ? m_u[n_v + 1] : m_v[n_u + 1]; -2441: add_assign_r(m_minus_v_minus_u, minus_lb_v, up_approx, ROUND_UP); -2441: } -2441: } -2441: } -2441: } -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape -2441: ::forget_all_octagonal_constraints(const dimension_type v_id) { -2441: ((void) 0); -2441: const dimension_type n_v = 2*v_id; -2441: typename OR_Matrix::row_iterator m_iter = matrix.row_begin() + n_v; -2441: typename OR_Matrix::row_reference_type r_v = *m_iter; -2441: typename OR_Matrix::row_reference_type r_cv = *(++m_iter); -2441: for (dimension_type h = m_iter.row_size(); h-- > 0; ) { -2441: assign_r(r_v[h], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: assign_r(r_cv[h], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: ++m_iter; -2441: for (typename OR_Matrix::row_iterator m_end = matrix.row_end(); -2441: m_iter != m_end; ++m_iter) { -2441: typename OR_Matrix::row_reference_type r = *m_iter; -2441: assign_r(r[n_v], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: assign_r(r[n_v + 1], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape -2441: ::forget_binary_octagonal_constraints(const dimension_type v_id) { -2441: ((void) 0); -2441: const dimension_type n_v = 2*v_id; -2441: typename OR_Matrix::row_iterator m_iter = matrix.row_begin() + n_v; -2441: typename OR_Matrix::row_reference_type r_v = *m_iter; -2441: typename OR_Matrix::row_reference_type r_cv = *(++m_iter); -2441: for (dimension_type k = n_v; k-- > 0; ) { -2441: assign_r(r_v[k], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: assign_r(r_cv[k], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: ++m_iter; -2441: for (typename OR_Matrix::row_iterator m_end = matrix.row_end(); -2441: m_iter != m_end; ++m_iter) { -2441: typename OR_Matrix::row_reference_type r = *m_iter; -2441: assign_r(r[n_v], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: assign_r(r[n_v + 1], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::unconstrain(const Variable var) { -2441: -2441: const dimension_type var_id = var.id(); -2441: if (space_dimension() < var_id + 1) { -2441: throw_dimension_incompatible("unconstrain(var)", var_id + 1); -2441: } -2441: -2441: -2441: strong_closure_assign(); -2441: -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: forget_all_octagonal_constraints(var_id); -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::unconstrain(const Variables_Set& vars) { -2441: -2441: -2441: if (vars.empty()) { -2441: return; -2441: } -2441: -2441: -2441: const dimension_type min_space_dim = vars.space_dimension(); -2441: if (space_dimension() < min_space_dim) { -2441: throw_dimension_incompatible("unconstrain(vs)", min_space_dim); -2441: } -2441: -2441: -2441: strong_closure_assign(); -2441: -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: for (Variables_Set::const_iterator vsi = vars.begin(), -2441: vsi_end = vars.end(); vsi != vsi_end; ++vsi) { -2441: forget_all_octagonal_constraints(*vsi); -2441: } -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::refine(const Variable var, -2441: const Relation_Symbol relsym, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference denominator) { -2441: ((void) 0); -2441: ((void) 0); -2441: const dimension_type var_id = var.id(); -2441: ((void) 0); -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: const Coefficient& b = expr.inhomogeneous_term(); -2441: -2441: -2441: dimension_type t = 0; -2441: -2441: -2441: dimension_type w_id = expr.last_nonzero(); -2441: -2441: if (w_id != 0) { -2441: ++t; -2441: if (!expr.all_zeroes(1, w_id)) { -2441: ++t; -2441: } -2441: --w_id; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: typedef typename OR_Matrix::row_iterator row_iterator; -2441: typedef typename OR_Matrix::row_reference_type row_reference; -2441: typedef typename OR_Matrix::const_row_iterator Row_iterator; -2441: typedef typename OR_Matrix::const_row_reference_type Row_reference; -2441: -2441: const row_iterator m_begin = matrix.row_begin(); -2441: const dimension_type n_var = 2*var_id; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_denom; Parma_Polyhedra_Library::Coefficient& minus_denom = holder_minus_denom.item(); -2441: neg_assign(minus_denom, denominator); -2441: -2441: -2441: -2441: -2441: -2441: -2441: if (t == 1 && expr.coefficient(Variable(w_id)) != denominator -2441: && expr.coefficient(Variable(w_id)) != minus_denom) { -2441: t = 2; -2441: } -2441: if (t == 0) { -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_two_b; Parma_Polyhedra_Library::Coefficient& two_b = holder_two_b.item(); -2441: two_b = 2*b; -2441: switch (relsym) { -2441: case EQUAL: -2441: -2441: add_octagonal_constraint(n_var + 1, n_var, two_b, denominator); -2441: add_octagonal_constraint(n_var, n_var + 1, two_b, minus_denom); -2441: break; -2441: case LESS_OR_EQUAL: -2441: -2441: add_octagonal_constraint(n_var + 1, n_var, two_b, denominator); -2441: break; -2441: case GREATER_OR_EQUAL: -2441: -2441: -2441: add_octagonal_constraint(n_var, n_var + 1, two_b, minus_denom); -2441: break; -2441: default: -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: } -2441: else if (t == 1) { -2441: -2441: const Coefficient& w_coeff = expr.coefficient(Variable(w_id)); -2441: const dimension_type n_w = 2*w_id; -2441: switch (relsym) { -2441: case EQUAL: -2441: if (w_coeff == denominator) { -2441: -2441: if (var_id < w_id) { -2441: add_octagonal_constraint(n_w, n_var, b, denominator); -2441: add_octagonal_constraint(n_w + 1, n_var + 1, b, minus_denom); -2441: } -2441: else { -2441: add_octagonal_constraint(n_var + 1, n_w + 1, b, denominator); -2441: add_octagonal_constraint(n_var, n_w, b, minus_denom); -2441: } -2441: } -2441: else { -2441: -2441: if (var_id < w_id) { -2441: add_octagonal_constraint(n_w + 1, n_var, b, denominator); -2441: add_octagonal_constraint(n_w, n_var + 1, b, minus_denom); -2441: } -2441: else { -2441: add_octagonal_constraint(n_var + 1, n_w, b, denominator); -2441: add_octagonal_constraint(n_var, n_w + 1, b, minus_denom); -2441: } -2441: } -2441: break; -2441: case LESS_OR_EQUAL: -2441: { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_d; N& d = holder_d.item(); -2441: div_round_up(d, b, denominator); -2441: -2441: -2441: if (w_coeff == denominator) { -2441: -2441: if (var_id < w_id) { -2441: add_octagonal_constraint(n_w, n_var, d); -2441: } -2441: else { -2441: add_octagonal_constraint(n_var + 1, n_w + 1, d); -2441: } -2441: } -2441: else if (w_coeff == minus_denom) { -2441: -2441: if (var_id < w_id) { -2441: add_octagonal_constraint(n_w + 1, n_var, d); -2441: } -2441: else { -2441: add_octagonal_constraint(n_var + 1, n_w, d); -2441: } -2441: } -2441: break; -2441: } -2441: -2441: case GREATER_OR_EQUAL: -2441: { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_d; N& d = holder_d.item(); -2441: div_round_up(d, b, minus_denom); -2441: -2441: -2441: if (w_coeff == denominator) { -2441: -2441: -2441: if (var_id < w_id) { -2441: add_octagonal_constraint(n_w + 1, n_var + 1, d); -2441: } -2441: else { -2441: add_octagonal_constraint(n_var, n_w, d); -2441: } -2441: } -2441: else if (w_coeff == minus_denom) { -2441: -2441: -2441: if (var_id < w_id) { -2441: add_octagonal_constraint(n_w, n_var + 1, d); -2441: } -2441: else { -2441: add_octagonal_constraint(n_var, n_w + 1, d); -2441: } -2441: } -2441: break; -2441: } -2441: -2441: default: -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: } -2441: else { -2441: -2441: -2441: const bool is_sc = (denominator > 0); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_b; Parma_Polyhedra_Library::Coefficient& minus_b = holder_minus_b.item(); -2441: neg_assign(minus_b, b); -2441: const Coefficient& sc_b = is_sc ? b : minus_b; -2441: const Coefficient& minus_sc_b = is_sc ? minus_b : b; -2441: const Coefficient& sc_denom = is_sc ? denominator : minus_denom; -2441: const Coefficient& minus_sc_denom = is_sc ? minus_denom : denominator; -2441: -2441: -2441: -2441: Linear_Expression minus_expr; -2441: if (!is_sc) { -2441: minus_expr = -expr; -2441: } -2441: const Linear_Expression& sc_expr = is_sc ? expr : minus_expr; -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_sum; N& sum = holder_sum.item(); -2441: -2441: dimension_type pinf_index = Suppress_Uninitialized_Warnings_Type::synonym(); -2441: -2441: dimension_type pinf_count = 0; -2441: -2441: switch (relsym) { -2441: case EQUAL: -2441: { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_neg_sum; N& neg_sum = holder_neg_sum.item(); -2441: -2441: dimension_type neg_pinf_index = Suppress_Uninitialized_Warnings_Type::synonym(); -2441: -2441: dimension_type neg_pinf_count = 0; -2441: -2441: -2441: assign_r(sum, sc_b, ROUND_UP); -2441: assign_r(neg_sum, minus_sc_b, ROUND_UP); -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_coeff_i; N& coeff_i = holder_coeff_i.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_half; N& half = holder_half.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_sc_i; Parma_Polyhedra_Library::Coefficient& minus_sc_i = holder_minus_sc_i.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_coeff_i; N& minus_coeff_i = holder_minus_coeff_i.item(); -2441: -2441: -2441: for (Row_iterator m_iter = m_begin, -2441: m_iter_end = m_begin + (2 * w_id + 2); -2441: m_iter != m_iter_end; ) { -2441: const dimension_type n_i = m_iter.index(); -2441: const dimension_type id = n_i/2; -2441: Row_reference m_i = *m_iter; -2441: ++m_iter; -2441: Row_reference m_ci = *m_iter; -2441: ++m_iter; -2441: const Coefficient& sc_i = sc_expr.coefficient(Variable(id)); -2441: const int sign_i = sgn(sc_i); -2441: if (sign_i > 0) { -2441: assign_r(coeff_i, sc_i, ROUND_UP); -2441: -2441: if (pinf_count <= 1) { -2441: const N& double_approx_i = m_ci[n_i]; -2441: if (!is_plus_infinity(double_approx_i)) { -2441: -2441: div_2exp_assign_r(half, double_approx_i, 1, ROUND_UP); -2441: add_mul_assign_r(sum, coeff_i, half, ROUND_UP); -2441: } -2441: else { -2441: ++pinf_count; -2441: pinf_index = id; -2441: } -2441: } -2441: -2441: if (neg_pinf_count <= 1) { -2441: const N& double_approx_minus_i = m_i[n_i + 1]; -2441: if (!is_plus_infinity(double_approx_minus_i)) { -2441: -2441: div_2exp_assign_r(half, double_approx_minus_i, 1, ROUND_UP); -2441: add_mul_assign_r(neg_sum, coeff_i, half, ROUND_UP); -2441: } -2441: else { -2441: ++neg_pinf_count; -2441: neg_pinf_index = id; -2441: } -2441: } -2441: } -2441: else if (sign_i < 0) { -2441: neg_assign_r(minus_sc_i, sc_i, ROUND_NOT_NEEDED); -2441: assign_r(minus_coeff_i, minus_sc_i, ROUND_UP); -2441: -2441: if (pinf_count <= 1) { -2441: const N& double_approx_minus_i = m_i[n_i + 1]; -2441: if (!is_plus_infinity(double_approx_minus_i)) { -2441: -2441: div_2exp_assign_r(half, double_approx_minus_i, 1, ROUND_UP); -2441: add_mul_assign_r(sum, minus_coeff_i, half, ROUND_UP); -2441: } -2441: else { -2441: ++pinf_count; -2441: pinf_index = id; -2441: } -2441: } -2441: -2441: if (neg_pinf_count <= 1) { -2441: const N& double_approx_i = m_ci[n_i]; -2441: if (!is_plus_infinity(double_approx_i)) { -2441: -2441: div_2exp_assign_r(half, double_approx_i, 1, ROUND_UP); -2441: add_mul_assign_r(neg_sum, minus_coeff_i, half, ROUND_UP); -2441: } -2441: else { -2441: ++neg_pinf_count; -2441: neg_pinf_index = id; -2441: } -2441: } -2441: } -2441: } -2441: -2441: if (pinf_count > 1 && neg_pinf_count > 1) { -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: -2441: reset_strongly_closed(); -2441: -2441: -2441: if (pinf_count <= 1) { -2441: -2441: if (sc_denom != 1) { -2441: -2441: -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_down_sc_denom; N& down_sc_denom = holder_down_sc_denom.item(); -2441: assign_r(down_sc_denom, minus_sc_denom, ROUND_UP); -2441: neg_assign_r(down_sc_denom, down_sc_denom, ROUND_UP); -2441: div_assign_r(sum, sum, down_sc_denom, ROUND_UP); -2441: } -2441: -2441: if (pinf_count == 0) { -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_double_sum; N& double_sum = holder_double_sum.item(); -2441: mul_2exp_assign_r(double_sum, sum, 1, ROUND_UP); -2441: matrix[n_var + 1][n_var] = double_sum; -2441: -2441: deduce_v_pm_u_bounds(var_id, w_id, sc_expr, sc_denom, sum); -2441: } -2441: else { -2441: -2441: if (pinf_index != var_id) { -2441: const Coefficient& ppi -2441: = sc_expr.coefficient(Variable(pinf_index)); -2441: if (ppi == sc_denom) { -2441: -2441: if (var_id < pinf_index) { -2441: matrix[2*pinf_index][n_var] = sum; -2441: } -2441: else { -2441: matrix[n_var + 1][2*pinf_index + 1] = sum; -2441: } -2441: } -2441: else { -2441: if (ppi == minus_sc_denom) { -2441: -2441: if (var_id < pinf_index) { -2441: matrix[2*pinf_index + 1][n_var] = sum; -2441: } -2441: else { -2441: matrix[n_var + 1][2*pinf_index] = sum; -2441: } -2441: } -2441: } -2441: } -2441: } -2441: } -2441: -2441: -2441: if (neg_pinf_count <= 1) { -2441: -2441: if (sc_denom != 1) { -2441: -2441: -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_down_sc_denom; N& down_sc_denom = holder_down_sc_denom.item(); -2441: assign_r(down_sc_denom, minus_sc_denom, ROUND_UP); -2441: neg_assign_r(down_sc_denom, down_sc_denom, ROUND_UP); -2441: div_assign_r(neg_sum, neg_sum, down_sc_denom, ROUND_UP); -2441: } -2441: -2441: if (neg_pinf_count == 0) { -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_double_neg_sum; N& double_neg_sum = holder_double_neg_sum.item(); -2441: mul_2exp_assign_r(double_neg_sum, neg_sum, 1, ROUND_UP); -2441: matrix[n_var][n_var + 1] = double_neg_sum; -2441: -2441: deduce_minus_v_pm_u_bounds(var_id, w_id, sc_expr, sc_denom, -2441: neg_sum); -2441: } -2441: else { -2441: -2441: if (neg_pinf_index != var_id) { -2441: const Coefficient& npi -2441: = sc_expr.coefficient(Variable(neg_pinf_index)); -2441: if (npi == sc_denom) { -2441: -2441: -2441: if (neg_pinf_index < var_id) { -2441: matrix[n_var][2*neg_pinf_index] = neg_sum; -2441: } -2441: else { -2441: matrix[2*neg_pinf_index + 1][n_var + 1] = neg_sum; -2441: } -2441: } -2441: else { -2441: if (npi == minus_sc_denom) { -2441: -2441: -2441: if (neg_pinf_index < var_id) { -2441: matrix[n_var][2*neg_pinf_index + 1] = neg_sum; -2441: } -2441: else { -2441: matrix[2*neg_pinf_index][n_var + 1] = neg_sum; -2441: } -2441: } -2441: } -2441: } -2441: } -2441: } -2441: break; -2441: } -2441: -2441: case LESS_OR_EQUAL: -2441: { -2441: -2441: -2441: -2441: -2441: assign_r(sum, sc_b, ROUND_UP); -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_coeff_i; N& coeff_i = holder_coeff_i.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_approx_i; N& approx_i = holder_approx_i.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_sc_i; Parma_Polyhedra_Library::Coefficient& minus_sc_i = holder_minus_sc_i.item(); -2441: -2441: -2441: for (row_iterator m_iter = m_begin, -2441: m_iter_end = m_begin + (2 * w_id + 2); -2441: m_iter != m_iter_end; ) { -2441: const dimension_type n_i = m_iter.index(); -2441: const dimension_type id = n_i/2; -2441: row_reference m_i = *m_iter; -2441: ++m_iter; -2441: row_reference m_ci = *m_iter; -2441: ++m_iter; -2441: const Coefficient& sc_i = sc_expr.coefficient(Variable(id)); -2441: const int sign_i = sgn(sc_i); -2441: if (sign_i == 0) { -2441: continue; -2441: } -2441: -2441: const N& double_approx_i = (sign_i > 0) ? m_ci[n_i] : m_i[n_i + 1]; -2441: if (is_plus_infinity(double_approx_i)) { -2441: if (++pinf_count > 1) { -2441: break; -2441: } -2441: pinf_index = id; -2441: continue; -2441: } -2441: if (sign_i > 0) { -2441: assign_r(coeff_i, sc_i, ROUND_UP); -2441: } -2441: else { -2441: neg_assign(minus_sc_i, sc_i); -2441: assign_r(coeff_i, minus_sc_i, ROUND_UP); -2441: } -2441: div_2exp_assign_r(approx_i, double_approx_i, 1, ROUND_UP); -2441: add_mul_assign_r(sum, coeff_i, approx_i, ROUND_UP); -2441: } -2441: -2441: if (sc_denom != 1) { -2441: -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_down_sc_denom; N& down_sc_denom = holder_down_sc_denom.item(); -2441: assign_r(down_sc_denom, minus_sc_denom, ROUND_UP); -2441: neg_assign_r(down_sc_denom, down_sc_denom, ROUND_UP); -2441: div_assign_r(sum, sum, down_sc_denom, ROUND_UP); -2441: } -2441: -2441: if (pinf_count == 0) { -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_double_sum; N& double_sum = holder_double_sum.item(); -2441: mul_2exp_assign_r(double_sum, sum, 1, ROUND_UP); -2441: add_octagonal_constraint(n_var + 1, n_var, double_sum); -2441: -2441: deduce_v_pm_u_bounds(var_id, w_id, sc_expr, sc_denom, sum); -2441: } -2441: else if (pinf_count == 1) { -2441: dimension_type pinf_ind = 2*pinf_index; -2441: if (expr.coefficient(Variable(pinf_index)) == denominator ) { -2441: -2441: if (var_id < pinf_index) { -2441: add_octagonal_constraint(pinf_ind, n_var, sum); -2441: } -2441: else { -2441: add_octagonal_constraint(n_var + 1, pinf_ind + 1, sum); -2441: } -2441: } -2441: else { -2441: if (expr.coefficient(Variable(pinf_index)) == minus_denom) { -2441: -2441: if (var_id < pinf_index) { -2441: add_octagonal_constraint(pinf_ind + 1, n_var, sum); -2441: } -2441: else { -2441: add_octagonal_constraint(n_var + 1, pinf_ind, sum); -2441: } -2441: } -2441: } -2441: } -2441: break; -2441: } -2441: -2441: case GREATER_OR_EQUAL: -2441: { -2441: -2441: -2441: -2441: -2441: -2441: assign_r(sum, minus_sc_b, ROUND_UP); -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_coeff_i; N& coeff_i = holder_coeff_i.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_approx_i; N& approx_i = holder_approx_i.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_sc_i; Parma_Polyhedra_Library::Coefficient& minus_sc_i = holder_minus_sc_i.item(); -2441: for (row_iterator m_iter = m_begin, -2441: m_iter_end = m_begin + (2 * w_id + 2); -2441: m_iter != m_iter_end; ) { -2441: const dimension_type n_i = m_iter.index(); -2441: const dimension_type id = n_i/2; -2441: row_reference m_i = *m_iter; -2441: ++m_iter; -2441: row_reference m_ci = *m_iter; -2441: ++m_iter; -2441: const Coefficient& sc_i = sc_expr.coefficient(Variable(id)); -2441: const int sign_i = sgn(sc_i); -2441: if (sign_i == 0) { -2441: continue; -2441: } -2441: -2441: const N& double_approx_i = (sign_i > 0) ? m_i[n_i + 1] : m_ci[n_i]; -2441: if (is_plus_infinity(double_approx_i)) { -2441: if (++pinf_count > 1) { -2441: break; -2441: } -2441: pinf_index = id; -2441: continue; -2441: } -2441: if (sign_i > 0) { -2441: assign_r(coeff_i, sc_i, ROUND_UP); -2441: } -2441: else { -2441: neg_assign(minus_sc_i, sc_i); -2441: assign_r(coeff_i, minus_sc_i, ROUND_UP); -2441: } -2441: div_2exp_assign_r(approx_i, double_approx_i, 1, ROUND_UP); -2441: add_mul_assign_r(sum, coeff_i, approx_i, ROUND_UP); -2441: } -2441: -2441: -2441: if (sc_denom != 1) { -2441: -2441: -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_down_sc_denom; N& down_sc_denom = holder_down_sc_denom.item(); -2441: assign_r(down_sc_denom, minus_sc_denom, ROUND_UP); -2441: neg_assign_r(down_sc_denom, down_sc_denom, ROUND_UP); -2441: div_assign_r(sum, sum, down_sc_denom, ROUND_UP); -2441: } -2441: -2441: if (pinf_count == 0) { -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_double_sum; N& double_sum = holder_double_sum.item(); -2441: mul_2exp_assign_r(double_sum, sum, 1, ROUND_UP); -2441: add_octagonal_constraint(n_var, n_var + 1, double_sum); -2441: -2441: deduce_minus_v_pm_u_bounds(var_id, pinf_index, sc_expr, sc_denom, -2441: sum); -2441: } -2441: else if (pinf_count == 1) { -2441: dimension_type pinf_ind = 2*pinf_index; -2441: if (expr.coefficient(Variable(pinf_index)) == denominator) { -2441: -2441: -2441: if (pinf_index < var_id) { -2441: add_octagonal_constraint(n_var, pinf_ind, sum); -2441: } -2441: else { -2441: add_octagonal_constraint(pinf_ind + 1, n_var, sum); -2441: } -2441: } -2441: else { -2441: if (expr.coefficient(Variable(pinf_index)) == minus_denom) { -2441: -2441: -2441: if (pinf_index < var_id) { -2441: add_octagonal_constraint(n_var, pinf_ind + 1, sum); -2441: } -2441: else { -2441: add_octagonal_constraint(pinf_ind, n_var + 1, sum); -2441: } -2441: } -2441: } -2441: } -2441: break; -2441: } -2441: -2441: default: -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: } -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::affine_image(const Variable var, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference -2441: denominator) { -2441: -2441: if (denominator == 0) { -2441: throw_invalid_argument("affine_image(v, e, d)", "d == 0"); -2441: } -2441: -2441: -2441: -2441: -2441: const dimension_type expr_space_dim = expr.space_dimension(); -2441: if (space_dim < expr_space_dim) { -2441: throw_dimension_incompatible("affine_image(v, e, d)", "e", expr); -2441: } -2441: -2441: -2441: const dimension_type var_id = var.id(); -2441: if (space_dim < var_id + 1) { -2441: throw_dimension_incompatible("affine_image(v, e, d)", var_id + 1); -2441: } -2441: -2441: strong_closure_assign(); -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: -2441: -2441: dimension_type t = 0; -2441: -2441: dimension_type w_id = expr.last_nonzero(); -2441: -2441: if (w_id != 0) { -2441: ++t; -2441: if (!expr.all_zeroes(1, w_id)) { -2441: ++t; -2441: } -2441: --w_id; -2441: } -2441: -2441: typedef typename OR_Matrix::row_iterator row_iterator; -2441: typedef typename OR_Matrix::row_reference_type row_reference; -2441: typedef typename OR_Matrix::const_row_iterator Row_iterator; -2441: typedef typename OR_Matrix::const_row_reference_type Row_reference; -2441: using std::swap; -2441: -2441: const dimension_type n_var = 2*var_id; -2441: const Coefficient& b = expr.inhomogeneous_term(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_denom; Parma_Polyhedra_Library::Coefficient& minus_denom = holder_minus_denom.item(); -2441: neg_assign_r(minus_denom, denominator, ROUND_NOT_NEEDED); -2441: # 5179 "../../src/Octagonal_Shape_templates.hh" -2441: if (t == 0) { -2441: -2441: -2441: forget_all_octagonal_constraints(var_id); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_two_b; Parma_Polyhedra_Library::Coefficient& two_b = holder_two_b.item(); -2441: two_b = 2*b; -2441: -2441: add_octagonal_constraint(n_var + 1, n_var, two_b, denominator); -2441: add_octagonal_constraint(n_var, n_var + 1, two_b, minus_denom); -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: if (t == 1) { -2441: -2441: const Coefficient& w_coeff = expr.coefficient(Variable(w_id)); -2441: if (w_coeff == denominator || w_coeff == minus_denom) { -2441: -2441: if (w_id == var_id) { -2441: -2441: const bool sign_symmetry = (w_coeff != denominator); -2441: if (!sign_symmetry && b == 0) { -2441: -2441: return; -2441: } -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_d; N& d = holder_d.item(); -2441: div_round_up(d, b, denominator); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_d; N& minus_d = holder_minus_d.item(); -2441: div_round_up(minus_d, b, minus_denom); -2441: if (sign_symmetry) { -2441: swap(d, minus_d); -2441: } -2441: const row_iterator m_begin = matrix.row_begin(); -2441: const row_iterator m_end = matrix.row_end(); -2441: row_iterator m_iter = m_begin + n_var; -2441: row_reference m_v = *m_iter; -2441: ++m_iter; -2441: row_reference m_cv = *m_iter; -2441: ++m_iter; -2441: -2441: for (dimension_type j = n_var; j-- > 0; ) { -2441: N& m_v_j = m_v[j]; -2441: add_assign_r(m_v_j, m_v_j, minus_d, ROUND_UP); -2441: N& m_cv_j = m_cv[j]; -2441: add_assign_r(m_cv_j, m_cv_j, d, ROUND_UP); -2441: if (sign_symmetry) { -2441: swap(m_v_j, m_cv_j); -2441: } -2441: } -2441: for ( ; m_iter != m_end; ++m_iter) { -2441: row_reference m_i = *m_iter; -2441: N& m_i_v = m_i[n_var]; -2441: add_assign_r(m_i_v, m_i_v, d, ROUND_UP); -2441: N& m_i_cv = m_i[n_var + 1]; -2441: add_assign_r(m_i_cv, m_i_cv, minus_d, ROUND_UP); -2441: if (sign_symmetry) { -2441: swap(m_i_v, m_i_cv); -2441: } -2441: } -2441: -2441: mul_2exp_assign_r(d, d, 1, ROUND_UP); -2441: N& m_cv_v = m_cv[n_var]; -2441: add_assign_r(m_cv_v, m_cv_v, d, ROUND_UP); -2441: mul_2exp_assign_r(minus_d, minus_d, 1, ROUND_UP); -2441: N& m_v_cv = m_v[n_var + 1]; -2441: add_assign_r(m_v_cv, m_v_cv, minus_d, ROUND_UP); -2441: if (sign_symmetry) { -2441: swap(m_cv_v, m_v_cv); -2441: } -2441: -2441: } -2441: else { -2441: -2441: -2441: -2441: forget_all_octagonal_constraints(var_id); -2441: const dimension_type n_w = 2*w_id; -2441: -2441: if (w_coeff == denominator) { -2441: if (var_id < w_id) { -2441: add_octagonal_constraint(n_w, n_var, b, denominator); -2441: add_octagonal_constraint(n_w + 1, n_var + 1, b, minus_denom); -2441: } -2441: else { -2441: add_octagonal_constraint(n_var + 1, n_w + 1, b, denominator); -2441: add_octagonal_constraint(n_var, n_w, b, minus_denom); -2441: } -2441: } -2441: else { -2441: -2441: if (var_id < w_id) { -2441: add_octagonal_constraint(n_w + 1, n_var, b, denominator); -2441: add_octagonal_constraint(n_w, n_var + 1, b, minus_denom); -2441: } -2441: else { -2441: add_octagonal_constraint(n_var + 1, n_w, b, denominator); -2441: add_octagonal_constraint(n_var, n_w + 1, b, minus_denom); -2441: } -2441: } -2441: incremental_strong_closure_assign(var); -2441: } -2441: ((void) 0); -2441: return; -2441: } -2441: } -2441: # 5299 "../../src/Octagonal_Shape_templates.hh" -2441: const bool is_sc = (denominator > 0); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_b; Parma_Polyhedra_Library::Coefficient& minus_b = holder_minus_b.item(); -2441: neg_assign_r(minus_b, b, ROUND_NOT_NEEDED); -2441: -2441: const Coefficient& sc_b = is_sc ? b : minus_b; -2441: const Coefficient& minus_sc_b = is_sc ? minus_b : b; -2441: const Coefficient& sc_denom = is_sc ? denominator : minus_denom; -2441: const Coefficient& minus_sc_denom = is_sc ? minus_denom : denominator; -2441: -2441: -2441: -2441: Linear_Expression minus_expr; -2441: if (!is_sc) { -2441: minus_expr = -expr; -2441: } -2441: const Linear_Expression& sc_expr = is_sc ? expr : minus_expr; -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_pos_sum; N& pos_sum = holder_pos_sum.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_neg_sum; N& neg_sum = holder_neg_sum.item(); -2441: -2441: dimension_type pos_pinf_index = Suppress_Uninitialized_Warnings_Type::synonym(); -2441: dimension_type neg_pinf_index = Suppress_Uninitialized_Warnings_Type::synonym(); -2441: -2441: dimension_type pos_pinf_count = 0; -2441: dimension_type neg_pinf_count = 0; -2441: -2441: -2441: assign_r(pos_sum, sc_b, ROUND_UP); -2441: assign_r(neg_sum, minus_sc_b, ROUND_UP); -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_coeff_i; N& coeff_i = holder_coeff_i.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_coeff_i; N& minus_coeff_i = holder_minus_coeff_i.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_half; N& half = holder_half.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_sc_i; Parma_Polyhedra_Library::Coefficient& minus_sc_i = holder_minus_sc_i.item(); -2441: -2441: -2441: const row_iterator m_begin = matrix.row_begin(); -2441: for (Row_iterator m_iter = m_begin, m_iter_end = m_begin + (2 * w_id + 2); -2441: m_iter != m_iter_end; ) { -2441: const dimension_type n_i = m_iter.index(); -2441: const dimension_type id = n_i/2; -2441: Row_reference m_i = *m_iter; -2441: ++m_iter; -2441: Row_reference m_ci = *m_iter; -2441: ++m_iter; -2441: const Coefficient& sc_i = sc_expr.coefficient(Variable(id)); -2441: const int sign_i = sgn(sc_i); -2441: if (sign_i > 0) { -2441: assign_r(coeff_i, sc_i, ROUND_UP); -2441: -2441: if (pos_pinf_count <= 1) { -2441: const N& double_up_approx_i = m_ci[n_i]; -2441: if (!is_plus_infinity(double_up_approx_i)) { -2441: -2441: div_2exp_assign_r(half, double_up_approx_i, 1, ROUND_UP); -2441: add_mul_assign_r(pos_sum, coeff_i, half, ROUND_UP); -2441: } -2441: else { -2441: ++pos_pinf_count; -2441: pos_pinf_index = id; -2441: } -2441: } -2441: -2441: if (neg_pinf_count <= 1) { -2441: const N& double_up_approx_minus_i = m_i[n_i + 1]; -2441: if (!is_plus_infinity(double_up_approx_minus_i)) { -2441: -2441: div_2exp_assign_r(half, double_up_approx_minus_i, 1, ROUND_UP); -2441: add_mul_assign_r(neg_sum, coeff_i, half, ROUND_UP); -2441: } -2441: else { -2441: ++neg_pinf_count; -2441: neg_pinf_index = id; -2441: } -2441: } -2441: } -2441: else if (sign_i < 0) { -2441: neg_assign_r(minus_sc_i, sc_i, ROUND_NOT_NEEDED); -2441: assign_r(minus_coeff_i, minus_sc_i, ROUND_UP); -2441: -2441: if (pos_pinf_count <= 1) { -2441: const N& double_up_approx_minus_i = m_i[n_i + 1]; -2441: if (!is_plus_infinity(double_up_approx_minus_i)) { -2441: -2441: div_2exp_assign_r(half, double_up_approx_minus_i, 1, ROUND_UP); -2441: add_mul_assign_r(pos_sum, minus_coeff_i, half, ROUND_UP); -2441: } -2441: else { -2441: ++pos_pinf_count; -2441: pos_pinf_index = id; -2441: } -2441: } -2441: -2441: if (neg_pinf_count <= 1) { -2441: const N& double_up_approx_i = m_ci[n_i]; -2441: if (!is_plus_infinity(double_up_approx_i)) { -2441: -2441: div_2exp_assign_r(half, double_up_approx_i, 1, ROUND_UP); -2441: add_mul_assign_r(neg_sum, minus_coeff_i, half, ROUND_UP); -2441: } -2441: else { -2441: ++neg_pinf_count; -2441: neg_pinf_index = id; -2441: } -2441: } -2441: } -2441: } -2441: -2441: -2441: forget_all_octagonal_constraints(var_id); -2441: -2441: if (pos_pinf_count > 1 && neg_pinf_count > 1) { -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: -2441: reset_strongly_closed(); -2441: -2441: -2441: if (pos_pinf_count <= 1) { -2441: -2441: if (sc_denom != 1) { -2441: -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_down_sc_denom; N& down_sc_denom = holder_down_sc_denom.item(); -2441: assign_r(down_sc_denom, minus_sc_denom, ROUND_UP); -2441: neg_assign_r(down_sc_denom, down_sc_denom, ROUND_UP); -2441: div_assign_r(pos_sum, pos_sum, down_sc_denom, ROUND_UP); -2441: } -2441: -2441: if (pos_pinf_count == 0) { -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_double_pos_sum; N& double_pos_sum = holder_double_pos_sum.item(); -2441: mul_2exp_assign_r(double_pos_sum, pos_sum, 1, ROUND_UP); -2441: matrix[n_var + 1][n_var] = double_pos_sum; -2441: -2441: deduce_v_pm_u_bounds(var_id, w_id, sc_expr, sc_denom, pos_sum); -2441: } -2441: else { -2441: -2441: if (pos_pinf_index != var_id) { -2441: const Coefficient& ppi = sc_expr.coefficient(Variable(pos_pinf_index)); -2441: if (ppi == sc_denom) { -2441: -2441: if (var_id < pos_pinf_index) { -2441: matrix[2*pos_pinf_index][n_var] = pos_sum; -2441: } -2441: else { -2441: matrix[n_var + 1][2*pos_pinf_index + 1] = pos_sum; -2441: } -2441: } -2441: else { -2441: if (ppi == minus_sc_denom) { -2441: -2441: if (var_id < pos_pinf_index) { -2441: matrix[2*pos_pinf_index + 1][n_var] = pos_sum; -2441: } -2441: else { -2441: matrix[n_var + 1][2*pos_pinf_index] = pos_sum; -2441: } -2441: } -2441: } -2441: } -2441: } -2441: } -2441: -2441: -2441: if (neg_pinf_count <= 1) { -2441: -2441: if (sc_denom != 1) { -2441: -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_down_sc_denom; N& down_sc_denom = holder_down_sc_denom.item(); -2441: assign_r(down_sc_denom, minus_sc_denom, ROUND_UP); -2441: neg_assign_r(down_sc_denom, down_sc_denom, ROUND_UP); -2441: div_assign_r(neg_sum, neg_sum, down_sc_denom, ROUND_UP); -2441: } -2441: -2441: if (neg_pinf_count == 0) { -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_double_neg_sum; N& double_neg_sum = holder_double_neg_sum.item(); -2441: mul_2exp_assign_r(double_neg_sum, neg_sum, 1, ROUND_UP); -2441: matrix[n_var][n_var + 1] = double_neg_sum; -2441: -2441: deduce_minus_v_pm_u_bounds(var_id, w_id, sc_expr, sc_denom, neg_sum); -2441: } -2441: else { -2441: -2441: if (neg_pinf_index != var_id) { -2441: const Coefficient& npi = sc_expr.coefficient(Variable(neg_pinf_index)); -2441: if (npi == sc_denom) { -2441: -2441: -2441: if (neg_pinf_index < var_id) { -2441: matrix[n_var][2*neg_pinf_index] = neg_sum; -2441: } -2441: else { -2441: matrix[2*neg_pinf_index + 1][n_var + 1] = neg_sum; -2441: } -2441: } -2441: else { -2441: if (npi == minus_sc_denom) { -2441: -2441: -2441: if (neg_pinf_index < var_id) { -2441: matrix[n_var][2*neg_pinf_index + 1] = neg_sum; -2441: } -2441: else { -2441: matrix[2*neg_pinf_index][n_var + 1] = neg_sum; -2441: } -2441: } -2441: } -2441: } -2441: } -2441: } -2441: -2441: incremental_strong_closure_assign(var); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: template -2441: void -2441: Octagonal_Shape::affine_form_image(const Variable var, -2441: const Linear_Form< Interval >& lf) { -2441: -2441: enum anonymous_enum_compile_time_check___LINE__ { compile_time_check_5533 = sizeof(Parma_Polyhedra_Library::Compile_Time_Check<(!std::numeric_limits::is_exact)>) } -2441: -2441: ; -2441: -2441: -2441: -2441: -2441: const dimension_type lf_space_dim = lf.space_dimension(); -2441: if (space_dim < lf_space_dim) { -2441: throw_dimension_incompatible("affine_form_image(v, l)", "l", lf); -2441: } -2441: -2441: -2441: const dimension_type var_id = var.id(); -2441: if (space_dim < var_id + 1) { -2441: throw_dimension_incompatible("affine_form_image(v, l)", var.id() + 1); -2441: } -2441: -2441: strong_closure_assign(); -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: -2441: -2441: dimension_type t = 0; -2441: -2441: dimension_type w_id = 0; -2441: -2441: -2441: for (dimension_type i = lf_space_dim; i-- > 0; ) { -2441: if (lf.coefficient(Variable(i)) != 0) { -2441: if (t++ == 1) { -2441: break; -2441: } -2441: else { -2441: w_id = i; -2441: } -2441: } -2441: } -2441: -2441: typedef typename OR_Matrix::row_iterator row_iterator; -2441: typedef typename OR_Matrix::row_reference_type row_reference; -2441: typedef Interval FP_Interval_Type; -2441: using std::swap; -2441: -2441: const dimension_type n_var = 2*var_id; -2441: const FP_Interval_Type& b = lf.inhomogeneous_term(); -2441: # 5588 "../../src/Octagonal_Shape_templates.hh" -2441: Parma_Polyhedra_Library::Dirty_Temp holder_b_ub; N& b_ub = holder_b_ub.item(); -2441: assign_r(b_ub, b.upper(), ROUND_NOT_NEEDED); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_b_mlb; N& b_mlb = holder_b_mlb.item(); -2441: neg_assign_r(b_mlb, b.lower(), ROUND_NOT_NEEDED); -2441: -2441: if (t == 0) { -2441: -2441: forget_all_octagonal_constraints(var_id); -2441: mul_2exp_assign_r(b_mlb, b_mlb, 1, ROUND_UP); -2441: mul_2exp_assign_r(b_ub, b_ub, 1, ROUND_UP); -2441: -2441: add_octagonal_constraint(n_var + 1, n_var, b_ub); -2441: add_octagonal_constraint(n_var, n_var + 1, b_mlb); -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: -2441: bool is_b_zero = (b_mlb == 0 && b_ub == 0); -2441: -2441: if (t == 1) { -2441: -2441: const FP_Interval_Type& w_coeff = lf.coefficient(Variable(w_id)); -2441: -2441: bool is_w_coeff_one = (w_coeff == 1); -2441: -2441: bool is_w_coeff_minus_one = (w_coeff == -1); -2441: if (is_w_coeff_one || is_w_coeff_minus_one) { -2441: -2441: if (w_id == var_id) { -2441: -2441: if (is_w_coeff_one && is_b_zero) { -2441: -2441: return; -2441: } -2441: -2441: -2441: if (is_w_coeff_minus_one) { -2441: swap(b_ub, b_mlb); -2441: } -2441: const row_iterator m_begin = matrix.row_begin(); -2441: const row_iterator m_end = matrix.row_end(); -2441: row_iterator m_iter = m_begin + n_var; -2441: row_reference m_v = *m_iter; -2441: ++m_iter; -2441: row_reference m_cv = *m_iter; -2441: ++m_iter; -2441: -2441: for (dimension_type j = n_var; j-- > 0; ) { -2441: N& m_v_j = m_v[j]; -2441: add_assign_r(m_v_j, m_v_j, b_mlb, ROUND_UP); -2441: N& m_cv_j = m_cv[j]; -2441: add_assign_r(m_cv_j, m_cv_j, b_ub, ROUND_UP); -2441: if (is_w_coeff_minus_one) { -2441: swap(m_v_j, m_cv_j); -2441: } -2441: } -2441: for ( ; m_iter != m_end; ++m_iter) { -2441: row_reference m_i = *m_iter; -2441: N& m_i_v = m_i[n_var]; -2441: add_assign_r(m_i_v, m_i_v, b_ub, ROUND_UP); -2441: N& m_i_cv = m_i[n_var + 1]; -2441: add_assign_r(m_i_cv, m_i_cv, b_mlb, ROUND_UP); -2441: if (is_w_coeff_minus_one) { -2441: swap(m_i_v, m_i_cv); -2441: } -2441: } -2441: -2441: mul_2exp_assign_r(b_ub, b_ub, 1, ROUND_UP); -2441: N& m_cv_v = m_cv[n_var]; -2441: add_assign_r(m_cv_v, m_cv_v, b_ub, ROUND_UP); -2441: mul_2exp_assign_r(b_mlb, b_mlb, 1, ROUND_UP); -2441: N& m_v_cv = m_v[n_var + 1]; -2441: add_assign_r(m_v_cv, m_v_cv, b_mlb, ROUND_UP); -2441: if (is_w_coeff_minus_one) { -2441: swap(m_cv_v, m_v_cv); -2441: } -2441: -2441: } -2441: else { -2441: -2441: -2441: -2441: forget_all_octagonal_constraints(var_id); -2441: const dimension_type n_w = 2*w_id; -2441: if (is_w_coeff_one) { -2441: -2441: -2441: if (var_id < w_id) { -2441: add_octagonal_constraint(n_w, n_var, b_ub); -2441: add_octagonal_constraint(n_w + 1, n_var + 1, b_mlb); -2441: } -2441: else { -2441: add_octagonal_constraint(n_var + 1, n_w + 1, b_ub); -2441: add_octagonal_constraint(n_var, n_w, b_mlb); -2441: } -2441: } -2441: else { -2441: -2441: -2441: if (var_id < w_id) { -2441: add_octagonal_constraint(n_w + 1, n_var, b_ub); -2441: add_octagonal_constraint(n_w, n_var + 1, b_mlb); -2441: } -2441: else { -2441: add_octagonal_constraint(n_var + 1, n_w, b_ub); -2441: add_octagonal_constraint(n_var, n_w + 1, b_mlb); -2441: } -2441: } -2441: incremental_strong_closure_assign(var); -2441: } -2441: ((void) 0); -2441: return; -2441: } -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: reset_strongly_closed(); -2441: -2441: Linear_Form minus_lf(lf); -2441: minus_lf.negate(); -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_upper_bound; N& upper_bound = holder_upper_bound.item(); -2441: -2441: row_iterator m_iter = matrix.row_begin(); -2441: m_iter += n_var; -2441: row_reference var_ite = *m_iter; -2441: ++m_iter; -2441: row_reference var_cv_ite = *m_iter; -2441: ++m_iter; -2441: row_iterator m_end = matrix.row_end(); -2441: -2441: -2441: for (dimension_type curr_var = var_id, -2441: n_curr_var = n_var - 2; curr_var-- > 0; ) { -2441: Variable current(curr_var); -2441: linear_form_upper_bound(lf + current, upper_bound); -2441: assign_r(var_cv_ite[n_curr_var], upper_bound, ROUND_NOT_NEEDED); -2441: linear_form_upper_bound(lf - current, upper_bound); -2441: assign_r(var_cv_ite[n_curr_var + 1], upper_bound, ROUND_NOT_NEEDED); -2441: linear_form_upper_bound(minus_lf + current, upper_bound); -2441: assign_r(var_ite[n_curr_var], upper_bound, ROUND_NOT_NEEDED); -2441: linear_form_upper_bound(minus_lf - current, upper_bound); -2441: assign_r(var_ite[n_curr_var + 1], upper_bound, ROUND_NOT_NEEDED); -2441: n_curr_var -= 2; -2441: } -2441: for (dimension_type curr_var = var_id + 1; m_iter != m_end; ++m_iter) { -2441: row_reference m_v_ite = *m_iter; -2441: ++m_iter; -2441: row_reference m_cv_ite = *m_iter; -2441: Variable current(curr_var); -2441: linear_form_upper_bound(lf + current, upper_bound); -2441: assign_r(m_cv_ite[n_var], upper_bound, ROUND_NOT_NEEDED); -2441: linear_form_upper_bound(lf - current, upper_bound); -2441: assign_r(m_v_ite[n_var], upper_bound, ROUND_NOT_NEEDED); -2441: linear_form_upper_bound(minus_lf + current, upper_bound); -2441: assign_r(m_cv_ite[n_var + 1], upper_bound, ROUND_NOT_NEEDED); -2441: linear_form_upper_bound(minus_lf - current, upper_bound); -2441: assign_r(m_v_ite[n_var + 1], upper_bound, ROUND_NOT_NEEDED); -2441: ++curr_var; -2441: } -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_lf_ub; N& lf_ub = holder_lf_ub.item(); -2441: linear_form_upper_bound(lf, lf_ub); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_lf_ub; N& minus_lf_ub = holder_minus_lf_ub.item(); -2441: linear_form_upper_bound(minus_lf, minus_lf_ub); -2441: mul_2exp_assign_r(lf_ub, lf_ub, 1, ROUND_UP); -2441: assign_r(matrix[n_var + 1][n_var], lf_ub, ROUND_NOT_NEEDED); -2441: mul_2exp_assign_r(minus_lf_ub, minus_lf_ub, 1, ROUND_UP); -2441: assign_r(matrix[n_var][n_var + 1], minus_lf_ub, ROUND_NOT_NEEDED); -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: template -2441: void -2441: Octagonal_Shape:: -2441: linear_form_upper_bound(const Linear_Form< Interval >& lf, -2441: N& result) const { -2441: -2441: -2441: enum anonymous_enum_compile_time_check___LINE__ { compile_time_check_5779 = sizeof(Parma_Polyhedra_Library::Compile_Time_Check<(!std::numeric_limits::is_exact)>) } -2441: -2441: ; -2441: -2441: const dimension_type lf_space_dimension = lf.space_dimension(); -2441: ((void) 0); -2441: -2441: typedef Interval FP_Interval_Type; -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_curr_lb; N& curr_lb = holder_curr_lb.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_curr_ub; N& curr_ub = holder_curr_ub.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_curr_var_ub; N& curr_var_ub = holder_curr_var_ub.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_curr_minus_var_ub; N& curr_minus_var_ub = holder_curr_minus_var_ub.item(); -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_first_comparison_term; N& first_comparison_term = holder_first_comparison_term.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_second_comparison_term; N& second_comparison_term = holder_second_comparison_term.item(); -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_negator; N& negator = holder_negator.item(); -2441: -2441: assign_r(result, lf.inhomogeneous_term().upper(), ROUND_NOT_NEEDED); -2441: -2441: for (dimension_type curr_var = 0, n_var = 0; curr_var < lf_space_dimension; -2441: ++curr_var) { -2441: const FP_Interval_Type& curr_coefficient = -2441: lf.coefficient(Variable(curr_var)); -2441: assign_r(curr_lb, curr_coefficient.lower(), ROUND_NOT_NEEDED); -2441: assign_r(curr_ub, curr_coefficient.upper(), ROUND_NOT_NEEDED); -2441: if (curr_lb != 0 || curr_ub != 0) { -2441: assign_r(curr_var_ub, matrix[n_var + 1][n_var], ROUND_NOT_NEEDED); -2441: div_2exp_assign_r(curr_var_ub, curr_var_ub, 1, ROUND_UP); -2441: neg_assign_r(curr_minus_var_ub, matrix[n_var][n_var + 1], -2441: ROUND_NOT_NEEDED); -2441: div_2exp_assign_r(curr_minus_var_ub, curr_minus_var_ub, 1, ROUND_DOWN); -2441: -2441: if (curr_lb == 1 && curr_ub == 1) { -2441: add_assign_r(result, result, std::max(curr_var_ub, curr_minus_var_ub), -2441: ROUND_UP); -2441: } -2441: else if (curr_lb == -1 && curr_ub == -1) { -2441: neg_assign_r(negator, std::min(curr_var_ub, curr_minus_var_ub), -2441: ROUND_NOT_NEEDED); -2441: add_assign_r(result, result, negator, ROUND_UP); -2441: } -2441: else { -2441: -2441: assign_r(first_comparison_term, 0, ROUND_NOT_NEEDED); -2441: assign_r(second_comparison_term, 0, ROUND_NOT_NEEDED); -2441: add_mul_assign_r(first_comparison_term, curr_var_ub, curr_ub, -2441: ROUND_UP); -2441: add_mul_assign_r(second_comparison_term, curr_var_ub, curr_lb, -2441: ROUND_UP); -2441: assign_r(first_comparison_term, std::max(first_comparison_term, -2441: second_comparison_term), -2441: ROUND_NOT_NEEDED); -2441: assign_r(second_comparison_term, 0, ROUND_NOT_NEEDED); -2441: add_mul_assign_r(second_comparison_term, curr_minus_var_ub, curr_ub, -2441: ROUND_UP); -2441: assign_r(first_comparison_term, std::max(first_comparison_term, -2441: second_comparison_term), -2441: ROUND_NOT_NEEDED); -2441: assign_r(second_comparison_term, 0, ROUND_NOT_NEEDED); -2441: add_mul_assign_r(second_comparison_term, curr_minus_var_ub, curr_lb, -2441: ROUND_UP); -2441: assign_r(first_comparison_term, std::max(first_comparison_term, -2441: second_comparison_term), -2441: ROUND_NOT_NEEDED); -2441: -2441: add_assign_r(result, result, first_comparison_term, ROUND_UP); -2441: } -2441: } -2441: -2441: n_var += 2; -2441: } -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape:: -2441: interval_coefficient_upper_bound(const N& var_ub, const N& minus_var_ub, -2441: const N& int_ub, const N& int_lb, -2441: N& result) { -2441: -2441: -2441: enum anonymous_enum_compile_time_check___LINE__ { compile_time_check_5862 = sizeof(Parma_Polyhedra_Library::Compile_Time_Check<(!std::numeric_limits::is_exact)>) } -2441: -2441: ; -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_second_comparison_term; N& second_comparison_term = holder_second_comparison_term.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_third_comparison_term; N& third_comparison_term = holder_third_comparison_term.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_fourth_comparison_term; N& fourth_comparison_term = holder_fourth_comparison_term.item(); -2441: -2441: assign_r(result, 0, ROUND_NOT_NEEDED); -2441: assign_r(second_comparison_term, 0, ROUND_NOT_NEEDED); -2441: assign_r(third_comparison_term, 0, ROUND_NOT_NEEDED); -2441: assign_r(fourth_comparison_term, 0, ROUND_NOT_NEEDED); -2441: -2441: add_mul_assign_r(result, var_ub, int_ub, ROUND_UP); -2441: add_mul_assign_r(second_comparison_term, minus_var_ub, int_ub, ROUND_UP); -2441: add_mul_assign_r(third_comparison_term, var_ub, int_lb, ROUND_UP); -2441: add_mul_assign_r(fourth_comparison_term, minus_var_ub, int_lb, ROUND_UP); -2441: -2441: assign_r(result, std::max(result, second_comparison_term), ROUND_NOT_NEEDED); -2441: assign_r(result, std::max(result, third_comparison_term), ROUND_NOT_NEEDED); -2441: assign_r(result, std::max(result, fourth_comparison_term), ROUND_NOT_NEEDED); -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::affine_preimage(const Variable var, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference -2441: denominator) { -2441: -2441: -2441: if (denominator == 0) { -2441: throw_invalid_argument("affine_preimage(v, e, d)", "d == 0"); -2441: } -2441: -2441: -2441: -2441: -2441: const dimension_type expr_space_dim = expr.space_dimension(); -2441: if (space_dim < expr_space_dim) { -2441: throw_dimension_incompatible("affine_preimage(v, e, d)", "e", expr); -2441: } -2441: -2441: -2441: dimension_type var_id = var.id(); -2441: if (space_dim < var_id + 1) { -2441: throw_dimension_incompatible("affine_preimage(v, e, d)", var_id + 1); -2441: } -2441: -2441: strong_closure_assign(); -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: const Coefficient& b = expr.inhomogeneous_term(); -2441: -2441: -2441: -2441: dimension_type t = 0; -2441: -2441: -2441: dimension_type w_id = expr.last_nonzero(); -2441: -2441: if (w_id != 0) { -2441: ++t; -2441: if (!expr.all_zeroes(1, w_id)) { -2441: ++t; -2441: } -2441: --w_id; -2441: } -2441: # 5942 "../../src/Octagonal_Shape_templates.hh" -2441: if (t == 0) { -2441: -2441: forget_all_octagonal_constraints(var_id); -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: if (t == 1) { -2441: -2441: const Coefficient& w_coeff = expr.coefficient(Variable(w_id)); -2441: if (w_coeff == denominator || w_coeff == -denominator) { -2441: -2441: if (w_id == var_id) { -2441: -2441: affine_image(var, denominator*var - b, w_coeff); -2441: } -2441: else { -2441: -2441: -2441: forget_all_octagonal_constraints(var_id); -2441: ((void) 0); -2441: } -2441: return; -2441: } -2441: } -2441: -2441: -2441: -2441: -2441: const Coefficient& coeff_v = expr.coefficient(var); -2441: if (coeff_v != 0) { -2441: if (coeff_v > 0) { -2441: -2441: Linear_Expression inverse = ((coeff_v + denominator)*var); -2441: inverse -= expr; -2441: affine_image(var, inverse, coeff_v); -2441: } -2441: else { -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_coeff_v; Parma_Polyhedra_Library::Coefficient& minus_coeff_v = holder_minus_coeff_v.item(); -2441: neg_assign(minus_coeff_v, coeff_v); -2441: Linear_Expression inverse = ((minus_coeff_v - denominator)*var); -2441: inverse += expr; -2441: affine_image(var, inverse, minus_coeff_v); -2441: } -2441: } -2441: else { -2441: -2441: forget_all_octagonal_constraints(var_id); -2441: ((void) 0); -2441: } -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape -2441: ::generalized_affine_image(const Variable var, -2441: const Relation_Symbol relsym, -2441: const Linear_Expression& expr , -2441: Coefficient_traits::const_reference denominator) { -2441: -2441: if (denominator == 0) { -2441: throw_invalid_argument("generalized_affine_image(v, r, e, d)", "d == 0"); -2441: } -2441: -2441: -2441: -2441: -2441: const dimension_type expr_space_dim = expr.space_dimension(); -2441: if (space_dim < expr_space_dim) { -2441: throw_dimension_incompatible("generalized_affine_image(v, r, e, d)", "e", -2441: expr); -2441: } -2441: -2441: -2441: dimension_type var_id = var.id(); -2441: if (space_dim < var_id + 1) { -2441: throw_dimension_incompatible("generalized_affine_image(v, r, e, d)", -2441: var_id + 1); -2441: } -2441: -2441: -2441: if (relsym == LESS_THAN || relsym == GREATER_THAN) { -2441: throw_invalid_argument("generalized_affine_image(v, r, e, d)", -2441: "r is a strict relation symbol"); -2441: } -2441: -2441: if (relsym == NOT_EQUAL) { -2441: throw_invalid_argument("generalized_affine_image(v, r, e, d)", -2441: "r is the disequality relation symbol"); -2441: } -2441: -2441: if (relsym == EQUAL) { -2441: -2441: -2441: affine_image(var, expr, denominator); -2441: return; -2441: } -2441: -2441: strong_closure_assign(); -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: -2441: -2441: dimension_type t = 0; -2441: -2441: dimension_type w_id = expr.last_nonzero(); -2441: -2441: if (w_id != 0) { -2441: ++t; -2441: if (!expr.all_zeroes(1, w_id)) { -2441: ++t; -2441: } -2441: --w_id; -2441: } -2441: -2441: typedef typename OR_Matrix::row_iterator row_iterator; -2441: typedef typename OR_Matrix::row_reference_type row_reference; -2441: typedef typename OR_Matrix::const_row_iterator Row_iterator; -2441: typedef typename OR_Matrix::const_row_reference_type Row_reference; -2441: -2441: const row_iterator m_begin = matrix.row_begin(); -2441: const row_iterator m_end = matrix.row_end(); -2441: const dimension_type n_var = 2*var_id; -2441: const Coefficient& b = expr.inhomogeneous_term(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_denom; Parma_Polyhedra_Library::Coefficient& minus_denom = holder_minus_denom.item(); -2441: neg_assign_r(minus_denom, denominator, ROUND_NOT_NEEDED); -2441: # 6082 "../../src/Octagonal_Shape_templates.hh" -2441: if (t == 0) { -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_two_b; Parma_Polyhedra_Library::Coefficient& two_b = holder_two_b.item(); -2441: two_b = 2*b; -2441: -2441: forget_all_octagonal_constraints(var_id); -2441: -2441: reset_strongly_closed(); -2441: switch (relsym) { -2441: case LESS_OR_EQUAL: -2441: -2441: add_octagonal_constraint(n_var + 1, n_var, two_b, denominator); -2441: break; -2441: case GREATER_OR_EQUAL: -2441: -2441: -2441: add_octagonal_constraint(n_var, n_var + 1, two_b, minus_denom); -2441: break; -2441: default: -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: if (t == 1) { -2441: -2441: const Coefficient& w_coeff = expr.coefficient(Variable(w_id)); -2441: if (w_coeff == denominator || w_coeff == minus_denom) { -2441: -2441: switch (relsym) { -2441: case LESS_OR_EQUAL: -2441: { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_d; N& d = holder_d.item(); -2441: div_round_up(d, b, denominator); -2441: if (w_id == var_id) { -2441: -2441: -2441: reset_strongly_closed(); -2441: if (w_coeff == denominator) { -2441: -2441: -2441: -2441: row_iterator m_iter = m_begin + n_var; -2441: row_reference m_v = *m_iter; -2441: N& m_v_cv = m_v[n_var + 1]; -2441: ++m_iter; -2441: row_reference m_cv = *m_iter; -2441: N& m_cv_v = m_cv[n_var]; -2441: ++m_iter; -2441: -2441: for ( ; m_iter != m_end; ++m_iter) { -2441: row_reference m_i = *m_iter; -2441: N& m_i_v = m_i[n_var]; -2441: add_assign_r(m_i_v, m_i_v, d, ROUND_UP); -2441: assign_r(m_i[n_var + 1], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: for (dimension_type k = n_var; k-- > 0; ) { -2441: assign_r(m_v[k], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: add_assign_r(m_cv[k], m_cv[k], d, ROUND_UP); -2441: } -2441: mul_2exp_assign_r(d, d, 1, ROUND_UP); -2441: add_assign_r(m_cv_v, m_cv_v, d, ROUND_UP); -2441: assign_r(m_v_cv, PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: else { -2441: -2441: -2441: N& m_v_cv = matrix[n_var][n_var + 1]; -2441: mul_2exp_assign_r(d, d, 1, ROUND_UP); -2441: add_assign_r(matrix[n_var + 1][n_var], m_v_cv, d, ROUND_UP); -2441: assign_r(m_v_cv, PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: forget_binary_octagonal_constraints(var_id); -2441: } -2441: } -2441: else { -2441: -2441: -2441: -2441: forget_all_octagonal_constraints(var_id); -2441: const dimension_type n_w = 2*w_id; -2441: if (w_coeff == denominator) { -2441: -2441: if (var_id < w_id) { -2441: add_octagonal_constraint(n_w, n_var, b, denominator); -2441: } -2441: else { -2441: add_octagonal_constraint(n_var + 1, n_w + 1, b, denominator); -2441: } -2441: } -2441: else { -2441: -2441: if (var_id < w_id) { -2441: add_octagonal_constraint(n_w + 1, n_var, b, denominator); -2441: } -2441: else { -2441: add_octagonal_constraint(n_var + 1, n_w, b, denominator); -2441: } -2441: } -2441: } -2441: break; -2441: } -2441: -2441: case GREATER_OR_EQUAL: -2441: { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_d; N& d = holder_d.item(); -2441: div_round_up(d, b, minus_denom); -2441: if (w_id == var_id) { -2441: -2441: -2441: reset_strongly_closed(); -2441: if (w_coeff == denominator) { -2441: -2441: -2441: -2441: row_iterator m_iter = m_begin + n_var; -2441: row_reference m_v = *m_iter; -2441: N& m_v_cv = m_v[n_var + 1]; -2441: ++m_iter; -2441: row_reference m_cv = *m_iter; -2441: N& m_cv_v = m_cv[n_var]; -2441: ++m_iter; -2441: -2441: for ( ; m_iter != m_end; ++m_iter) { -2441: row_reference m_i = *m_iter; -2441: assign_r(m_i[n_var], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: add_assign_r(m_i[n_var + 1], m_i[n_var + 1], d, ROUND_UP); -2441: } -2441: for (dimension_type k = n_var; k-- > 0; ) { -2441: add_assign_r(m_v[k], m_v[k], d, ROUND_UP); -2441: assign_r(m_cv[k], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: mul_2exp_assign_r(d, d, 1, ROUND_UP); -2441: add_assign_r(m_v_cv, m_v_cv, d, ROUND_UP); -2441: assign_r(m_cv_v, PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: else { -2441: -2441: -2441: N& m_cv_v = matrix[n_var + 1][n_var]; -2441: mul_2exp_assign_r(d, d, 1, ROUND_UP); -2441: add_assign_r(matrix[n_var][n_var + 1], m_cv_v, d, ROUND_UP); -2441: assign_r(m_cv_v, PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: forget_binary_octagonal_constraints(var_id); -2441: } -2441: } -2441: else { -2441: -2441: -2441: -2441: forget_all_octagonal_constraints(var_id); -2441: const dimension_type n_w = 2*w_id; -2441: -2441: -2441: -2441: -2441: if (w_coeff == denominator) { -2441: -2441: -2441: if (var_id < w_id) { -2441: add_octagonal_constraint(n_w + 1, n_var + 1, b, minus_denom); -2441: } -2441: else { -2441: add_octagonal_constraint(n_var, n_w, b, minus_denom); -2441: } -2441: } -2441: else { -2441: -2441: -2441: if (var_id < w_id) { -2441: add_octagonal_constraint(n_w, n_var + 1, b, minus_denom); -2441: } -2441: else { -2441: add_octagonal_constraint(n_var, n_w + 1, b, minus_denom); -2441: } -2441: } -2441: } -2441: break; -2441: } -2441: -2441: default: -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: ((void) 0); -2441: return; -2441: } -2441: } -2441: # 6281 "../../src/Octagonal_Shape_templates.hh" -2441: const bool is_sc = (denominator > 0); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_b; Parma_Polyhedra_Library::Coefficient& minus_b = holder_minus_b.item(); -2441: neg_assign(minus_b, b); -2441: const Coefficient& sc_b = is_sc ? b : minus_b; -2441: const Coefficient& minus_sc_b = is_sc ? minus_b : b; -2441: const Coefficient& sc_denom = is_sc ? denominator : minus_denom; -2441: const Coefficient& minus_sc_denom = is_sc ? minus_denom : denominator; -2441: -2441: -2441: -2441: Linear_Expression minus_expr; -2441: if (!is_sc) { -2441: minus_expr = -expr; -2441: } -2441: const Linear_Expression& sc_expr = is_sc ? expr : minus_expr; -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_sum; N& sum = holder_sum.item(); -2441: -2441: dimension_type pinf_index = Suppress_Uninitialized_Warnings_Type::synonym(); -2441: -2441: dimension_type pinf_count = 0; -2441: -2441: switch (relsym) { -2441: case LESS_OR_EQUAL: -2441: { -2441: -2441: -2441: -2441: assign_r(sum, sc_b, ROUND_UP); -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_coeff_i; N& coeff_i = holder_coeff_i.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_approx_i; N& approx_i = holder_approx_i.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_sc_i; Parma_Polyhedra_Library::Coefficient& minus_sc_i = holder_minus_sc_i.item(); -2441: -2441: -2441: for (Row_iterator m_iter = m_begin, m_iter_end = m_begin + (2 * w_id + 2); -2441: m_iter != m_iter_end; ) { -2441: const dimension_type n_i = m_iter.index(); -2441: const dimension_type id = n_i/2; -2441: Row_reference m_i = *m_iter; -2441: ++m_iter; -2441: Row_reference m_ci = *m_iter; -2441: ++m_iter; -2441: const Coefficient& sc_i = sc_expr.coefficient(Variable(id)); -2441: const int sign_i = sgn(sc_i); -2441: if (sign_i == 0) { -2441: continue; -2441: } -2441: -2441: const N& double_approx_i = (sign_i > 0) ? m_ci[n_i] : m_i[n_i + 1]; -2441: if (is_plus_infinity(double_approx_i)) { -2441: if (++pinf_count > 1) { -2441: break; -2441: } -2441: pinf_index = id; -2441: continue; -2441: } -2441: if (sign_i > 0) { -2441: assign_r(coeff_i, sc_i, ROUND_UP); -2441: } -2441: else { -2441: neg_assign(minus_sc_i, sc_i); -2441: assign_r(coeff_i, minus_sc_i, ROUND_UP); -2441: } -2441: div_2exp_assign_r(approx_i, double_approx_i, 1, ROUND_UP); -2441: add_mul_assign_r(sum, coeff_i, approx_i, ROUND_UP); -2441: } -2441: -2441: forget_all_octagonal_constraints(var_id); -2441: reset_strongly_closed(); -2441: -2441: if (pinf_count > 1) { -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: -2441: if (sc_denom != 1) { -2441: -2441: -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_down_sc_denom; N& down_sc_denom = holder_down_sc_denom.item(); -2441: assign_r(down_sc_denom, minus_sc_denom, ROUND_UP); -2441: neg_assign_r(down_sc_denom, down_sc_denom, ROUND_UP); -2441: div_assign_r(sum, sum, down_sc_denom, ROUND_UP); -2441: } -2441: -2441: if (pinf_count == 0) { -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_double_sum; N& double_sum = holder_double_sum.item(); -2441: mul_2exp_assign_r(double_sum, sum, 1, ROUND_UP); -2441: matrix[n_var + 1][n_var] = double_sum; -2441: -2441: deduce_v_pm_u_bounds(var_id, w_id, sc_expr, sc_denom, sum); -2441: } -2441: else if (pinf_count == 1) { -2441: if (pinf_index != var_id) { -2441: const Coefficient& pi = expr.coefficient(Variable(pinf_index)); -2441: if (pi == denominator ) { -2441: -2441: if (var_id < pinf_index) { -2441: matrix[2*pinf_index][n_var] = sum; -2441: } -2441: else { -2441: matrix[n_var + 1][2*pinf_index + 1] = sum; -2441: } -2441: } -2441: else { -2441: if (pi == minus_denom) { -2441: -2441: if (var_id < pinf_index) { -2441: matrix[2*pinf_index + 1][n_var] = sum; -2441: } -2441: else { -2441: matrix[n_var + 1][2*pinf_index] = sum; -2441: } -2441: } -2441: } -2441: } -2441: } -2441: break; -2441: } -2441: -2441: case GREATER_OR_EQUAL: -2441: { -2441: -2441: -2441: -2441: -2441: -2441: assign_r(sum, minus_sc_b, ROUND_UP); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_coeff_i; N& coeff_i = holder_coeff_i.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_sc_i; Parma_Polyhedra_Library::Coefficient& minus_sc_i = holder_minus_sc_i.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_approx_i; N& approx_i = holder_approx_i.item(); -2441: -2441: for (Row_iterator m_iter = m_begin, m_iter_end = m_begin + (2 * w_id + 2); -2441: m_iter != m_iter_end; ) { -2441: const dimension_type n_i = m_iter.index(); -2441: const dimension_type id = n_i/2; -2441: Row_reference m_i = *m_iter; -2441: ++m_iter; -2441: Row_reference m_ci = *m_iter; -2441: ++m_iter; -2441: const Coefficient& sc_i = sc_expr.coefficient(Variable(id)); -2441: const int sign_i = sgn(sc_i); -2441: if (sign_i == 0) { -2441: continue; -2441: } -2441: -2441: const N& double_approx_i = (sign_i > 0) ? m_i[n_i + 1] : m_ci[n_i]; -2441: if (is_plus_infinity(double_approx_i)) { -2441: if (++pinf_count > 1) { -2441: break; -2441: } -2441: pinf_index = id; -2441: continue; -2441: } -2441: if (sign_i > 0) { -2441: assign_r(coeff_i, sc_i, ROUND_UP); -2441: } -2441: else { -2441: neg_assign(minus_sc_i, sc_i); -2441: assign_r(coeff_i, minus_sc_i, ROUND_UP); -2441: } -2441: div_2exp_assign_r(approx_i, double_approx_i, 1, ROUND_UP); -2441: add_mul_assign_r(sum, coeff_i, approx_i, ROUND_UP); -2441: } -2441: -2441: -2441: forget_all_octagonal_constraints(var_id); -2441: reset_strongly_closed(); -2441: -2441: if (pinf_count > 1) { -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: -2441: if (sc_denom != 1) { -2441: -2441: -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_down_sc_denom; N& down_sc_denom = holder_down_sc_denom.item(); -2441: assign_r(down_sc_denom, minus_sc_denom, ROUND_UP); -2441: neg_assign_r(down_sc_denom, down_sc_denom, ROUND_UP); -2441: div_assign_r(sum, sum, down_sc_denom, ROUND_UP); -2441: } -2441: -2441: if (pinf_count == 0) { -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_double_sum; N& double_sum = holder_double_sum.item(); -2441: mul_2exp_assign_r(double_sum, sum, 1, ROUND_UP); -2441: matrix[n_var][n_var + 1] = double_sum; -2441: -2441: deduce_minus_v_pm_u_bounds(var_id, pinf_index, sc_expr, sc_denom, sum); -2441: } -2441: else if (pinf_count == 1) { -2441: if (pinf_index != var_id) { -2441: const Coefficient& pi = expr.coefficient(Variable(pinf_index)); -2441: if (pi == denominator) { -2441: -2441: -2441: if (pinf_index < var_id) { -2441: matrix[n_var][2*pinf_index] = sum; -2441: } -2441: else { -2441: matrix[2*pinf_index + 1][n_var + 1] = sum; -2441: } -2441: } -2441: else { -2441: if (pi == minus_denom) { -2441: -2441: -2441: if (pinf_index < var_id) { -2441: matrix[n_var][2*pinf_index + 1] = sum; -2441: } -2441: else { -2441: matrix[2*pinf_index][n_var + 1] = sum; -2441: } -2441: } -2441: } -2441: } -2441: } -2441: break; -2441: } -2441: -2441: default: -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: incremental_strong_closure_assign(var); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::generalized_affine_image(const Linear_Expression& lhs, -2441: const Relation_Symbol relsym, -2441: const Linear_Expression& rhs) { -2441: -2441: -2441: -2441: dimension_type lhs_space_dim = lhs.space_dimension(); -2441: if (space_dim < lhs_space_dim) { -2441: throw_dimension_incompatible("generalized_affine_image(e1, r, e2)", -2441: "e1", lhs); -2441: } -2441: -2441: -2441: const dimension_type rhs_space_dim = rhs.space_dimension(); -2441: if (space_dim < rhs_space_dim) { -2441: throw_dimension_incompatible("generalized_affine_image(e1, r, e2)", -2441: "e2", rhs); -2441: } -2441: -2441: -2441: if (relsym == LESS_THAN || relsym == GREATER_THAN) { -2441: throw_invalid_argument("generalized_affine_image(e1, r, e2)", -2441: "r is a strict relation symbol"); -2441: } -2441: -2441: if (relsym == NOT_EQUAL) { -2441: throw_invalid_argument("generalized_affine_image(e1, r, e2)", -2441: "r is the disequality relation symbol"); -2441: } -2441: -2441: strong_closure_assign(); -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: -2441: -2441: dimension_type t_lhs = 0; -2441: -2441: dimension_type j_lhs = lhs.last_nonzero(); -2441: -2441: if (j_lhs != 0) { -2441: ++t_lhs; -2441: if (!lhs.all_zeroes(1, j_lhs)) { -2441: ++t_lhs; -2441: } -2441: --j_lhs; -2441: } -2441: -2441: const Coefficient& b_lhs = lhs.inhomogeneous_term(); -2441: -2441: if (t_lhs == 0) { -2441: # 6583 "../../src/Octagonal_Shape_templates.hh" -2441: switch (relsym) { -2441: case LESS_OR_EQUAL: -2441: refine_no_check(lhs <= rhs); -2441: break; -2441: case EQUAL: -2441: refine_no_check(lhs == rhs); -2441: break; -2441: case GREATER_OR_EQUAL: -2441: refine_no_check(lhs >= rhs); -2441: break; -2441: default: -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: } -2441: -2441: else if (t_lhs == 1) { -2441: -2441: -2441: -2441: Variable v(j_lhs); -2441: -2441: const Coefficient& denom = lhs.coefficient(v); -2441: Relation_Symbol new_relsym = relsym; -2441: if (denom < 0) { -2441: if (relsym == LESS_OR_EQUAL) { -2441: new_relsym = GREATER_OR_EQUAL; -2441: } -2441: else if (relsym == GREATER_OR_EQUAL) { -2441: new_relsym = LESS_OR_EQUAL; -2441: } -2441: } -2441: Linear_Expression expr = rhs - b_lhs; -2441: generalized_affine_image(v, new_relsym, expr, denom); -2441: } -2441: else { -2441: -2441: -2441: std::vector lhs_vars; -2441: for (Linear_Expression::const_iterator i = lhs.begin(), i_end = lhs.end(); -2441: i != i_end; ++i) { -2441: lhs_vars.push_back(i.variable()); -2441: } -2441: -2441: const dimension_type num_common_dims = std::min(lhs_space_dim, rhs_space_dim); -2441: if (!lhs.have_a_common_variable(rhs, Variable(0), Variable(num_common_dims))) { -2441: -2441: -2441: for (dimension_type i = lhs_vars.size(); i-- > 0; ) { -2441: dimension_type lhs_vars_i = lhs_vars[i].id(); -2441: forget_all_octagonal_constraints(lhs_vars_i); -2441: } -2441: -2441: -2441: -2441: -2441: switch (relsym) { -2441: case LESS_OR_EQUAL: -2441: refine_no_check(lhs <= rhs); -2441: break; -2441: case EQUAL: -2441: refine_no_check(lhs == rhs); -2441: break; -2441: case GREATER_OR_EQUAL: -2441: refine_no_check(lhs >= rhs); -2441: break; -2441: default: -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: } -2441: else { -2441: -2441: -2441: -2441: -2441: for (dimension_type i = lhs_vars.size(); i-- > 0; ) { -2441: dimension_type lhs_vars_i = lhs_vars[i].id(); -2441: forget_all_octagonal_constraints(lhs_vars_i); -2441: } -2441: # 6711 "../../src/Octagonal_Shape_templates.hh" -2441: } -2441: } -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::bounded_affine_image(const Variable var, -2441: const Linear_Expression& lb_expr, -2441: const Linear_Expression& ub_expr, -2441: Coefficient_traits::const_reference -2441: denominator) { -2441: -2441: if (denominator == 0) { -2441: throw_invalid_argument("bounded_affine_image(v, lb, ub, d)", "d == 0"); -2441: } -2441: -2441: -2441: const dimension_type var_id = var.id(); -2441: if (space_dim < var_id + 1) { -2441: throw_dimension_incompatible("bounded_affine_image(v, lb, ub, d)", -2441: var_id + 1); -2441: } -2441: -2441: -2441: -2441: const dimension_type lb_space_dim = lb_expr.space_dimension(); -2441: if (space_dim < lb_space_dim) { -2441: throw_dimension_incompatible("bounded_affine_image(v, lb, ub, d)", -2441: "lb", lb_expr); -2441: } -2441: const dimension_type ub_space_dim = ub_expr.space_dimension(); -2441: if (space_dim < ub_space_dim) { -2441: throw_dimension_incompatible("bounded_affine_image(v, lb, ub, d)", -2441: "ub", ub_expr); -2441: } -2441: -2441: strong_closure_assign(); -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: -2441: -2441: dimension_type t = 0; -2441: -2441: dimension_type w_id = lb_expr.last_nonzero(); -2441: -2441: if (w_id != 0) { -2441: ++t; -2441: if (!lb_expr.all_zeroes(1, w_id)) { -2441: ++t; -2441: } -2441: --w_id; -2441: } -2441: -2441: typedef typename OR_Matrix::row_iterator row_iterator; -2441: typedef typename OR_Matrix::const_row_iterator Row_iterator; -2441: typedef typename OR_Matrix::const_row_reference_type Row_reference; -2441: -2441: const row_iterator m_begin = matrix.row_begin(); -2441: const dimension_type n_var = 2*var_id; -2441: const Coefficient& b = lb_expr.inhomogeneous_term(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_denom; Parma_Polyhedra_Library::Coefficient& minus_denom = holder_minus_denom.item(); -2441: neg_assign_r(minus_denom, denominator, ROUND_NOT_NEEDED); -2441: # 6788 "../../src/Octagonal_Shape_templates.hh" -2441: if (t == 0) { -2441: -2441: generalized_affine_image(var, -2441: LESS_OR_EQUAL, -2441: ub_expr, -2441: denominator); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_two_b; Parma_Polyhedra_Library::Coefficient& two_b = holder_two_b.item(); -2441: two_b = 2*b; -2441: -2441: add_octagonal_constraint(n_var, n_var + 1, two_b, minus_denom); -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: if (t == 1) { -2441: -2441: const Coefficient& w_coeff = lb_expr.coefficient(Variable(w_id)); -2441: if (w_coeff == denominator || w_coeff == minus_denom) { -2441: -2441: if (w_id == var_id) { -2441: -2441: -2441: const Variable new_var(space_dim); -2441: add_space_dimensions_and_embed(1); -2441: -2441: -2441: affine_image(new_var, lb_expr, denominator); -2441: -2441: strong_closure_assign(); -2441: ((void) 0); -2441: -2441: generalized_affine_image(var, -2441: LESS_OR_EQUAL, -2441: ub_expr, -2441: denominator); -2441: -2441: refine_no_check(var >= new_var); -2441: -2441: remove_higher_space_dimensions(space_dim-1); -2441: return; -2441: } -2441: else { -2441: -2441: generalized_affine_image(var, -2441: LESS_OR_EQUAL, -2441: ub_expr, -2441: denominator); -2441: -2441: -2441: const dimension_type n_w = 2*w_id; -2441: -2441: if (w_coeff == denominator) { -2441: if (var_id < w_id) { -2441: add_octagonal_constraint(n_w + 1, n_var + 1, b, minus_denom); -2441: } -2441: else { -2441: add_octagonal_constraint(n_var, n_w, b, minus_denom); -2441: } -2441: } -2441: else { -2441: -2441: if (var_id < w_id) { -2441: add_octagonal_constraint(n_w, n_var + 1, b, minus_denom); -2441: } -2441: else { -2441: add_octagonal_constraint(n_var, n_w + 1, b, minus_denom); -2441: } -2441: } -2441: ((void) 0); -2441: return; -2441: } -2441: } -2441: } -2441: # 6874 "../../src/Octagonal_Shape_templates.hh" -2441: const bool is_sc = (denominator > 0); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_b; Parma_Polyhedra_Library::Coefficient& minus_b = holder_minus_b.item(); -2441: neg_assign_r(minus_b, b, ROUND_NOT_NEEDED); -2441: -2441: const Coefficient& minus_sc_b = is_sc ? minus_b : b; -2441: const Coefficient& sc_denom = is_sc ? denominator : minus_denom; -2441: const Coefficient& minus_sc_denom = is_sc ? minus_denom : denominator; -2441: -2441: -2441: -2441: Linear_Expression minus_expr; -2441: if (!is_sc) { -2441: minus_expr = -lb_expr; -2441: } -2441: const Linear_Expression& sc_expr = is_sc ? lb_expr : minus_expr; -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_neg_sum; N& neg_sum = holder_neg_sum.item(); -2441: -2441: dimension_type neg_pinf_index = Suppress_Uninitialized_Warnings_Type::synonym(); -2441: -2441: dimension_type neg_pinf_count = 0; -2441: -2441: -2441: assign_r(neg_sum, minus_sc_b, ROUND_UP); -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_coeff_i; N& coeff_i = holder_coeff_i.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_coeff_i; N& minus_coeff_i = holder_minus_coeff_i.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_half; N& half = holder_half.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_sc_i; Parma_Polyhedra_Library::Coefficient& minus_sc_i = holder_minus_sc_i.item(); -2441: -2441: -2441: for (Row_iterator m_iter = m_begin, m_iter_end = m_begin + (2 * w_id + 2); -2441: m_iter != m_iter_end; ) { -2441: const dimension_type n_i = m_iter.index(); -2441: const dimension_type id = n_i/2; -2441: Row_reference m_i = *m_iter; -2441: ++m_iter; -2441: Row_reference m_ci = *m_iter; -2441: ++m_iter; -2441: const Coefficient& sc_i = sc_expr.coefficient(Variable(id)); -2441: const int sign_i = sgn(sc_i); -2441: if (sign_i > 0) { -2441: assign_r(coeff_i, sc_i, ROUND_UP); -2441: -2441: if (neg_pinf_count <= 1) { -2441: const N& double_up_approx_minus_i = m_i[n_i + 1]; -2441: if (!is_plus_infinity(double_up_approx_minus_i)) { -2441: -2441: div_2exp_assign_r(half, double_up_approx_minus_i, 1, ROUND_UP); -2441: add_mul_assign_r(neg_sum, coeff_i, half, ROUND_UP); -2441: } -2441: else { -2441: ++neg_pinf_count; -2441: neg_pinf_index = id; -2441: } -2441: } -2441: } -2441: else if (sign_i < 0) { -2441: neg_assign_r(minus_sc_i, sc_i, ROUND_NOT_NEEDED); -2441: assign_r(minus_coeff_i, minus_sc_i, ROUND_UP); -2441: -2441: if (neg_pinf_count <= 1) { -2441: const N& double_up_approx_i = m_ci[n_i]; -2441: if (!is_plus_infinity(double_up_approx_i)) { -2441: -2441: div_2exp_assign_r(half, double_up_approx_i, 1, ROUND_UP); -2441: add_mul_assign_r(neg_sum, minus_coeff_i, half, ROUND_UP); -2441: } -2441: else { -2441: ++neg_pinf_count; -2441: neg_pinf_index = id; -2441: } -2441: } -2441: } -2441: } -2441: -2441: -2441: generalized_affine_image(var, -2441: LESS_OR_EQUAL, -2441: ub_expr, -2441: denominator); -2441: -2441: -2441: if (neg_pinf_count > 1) { -2441: return; -2441: } -2441: -2441: -2441: reset_strongly_closed(); -2441: -2441: -2441: if (neg_pinf_count <= 1) { -2441: -2441: if (sc_denom != 1) { -2441: -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_down_sc_denom; N& down_sc_denom = holder_down_sc_denom.item(); -2441: assign_r(down_sc_denom, minus_sc_denom, ROUND_UP); -2441: neg_assign_r(down_sc_denom, down_sc_denom, ROUND_UP); -2441: div_assign_r(neg_sum, neg_sum, down_sc_denom, ROUND_UP); -2441: } -2441: -2441: if (neg_pinf_count == 0) { -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_double_neg_sum; N& double_neg_sum = holder_double_neg_sum.item(); -2441: mul_2exp_assign_r(double_neg_sum, neg_sum, 1, ROUND_UP); -2441: matrix[n_var][n_var + 1] = double_neg_sum; -2441: -2441: deduce_minus_v_pm_u_bounds(var_id, w_id, sc_expr, sc_denom, neg_sum); -2441: } -2441: else -2441: -2441: if (neg_pinf_index != var_id) { -2441: const Coefficient& npi = sc_expr.coefficient(Variable(neg_pinf_index)); -2441: if (npi == sc_denom) { -2441: -2441: -2441: if (neg_pinf_index < var_id) { -2441: matrix[n_var][2*neg_pinf_index] = neg_sum; -2441: } -2441: else { -2441: matrix[2*neg_pinf_index + 1][n_var + 1] = neg_sum; -2441: } -2441: } -2441: else { -2441: if (npi == minus_sc_denom) { -2441: -2441: -2441: if (neg_pinf_index < var_id) { -2441: matrix[n_var][2*neg_pinf_index + 1] = neg_sum; -2441: } -2441: else { -2441: matrix[2*neg_pinf_index][n_var + 1] = neg_sum; -2441: } -2441: } -2441: } -2441: } -2441: } -2441: -2441: ((void) 0); -2441: } -2441: -2441: -2441: template -2441: void -2441: Octagonal_Shape -2441: ::generalized_affine_preimage(const Variable var, -2441: const Relation_Symbol relsym, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference -2441: denominator) { -2441: -2441: if (denominator == 0) { -2441: throw_invalid_argument("generalized_affine_preimage(v, r, e, d)", "d == 0"); -2441: } -2441: -2441: -2441: -2441: -2441: const dimension_type expr_space_dim = expr.space_dimension(); -2441: if (space_dim < expr_space_dim) { -2441: throw_dimension_incompatible("generalized_affine_preimage(v, r, e, d)", -2441: "e", expr); -2441: } -2441: -2441: -2441: const dimension_type var_id = var.id(); -2441: if (space_dim < var_id + 1) { -2441: throw_dimension_incompatible("generalized_affine_preimage(v, r, e, d)", -2441: var_id + 1); -2441: } -2441: -2441: -2441: if (relsym == LESS_THAN || relsym == GREATER_THAN) { -2441: throw_invalid_argument("generalized_affine_preimage(v, r, e, d)", -2441: "r is a strict relation symbol"); -2441: } -2441: -2441: if (relsym == NOT_EQUAL) { -2441: throw_invalid_argument("generalized_affine_preimage(v, r, e, d)", -2441: "r is the disequality relation symbol"); -2441: } -2441: -2441: if (relsym == EQUAL) { -2441: -2441: -2441: affine_preimage(var, expr, denominator); -2441: return; -2441: } -2441: -2441: -2441: strong_closure_assign(); -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: -2441: -2441: const Coefficient& expr_v = expr.coefficient(var); -2441: if (expr_v != 0) { -2441: const Relation_Symbol reversed_relsym = (relsym == LESS_OR_EQUAL) -2441: ? GREATER_OR_EQUAL : LESS_OR_EQUAL; -2441: const Linear_Expression inverse -2441: = expr - (expr_v + denominator)*var; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_inverse_denom; Parma_Polyhedra_Library::Coefficient& inverse_denom = holder_inverse_denom.item(); -2441: neg_assign(inverse_denom, expr_v); -2441: const Relation_Symbol inverse_relsym -2441: = (sgn(denominator) == sgn(inverse_denom)) ? relsym : reversed_relsym; -2441: generalized_affine_image(var, inverse_relsym, inverse, inverse_denom); -2441: return; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: refine(var, relsym, expr, denominator); -2441: -2441: -2441: if (is_empty()) { -2441: return; -2441: } -2441: -2441: -2441: forget_all_octagonal_constraints(var_id); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape -2441: ::generalized_affine_preimage(const Linear_Expression& lhs, -2441: const Relation_Symbol relsym, -2441: const Linear_Expression& rhs) { -2441: -2441: -2441: -2441: dimension_type lhs_space_dim = lhs.space_dimension(); -2441: if (space_dim < lhs_space_dim) { -2441: throw_dimension_incompatible("generalized_affine_preimage(e1, r, e2)", -2441: "e1", lhs); -2441: } -2441: -2441: -2441: -2441: const dimension_type rhs_space_dim = rhs.space_dimension(); -2441: if (space_dim < rhs_space_dim) { -2441: throw_dimension_incompatible("generalized_affine_preimage(e1, r, e2)", -2441: "e2", rhs); -2441: } -2441: -2441: -2441: if (relsym == LESS_THAN || relsym == GREATER_THAN) { -2441: throw_invalid_argument("generalized_affine_preimage(e1, r, e2)", -2441: "r is a strict relation symbol"); -2441: } -2441: -2441: if (relsym == NOT_EQUAL) { -2441: throw_invalid_argument("generalized_affine_preimage(e1, r, e2)", -2441: "r is the disequality relation symbol"); -2441: } -2441: strong_closure_assign(); -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: -2441: dimension_type t_lhs = 0; -2441: -2441: dimension_type j_lhs = lhs.last_nonzero(); -2441: -2441: if (j_lhs != 0) { -2441: ++t_lhs; -2441: if (!lhs.all_zeroes(1, j_lhs)) { -2441: ++t_lhs; -2441: } -2441: --j_lhs; -2441: } -2441: -2441: const Coefficient& b_lhs = lhs.inhomogeneous_term(); -2441: -2441: -2441: -2441: if (t_lhs == 0) { -2441: generalized_affine_image(lhs, relsym, rhs); -2441: return; -2441: } -2441: -2441: else if (t_lhs == 1) { -2441: -2441: -2441: -2441: Variable v(j_lhs); -2441: -2441: const Coefficient& denom = lhs.coefficient(v); -2441: Relation_Symbol new_relsym = relsym; -2441: if (denom < 0) { -2441: if (relsym == LESS_OR_EQUAL) { -2441: new_relsym = GREATER_OR_EQUAL; -2441: } -2441: else if (relsym == GREATER_OR_EQUAL) { -2441: new_relsym = LESS_OR_EQUAL; -2441: } -2441: } -2441: Linear_Expression expr = rhs - b_lhs; -2441: generalized_affine_preimage(v, new_relsym, expr, denom); -2441: } -2441: -2441: else { -2441: -2441: -2441: std::vector lhs_vars; -2441: for (Linear_Expression::const_iterator i = lhs.begin(), i_end = lhs.end(); -2441: i != i_end; ++i) { -2441: lhs_vars.push_back(i.variable()); -2441: } -2441: -2441: const dimension_type num_common_dims = std::min(lhs_space_dim, rhs_space_dim); -2441: if (!lhs.have_a_common_variable(rhs, Variable(0), Variable(num_common_dims))) { -2441: -2441: -2441: -2441: -2441: -2441: switch (relsym) { -2441: case LESS_OR_EQUAL: -2441: refine_no_check(lhs <= rhs); -2441: break; -2441: case EQUAL: -2441: refine_no_check(lhs == rhs); -2441: break; -2441: case GREATER_OR_EQUAL: -2441: refine_no_check(lhs >= rhs); -2441: break; -2441: default: -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: -2441: -2441: if (is_empty()) { -2441: return; -2441: } -2441: -2441: for (dimension_type i = lhs_vars.size(); i-- > 0; ) { -2441: dimension_type lhs_vars_i = lhs_vars[i].id(); -2441: forget_all_octagonal_constraints(lhs_vars_i); -2441: } -2441: } -2441: else { -2441: -2441: -2441: -2441: -2441: -2441: -2441: const Variable new_var(space_dim); -2441: add_space_dimensions_and_embed(1); -2441: -2441: -2441: -2441: -2441: affine_image(new_var, lhs); -2441: -2441: -2441: strong_closure_assign(); -2441: ((void) 0); -2441: for (dimension_type i = lhs_vars.size(); i-- > 0; ) { -2441: dimension_type lhs_vars_i = lhs_vars[i].id(); -2441: forget_all_octagonal_constraints(lhs_vars_i); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: switch (relsym) { -2441: case LESS_OR_EQUAL: -2441: refine_no_check(new_var <= rhs); -2441: break; -2441: case EQUAL: -2441: refine_no_check(new_var == rhs); -2441: break; -2441: case GREATER_OR_EQUAL: -2441: refine_no_check(new_var >= rhs); -2441: break; -2441: default: -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: -2441: remove_higher_space_dimensions(space_dim-1); -2441: } -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::bounded_affine_preimage(const Variable var, -2441: const Linear_Expression& lb_expr, -2441: const Linear_Expression& ub_expr, -2441: Coefficient_traits::const_reference -2441: denominator) { -2441: -2441: if (denominator == 0) { -2441: throw_invalid_argument("bounded_affine_preimage(v, lb, ub, d)", "d == 0"); -2441: } -2441: -2441: -2441: const dimension_type var_id = var.id(); -2441: if (space_dim < var_id + 1) { -2441: throw_dimension_incompatible("bounded_affine_preimage(v, lb, ub, d)", -2441: var_id + 1); -2441: } -2441: -2441: -2441: -2441: const dimension_type lb_space_dim = lb_expr.space_dimension(); -2441: if (space_dim < lb_space_dim) { -2441: throw_dimension_incompatible("bounded_affine_preimage(v, lb, ub, d)", -2441: "lb", lb_expr); -2441: } -2441: const dimension_type ub_space_dim = ub_expr.space_dimension(); -2441: if (space_dim < ub_space_dim) { -2441: throw_dimension_incompatible("bounded_affine_preimage(v, lb, ub, d)", -2441: "ub", ub_expr); -2441: } -2441: -2441: strong_closure_assign(); -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: if (ub_expr.coefficient(var) == 0) { -2441: refine(var, LESS_OR_EQUAL, ub_expr, denominator); -2441: generalized_affine_preimage(var, GREATER_OR_EQUAL, -2441: lb_expr, denominator); -2441: return; -2441: } -2441: if (lb_expr.coefficient(var) == 0) { -2441: refine(var, GREATER_OR_EQUAL, lb_expr, denominator); -2441: generalized_affine_preimage(var, LESS_OR_EQUAL, -2441: ub_expr, denominator); -2441: return; -2441: } -2441: -2441: const Coefficient& expr_v = lb_expr.coefficient(var); -2441: -2441: -2441: const Variable new_var(space_dim); -2441: add_space_dimensions_and_embed(1); -2441: const Linear_Expression lb_inverse -2441: = lb_expr - (expr_v + denominator)*var; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_inverse_denom; Parma_Polyhedra_Library::Coefficient& inverse_denom = holder_inverse_denom.item(); -2441: neg_assign(inverse_denom, expr_v); -2441: affine_image(new_var, lb_inverse, inverse_denom); -2441: strong_closure_assign(); -2441: ((void) 0); -2441: generalized_affine_preimage(var, LESS_OR_EQUAL, -2441: ub_expr, denominator); -2441: if (sgn(denominator) == sgn(inverse_denom)) { -2441: refine_no_check(var >= new_var) ; -2441: } -2441: else { -2441: refine_no_check(var <= new_var); -2441: } -2441: -2441: remove_higher_space_dimensions(space_dim-1); -2441: } -2441: -2441: template -2441: Constraint_System -2441: Octagonal_Shape::constraints() const { -2441: Constraint_System cs; -2441: cs.set_space_dimension(space_dim); -2441: -2441: if (space_dim == 0) { -2441: if (marked_empty()) { -2441: cs = Constraint_System::zero_dim_empty(); -2441: } -2441: return cs; -2441: } -2441: -2441: if (marked_empty()) { -2441: cs.insert(Constraint::zero_dim_false()); -2441: return cs; -2441: } -2441: -2441: typedef typename OR_Matrix::const_row_iterator row_iterator; -2441: typedef typename OR_Matrix::const_row_reference_type row_reference; -2441: -2441: row_iterator m_begin = matrix.row_begin(); -2441: row_iterator m_end = matrix.row_end(); -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_a; Parma_Polyhedra_Library::Coefficient& a = holder_a.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_b; Parma_Polyhedra_Library::Coefficient& b = holder_b.item(); -2441: -2441: -2441: for (row_iterator i_iter = m_begin; i_iter != m_end; ) { -2441: const dimension_type i = i_iter.index(); -2441: const Variable x(i/2); -2441: const N& c_i_ii = (*i_iter)[i + 1]; -2441: ++i_iter; -2441: const N& c_ii_i = (*i_iter)[i]; -2441: ++i_iter; -2441: -2441: if (is_additive_inverse(c_i_ii, c_ii_i)) { -2441: -2441: numer_denom(c_ii_i, b, a); -2441: a *= 2; -2441: cs.insert(a*x == b); -2441: } -2441: else { -2441: -2441: if (!is_plus_infinity(c_i_ii)) { -2441: numer_denom(c_i_ii, b, a); -2441: a *= 2; -2441: cs.insert(-a*x <= b); -2441: } -2441: if (!is_plus_infinity(c_ii_i)) { -2441: numer_denom(c_ii_i, b, a); -2441: a *= 2; -2441: cs.insert(a*x <= b); -2441: } -2441: } -2441: } -2441: -2441: for (row_iterator i_iter = m_begin; i_iter != m_end; ) { -2441: const dimension_type i = i_iter.index(); -2441: row_reference r_i = *i_iter; -2441: ++i_iter; -2441: row_reference r_ii = *i_iter; -2441: ++i_iter; -2441: const Variable y(i/2); -2441: for (dimension_type j = 0; j < i; j += 2) { -2441: const N& c_i_j = r_i[j]; -2441: const N& c_ii_jj = r_ii[j + 1]; -2441: const Variable x(j/2); -2441: if (is_additive_inverse(c_ii_jj, c_i_j)) { -2441: -2441: numer_denom(c_i_j, b, a); -2441: cs.insert(a*x - a*y == b); -2441: } -2441: else { -2441: -2441: if (!is_plus_infinity(c_i_j)) { -2441: numer_denom(c_i_j, b, a); -2441: cs.insert(a*x - a*y <= b); -2441: } -2441: if (!is_plus_infinity(c_ii_jj)) { -2441: numer_denom(c_ii_jj, b, a); -2441: cs.insert(a*y - a*x <= b); -2441: } -2441: } -2441: -2441: const N& c_ii_j = r_ii[j]; -2441: const N& c_i_jj = r_i[j + 1]; -2441: if (is_additive_inverse(c_i_jj, c_ii_j)) { -2441: -2441: numer_denom(c_ii_j, b, a); -2441: cs.insert(a*x + a*y == b); -2441: } -2441: else { -2441: -2441: if (!is_plus_infinity(c_i_jj)) { -2441: numer_denom(c_i_jj, b, a); -2441: cs.insert(-a*x - a*y <= b); -2441: } -2441: if (!is_plus_infinity(c_ii_j)) { -2441: numer_denom(c_ii_j, b, a); -2441: cs.insert(a*x + a*y <= b); -2441: } -2441: } -2441: } -2441: } -2441: return cs; -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::expand_space_dimension(Variable var, dimension_type m) { -2441: -2441: const dimension_type var_id = var.id(); -2441: if (var_id + 1 > space_dim) { -2441: throw_dimension_incompatible("expand_space_dimension(v, m)", var_id + 1); -2441: } -2441: -2441: -2441: -2441: if (m > max_space_dimension() - space_dim) { -2441: throw_invalid_argument("expand_dimension(v, m)", -2441: "adding m new space dimensions exceeds " -2441: "the maximum allowed space dimension"); -2441: } -2441: -2441: if (m == 0) { -2441: return; -2441: } -2441: -2441: const dimension_type old_num_rows = matrix.num_rows(); -2441: -2441: -2441: add_space_dimensions_and_embed(m); -2441: -2441: -2441: -2441: -2441: typedef typename OR_Matrix::row_iterator row_iterator; -2441: typedef typename OR_Matrix::row_reference_type row_reference; -2441: typedef typename OR_Matrix::const_row_iterator Row_iterator; -2441: typedef typename OR_Matrix::const_row_reference_type Row_reference; -2441: -2441: const row_iterator m_begin = matrix.row_begin(); -2441: const row_iterator m_end = matrix.row_end(); -2441: const dimension_type n_var = 2*var_id; -2441: Row_iterator v_iter = m_begin + n_var; -2441: Row_reference m_v = *v_iter; -2441: Row_reference m_cv = *(v_iter + 1); -2441: -2441: for (row_iterator i_iter = m_begin + old_num_rows; i_iter != m_end; -2441: i_iter += 2) { -2441: row_reference m_i = *i_iter; -2441: row_reference m_ci = *(i_iter + 1); -2441: const dimension_type i = i_iter.index(); -2441: const dimension_type ci = i + 1; -2441: m_i[ci] = m_v[n_var + 1]; -2441: m_ci[i] = m_cv[n_var]; -2441: for (dimension_type j = 0; j < n_var; ++j) { -2441: m_i[j] = m_v[j]; -2441: m_ci[j] = m_cv[j]; -2441: } -2441: for (dimension_type j = n_var + 2; j < old_num_rows; ++j) { -2441: row_iterator j_iter = m_begin + j; -2441: row_reference m_cj = (j % 2 != 0) ? *(j_iter-1) : *(j_iter + 1); -2441: m_i[j] = m_cj[n_var + 1]; -2441: m_ci[j] = m_cj[n_var]; -2441: } -2441: } -2441: -2441: -2441: if (marked_strongly_closed()) { -2441: reset_strongly_closed(); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::fold_space_dimensions(const Variables_Set& vars, -2441: Variable dest) { -2441: -2441: if (dest.space_dimension() > space_dim) { -2441: throw_dimension_incompatible("fold_space_dimensions(vs, v)", "v", dest); -2441: } -2441: -2441: if (vars.empty()) { -2441: return; -2441: } -2441: -2441: if (vars.space_dimension() > space_dim) { -2441: throw_dimension_incompatible("fold_space_dimensions(vs, v)", -2441: vars.space_dimension()); -2441: } -2441: -2441: -2441: if (vars.find(dest.id()) != vars.end()) { -2441: throw_invalid_argument("fold_space_dimensions(vs, v)", -2441: "v should not occur in vs"); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: typedef typename OR_Matrix::row_iterator row_iterator; -2441: typedef typename OR_Matrix::row_reference_type row_reference; -2441: -2441: const row_iterator m_begin = matrix.row_begin(); -2441: -2441: strong_closure_assign(); -2441: const dimension_type n_rows = matrix.num_rows(); -2441: const dimension_type n_dest = 2*dest.id(); -2441: row_iterator v_iter = m_begin + n_dest; -2441: row_reference m_v = *v_iter; -2441: row_reference m_cv = *(v_iter + 1); -2441: for (Variables_Set::const_iterator i = vars.begin(), -2441: vs_end = vars.end(); i != vs_end; ++i) { -2441: const dimension_type tbf_id = *i; -2441: const dimension_type tbf_var = 2*tbf_id; -2441: row_iterator tbf_iter = m_begin + tbf_var; -2441: row_reference m_tbf = *tbf_iter; -2441: row_reference m_ctbf = *(tbf_iter + 1); -2441: max_assign(m_v[n_dest + 1], m_tbf[tbf_var + 1]); -2441: max_assign(m_cv[n_dest], m_ctbf[tbf_var]); -2441: -2441: const dimension_type min_id = std::min(n_dest, tbf_var); -2441: const dimension_type max_id = std::max(n_dest, tbf_var); -2441: -2441: using namespace Implementation::Octagonal_Shapes; -2441: for (dimension_type j = 0; j < min_id; ++j) { -2441: const dimension_type cj = coherent_index(j); -2441: max_assign(m_v[j], m_tbf[j]); -2441: max_assign(m_cv[j], m_ctbf[j]); -2441: max_assign(m_cv[cj], m_ctbf[cj]); -2441: max_assign(m_v[cj], m_tbf[cj]); -2441: } -2441: for (dimension_type j = min_id + 2; j < max_id; ++j) { -2441: const dimension_type cj = coherent_index(j); -2441: row_iterator j_iter = m_begin + j; -2441: row_reference m_j = *j_iter; -2441: row_reference m_cj = (j % 2 != 0) ? *(j_iter-1) : *(j_iter + 1); -2441: if (n_dest == min_id) { -2441: max_assign(m_cj[n_dest + 1], m_tbf[j]); -2441: max_assign(m_cj[n_dest], m_ctbf[j]); -2441: max_assign(m_j[n_dest], m_ctbf[cj]); -2441: max_assign(m_j[n_dest + 1], m_tbf[cj]); -2441: } -2441: else { -2441: max_assign(m_v[j], m_cj[tbf_var + 1]); -2441: max_assign(m_cv[j], m_cj[tbf_var]); -2441: max_assign(m_cv[cj], m_j[tbf_var]); -2441: max_assign(m_v[cj], m_j[tbf_var + 1]); -2441: } -2441: } -2441: for (dimension_type j = max_id + 2; j < n_rows; ++j) { -2441: row_iterator j_iter = m_begin + j; -2441: row_reference m_j = *j_iter; -2441: row_reference m_cj = (j % 2 != 0) ? *(j_iter-1) : *(j_iter + 1); -2441: max_assign(m_cj[n_dest + 1], m_cj[tbf_var + 1]); -2441: max_assign(m_cj[n_dest], m_cj[tbf_var]); -2441: max_assign(m_j[n_dest], m_j[tbf_var]); -2441: max_assign(m_j[n_dest + 1], m_j[tbf_var + 1]); -2441: } -2441: } -2441: remove_space_dimensions(vars); -2441: } -2441: -2441: template -2441: bool -2441: Octagonal_Shape::upper_bound_assign_if_exact(const Octagonal_Shape& y) { -2441: -2441: -2441: -2441: const Octagonal_Shape& x = *this; -2441: const dimension_type x_space_dim = x.space_dimension(); -2441: -2441: if (x_space_dim != y.space_dimension()) { -2441: throw_dimension_incompatible("upper_bound_assign_if_exact(y)", y); -2441: } -2441: -2441: -2441: if (x_space_dim == 0) { -2441: upper_bound_assign(y); -2441: return true; -2441: } -2441: -2441: if (x.marked_empty()) { -2441: *this = y; -2441: return true; -2441: } -2441: else if (y.is_empty()) { -2441: return true; -2441: } -2441: else if (x.is_empty()) { -2441: *this = y; -2441: return true; -2441: } -2441: -2441: -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: Octagonal_Shape ub(x); -2441: ub.upper_bound_assign(y); -2441: -2441: -2441: -2441: std::vector x_non_red; -2441: x.non_redundant_matrix_entries(x_non_red); -2441: std::vector y_non_red; -2441: y.non_redundant_matrix_entries(y_non_red); -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_lhs; N& lhs = holder_lhs.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_lhs_copy; N& lhs_copy = holder_lhs_copy.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_rhs; N& rhs = holder_rhs.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_temp_zero; N& temp_zero = holder_temp_zero.item(); -2441: assign_r(temp_zero, 0, ROUND_NOT_NEEDED); -2441: -2441: typedef typename OR_Matrix::const_row_iterator row_iterator; -2441: typedef typename OR_Matrix::const_row_reference_type row_reference; -2441: const dimension_type n_rows = x.matrix.num_rows(); -2441: const row_iterator x_m_begin = x.matrix.row_begin(); -2441: const row_iterator y_m_begin = y.matrix.row_begin(); -2441: const row_iterator ub_m_begin = ub.matrix.row_begin(); -2441: -2441: for (dimension_type i = n_rows; i-- > 0; ) { -2441: const Bit_Row& x_non_red_i = x_non_red[i]; -2441: using namespace Implementation::Octagonal_Shapes; -2441: const dimension_type ci = coherent_index(i); -2441: const dimension_type row_size_i = OR_Matrix::row_size(i); -2441: row_reference x_i = *(x_m_begin + i); -2441: row_reference y_i = *(y_m_begin + i); -2441: row_reference ub_i = *(ub_m_begin + i); -2441: const N& ub_i_ci = ub_i[ci]; -2441: for (dimension_type j = row_size_i; j-- > 0; ) { -2441: -2441: if (!x_non_red_i[j]) { -2441: continue; -2441: } -2441: const N& x_i_j = x_i[j]; -2441: -2441: if (x_i_j >= y_i[j]) { -2441: continue; -2441: } -2441: -2441: const dimension_type cj = coherent_index(j); -2441: const dimension_type row_size_cj = OR_Matrix::row_size(cj); -2441: row_reference ub_cj = *(ub_m_begin + cj); -2441: const N& ub_cj_j = ub_cj[j]; -2441: for (dimension_type k = 0; k < n_rows; ++k) { -2441: const Bit_Row& y_non_red_k = y_non_red[k]; -2441: const dimension_type ck = coherent_index(k); -2441: const dimension_type row_size_k = OR_Matrix::row_size(k); -2441: row_reference x_k = *(x_m_begin + k); -2441: row_reference y_k = *(y_m_begin + k); -2441: row_reference ub_k = *(ub_m_begin + k); -2441: const N& ub_k_ck = ub_k[ck]; -2441: -2441: -2441: -2441: const N& ub_k_j -2441: = (k == j) -2441: ? temp_zero -2441: : ((j < row_size_k) ? ub_k[j] : ub_cj[ck]); -2441: const N& ub_i_ck -2441: = (i == ck) -2441: ? temp_zero -2441: : ((ck < row_size_i) ? ub_i[ck] : ub_k[ci]); -2441: -2441: for (dimension_type ell = row_size_k; ell-- > 0; ) { -2441: -2441: if (!y_non_red_k[ell]) { -2441: continue; -2441: } -2441: const N& y_k_ell = y_k[ell]; -2441: -2441: if (y_k_ell >= x_k[ell]) { -2441: continue; -2441: } -2441: const dimension_type cell = coherent_index(ell); -2441: row_reference ub_cell = *(ub_m_begin + cell); -2441: const N& ub_i_ell -2441: = (i == ell) -2441: ? temp_zero -2441: : ((ell < row_size_i) ? ub_i[ell] : ub_cell[ci]); -2441: const N& ub_cj_ell -2441: = (cj == ell) -2441: ? temp_zero -2441: : ((ell < row_size_cj) ? ub_cj[ell] : ub_cell[j]); -2441: -2441: add_assign_r(lhs, x_i_j, y_k_ell, ROUND_UP); -2441: add_assign_r(rhs, ub_i_ell, ub_k_j, ROUND_UP); -2441: if (lhs >= rhs) { -2441: continue; -2441: } -2441: -2441: add_assign_r(rhs, ub_i_ck, ub_cj_ell, ROUND_UP); -2441: if (lhs >= rhs) { -2441: continue; -2441: } -2441: -2441: assign_r(lhs_copy, lhs, ROUND_NOT_NEEDED); -2441: add_assign_r(lhs, lhs_copy, x_i_j, ROUND_UP); -2441: add_assign_r(rhs, ub_i_ell, ub_i_ck, ROUND_UP); -2441: add_assign_r(rhs, rhs, ub_cj_j, ROUND_UP); -2441: if (lhs >= rhs) { -2441: continue; -2441: } -2441: -2441: add_assign_r(rhs, ub_k_j, ub_cj_ell, ROUND_UP); -2441: add_assign_r(rhs, rhs, ub_i_ci, ROUND_UP); -2441: if (lhs >= rhs) { -2441: continue; -2441: } -2441: -2441: add_assign_r(lhs, lhs_copy, y_k_ell, ROUND_UP); -2441: add_assign_r(rhs, ub_i_ell, ub_cj_ell, ROUND_UP); -2441: add_assign_r(rhs, rhs, ub_k_ck, ROUND_UP); -2441: if (lhs >= rhs) { -2441: continue; -2441: } -2441: -2441: add_assign_r(rhs, ub_k_j, ub_i_ck, ROUND_UP); -2441: add_assign_r(rhs, rhs, ub_cell[ell], ROUND_UP); -2441: if (lhs < rhs) { -2441: -2441: -2441: return false; -2441: } -2441: } -2441: } -2441: } -2441: } -2441: -2441: -2441: m_swap(ub); -2441: ((void) 0); -2441: return true; -2441: } -2441: -2441: template -2441: bool -2441: Octagonal_Shape -2441: ::integer_upper_bound_assign_if_exact(const Octagonal_Shape& y) { -2441: enum anonymous_enum_compile_time_check___LINE__ { compile_time_check_7801 = sizeof(Parma_Polyhedra_Library::Compile_Time_Check<(std::numeric_limits::is_integer)>) } -2441: -2441: -2441: ; -2441: -2441: const Octagonal_Shape& x = *this; -2441: const dimension_type x_space_dim = x.space_dimension(); -2441: -2441: if (x_space_dim != y.space_dimension()) { -2441: throw_dimension_incompatible("integer_upper_bound_assign_if_exact(y)", y); -2441: } -2441: -2441: if (x_space_dim == 0) { -2441: upper_bound_assign(y); -2441: return true; -2441: } -2441: -2441: -2441: -2441: if (x.marked_empty()) { -2441: *this = y; -2441: tight_closure_assign(); -2441: return true; -2441: } -2441: else if (y.marked_empty()) { -2441: tight_closure_assign(); -2441: return true; -2441: } -2441: else if (x.is_empty() || x.tight_coherence_would_make_empty()) { -2441: *this = y; -2441: tight_closure_assign(); -2441: return true; -2441: } -2441: else if (y.is_empty() || y.tight_coherence_would_make_empty()) { -2441: tight_closure_assign(); -2441: return true; -2441: } -2441: -2441: -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: -2441: Octagonal_Shape tx(x); -2441: tx.tight_closure_assign(); -2441: Octagonal_Shape ty(y); -2441: ty.tight_closure_assign(); -2441: Octagonal_Shape ub(tx); -2441: ub.upper_bound_assign(ty); -2441: -2441: -2441: -2441: -2441: -2441: std::vector tx_non_red; -2441: tx.non_redundant_matrix_entries(tx_non_red); -2441: std::vector ty_non_red; -2441: ty.non_redundant_matrix_entries(ty_non_red); -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_lhs_i_j; N& lhs_i_j = holder_lhs_i_j.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_lhs_k_ell; N& lhs_k_ell = holder_lhs_k_ell.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_lhs; N& lhs = holder_lhs.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_lhs_copy; N& lhs_copy = holder_lhs_copy.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_rhs; N& rhs = holder_rhs.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_temp_zero; N& temp_zero = holder_temp_zero.item(); -2441: assign_r(temp_zero, 0, ROUND_NOT_NEEDED); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_temp_one; N& temp_one = holder_temp_one.item(); -2441: assign_r(temp_one, 1, ROUND_NOT_NEEDED); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_temp_two; N& temp_two = holder_temp_two.item(); -2441: assign_r(temp_two, 2, ROUND_NOT_NEEDED); -2441: -2441: typedef typename OR_Matrix::const_row_iterator row_iterator; -2441: typedef typename OR_Matrix::const_row_reference_type row_reference; -2441: const dimension_type n_rows = tx.matrix.num_rows(); -2441: const row_iterator tx_m_begin = tx.matrix.row_begin(); -2441: const row_iterator ty_m_begin = ty.matrix.row_begin(); -2441: const row_iterator ub_m_begin = ub.matrix.row_begin(); -2441: -2441: for (dimension_type i = n_rows; i-- > 0; ) { -2441: const Bit_Row& tx_non_red_i = tx_non_red[i]; -2441: using namespace Implementation::Octagonal_Shapes; -2441: const dimension_type ci = coherent_index(i); -2441: const dimension_type row_size_i = OR_Matrix::row_size(i); -2441: row_reference tx_i = *(tx_m_begin + i); -2441: row_reference ty_i = *(ty_m_begin + i); -2441: row_reference ub_i = *(ub_m_begin + i); -2441: const N& ub_i_ci = ub_i[ci]; -2441: for (dimension_type j = row_size_i; j-- > 0; ) { -2441: -2441: if (!tx_non_red_i[j]) { -2441: continue; -2441: } -2441: const N& tx_i_j = tx_i[j]; -2441: const dimension_type cj = coherent_index(j); -2441: const N& eps_i_j = (i == cj) ? temp_two : temp_one; -2441: -2441: add_assign_r(lhs_i_j, tx_i_j, eps_i_j, ROUND_NOT_NEEDED); -2441: if (lhs_i_j > ty_i[j]) { -2441: continue; -2441: } -2441: const dimension_type row_size_cj = OR_Matrix::row_size(cj); -2441: row_reference ub_cj = *(ub_m_begin + cj); -2441: const N& ub_cj_j = ub_cj[j]; -2441: for (dimension_type k = 0; k < n_rows; ++k) { -2441: const Bit_Row& ty_non_red_k = ty_non_red[k]; -2441: const dimension_type ck = coherent_index(k); -2441: const dimension_type row_size_k = OR_Matrix::row_size(k); -2441: row_reference tx_k = *(tx_m_begin + k); -2441: row_reference ty_k = *(ty_m_begin + k); -2441: row_reference ub_k = *(ub_m_begin + k); -2441: const N& ub_k_ck = ub_k[ck]; -2441: -2441: -2441: -2441: const N& ub_k_j -2441: = (k == j) -2441: ? temp_zero -2441: : ((j < row_size_k) ? ub_k[j] : ub_cj[ck]); -2441: const N& ub_i_ck -2441: = (i == ck) -2441: ? temp_zero -2441: : ((ck < row_size_i) ? ub_i[ck] : ub_k[ci]); -2441: -2441: for (dimension_type ell = row_size_k; ell-- > 0; ) { -2441: -2441: if (!ty_non_red_k[ell]) { -2441: continue; -2441: } -2441: const N& ty_k_ell = ty_k[ell]; -2441: const dimension_type cell = coherent_index(ell); -2441: const N& eps_k_ell = (k == cell) ? temp_two : temp_one; -2441: -2441: add_assign_r(lhs_k_ell, ty_k_ell, eps_k_ell, ROUND_NOT_NEEDED); -2441: if (lhs_k_ell > tx_k[ell]) { -2441: continue; -2441: } -2441: row_reference ub_cell = *(ub_m_begin + cell); -2441: const N& ub_i_ell -2441: = (i == ell) -2441: ? temp_zero -2441: : ((ell < row_size_i) ? ub_i[ell] : ub_cell[ci]); -2441: const N& ub_cj_ell -2441: = (cj == ell) -2441: ? temp_zero -2441: : ((ell < row_size_cj) ? ub_cj[ell] : ub_cell[j]); -2441: -2441: add_assign_r(lhs, lhs_i_j, lhs_k_ell, ROUND_NOT_NEEDED); -2441: add_assign_r(rhs, ub_i_ell, ub_k_j, ROUND_NOT_NEEDED); -2441: if (lhs > rhs) { -2441: continue; -2441: } -2441: -2441: add_assign_r(rhs, ub_i_ck, ub_cj_ell, ROUND_NOT_NEEDED); -2441: if (lhs > rhs) { -2441: continue; -2441: } -2441: -2441: assign_r(lhs_copy, lhs, ROUND_NOT_NEEDED); -2441: add_assign_r(lhs, lhs, lhs_i_j, ROUND_NOT_NEEDED); -2441: add_assign_r(rhs, ub_i_ell, ub_i_ck, ROUND_NOT_NEEDED); -2441: add_assign_r(rhs, rhs, ub_cj_j, ROUND_NOT_NEEDED); -2441: if (lhs > rhs) { -2441: continue; -2441: } -2441: -2441: add_assign_r(rhs, ub_k_j, ub_cj_ell, ROUND_NOT_NEEDED); -2441: add_assign_r(rhs, rhs, ub_i_ci, ROUND_NOT_NEEDED); -2441: if (lhs > rhs) { -2441: continue; -2441: } -2441: -2441: add_assign_r(lhs, lhs_copy, lhs_k_ell, ROUND_NOT_NEEDED); -2441: add_assign_r(rhs, ub_i_ell, ub_cj_ell, ROUND_NOT_NEEDED); -2441: add_assign_r(rhs, rhs, ub_k_ck, ROUND_NOT_NEEDED); -2441: if (lhs > rhs) { -2441: continue; -2441: } -2441: -2441: add_assign_r(rhs, ub_k_j, ub_i_ck, ROUND_NOT_NEEDED); -2441: add_assign_r(rhs, rhs, ub_cell[ell], ROUND_NOT_NEEDED); -2441: if (lhs <= rhs) { -2441: -2441: -2441: return false; -2441: } -2441: } -2441: } -2441: } -2441: } -2441: -2441: -2441: m_swap(ub); -2441: ((void) 0); -2441: return true; -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::drop_some_non_integer_points(Complexity_Class) { -2441: if (std::numeric_limits::is_integer) { -2441: return; -2441: } -2441: -2441: strong_closure_assign(); -2441: if (space_dim == 0 || marked_empty()) { -2441: return; -2441: } -2441: -2441: for (typename OR_Matrix::element_iterator i = matrix.element_begin(), -2441: i_end = matrix.element_end(); i != i_end; ++i) { -2441: drop_some_non_integer_points_helper(*i); -2441: } -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_temp_one; N& temp_one = holder_temp_one.item(); -2441: assign_r(temp_one, 1, ROUND_NOT_NEEDED); -2441: for (dimension_type i = 0; i < 2*space_dim; i += 2) { -2441: const dimension_type ci = i + 1; -2441: N& mat_i_ci = matrix[i][ci]; -2441: if (!is_plus_infinity(mat_i_ci) && !is_even(mat_i_ci)) { -2441: sub_assign_r(mat_i_ci, mat_i_ci, temp_one, ROUND_UP); -2441: reset_strongly_closed(); -2441: } -2441: N& mat_ci_i = matrix[ci][i]; -2441: if (!is_plus_infinity(mat_ci_i) && !is_even(mat_ci_i)) { -2441: sub_assign_r(mat_ci_i, mat_ci_i, temp_one, ROUND_UP); -2441: reset_strongly_closed(); -2441: } -2441: } -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape -2441: ::drop_some_non_integer_points(const Variables_Set& vars, -2441: Complexity_Class) { -2441: -2441: const dimension_type min_space_dim = vars.space_dimension(); -2441: if (space_dimension() < min_space_dim) { -2441: throw_dimension_incompatible("drop_some_non_integer_points(vs, cmpl)", -2441: min_space_dim); -2441: } -2441: -2441: if (std::numeric_limits::is_integer || min_space_dim == 0) { -2441: return; -2441: } -2441: -2441: strong_closure_assign(); -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_temp_one; N& temp_one = holder_temp_one.item(); -2441: assign_r(temp_one, 1, ROUND_NOT_NEEDED); -2441: -2441: const Variables_Set::const_iterator v_begin = vars.begin(); -2441: const Variables_Set::const_iterator v_end = vars.end(); -2441: ((void) 0); -2441: typedef typename OR_Matrix::row_reference_type row_reference; -2441: for (Variables_Set::const_iterator v_i = v_begin; v_i != v_end; ++v_i) { -2441: const dimension_type i = 2 * (*v_i); -2441: const dimension_type ci = i + 1; -2441: row_reference m_i = matrix[i]; -2441: row_reference m_ci = matrix[ci]; -2441: -2441: -2441: N& m_i_ci = m_i[ci]; -2441: if (!is_plus_infinity(m_i_ci)) { -2441: drop_some_non_integer_points_helper(m_i_ci); -2441: if (!is_even(m_i_ci)) { -2441: sub_assign_r(m_i_ci, m_i_ci, temp_one, ROUND_UP); -2441: reset_strongly_closed(); -2441: } -2441: } -2441: N& m_ci_i = m_ci[i]; -2441: if (!is_plus_infinity(m_ci_i)) { -2441: drop_some_non_integer_points_helper(m_ci_i); -2441: if (!is_even(m_ci_i)) { -2441: sub_assign_r(m_ci_i, m_ci_i, temp_one, ROUND_UP); -2441: reset_strongly_closed(); -2441: } -2441: } -2441: -2441: -2441: for (Variables_Set::const_iterator v_j = v_begin; v_j != v_i; ++v_j) { -2441: const dimension_type j = 2 * (*v_j); -2441: const dimension_type cj = j + 1; -2441: drop_some_non_integer_points_helper(m_i[j]); -2441: drop_some_non_integer_points_helper(m_i[cj]); -2441: drop_some_non_integer_points_helper(m_ci[j]); -2441: drop_some_non_integer_points_helper(m_ci[cj]); -2441: } -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: template -2441: void -2441: Octagonal_Shape -2441: ::export_interval_constraints(U& dest) const { -2441: if (space_dim > dest.space_dimension()) { -2441: throw std::invalid_argument( -2441: "Octagonal_Shape::export_interval_constraints"); -2441: } -2441: -2441: strong_closure_assign(); -2441: -2441: if (marked_empty()) { -2441: dest.set_empty(); -2441: return; -2441: } -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_lb; N& lb = holder_lb.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_ub; N& ub = holder_ub.item(); -2441: for (dimension_type i = space_dim; i-- > 0; ) { -2441: const dimension_type ii = 2*i; -2441: const dimension_type cii = ii + 1; -2441: -2441: -2441: const N& twice_ub = matrix[cii][ii]; -2441: if (!is_plus_infinity(twice_ub)) { -2441: assign_r(ub, twice_ub, ROUND_NOT_NEEDED); -2441: div_2exp_assign_r(ub, ub, 1, ROUND_UP); -2441: -2441: if (!dest.restrict_upper(i, ub.raw_value())) { -2441: return; -2441: } -2441: } -2441: -2441: -2441: const N& twice_lb = matrix[ii][cii]; -2441: if (!is_plus_infinity(twice_lb)) { -2441: assign_r(lb, twice_lb, ROUND_NOT_NEEDED); -2441: neg_assign_r(lb, lb, ROUND_NOT_NEEDED); -2441: div_2exp_assign_r(lb, lb, 1, ROUND_DOWN); -2441: -2441: if (!dest.restrict_lower(i, lb.raw_value())) { -2441: return; -2441: } -2441: } -2441: } -2441: -2441: } -2441: -2441: -2441: template -2441: std::ostream& -2441: IO_Operators::operator<<(std::ostream& s, const Octagonal_Shape& oct) { -2441: -2441: if (oct.marked_empty()) { -2441: s << "false"; -2441: return s; -2441: } -2441: if (oct.is_universe()) { -2441: s << "true"; -2441: return s; -2441: } -2441: -2441: typedef typename Octagonal_Shape::coefficient_type N; -2441: typedef typename OR_Matrix::const_row_iterator row_iterator; -2441: typedef typename OR_Matrix::const_row_reference_type row_reference; -2441: -2441: -2441: bool first = true; -2441: -2441: row_iterator m_begin = oct.matrix.row_begin(); -2441: row_iterator m_end = oct.matrix.row_end(); -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_negation; N& negation = holder_negation.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_half; N& half = holder_half.item(); -2441: -2441: -2441: for (row_iterator i_iter = m_begin; i_iter != m_end; ) { -2441: const dimension_type i = i_iter.index(); -2441: const Variable v_i(i/2); -2441: const N& c_i_ii = (*i_iter)[i + 1]; -2441: ++i_iter; -2441: const N& c_ii_i = (*i_iter)[i]; -2441: ++i_iter; -2441: -2441: if (is_additive_inverse(c_i_ii, c_ii_i)) { -2441: -2441: ((void) 0); -2441: if (first) { -2441: first = false; -2441: } -2441: else { -2441: s << ", "; -2441: } -2441: -2441: -2441: if (div_2exp_assign_r(half, c_ii_i, 1, -2441: ROUND_UP | ROUND_STRICT_RELATION) -2441: == V_EQ) { -2441: s << v_i << " = " << half; -2441: } -2441: else { -2441: s << "2*" << v_i << " = " << c_ii_i; -2441: } -2441: } -2441: else { -2441: -2441: if (!is_plus_infinity(c_i_ii)) { -2441: if (first) { -2441: first = false; -2441: } -2441: else { -2441: s << ", "; -2441: } -2441: neg_assign_r(negation, c_i_ii, ROUND_NOT_NEEDED); -2441: -2441: -2441: if (div_2exp_assign_r(half, negation, 1, -2441: ROUND_UP | ROUND_STRICT_RELATION) -2441: == V_EQ) { -2441: s << v_i << " >= " << half; -2441: } -2441: else { -2441: s << "2*" << v_i << " >= " << negation; -2441: } -2441: } -2441: if (!is_plus_infinity(c_ii_i)) { -2441: if (first) { -2441: first = false; -2441: } -2441: else { -2441: s << ", "; -2441: } -2441: -2441: -2441: if (div_2exp_assign_r(half, c_ii_i, 1, -2441: ROUND_UP | ROUND_STRICT_RELATION) -2441: == V_EQ) { -2441: s << v_i << " <= " << half; -2441: } -2441: else { -2441: s << "2*" << v_i << " <= " << c_ii_i; -2441: } -2441: } -2441: } -2441: } -2441: -2441: -2441: -2441: for (row_iterator i_iter = m_begin; i_iter != m_end; ) { -2441: const dimension_type i = i_iter.index(); -2441: const Variable v_i(i/2); -2441: row_reference r_i = *i_iter; -2441: ++i_iter; -2441: row_reference r_ii = *i_iter; -2441: ++i_iter; -2441: -2441: for (dimension_type j = 0; j < i; j += 2) { -2441: const Variable v_j(j/2); -2441: -2441: const N& c_ii_jj = r_ii[j + 1]; -2441: const N& c_i_j = r_i[j]; -2441: -2441: if (is_additive_inverse(c_ii_jj, c_i_j)) { -2441: -2441: ((void) 0); -2441: if (first) { -2441: first = false; -2441: } -2441: else { -2441: s << ", "; -2441: } -2441: if (sgn(c_i_j) >= 0) { -2441: s << v_j << " - " << v_i << " = " << c_i_j; -2441: } -2441: else { -2441: s << v_i << " - " << v_j << " = " << c_ii_jj; -2441: } -2441: } -2441: else { -2441: -2441: if (!is_plus_infinity(c_i_j)) { -2441: if (first) { -2441: first = false; -2441: } -2441: else { -2441: s << ", "; -2441: } -2441: if (sgn(c_i_j) >= 0) { -2441: s << v_j << " - " << v_i << " <= " << c_i_j; -2441: } -2441: else { -2441: neg_assign_r(negation, c_i_j, ROUND_DOWN); -2441: s << v_i << " - " << v_j << " >= " << negation; -2441: } -2441: } -2441: if (!is_plus_infinity(c_ii_jj)) { -2441: if (first) { -2441: first = false; -2441: } -2441: else { -2441: s << ", "; -2441: } -2441: if (sgn(c_ii_jj) >= 0) { -2441: s << v_i << " - " << v_j << " <= " << c_ii_jj; -2441: } -2441: else { -2441: neg_assign_r(negation, c_ii_jj, ROUND_DOWN); -2441: s << v_j << " - " << v_i << " >= " << negation; -2441: } -2441: } -2441: } -2441: -2441: const N& c_i_jj = r_i[j + 1]; -2441: const N& c_ii_j = r_ii[j]; -2441: -2441: if (is_additive_inverse(c_i_jj, c_ii_j)) { -2441: -2441: ((void) 0); -2441: if (first) { -2441: first = false; -2441: } -2441: else { -2441: s << ", "; -2441: } -2441: s << v_j << " + " << v_i << " = " << c_ii_j; -2441: } -2441: else { -2441: -2441: if (!is_plus_infinity(c_i_jj)) { -2441: if (first) { -2441: first = false; -2441: } -2441: else { -2441: s << ", "; -2441: } -2441: neg_assign_r(negation, c_i_jj, ROUND_DOWN); -2441: s << v_j << " + " << v_i << " >= " << negation; -2441: } -2441: if (!is_plus_infinity(c_ii_j)) { -2441: if (first) { -2441: first = false; -2441: } -2441: else { -2441: s << ", "; -2441: } -2441: s << v_j << " + " << v_i << " <= " << c_ii_j; -2441: } -2441: } -2441: } -2441: } -2441: return s; -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::ascii_dump(std::ostream& s) const { -2441: s << "space_dim " -2441: << space_dim -2441: << "\n"; -2441: status.ascii_dump(s); -2441: s << "\n"; -2441: matrix.ascii_dump(s); -2441: } -2441: -2441: template void Octagonal_Shape::ascii_dump() const { ascii_dump(std::cerr); } template void Octagonal_Shape::print() const { using IO_Operators::operator<<; std::cerr << *this; } -2441: -2441: template -2441: bool -2441: Octagonal_Shape::ascii_load(std::istream& s) { -2441: std::string str; -2441: -2441: if (!(s >> str) || str != "space_dim") { -2441: return false; -2441: } -2441: -2441: if (!(s >> space_dim)) { -2441: return false; -2441: } -2441: -2441: if (!status.ascii_load(s)) { -2441: return false; -2441: } -2441: -2441: if (!matrix.ascii_load(s)) { -2441: return false; -2441: } -2441: -2441: ((void) 0); -2441: return true; -2441: } -2441: -2441: template -2441: memory_size_type -2441: Octagonal_Shape::external_memory_in_bytes() const { -2441: return matrix.external_memory_in_bytes(); -2441: } -2441: -2441: template -2441: bool -2441: Octagonal_Shape::OK() const { -2441: -2441: if (!matrix.OK()) { -2441: return false; -2441: } -2441: -2441: -2441: if (!status.OK()) { -2441: return false; -2441: } -2441: -2441: -2441: if (marked_empty()) { -2441: return true; -2441: } -2441: -2441: -2441: if (space_dim == 0) { -2441: return true; -2441: } -2441: -2441: -2441: for (typename OR_Matrix::const_row_iterator i = matrix.row_begin(), -2441: matrix_row_end = matrix.row_end(); i != matrix_row_end; ++i) { -2441: typename OR_Matrix::const_row_reference_type x_i = *i; -2441: for (dimension_type j = i.row_size(); j-- > 0; ) { -2441: if (is_minus_infinity(x_i[j])) { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: return false; -2441: } -2441: } -2441: } -2441: -2441: -2441: for (typename OR_Matrix::const_row_iterator i = matrix.row_begin(), -2441: m_end = matrix.row_end(); i != m_end; ++i) { -2441: typename OR_Matrix::const_row_reference_type r = *i; -2441: const N& m_i_i = r[i.index()]; -2441: if (!is_plus_infinity(m_i_i)) { -2441: -2441: -2441: -2441: -2441: -2441: -2441: return false; -2441: } -2441: } -2441: -2441: -2441: -2441: -2441: if (std::numeric_limits::is_exact) { -2441: -2441: -2441: if (marked_strongly_closed()) { -2441: Octagonal_Shape x = *this; -2441: x.reset_strongly_closed(); -2441: x.strong_closure_assign(); -2441: if (x.matrix != matrix) { -2441: -2441: -2441: -2441: -2441: return false; -2441: } -2441: } -2441: -2441: -2441: if (marked_strongly_closed()) { -2441: if (!is_strong_coherent()) { -2441: -2441: -2441: -2441: return false; -2441: } -2441: } -2441: } -2441: -2441: -2441: return true; -2441: } -2441: -2441: -2441: template -2441: void -2441: Octagonal_Shape -2441: ::throw_dimension_incompatible(const char* method, -2441: const Octagonal_Shape& y) const { -2441: std::ostringstream s; -2441: s << "PPL::Octagonal_Shape::" << method << ":\n" -2441: << "this->space_dimension() == " << space_dimension() -2441: << ", y->space_dimension() == " << y.space_dimension() << "."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape -2441: ::throw_dimension_incompatible(const char* method, -2441: dimension_type required_dim) const { -2441: std::ostringstream s; -2441: s << "PPL::Octagonal_Shape::" << method << ":\n" -2441: << "this->space_dimension() == " << space_dimension() -2441: << ", required dimension == " << required_dim << "."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::throw_dimension_incompatible(const char* method, -2441: const Constraint& c) const { -2441: std::ostringstream s; -2441: s << "PPL::Octagonal_Shape::" << method << ":\n" -2441: << "this->space_dimension() == " << space_dimension() -2441: << ", c->space_dimension == " << c.space_dimension() << "."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::throw_dimension_incompatible(const char* method, -2441: const Congruence& cg) const { -2441: std::ostringstream s; -2441: s << "PPL::Octagonal_Shape::" << method << ":\n" -2441: << "this->space_dimension() == " << space_dimension() -2441: << ", cg->space_dimension == " << cg.space_dimension() << "."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::throw_dimension_incompatible(const char* method, -2441: const Generator& g) const { -2441: std::ostringstream s; -2441: s << "PPL::Octagonal_Shape::" << method << ":\n" -2441: << "this->space_dimension() == " << space_dimension() -2441: << ", g->space_dimension == " << g.space_dimension() << "."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::throw_constraint_incompatible(const char* method) { -2441: std::ostringstream s; -2441: s << "PPL::Octagonal_Shape::" << method << ":\n" -2441: << "the constraint is incompatible."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::throw_expression_too_complex(const char* method, -2441: const Linear_Expression& le) { -2441: using namespace IO_Operators; -2441: std::ostringstream s; -2441: s << "PPL::Octagonal_Shape::" << method << ":\n" -2441: << le << " is too complex."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape -2441: ::throw_dimension_incompatible(const char* method, -2441: const char* le_name, -2441: const Linear_Expression& le) const { -2441: std::ostringstream s; -2441: s << "PPL::Octagonal_Shape::" << method << ":\n" -2441: << "this->space_dimension() == " << space_dimension() -2441: << ", " << le_name << "->space_dimension() == " -2441: << le.space_dimension() << "."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: template -2441: template -2441: void -2441: Octagonal_Shape -2441: ::throw_dimension_incompatible(const char* method, -2441: const char* lf_name, -2441: const Linear_Form& lf) const { -2441: std::ostringstream s; -2441: s << "PPL::Octagonal_Shape::" << method << ":\n" -2441: << "this->space_dimension() == " << space_dimension() -2441: << ", " << lf_name << "->space_dimension() == " -2441: << lf.space_dimension() << "."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: template -2441: void -2441: Octagonal_Shape::throw_invalid_argument(const char* method, -2441: const char* reason) { -2441: std::ostringstream s; -2441: s << "PPL::Octagonal_Shape::" << method << ":\n" -2441: << reason << "."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: } -2441: # 2329 "../../src/Octagonal_Shape_defs.hh" 2 -2441: # 32 "../../src/BD_Shape_inlines.hh" 2 -2441: # 42 "../../src/BD_Shape_inlines.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: inline dimension_type -2441: BD_Shape::max_space_dimension() { -2441: -2441: -2441: return std::min(DB_Matrix::max_num_rows() - 1, -2441: DB_Matrix::max_num_columns() - 1); -2441: } -2441: -2441: template -2441: inline bool -2441: BD_Shape::marked_zero_dim_univ() const { -2441: return status.test_zero_dim_univ(); -2441: } -2441: -2441: template -2441: inline bool -2441: BD_Shape::marked_empty() const { -2441: return status.test_empty(); -2441: } -2441: -2441: template -2441: inline bool -2441: BD_Shape::marked_shortest_path_closed() const { -2441: return status.test_shortest_path_closed(); -2441: } -2441: -2441: template -2441: inline bool -2441: BD_Shape::marked_shortest_path_reduced() const { -2441: return status.test_shortest_path_reduced(); -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape::set_zero_dim_univ() { -2441: status.set_zero_dim_univ(); -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape::set_empty() { -2441: status.set_empty(); -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape::set_shortest_path_closed() { -2441: status.set_shortest_path_closed(); -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape::set_shortest_path_reduced() { -2441: status.set_shortest_path_reduced(); -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape::reset_shortest_path_closed() { -2441: status.reset_shortest_path_closed(); -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape::reset_shortest_path_reduced() { -2441: status.reset_shortest_path_reduced(); -2441: } -2441: -2441: template -2441: inline -2441: BD_Shape::BD_Shape(const dimension_type num_dimensions, -2441: const Degenerate_Element kind) -2441: : dbm(num_dimensions + 1), status(), redundancy_dbm() { -2441: if (kind == EMPTY) { -2441: set_empty(); -2441: } -2441: else { -2441: if (num_dimensions > 0) { -2441: -2441: set_shortest_path_closed(); -2441: } -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline -2441: BD_Shape::BD_Shape(const BD_Shape& y, Complexity_Class) -2441: : dbm(y.dbm), status(y.status), redundancy_dbm() { -2441: if (y.marked_shortest_path_reduced()) { -2441: redundancy_dbm = y.redundancy_dbm; -2441: } -2441: } -2441: -2441: template -2441: template -2441: inline -2441: BD_Shape::BD_Shape(const BD_Shape& y, Complexity_Class) -2441: -2441: -2441: : dbm((y.shortest_path_closure_assign(), y.dbm)), -2441: status(), -2441: redundancy_dbm() { -2441: -2441: if (y.marked_empty()) { -2441: set_empty(); -2441: } -2441: else if (y.marked_zero_dim_univ()) { -2441: set_zero_dim_univ(); -2441: } -2441: } -2441: -2441: template -2441: inline Congruence_System -2441: BD_Shape::congruences() const { -2441: return minimized_congruences(); -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape::add_constraints(const Constraint_System& cs) { -2441: for (Constraint_System::const_iterator i = cs.begin(), -2441: cs_end = cs.end(); i != cs_end; ++i) { -2441: add_constraint(*i); -2441: } -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape::add_recycled_constraints(Constraint_System& cs) { -2441: add_constraints(cs); -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape::add_congruences(const Congruence_System& cgs) { -2441: for (Congruence_System::const_iterator i = cgs.begin(), -2441: cgs_end = cgs.end(); i != cgs_end; ++i) { -2441: add_congruence(*i); -2441: } -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape::add_recycled_congruences(Congruence_System& cgs) { -2441: add_congruences(cgs); -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape::refine_with_constraint(const Constraint& c) { -2441: const dimension_type c_space_dim = c.space_dimension(); -2441: -2441: if (c_space_dim > space_dimension()) { -2441: throw_dimension_incompatible("refine_with_constraint(c)", c); -2441: } -2441: -2441: if (!marked_empty()) { -2441: refine_no_check(c); -2441: } -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape::refine_with_constraints(const Constraint_System& cs) { -2441: -2441: if (cs.space_dimension() > space_dimension()) { -2441: throw_invalid_argument("refine_with_constraints(cs)", -2441: "cs and *this are space-dimension incompatible"); -2441: } -2441: -2441: for (Constraint_System::const_iterator i = cs.begin(), -2441: cs_end = cs.end(); !marked_empty() && i != cs_end; ++i) { -2441: refine_no_check(*i); -2441: } -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape::refine_with_congruence(const Congruence& cg) { -2441: const dimension_type cg_space_dim = cg.space_dimension(); -2441: -2441: if (cg_space_dim > space_dimension()) { -2441: throw_dimension_incompatible("refine_with_congruence(cg)", cg); -2441: } -2441: -2441: if (!marked_empty()) { -2441: refine_no_check(cg); -2441: } -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::refine_with_congruences(const Congruence_System& cgs) { -2441: -2441: if (cgs.space_dimension() > space_dimension()) { -2441: throw_invalid_argument("refine_with_congruences(cgs)", -2441: "cgs and *this are space-dimension incompatible"); -2441: } -2441: -2441: for (Congruence_System::const_iterator i = cgs.begin(), -2441: cgs_end = cgs.end(); !marked_empty() && i != cgs_end; ++i) { -2441: refine_no_check(*i); -2441: } -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape::refine_no_check(const Congruence& cg) { -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: if (cg.is_proper_congruence()) { -2441: if (cg.is_inconsistent()) { -2441: set_empty(); -2441: } -2441: -2441: return; -2441: } -2441: -2441: ((void) 0); -2441: Constraint c(cg); -2441: refine_no_check(c); -2441: } -2441: -2441: template -2441: inline bool -2441: BD_Shape::can_recycle_constraint_systems() { -2441: return false; -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: BD_Shape::can_recycle_congruence_systems() { -2441: return false; -2441: } -2441: -2441: template -2441: inline -2441: BD_Shape::BD_Shape(const Constraint_System& cs) -2441: : dbm(cs.space_dimension() + 1), status(), redundancy_dbm() { -2441: if (cs.space_dimension() > 0) { -2441: -2441: set_shortest_path_closed(); -2441: } -2441: add_constraints(cs); -2441: } -2441: -2441: template -2441: template -2441: inline -2441: BD_Shape::BD_Shape(const Box& box, -2441: Complexity_Class) -2441: : dbm(box.space_dimension() + 1), status(), redundancy_dbm() { -2441: -2441: if (box.is_empty()) { -2441: set_empty(); -2441: } -2441: else if (box.space_dimension() > 0) { -2441: -2441: set_shortest_path_closed(); -2441: refine_with_constraints(box.constraints()); -2441: } -2441: } -2441: -2441: template -2441: inline -2441: BD_Shape::BD_Shape(const Grid& grid, -2441: Complexity_Class) -2441: : dbm(grid.space_dimension() + 1), status(), redundancy_dbm() { -2441: if (grid.space_dimension() > 0) { -2441: -2441: set_shortest_path_closed(); -2441: } -2441: -2441: refine_with_congruences(grid.minimized_congruences()); -2441: } -2441: -2441: template -2441: template -2441: inline -2441: BD_Shape::BD_Shape(const Octagonal_Shape& os, -2441: Complexity_Class) -2441: : dbm(os.space_dimension() + 1), status(), redundancy_dbm() { -2441: -2441: if (os.is_empty()) { -2441: set_empty(); -2441: } -2441: else if (os.space_dimension() > 0) { -2441: -2441: set_shortest_path_closed(); -2441: refine_with_constraints(os.constraints()); -2441: -2441: -2441: -2441: } -2441: } -2441: -2441: template -2441: inline BD_Shape& -2441: BD_Shape::operator=(const BD_Shape& y) { -2441: dbm = y.dbm; -2441: status = y.status; -2441: if (y.marked_shortest_path_reduced()) { -2441: redundancy_dbm = y.redundancy_dbm; -2441: } -2441: return *this; -2441: } -2441: -2441: template -2441: inline -2441: BD_Shape::~BD_Shape() { -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape::m_swap(BD_Shape& y) { -2441: using std::swap; -2441: swap(dbm, y.dbm); -2441: swap(status, y.status); -2441: swap(redundancy_dbm, y.redundancy_dbm); -2441: } -2441: -2441: template -2441: inline dimension_type -2441: BD_Shape::space_dimension() const { -2441: return dbm.num_rows() - 1; -2441: } -2441: -2441: template -2441: inline bool -2441: BD_Shape::is_empty() const { -2441: shortest_path_closure_assign(); -2441: return marked_empty(); -2441: } -2441: -2441: template -2441: inline bool -2441: BD_Shape::bounds_from_above(const Linear_Expression& expr) const { -2441: return bounds(expr, true); -2441: } -2441: -2441: template -2441: inline bool -2441: BD_Shape::bounds_from_below(const Linear_Expression& expr) const { -2441: return bounds(expr, false); -2441: } -2441: -2441: template -2441: inline bool -2441: BD_Shape::maximize(const Linear_Expression& expr, -2441: Coefficient& sup_n, Coefficient& sup_d, -2441: bool& maximum) const { -2441: return max_min(expr, true, sup_n, sup_d, maximum); -2441: } -2441: -2441: template -2441: inline bool -2441: BD_Shape::maximize(const Linear_Expression& expr, -2441: Coefficient& sup_n, Coefficient& sup_d, bool& maximum, -2441: Generator& g) const { -2441: return max_min(expr, true, sup_n, sup_d, maximum, g); -2441: } -2441: -2441: template -2441: inline bool -2441: BD_Shape::minimize(const Linear_Expression& expr, -2441: Coefficient& inf_n, Coefficient& inf_d, -2441: bool& minimum) const { -2441: return max_min(expr, false, inf_n, inf_d, minimum); -2441: } -2441: -2441: template -2441: inline bool -2441: BD_Shape::minimize(const Linear_Expression& expr, -2441: Coefficient& inf_n, Coefficient& inf_d, bool& minimum, -2441: Generator& g) const { -2441: return max_min(expr, false, inf_n, inf_d, minimum, g); -2441: } -2441: -2441: template -2441: inline bool -2441: BD_Shape::is_topologically_closed() const { -2441: return true; -2441: } -2441: -2441: template -2441: inline bool -2441: BD_Shape::is_discrete() const { -2441: return affine_dimension() == 0; -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape::topological_closure_assign() { -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: operator==(const BD_Shape& x, const BD_Shape& y) { -2441: const dimension_type x_space_dim = x.space_dimension(); -2441: -2441: if (x_space_dim != y.space_dimension()) { -2441: return false; -2441: } -2441: -2441: -2441: if (x_space_dim == 0) { -2441: if (x.marked_empty()) { -2441: return y.marked_empty(); -2441: } -2441: else { -2441: return !y.marked_empty(); -2441: } -2441: } -2441: -2441: -2441: x.shortest_path_closure_assign(); -2441: y.shortest_path_closure_assign(); -2441: -2441: -2441: -2441: if (x.marked_empty()) { -2441: return y.marked_empty(); -2441: } -2441: if (y.marked_empty()) { -2441: return false; -2441: } -2441: -2441: -2441: return x.dbm == y.dbm; -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: operator!=(const BD_Shape& x, const BD_Shape& y) { -2441: return !(x == y); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: rectilinear_distance_assign(Checked_Number& r, -2441: const BD_Shape& x, -2441: const BD_Shape& y, -2441: const Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2) { -2441: const dimension_type x_space_dim = x.space_dimension(); -2441: -2441: if (x_space_dim != y.space_dimension()) { -2441: return false; -2441: } -2441: -2441: -2441: if (x_space_dim == 0) { -2441: if (x.marked_empty() == y.marked_empty()) { -2441: assign_r(r, 0, ROUND_NOT_NEEDED); -2441: } -2441: else { -2441: assign_r(r, PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: return true; -2441: } -2441: -2441: -2441: x.shortest_path_closure_assign(); -2441: y.shortest_path_closure_assign(); -2441: -2441: -2441: -2441: if (x.marked_empty() || y.marked_empty()) { -2441: if (x.marked_empty() == y.marked_empty()) { -2441: assign_r(r, 0, ROUND_NOT_NEEDED); -2441: } -2441: else { -2441: assign_r(r, PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: return true; -2441: } -2441: -2441: return rectilinear_distance_assign(r, x.dbm, y.dbm, dir, tmp0, tmp1, tmp2); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: rectilinear_distance_assign(Checked_Number& r, -2441: const BD_Shape& x, -2441: const BD_Shape& y, -2441: const Rounding_Dir dir) { -2441: typedef Checked_Number Checked_Temp; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp0; Checked_Temp& tmp0 = holder_tmp0.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp1; Checked_Temp& tmp1 = holder_tmp1.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp2; Checked_Temp& tmp2 = holder_tmp2.item(); -2441: return rectilinear_distance_assign(r, x, y, dir, tmp0, tmp1, tmp2); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: rectilinear_distance_assign(Checked_Number& r, -2441: const BD_Shape& x, -2441: const BD_Shape& y, -2441: const Rounding_Dir dir) { -2441: return rectilinear_distance_assign(r, x, y, dir); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: euclidean_distance_assign(Checked_Number& r, -2441: const BD_Shape& x, -2441: const BD_Shape& y, -2441: const Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2) { -2441: const dimension_type x_space_dim = x.space_dimension(); -2441: -2441: if (x_space_dim != y.space_dimension()) { -2441: return false; -2441: } -2441: -2441: -2441: if (x_space_dim == 0) { -2441: if (x.marked_empty() == y.marked_empty()) { -2441: assign_r(r, 0, ROUND_NOT_NEEDED); -2441: } -2441: else { -2441: assign_r(r, PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: return true; -2441: } -2441: -2441: -2441: x.shortest_path_closure_assign(); -2441: y.shortest_path_closure_assign(); -2441: -2441: -2441: -2441: if (x.marked_empty() || y.marked_empty()) { -2441: if (x.marked_empty() == y.marked_empty()) { -2441: assign_r(r, 0, ROUND_NOT_NEEDED); -2441: } -2441: else { -2441: assign_r(r, PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: return true; -2441: } -2441: -2441: return euclidean_distance_assign(r, x.dbm, y.dbm, dir, tmp0, tmp1, tmp2); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: euclidean_distance_assign(Checked_Number& r, -2441: const BD_Shape& x, -2441: const BD_Shape& y, -2441: const Rounding_Dir dir) { -2441: typedef Checked_Number Checked_Temp; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp0; Checked_Temp& tmp0 = holder_tmp0.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp1; Checked_Temp& tmp1 = holder_tmp1.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp2; Checked_Temp& tmp2 = holder_tmp2.item(); -2441: return euclidean_distance_assign(r, x, y, dir, tmp0, tmp1, tmp2); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: euclidean_distance_assign(Checked_Number& r, -2441: const BD_Shape& x, -2441: const BD_Shape& y, -2441: const Rounding_Dir dir) { -2441: return euclidean_distance_assign(r, x, y, dir); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: l_infinity_distance_assign(Checked_Number& r, -2441: const BD_Shape& x, -2441: const BD_Shape& y, -2441: const Rounding_Dir dir, -2441: Temp& tmp0, -2441: Temp& tmp1, -2441: Temp& tmp2) { -2441: const dimension_type x_space_dim = x.space_dimension(); -2441: -2441: if (x_space_dim != y.space_dimension()) { -2441: return false; -2441: } -2441: -2441: if (x_space_dim == 0) { -2441: if (x.marked_empty() == y.marked_empty()) { -2441: assign_r(r, 0, ROUND_NOT_NEEDED); -2441: } -2441: else { -2441: assign_r(r, PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: return true; -2441: } -2441: -2441: -2441: x.shortest_path_closure_assign(); -2441: y.shortest_path_closure_assign(); -2441: -2441: -2441: -2441: if (x.marked_empty() || y.marked_empty()) { -2441: if (x.marked_empty() == y.marked_empty()) { -2441: assign_r(r, 0, ROUND_NOT_NEEDED); -2441: } -2441: else { -2441: assign_r(r, PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: return true; -2441: } -2441: -2441: return l_infinity_distance_assign(r, x.dbm, y.dbm, dir, tmp0, tmp1, tmp2); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: l_infinity_distance_assign(Checked_Number& r, -2441: const BD_Shape& x, -2441: const BD_Shape& y, -2441: const Rounding_Dir dir) { -2441: typedef Checked_Number Checked_Temp; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp0; Checked_Temp& tmp0 = holder_tmp0.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp1; Checked_Temp& tmp1 = holder_tmp1.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp2; Checked_Temp& tmp2 = holder_tmp2.item(); -2441: return l_infinity_distance_assign(r, x, y, dir, tmp0, tmp1, tmp2); -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: l_infinity_distance_assign(Checked_Number& r, -2441: const BD_Shape& x, -2441: const BD_Shape& y, -2441: const Rounding_Dir dir) { -2441: return l_infinity_distance_assign(r, x, y, dir); -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape::add_dbm_constraint(const dimension_type i, -2441: const dimension_type j, -2441: const N& k) { -2441: -2441: ((void) 0); -2441: N& dbm_ij = dbm[i][j]; -2441: if (dbm_ij > k) { -2441: dbm_ij = k; -2441: if (marked_shortest_path_closed()) { -2441: reset_shortest_path_closed(); -2441: } -2441: } -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape::add_dbm_constraint(const dimension_type i, -2441: const dimension_type j, -2441: Coefficient_traits::const_reference numer, -2441: Coefficient_traits::const_reference denom) { -2441: -2441: ((void) 0); -2441: ((void) 0); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_k; N& k = holder_k.item(); -2441: div_round_up(k, numer, denom); -2441: add_dbm_constraint(i, j, k); -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape::time_elapse_assign(const BD_Shape& y) { -2441: -2441: if (space_dimension() != y.space_dimension()) { -2441: throw_dimension_incompatible("time_elapse_assign(y)", y); -2441: } -2441: -2441: -2441: C_Polyhedron ph_x(constraints()); -2441: C_Polyhedron ph_y(y.constraints()); -2441: ph_x.time_elapse_assign(ph_y); -2441: BD_Shape x(ph_x); -2441: m_swap(x); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline bool -2441: BD_Shape::strictly_contains(const BD_Shape& y) const { -2441: const BD_Shape& x = *this; -2441: return x.contains(y) && !y.contains(x); -2441: } -2441: -2441: template -2441: inline bool -2441: BD_Shape::upper_bound_assign_if_exact(const BD_Shape& y) { -2441: if (space_dimension() != y.space_dimension()) { -2441: throw_dimension_incompatible("upper_bound_assign_if_exact(y)", y); -2441: } -2441: -2441: -2441: -2441: const bool integer_upper_bound = false; -2441: return BHZ09_upper_bound_assign_if_exact(y); -2441: -2441: } -2441: -2441: template -2441: inline bool -2441: BD_Shape::integer_upper_bound_assign_if_exact(const BD_Shape& y) { -2441: enum anonymous_enum_compile_time_check___LINE__ { compile_time_check_769 = sizeof(Parma_Polyhedra_Library::Compile_Time_Check<(std::numeric_limits::is_integer)>) } -2441: -2441: ; -2441: if (space_dimension() != y.space_dimension()) { -2441: throw_dimension_incompatible("integer_upper_bound_assign_if_exact(y)", y); -2441: } -2441: const bool integer_upper_bound = true; -2441: return BHZ09_upper_bound_assign_if_exact(y); -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape -2441: ::remove_higher_space_dimensions(const dimension_type new_dimension) { -2441: -2441: -2441: const dimension_type space_dim = space_dimension(); -2441: if (new_dimension > space_dim) { -2441: throw_dimension_incompatible("remove_higher_space_dimensions(nd)", -2441: new_dimension); -2441: } -2441: -2441: -2441: -2441: -2441: if (new_dimension == space_dim) { -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: -2441: shortest_path_closure_assign(); -2441: dbm.resize_no_copy(new_dimension + 1); -2441: -2441: -2441: -2441: if (marked_shortest_path_reduced()) { -2441: reset_shortest_path_reduced(); -2441: } -2441: -2441: -2441: -2441: if (new_dimension == 0 && !marked_empty()) { -2441: set_zero_dim_univ(); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::wrap_assign(const Variables_Set& vars, -2441: Bounded_Integer_Type_Width w, -2441: Bounded_Integer_Type_Representation r, -2441: Bounded_Integer_Type_Overflow o, -2441: const Constraint_System* cs_p, -2441: unsigned complexity_threshold, -2441: bool wrap_individually) { -2441: Implementation::wrap_assign(*this, -2441: vars, w, r, o, cs_p, -2441: complexity_threshold, wrap_individually, -2441: "BD_Shape"); -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape::CC76_extrapolation_assign(const BD_Shape& y, unsigned* tp) { -2441: static N stop_points[] = { -2441: N(-2, ROUND_UP), -2441: N(-1, ROUND_UP), -2441: N( 0, ROUND_UP), -2441: N( 1, ROUND_UP), -2441: N( 2, ROUND_UP) -2441: }; -2441: CC76_extrapolation_assign(y, -2441: stop_points, -2441: stop_points -2441: + sizeof(stop_points)/sizeof(stop_points[0]), -2441: tp); -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape::H79_widening_assign(const BD_Shape& y, unsigned* tp) { -2441: -2441: -2441: C_Polyhedron ph_x(constraints()); -2441: C_Polyhedron ph_y(y.constraints()); -2441: ph_x.H79_widening_assign(ph_y, tp); -2441: BD_Shape x(ph_x); -2441: m_swap(x); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape::widening_assign(const BD_Shape& y, unsigned* tp) { -2441: H79_widening_assign(y, tp); -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape::limited_H79_extrapolation_assign(const BD_Shape& y, -2441: const Constraint_System& cs, -2441: unsigned* tp) { -2441: -2441: -2441: C_Polyhedron ph_x(constraints()); -2441: C_Polyhedron ph_y(y.constraints()); -2441: ph_x.limited_H79_extrapolation_assign(ph_y, cs, tp); -2441: BD_Shape x(ph_x); -2441: m_swap(x); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline memory_size_type -2441: BD_Shape::total_memory_in_bytes() const { -2441: return sizeof(*this) + external_memory_in_bytes(); -2441: } -2441: -2441: template -2441: inline int32_t -2441: BD_Shape::hash_code() const { -2441: return hash_code_from_dimension(space_dimension()); -2441: } -2441: -2441: template -2441: template -2441: inline void -2441: BD_Shape::generalized_refine_with_linear_form_inequality( -2441: const Linear_Form >& left, -2441: const Linear_Form >& right, -2441: const Relation_Symbol relsym) { -2441: switch (relsym) { -2441: case EQUAL: -2441: -2441: refine_with_linear_form_inequality(left, right); -2441: refine_with_linear_form_inequality(right, left); -2441: break; -2441: case LESS_THAN: -2441: case LESS_OR_EQUAL: -2441: refine_with_linear_form_inequality(left, right); -2441: break; -2441: case GREATER_THAN: -2441: case GREATER_OR_EQUAL: -2441: refine_with_linear_form_inequality(right, left); -2441: break; -2441: case NOT_EQUAL: -2441: break; -2441: default: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: } -2441: } -2441: -2441: template -2441: template -2441: inline void -2441: BD_Shape -2441: ::refine_fp_interval_abstract_store(Box >& -2441: store) const { -2441: -2441: -2441: enum anonymous_enum_compile_time_check___LINE__ { compile_time_check_931 = sizeof(Parma_Polyhedra_Library::Compile_Time_Check<(!std::numeric_limits::is_exact)>) } -2441: -2441: ; -2441: -2441: typedef Interval FP_Interval_Type; -2441: store.intersection_assign(Box(*this)); -2441: } -2441: -2441: template -2441: inline void -2441: BD_Shape::drop_some_non_integer_points_helper(N& elem) { -2441: if (!is_integer(elem)) { -2441: Result r = floor_assign_r(elem, elem, ROUND_DOWN); -2441: (void)(r); -2441: ((void) 0); -2441: reset_shortest_path_closed(); -2441: } -2441: } -2441: -2441: -2441: template -2441: inline void -2441: swap(BD_Shape& x, BD_Shape& y) { -2441: x.m_swap(y); -2441: } -2441: -2441: } -2441: # 2372 "../../src/BD_Shape_defs.hh" 2 -2441: # 1 "../../src/BD_Shape_templates.hh" 1 -2441: # 47 "../../src/BD_Shape_templates.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: BD_Shape::BD_Shape(const Congruence_System& cgs) -2441: : dbm(cgs.space_dimension() + 1), -2441: status(), -2441: redundancy_dbm() { -2441: add_congruences(cgs); -2441: } -2441: -2441: template -2441: BD_Shape::BD_Shape(const Generator_System& gs) -2441: : dbm(gs.space_dimension() + 1), status(), redundancy_dbm() { -2441: const Generator_System::const_iterator gs_begin = gs.begin(); -2441: const Generator_System::const_iterator gs_end = gs.end(); -2441: if (gs_begin == gs_end) { -2441: -2441: set_empty(); -2441: return; -2441: } -2441: -2441: const dimension_type space_dim = space_dimension(); -2441: DB_Row& dbm_0 = dbm[0]; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp; N& tmp = holder_tmp.item(); -2441: -2441: bool dbm_initialized = false; -2441: bool point_seen = false; -2441: -2441: for (Generator_System::const_iterator gs_i = gs_begin; -2441: gs_i != gs_end; ++gs_i) { -2441: const Generator& g = *gs_i; -2441: switch (g.type()) { -2441: case Generator::POINT: -2441: point_seen = true; -2441: -2441: case Generator::CLOSURE_POINT: -2441: if (!dbm_initialized) { -2441: -2441: dbm_initialized = true; -2441: const Coefficient& d = g.divisor(); -2441: -2441: -2441: for (dimension_type i = space_dim; i > 0; --i) { -2441: const Coefficient& g_i = g.expression().get(Variable(i - 1)); -2441: DB_Row& dbm_i = dbm[i]; -2441: for (dimension_type j = space_dim; j > 0; --j) { -2441: if (i != j) { -2441: const Coefficient& g_j = g.expression().get(Variable(j - 1)); -2441: div_round_up(dbm_i[j], g_j - g_i, d); -2441: } -2441: } -2441: div_round_up(dbm_i[0], -g_i, d); -2441: } -2441: for (dimension_type j = space_dim; j > 0; --j) { -2441: const Coefficient& g_j = g.expression().get(Variable(j - 1)); -2441: div_round_up(dbm_0[j], g_j, d); -2441: } -2441: -2441: } -2441: else { -2441: -2441: -2441: const Coefficient& d = g.divisor(); -2441: -2441: -2441: for (dimension_type i = space_dim; i > 0; --i) { -2441: const Coefficient& g_i = g.expression().get(Variable(i - 1)); -2441: DB_Row& dbm_i = dbm[i]; -2441: -2441: for (dimension_type j = space_dim; j > 0; --j) { -2441: const Coefficient& g_j = g.expression().get(Variable(j - 1)); -2441: div_round_up(tmp, g_j - g_i, d); -2441: max_assign(dbm_i[j], tmp); -2441: } -2441: div_round_up(tmp, -g_i, d); -2441: max_assign(dbm_i[0], tmp); -2441: } -2441: for (dimension_type j = space_dim; j > 0; --j) { -2441: const Coefficient& g_j = g.expression().get(Variable(j - 1)); -2441: div_round_up(tmp, g_j, d); -2441: max_assign(dbm_0[j], tmp); -2441: } -2441: } -2441: break; -2441: default: -2441: -2441: break; -2441: } -2441: } -2441: -2441: if (!point_seen) { -2441: -2441: throw_invalid_argument("BD_Shape(gs)", -2441: "the non-empty generator system gs " -2441: "contains no points."); -2441: } -2441: -2441: -2441: for (Generator_System::const_iterator gs_i = gs_begin; -2441: gs_i != gs_end; ++gs_i) { -2441: const Generator& g = *gs_i; -2441: switch (g.type()) { -2441: case Generator::LINE: -2441: -2441: -2441: for (dimension_type i = space_dim; i > 0; --i) { -2441: const Coefficient& g_i = g.expression().get(Variable(i - 1)); -2441: DB_Row& dbm_i = dbm[i]; -2441: -2441: for (dimension_type j = space_dim; j > 0; --j) { -2441: if (g_i != g.expression().get(Variable(j - 1))) { -2441: assign_r(dbm_i[j], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: } -2441: if (g_i != 0) { -2441: assign_r(dbm_i[0], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: } -2441: for (Generator::expr_type::const_iterator i = g.expression().begin(), -2441: i_end = g.expression().end(); i != i_end; ++i) { -2441: assign_r(dbm_0[i.variable().space_dimension()], -2441: PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: break; -2441: case Generator::RAY: -2441: -2441: -2441: for (dimension_type i = space_dim; i > 0; --i) { -2441: const Coefficient& g_i = g.expression().get(Variable(i - 1)); -2441: DB_Row& dbm_i = dbm[i]; -2441: -2441: for (dimension_type j = space_dim; j > 0; --j) { -2441: if (g_i < g.expression().get(Variable(j - 1))) { -2441: assign_r(dbm_i[j], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: } -2441: if (g_i < 0) { -2441: assign_r(dbm_i[0], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: } -2441: for (Generator::expr_type::const_iterator i = g.expression().begin(), -2441: i_end = g.expression().end(); i != i_end; ++i) { -2441: if (*i > 0) { -2441: assign_r(dbm_0[i.variable().space_dimension()], -2441: PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: } -2441: break; -2441: default: -2441: -2441: break; -2441: } -2441: } -2441: set_shortest_path_closed(); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: BD_Shape::BD_Shape(const Polyhedron& ph, const Complexity_Class complexity) -2441: : dbm(), status(), redundancy_dbm() { -2441: const dimension_type num_dimensions = ph.space_dimension(); -2441: -2441: if (ph.marked_empty()) { -2441: *this = BD_Shape(num_dimensions, EMPTY); -2441: return; -2441: } -2441: -2441: if (num_dimensions == 0) { -2441: *this = BD_Shape(num_dimensions, UNIVERSE); -2441: return; -2441: } -2441: -2441: -2441: -2441: if (complexity == ANY_COMPLEXITY -2441: || (!ph.has_pending_constraints() && ph.generators_are_up_to_date())) { -2441: *this = BD_Shape(ph.generators()); -2441: return; -2441: } -2441: -2441: -2441: -2441: -2441: ((void) 0); -2441: -2441: if (!ph.has_something_pending() && ph.constraints_are_minimized()) { -2441: -2441: -2441: if (ph.is_universe()) { -2441: *this = BD_Shape(num_dimensions, UNIVERSE); -2441: return; -2441: } -2441: } -2441: -2441: -2441: for (Constraint_System::const_iterator i = ph.con_sys.begin(), -2441: cs_end = ph.con_sys.end(); i != cs_end; ++i) { -2441: if (i->is_inconsistent()) { -2441: *this = BD_Shape(num_dimensions, EMPTY); -2441: return; -2441: } -2441: } -2441: -2441: -2441: -2441: if (complexity == SIMPLEX_COMPLEXITY) { -2441: MIP_Problem lp(num_dimensions); -2441: lp.set_optimization_mode(MAXIMIZATION); -2441: -2441: const Constraint_System& ph_cs = ph.constraints(); -2441: if (!ph_cs.has_strict_inequalities()) { -2441: lp.add_constraints(ph_cs); -2441: } -2441: else { -2441: -2441: for (Constraint_System::const_iterator i = ph_cs.begin(), -2441: ph_cs_end = ph_cs.end(); i != ph_cs_end; ++i) { -2441: const Constraint& c = *i; -2441: if (c.is_strict_inequality()) { -2441: Linear_Expression expr(c.expression()); -2441: lp.add_constraint(expr >= 0); -2441: } -2441: else { -2441: lp.add_constraint(c); -2441: } -2441: } -2441: } -2441: -2441: -2441: if (!lp.is_satisfiable()) { -2441: *this = BD_Shape(num_dimensions, EMPTY); -2441: return; -2441: } -2441: -2441: -2441: *this = BD_Shape(num_dimensions, UNIVERSE); -2441: -2441: Generator g(point()); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_numer; Parma_Polyhedra_Library::Coefficient& numer = holder_numer.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_denom; Parma_Polyhedra_Library::Coefficient& denom = holder_denom.item(); -2441: for (dimension_type i = 1; i <= num_dimensions; ++i) { -2441: Variable x(i-1); -2441: -2441: lp.set_objective_function(x); -2441: if (lp.solve() == OPTIMIZED_MIP_PROBLEM) { -2441: g = lp.optimizing_point(); -2441: lp.evaluate_objective_function(g, numer, denom); -2441: div_round_up(dbm[0][i], numer, denom); -2441: } -2441: -2441: for (dimension_type j = 1; j <= num_dimensions; ++j) { -2441: if (i == j) { -2441: continue; -2441: } -2441: Variable y(j-1); -2441: lp.set_objective_function(x - y); -2441: if (lp.solve() == OPTIMIZED_MIP_PROBLEM) { -2441: g = lp.optimizing_point(); -2441: lp.evaluate_objective_function(g, numer, denom); -2441: div_round_up(dbm[j][i], numer, denom); -2441: } -2441: } -2441: -2441: lp.set_objective_function(-x); -2441: if (lp.solve() == OPTIMIZED_MIP_PROBLEM) { -2441: g = lp.optimizing_point(); -2441: lp.evaluate_objective_function(g, numer, denom); -2441: div_round_up(dbm[i][0], numer, denom); -2441: } -2441: } -2441: set_shortest_path_closed(); -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: -2441: ((void) 0); -2441: *this = BD_Shape(num_dimensions, UNIVERSE); -2441: refine_with_constraints(ph.constraints()); -2441: } -2441: -2441: template -2441: dimension_type -2441: BD_Shape::affine_dimension() const { -2441: const dimension_type space_dim = space_dimension(); -2441: -2441: if (space_dim == 0) { -2441: return 0; -2441: } -2441: -2441: -2441: shortest_path_closure_assign(); -2441: if (marked_empty()) { -2441: return 0; -2441: } -2441: -2441: -2441: -2441: std::vector predecessor; -2441: compute_predecessors(predecessor); -2441: -2441: -2441: -2441: dimension_type affine_dim = 0; -2441: -2441: for (dimension_type i = 1; i <= space_dim; ++i) { -2441: if (predecessor[i] == i) { -2441: ++affine_dim; -2441: } -2441: } -2441: return affine_dim; -2441: } -2441: -2441: template -2441: Congruence_System -2441: BD_Shape::minimized_congruences() const { -2441: -2441: -2441: shortest_path_closure_assign(); -2441: -2441: const dimension_type space_dim = space_dimension(); -2441: Congruence_System cgs(space_dim); -2441: -2441: if (space_dim == 0) { -2441: if (marked_empty()) { -2441: cgs = Congruence_System::zero_dim_empty(); -2441: } -2441: return cgs; -2441: } -2441: -2441: if (marked_empty()) { -2441: cgs.insert(Congruence::zero_dim_false()); -2441: return cgs; -2441: } -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_numer; Parma_Polyhedra_Library::Coefficient& numer = holder_numer.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_denom; Parma_Polyhedra_Library::Coefficient& denom = holder_denom.item(); -2441: -2441: -2441: std::vector leaders; -2441: compute_leaders(leaders); -2441: -2441: -2441: const DB_Row& dbm_0 = dbm[0]; -2441: for (dimension_type i = 1; i <= space_dim; ++i) { -2441: const dimension_type leader = leaders[i]; -2441: if (i != leader) { -2441: -2441: if (leader == 0) { -2441: -2441: ((void) 0); -2441: numer_denom(dbm_0[i], numer, denom); -2441: cgs.insert(denom*Variable(i-1) == numer); -2441: } -2441: else { -2441: -2441: ((void) 0); -2441: numer_denom(dbm[i][leader], numer, denom); -2441: cgs.insert(denom*Variable(leader-1) - denom*Variable(i-1) == numer); -2441: } -2441: } -2441: } -2441: return cgs; -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::add_constraint(const Constraint& c) { -2441: -2441: if (c.space_dimension() > space_dimension()) { -2441: throw_dimension_incompatible("add_constraint(c)", c); -2441: } -2441: -2441: if (c.is_strict_inequality()) { -2441: if (c.is_inconsistent()) { -2441: set_empty(); -2441: return; -2441: } -2441: if (c.is_tautological()) { -2441: return; -2441: } -2441: -2441: throw_invalid_argument("add_constraint(c)", -2441: "strict inequalities are not allowed"); -2441: } -2441: -2441: dimension_type num_vars = 0; -2441: dimension_type i = 0; -2441: dimension_type j = 0; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_coeff; Parma_Polyhedra_Library::Coefficient& coeff = holder_coeff.item(); -2441: -2441: if (!BD_Shape_Helpers::extract_bounded_difference(c, num_vars, i, j, coeff)) { -2441: throw_invalid_argument("add_constraint(c)", -2441: "c is not a bounded difference constraint"); -2441: } -2441: const Coefficient& inhomo = c.inhomogeneous_term(); -2441: if (num_vars == 0) { -2441: -2441: if (inhomo < 0 -2441: || (inhomo != 0 && c.is_equality())) { -2441: set_empty(); -2441: } -2441: return; -2441: } -2441: -2441: -2441: -2441: const bool negative = (coeff < 0); -2441: if (negative) { -2441: neg_assign(coeff); -2441: } -2441: bool changed = false; -2441: N& x = negative ? dbm[i][j] : dbm[j][i]; -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_d; N& d = holder_d.item(); -2441: div_round_up(d, inhomo, coeff); -2441: if (x > d) { -2441: x = d; -2441: changed = true; -2441: } -2441: -2441: if (c.is_equality()) { -2441: N& y = negative ? dbm[j][i] : dbm[i][j]; -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_c_term; Parma_Polyhedra_Library::Coefficient& minus_c_term = holder_minus_c_term.item(); -2441: neg_assign(minus_c_term, inhomo); -2441: div_round_up(d, minus_c_term, coeff); -2441: if (y > d) { -2441: y = d; -2441: changed = true; -2441: } -2441: } -2441: -2441: -2441: -2441: if (changed && marked_shortest_path_closed()) { -2441: reset_shortest_path_closed(); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::add_congruence(const Congruence& cg) { -2441: const dimension_type cg_space_dim = cg.space_dimension(); -2441: -2441: -2441: if (space_dimension() < cg_space_dim) { -2441: throw_dimension_incompatible("add_congruence(cg)", cg); -2441: } -2441: -2441: if (cg.is_proper_congruence()) { -2441: if (cg.is_tautological()) { -2441: return; -2441: } -2441: if (cg.is_inconsistent()) { -2441: set_empty(); -2441: return; -2441: } -2441: -2441: throw_invalid_argument("add_congruence(cg)", -2441: "cg is a non-trivial, proper congruence"); -2441: } -2441: -2441: ((void) 0); -2441: Constraint c(cg); -2441: add_constraint(c); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::refine_no_check(const Constraint& c) { -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: dimension_type num_vars = 0; -2441: dimension_type i = 0; -2441: dimension_type j = 0; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_coeff; Parma_Polyhedra_Library::Coefficient& coeff = holder_coeff.item(); -2441: -2441: if (!BD_Shape_Helpers::extract_bounded_difference(c, num_vars, i, j, coeff)) { -2441: return; -2441: } -2441: const Coefficient& inhomo = c.inhomogeneous_term(); -2441: if (num_vars == 0) { -2441: -2441: if (inhomo < 0 -2441: || (c.is_equality() && inhomo != 0) -2441: || (c.is_strict_inequality() && inhomo == 0)) { -2441: set_empty(); -2441: } -2441: return; -2441: } -2441: -2441: -2441: -2441: const bool negative = (coeff < 0); -2441: N& x = negative ? dbm[i][j] : dbm[j][i]; -2441: N& y = negative ? dbm[j][i] : dbm[i][j]; -2441: if (negative) { -2441: neg_assign(coeff); -2441: } -2441: bool changed = false; -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_d; N& d = holder_d.item(); -2441: div_round_up(d, inhomo, coeff); -2441: if (x > d) { -2441: x = d; -2441: changed = true; -2441: } -2441: -2441: if (c.is_equality()) { -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_c_term; Parma_Polyhedra_Library::Coefficient& minus_c_term = holder_minus_c_term.item(); -2441: neg_assign(minus_c_term, inhomo); -2441: div_round_up(d, minus_c_term, coeff); -2441: if (y > d) { -2441: y = d; -2441: changed = true; -2441: } -2441: } -2441: -2441: -2441: -2441: if (changed && marked_shortest_path_closed()) { -2441: reset_shortest_path_closed(); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::concatenate_assign(const BD_Shape& y) { -2441: BD_Shape& x = *this; -2441: -2441: const dimension_type x_space_dim = x.space_dimension(); -2441: const dimension_type y_space_dim = y.space_dimension(); -2441: -2441: -2441: -2441: if (y_space_dim == 0 && y.marked_empty()) { -2441: set_empty(); -2441: return; -2441: } -2441: -2441: -2441: -2441: if (x_space_dim == 0 && marked_empty()) { -2441: dbm.grow(y_space_dim + 1); -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: add_space_dimensions_and_embed(y_space_dim); -2441: const dimension_type new_space_dim = x_space_dim + y_space_dim; -2441: for (dimension_type i = x_space_dim + 1; i <= new_space_dim; ++i) { -2441: DB_Row& dbm_i = dbm[i]; -2441: dbm_i[0] = y.dbm[i - x_space_dim][0]; -2441: dbm[0][i] = y.dbm[0][i - x_space_dim]; -2441: for (dimension_type j = x_space_dim + 1; j <= new_space_dim; ++j) { -2441: dbm_i[j] = y.dbm[i - x_space_dim][j - x_space_dim]; -2441: } -2441: } -2441: -2441: if (marked_shortest_path_closed()) { -2441: reset_shortest_path_closed(); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: bool -2441: BD_Shape::contains(const BD_Shape& y) const { -2441: const BD_Shape& x = *this; -2441: const dimension_type x_space_dim = x.space_dimension(); -2441: -2441: -2441: if (x_space_dim != y.space_dimension()) { -2441: throw_dimension_incompatible("contains(y)", y); -2441: } -2441: if (x_space_dim == 0) { -2441: -2441: -2441: -2441: -2441: return marked_empty() ? y.marked_empty() : true; -2441: } -2441: # 663 "../../src/BD_Shape_templates.hh" -2441: y.shortest_path_closure_assign(); -2441: -2441: if (y.marked_empty()) { -2441: return true; -2441: } -2441: -2441: if (x.is_empty()) { -2441: return false; -2441: } -2441: -2441: -2441: for (dimension_type i = x_space_dim + 1; i-- > 0; ) { -2441: const DB_Row& x_dbm_i = x.dbm[i]; -2441: const DB_Row& y_dbm_i = y.dbm[i]; -2441: for (dimension_type j = x_space_dim + 1; j-- > 0; ) { -2441: if (x_dbm_i[j] < y_dbm_i[j]) { -2441: return false; -2441: } -2441: } -2441: } -2441: return true; -2441: } -2441: -2441: template -2441: bool -2441: BD_Shape::is_disjoint_from(const BD_Shape& y) const { -2441: const dimension_type space_dim = space_dimension(); -2441: -2441: if (space_dim != y.space_dimension()) { -2441: throw_dimension_incompatible("is_disjoint_from(y)", y); -2441: } -2441: -2441: -2441: shortest_path_closure_assign(); -2441: if (marked_empty()) { -2441: return true; -2441: } -2441: y.shortest_path_closure_assign(); -2441: if (y.marked_empty()) { -2441: return true; -2441: } -2441: # 716 "../../src/BD_Shape_templates.hh" -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp; N& tmp = holder_tmp.item(); -2441: for (dimension_type i = space_dim+1; i-- > 0; ) { -2441: const DB_Row& x_i = dbm[i]; -2441: for (dimension_type j = space_dim+1; j-- > 0; ) { -2441: neg_assign_r(tmp, y.dbm[j][i], ROUND_UP); -2441: if (x_i[j] < tmp) { -2441: return true; -2441: } -2441: } -2441: } -2441: -2441: return false; -2441: } -2441: -2441: template -2441: bool -2441: BD_Shape::is_universe() const { -2441: if (marked_empty()) { -2441: return false; -2441: } -2441: const dimension_type space_dim = space_dimension(); -2441: -2441: -2441: if (space_dim == 0) { -2441: return true; -2441: } -2441: -2441: -2441: for (dimension_type i = space_dim + 1; i-- > 0; ) { -2441: const DB_Row& dbm_i = dbm[i]; -2441: for (dimension_type j = space_dim + 1; j-- > 0; ) { -2441: if (!is_plus_infinity(dbm_i[j])) { -2441: return false; -2441: } -2441: } -2441: } -2441: return true; -2441: } -2441: -2441: template -2441: bool -2441: BD_Shape::is_bounded() const { -2441: shortest_path_closure_assign(); -2441: const dimension_type space_dim = space_dimension(); -2441: -2441: if (marked_empty() || space_dim == 0) { -2441: return true; -2441: } -2441: -2441: -2441: for (dimension_type i = space_dim + 1; i-- > 0; ) { -2441: const DB_Row& dbm_i = dbm[i]; -2441: for (dimension_type j = space_dim + 1; j-- > 0; ) { -2441: if (i != j) { -2441: if (is_plus_infinity(dbm_i[j])) { -2441: return false; -2441: } -2441: } -2441: } -2441: } -2441: -2441: return true; -2441: } -2441: -2441: template -2441: bool -2441: BD_Shape::contains_integer_point() const { -2441: -2441: if (is_empty()) { -2441: return false; -2441: } -2441: const dimension_type space_dim = space_dimension(); -2441: if (space_dim == 0) { -2441: return true; -2441: } -2441: -2441: -2441: if (std::numeric_limits::is_integer) { -2441: return true; -2441: } -2441: -2441: -2441: BD_Shape bds_z(space_dim); -2441: typedef BD_Shape::N Z; -2441: bds_z.reset_shortest_path_closed(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp; N& tmp = holder_tmp.item(); -2441: bool all_integers = true; -2441: for (dimension_type i = space_dim + 1; i-- > 0; ) { -2441: DB_Row& z_i = bds_z.dbm[i]; -2441: const DB_Row& dbm_i = dbm[i]; -2441: for (dimension_type j = space_dim + 1; j-- > 0; ) { -2441: const N& dbm_i_j = dbm_i[j]; -2441: if (is_plus_infinity(dbm_i_j)) { -2441: continue; -2441: } -2441: if (is_integer(dbm_i_j)) { -2441: assign_r(z_i[j], dbm_i_j, ROUND_NOT_NEEDED); -2441: } -2441: else { -2441: all_integers = false; -2441: Z& z_i_j = z_i[j]; -2441: -2441: neg_assign_r(tmp, dbm_i_j, ROUND_NOT_NEEDED); -2441: assign_r(z_i_j, tmp, ROUND_UP); -2441: neg_assign_r(z_i_j, z_i_j, ROUND_NOT_NEEDED); -2441: } -2441: } -2441: } -2441: return all_integers || !bds_z.is_empty(); -2441: } -2441: -2441: template -2441: bool -2441: BD_Shape::frequency(const Linear_Expression& expr, -2441: Coefficient& freq_n, Coefficient& freq_d, -2441: Coefficient& val_n, Coefficient& val_d) const { -2441: dimension_type space_dim = space_dimension(); -2441: -2441: if (space_dim < expr.space_dimension()) { -2441: throw_dimension_incompatible("frequency(e, ...)", "e", expr); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: if (space_dim == 0) { -2441: if (is_empty()) { -2441: return false; -2441: } -2441: freq_n = 0; -2441: freq_d = 1; -2441: val_n = expr.inhomogeneous_term(); -2441: val_d = 1; -2441: return true; -2441: } -2441: -2441: shortest_path_closure_assign(); -2441: -2441: if (marked_empty()) { -2441: return false; -2441: } -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_coeff; Parma_Polyhedra_Library::Coefficient& coeff = holder_coeff.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_numer; Parma_Polyhedra_Library::Coefficient& numer = holder_numer.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_denom; Parma_Polyhedra_Library::Coefficient& denom = holder_denom.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp; N& tmp = holder_tmp.item(); -2441: Linear_Expression le = expr; -2441: -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_val_denom; Parma_Polyhedra_Library::Coefficient& val_denom = holder_val_denom.item(); -2441: val_denom = 1; -2441: -2441: -2441: -2441: for (dimension_type i = dbm.num_rows(); i-- > 1; ) { -2441: const Variable v(i-1); -2441: coeff = le.coefficient(v); -2441: if (coeff == 0) { -2441: continue; -2441: } -2441: const DB_Row& dbm_i = dbm[i]; -2441: -2441: assign_r(tmp, dbm_i[0], ROUND_NOT_NEEDED); -2441: if (is_additive_inverse(dbm[0][i], tmp)) { -2441: -2441: numer_denom(tmp, numer, denom); -2441: sub_mul_assign(le, coeff, v); -2441: le *= denom; -2441: le -= numer*coeff; -2441: val_denom *= denom; -2441: continue; -2441: } -2441: -2441: -2441: else { -2441: bool constant_v = false; -2441: for (Linear_Expression::const_iterator j = le.begin(), -2441: j_end = le.lower_bound(Variable(i - 1)); j != j_end; ++j) { -2441: const Variable vj = j.variable(); -2441: const dimension_type j_dim = vj.space_dimension(); -2441: assign_r(tmp, dbm_i[j_dim], ROUND_NOT_NEEDED); -2441: if (is_additive_inverse(dbm[j_dim][i], tmp)) { -2441: -2441: -2441: -2441: numer_denom(tmp, numer, denom); -2441: -2441: -2441: sub_mul_assign(le, coeff, v); -2441: add_mul_assign(le, coeff, vj); -2441: le *= denom; -2441: le -= numer*coeff; -2441: val_denom *= denom; -2441: constant_v = true; -2441: break; -2441: } -2441: } -2441: if (!constant_v) { -2441: -2441: return false; -2441: } -2441: } -2441: } -2441: -2441: -2441: freq_n = 0; -2441: freq_d = 1; -2441: -2441: -2441: normalize2(le.inhomogeneous_term(), val_denom, val_n, val_d); -2441: return true; -2441: } -2441: -2441: template -2441: bool -2441: BD_Shape::constrains(const Variable var) const { -2441: -2441: const dimension_type var_space_dim = var.space_dimension(); -2441: if (space_dimension() < var_space_dim) { -2441: throw_dimension_incompatible("constrains(v)", "v", var); -2441: } -2441: shortest_path_closure_assign(); -2441: -2441: -2441: if (marked_empty()) { -2441: return true; -2441: } -2441: -2441: const DB_Row& dbm_v = dbm[var_space_dim]; -2441: for (dimension_type i = dbm.num_rows(); i-- > 0; ) { -2441: if (!is_plus_infinity(dbm_v[i]) -2441: || !is_plus_infinity(dbm[i][var_space_dim])) { -2441: return true; -2441: } -2441: } -2441: -2441: -2441: -2441: return is_empty(); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape -2441: ::compute_predecessors(std::vector& predecessor) const { -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: -2441: -2441: -2441: -2441: const dimension_type predecessor_size = dbm.num_rows(); -2441: -2441: predecessor.reserve(predecessor_size); -2441: for (dimension_type i = 0; i < predecessor_size; ++i) { -2441: predecessor.push_back(i); -2441: } -2441: -2441: for (dimension_type i = predecessor_size; i-- > 1; ) { -2441: if (i == predecessor[i]) { -2441: const DB_Row& dbm_i = dbm[i]; -2441: for (dimension_type j = i; j-- > 0; ) { -2441: if (j == predecessor[j] -2441: && is_additive_inverse(dbm[j][i], dbm_i[j])) { -2441: -2441: predecessor[i] = j; -2441: break; -2441: } -2441: } -2441: } -2441: } -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::compute_leaders(std::vector& leaders) const { -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: compute_predecessors(leaders); -2441: -2441: ((void) 0); -2441: for (dimension_type i = 1, l_size = leaders.size(); i != l_size; ++i) { -2441: const dimension_type leaders_i = leaders[i]; -2441: ((void) 0); -2441: if (leaders_i != i) { -2441: const dimension_type leaders_leaders_i = leaders[leaders_i]; -2441: ((void) 0); -2441: leaders[i] = leaders_leaders_i; -2441: } -2441: } -2441: } -2441: -2441: template -2441: bool -2441: BD_Shape::is_shortest_path_reduced() const { -2441: -2441: if (marked_empty()) { -2441: return true; -2441: } -2441: const dimension_type space_dim = space_dimension(); -2441: -2441: if (space_dim == 0) { -2441: return true; -2441: } -2441: -2441: -2441: -2441: if (!marked_shortest_path_reduced()) { -2441: return false; -2441: } -2441: -2441: const BD_Shape x_copy = *this; -2441: x_copy.shortest_path_closure_assign(); -2441: -2441: if (x_copy.marked_empty()) { -2441: return false; -2441: } -2441: -2441: std::vector leader(space_dim + 1); -2441: -2441: -2441: for (dimension_type i = space_dim + 1; i-- > 0; ) { -2441: leader[i] = i; -2441: } -2441: -2441: -2441: -2441: -2441: for (dimension_type i = 0; i < space_dim; ++i) { -2441: const DB_Row& x_copy_dbm_i = x_copy.dbm[i]; -2441: for (dimension_type j = i + 1; j <= space_dim; ++j) { -2441: if (is_additive_inverse(x_copy.dbm[j][i], x_copy_dbm_i[j])) { -2441: -2441: -2441: leader[j] = leader[i]; -2441: } -2441: } -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_c; N& c = holder_c.item(); -2441: for (dimension_type k = 0; k <= space_dim; ++k) { -2441: if (leader[k] == k) { -2441: const DB_Row& x_k = x_copy.dbm[k]; -2441: for (dimension_type i = 0; i <= space_dim; ++i) { -2441: if (leader[i] == i) { -2441: const DB_Row& x_i = x_copy.dbm[i]; -2441: const Bit_Row& redundancy_i = redundancy_dbm[i]; -2441: const N& x_i_k = x_i[k]; -2441: for (dimension_type j = 0; j <= space_dim; ++j) { -2441: if (leader[j] == j) { -2441: const N& x_i_j = x_i[j]; -2441: if (!is_plus_infinity(x_i_j)) { -2441: add_assign_r(c, x_i_k, x_k[j], ROUND_UP); -2441: if (x_i_j >= c && !redundancy_i[j]) { -2441: return false; -2441: } -2441: } -2441: } -2441: } -2441: } -2441: } -2441: } -2441: } -2441: -2441: -2441: -2441: -2441: -2441: std::vector var_conn(space_dim + 1); -2441: for (dimension_type i = space_dim + 1; i-- > 0; ) { -2441: var_conn[i] = space_dim + 1; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: for (dimension_type i = 0; i <= space_dim; ++i) { -2441: -2441: -2441: dimension_type t = 0; -2441: dimension_type leader_i = leader[i]; -2441: -2441: if (leader_i == i) { -2441: for (dimension_type j = 0; j <= space_dim; ++j) { -2441: dimension_type leader_j = leader[j]; -2441: -2441: -2441: if (j != leader_j) { -2441: if (!redundancy_dbm[i][j]) { -2441: if (t == 1) { -2441: -2441: return false; -2441: } -2441: else { -2441: if (leader_j != i) { -2441: -2441: return false; -2441: } -2441: else { -2441: ++t; -2441: var_conn[i] = j; -2441: } -2441: } -2441: } -2441: } -2441: } -2441: } -2441: -2441: else { -2441: for (dimension_type j = 0; j <= space_dim; ++j) { -2441: if (!redundancy_dbm[i][j]) { -2441: dimension_type leader_j = leader[j]; -2441: if (leader_i != leader_j) { -2441: -2441: return false; -2441: } -2441: else { -2441: if (t == 1) { -2441: -2441: return false; -2441: } -2441: else { -2441: ++t; -2441: var_conn[i] = j; -2441: } -2441: } -2441: -2441: -2441: if (t == 0) { -2441: return false; -2441: } -2441: } -2441: } -2441: } -2441: } -2441: -2441: -2441: -2441: std::vector just_checked(space_dim + 1); -2441: for (dimension_type i = space_dim + 1; i-- > 0; ) { -2441: just_checked[i] = false; -2441: } -2441: -2441: -2441: for (dimension_type i = 0; i <= space_dim; ++i) { -2441: -2441: if (!just_checked[i]) { -2441: dimension_type v_con = var_conn[i]; -2441: -2441: -2441: if (v_con != space_dim + 1) { -2441: -2441: -2441: while (v_con != i) { -2441: just_checked[v_con] = true; -2441: v_con = var_conn[v_con]; -2441: -2441: -2441: if (just_checked[v_con]) { -2441: return false; -2441: } -2441: } -2441: } -2441: } -2441: just_checked[i] = true; -2441: } -2441: -2441: -2441: return true; -2441: } -2441: -2441: template -2441: bool -2441: BD_Shape::bounds(const Linear_Expression& expr, -2441: const bool from_above) const { -2441: -2441: -2441: const dimension_type expr_space_dim = expr.space_dimension(); -2441: const dimension_type space_dim = space_dimension(); -2441: if (space_dim < expr_space_dim) { -2441: throw_dimension_incompatible((from_above -2441: ? "bounds_from_above(e)" -2441: : "bounds_from_below(e)"), "e", expr); -2441: } -2441: shortest_path_closure_assign(); -2441: -2441: if (space_dim == 0 || marked_empty()) { -2441: return true; -2441: } -2441: -2441: -2441: const Constraint& c = from_above ? expr <= 0 : expr >= 0; -2441: dimension_type num_vars = 0; -2441: dimension_type i = 0; -2441: dimension_type j = 0; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_coeff; Parma_Polyhedra_Library::Coefficient& coeff = holder_coeff.item(); -2441: -2441: if (BD_Shape_Helpers::extract_bounded_difference(c, num_vars, i, j, coeff)) { -2441: if (num_vars == 0) { -2441: -2441: return true; -2441: } -2441: -2441: const N& x = (coeff < 0) ? dbm[i][j] : dbm[j][i]; -2441: return !is_plus_infinity(x); -2441: } -2441: else { -2441: -2441: Optimization_Mode mode_bounds -2441: = from_above ? MAXIMIZATION : MINIMIZATION; -2441: MIP_Problem mip(space_dim, constraints(), expr, mode_bounds); -2441: -2441: return mip.solve() == OPTIMIZED_MIP_PROBLEM; -2441: } -2441: } -2441: -2441: template -2441: bool -2441: BD_Shape::max_min(const Linear_Expression& expr, -2441: const bool maximize, -2441: Coefficient& ext_n, Coefficient& ext_d, -2441: bool& included) const { -2441: -2441: -2441: const dimension_type space_dim = space_dimension(); -2441: const dimension_type expr_space_dim = expr.space_dimension(); -2441: if (space_dim < expr_space_dim) { -2441: throw_dimension_incompatible((maximize -2441: ? "maximize(e, ...)" -2441: : "minimize(e, ...)"), "e", expr); -2441: } -2441: -2441: if (space_dim == 0) { -2441: if (marked_empty()) { -2441: return false; -2441: } -2441: else { -2441: ext_n = expr.inhomogeneous_term(); -2441: ext_d = 1; -2441: included = true; -2441: return true; -2441: } -2441: } -2441: -2441: shortest_path_closure_assign(); -2441: -2441: if (marked_empty()) { -2441: return false; -2441: } -2441: -2441: -2441: const Constraint& c = maximize ? expr <= 0 : expr >= 0; -2441: dimension_type num_vars = 0; -2441: dimension_type i = 0; -2441: dimension_type j = 0; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_coeff; Parma_Polyhedra_Library::Coefficient& coeff = holder_coeff.item(); -2441: -2441: if (!BD_Shape_Helpers::extract_bounded_difference(c, num_vars, i, j, coeff)) { -2441: Optimization_Mode mode_max_min -2441: = maximize ? MAXIMIZATION : MINIMIZATION; -2441: MIP_Problem mip(space_dim, constraints(), expr, mode_max_min); -2441: if (mip.solve() == OPTIMIZED_MIP_PROBLEM) { -2441: mip.optimal_value(ext_n, ext_d); -2441: included = true; -2441: return true; -2441: } -2441: else { -2441: -2441: return false; -2441: } -2441: } -2441: else { -2441: -2441: if (num_vars == 0) { -2441: -2441: ext_n = expr.inhomogeneous_term(); -2441: ext_d = 1; -2441: included = true; -2441: return true; -2441: } -2441: -2441: -2441: const N& x = (coeff < 0) ? dbm[i][j] : dbm[j][i]; -2441: if (!is_plus_infinity(x)) { -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_d; N& d = holder_d.item(); -2441: const Coefficient& b = expr.inhomogeneous_term(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_b; Parma_Polyhedra_Library::Coefficient& minus_b = holder_minus_b.item(); -2441: neg_assign(minus_b, b); -2441: const Coefficient& sc_b = maximize ? b : minus_b; -2441: assign_r(d, sc_b, ROUND_UP); -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_coeff_expr; N& coeff_expr = holder_coeff_expr.item(); -2441: ((void) 0); -2441: const Coefficient& coeff_i = expr.get(Variable(i - 1)); -2441: const int sign_i = sgn(coeff_i); -2441: if (sign_i > 0) { -2441: assign_r(coeff_expr, coeff_i, ROUND_UP); -2441: } -2441: else { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_coeff_i; Parma_Polyhedra_Library::Coefficient& minus_coeff_i = holder_minus_coeff_i.item(); -2441: neg_assign(minus_coeff_i, coeff_i); -2441: assign_r(coeff_expr, minus_coeff_i, ROUND_UP); -2441: } -2441: -2441: add_mul_assign_r(d, coeff_expr, x, ROUND_UP); -2441: numer_denom(d, ext_n, ext_d); -2441: if (!maximize) { -2441: neg_assign(ext_n); -2441: } -2441: included = true; -2441: return true; -2441: } -2441: -2441: -2441: return false; -2441: } -2441: } -2441: -2441: template -2441: bool -2441: BD_Shape::max_min(const Linear_Expression& expr, -2441: const bool maximize, -2441: Coefficient& ext_n, Coefficient& ext_d, -2441: bool& included, -2441: Generator& g) const { -2441: -2441: -2441: const dimension_type space_dim = space_dimension(); -2441: const dimension_type expr_space_dim = expr.space_dimension(); -2441: if (space_dim < expr_space_dim) { -2441: throw_dimension_incompatible((maximize -2441: ? "maximize(e, ...)" -2441: : "minimize(e, ...)"), "e", expr); -2441: } -2441: -2441: if (space_dim == 0) { -2441: if (marked_empty()) { -2441: return false; -2441: } -2441: else { -2441: ext_n = expr.inhomogeneous_term(); -2441: ext_d = 1; -2441: included = true; -2441: g = point(); -2441: return true; -2441: } -2441: } -2441: -2441: shortest_path_closure_assign(); -2441: -2441: if (marked_empty()) { -2441: return false; -2441: } -2441: Optimization_Mode mode_max_min -2441: = maximize ? MAXIMIZATION : MINIMIZATION; -2441: MIP_Problem mip(space_dim, constraints(), expr, mode_max_min); -2441: if (mip.solve() == OPTIMIZED_MIP_PROBLEM) { -2441: g = mip.optimizing_point(); -2441: mip.evaluate_objective_function(g, ext_n, ext_d); -2441: included = true; -2441: return true; -2441: } -2441: -2441: return false; -2441: } -2441: -2441: template -2441: Poly_Con_Relation -2441: BD_Shape::relation_with(const Congruence& cg) const { -2441: const dimension_type space_dim = space_dimension(); -2441: -2441: -2441: if (cg.space_dimension() > space_dim) { -2441: throw_dimension_incompatible("relation_with(cg)", cg); -2441: } -2441: -2441: -2441: if (cg.is_equality()) { -2441: Constraint c(cg); -2441: return relation_with(c); -2441: } -2441: -2441: shortest_path_closure_assign(); -2441: -2441: if (marked_empty()) { -2441: return Poly_Con_Relation::saturates() -2441: && Poly_Con_Relation::is_included() -2441: && Poly_Con_Relation::is_disjoint(); -2441: } -2441: if (space_dim == 0) { -2441: if (cg.is_inconsistent()) { -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: else { -2441: return Poly_Con_Relation::saturates() -2441: && Poly_Con_Relation::is_included(); -2441: } -2441: } -2441: -2441: -2441: -2441: Linear_Expression le = Linear_Expression(cg.expression()); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_min_numer; Parma_Polyhedra_Library::Coefficient& min_numer = holder_min_numer.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_min_denom; Parma_Polyhedra_Library::Coefficient& min_denom = holder_min_denom.item(); -2441: bool min_included; -2441: bool bounded_below = minimize(le, min_numer, min_denom, min_included); -2441: -2441: -2441: -2441: if (!bounded_below) { -2441: return Poly_Con_Relation::strictly_intersects(); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_max_numer; Parma_Polyhedra_Library::Coefficient& max_numer = holder_max_numer.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_max_denom; Parma_Polyhedra_Library::Coefficient& max_denom = holder_max_denom.item(); -2441: bool max_included; -2441: bool bounded_above = maximize(le, max_numer, max_denom, max_included); -2441: -2441: -2441: -2441: if (!bounded_above) { -2441: return Poly_Con_Relation::strictly_intersects(); -2441: } -2441: Parma_Polyhedra_Library::Dirty_Temp holder_signed_distance; Parma_Polyhedra_Library::Coefficient& signed_distance = holder_signed_distance.item(); -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_min_value; Parma_Polyhedra_Library::Coefficient& min_value = holder_min_value.item(); -2441: min_value = min_numer / min_denom; -2441: const Coefficient& modulus = cg.modulus(); -2441: signed_distance = min_value % modulus; -2441: min_value -= signed_distance; -2441: if (min_value * min_denom < min_numer) { -2441: min_value += modulus; -2441: } -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_max_value; Parma_Polyhedra_Library::Coefficient& max_value = holder_max_value.item(); -2441: max_value = max_numer / max_denom; -2441: signed_distance = max_value % modulus; -2441: max_value += signed_distance; -2441: if (max_value * max_denom > max_numer) { -2441: max_value -= modulus; -2441: } -2441: -2441: -2441: -2441: if (max_value < min_value) { -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: else { -2441: return Poly_Con_Relation::strictly_intersects(); -2441: } -2441: } -2441: -2441: -2441: template -2441: Poly_Con_Relation -2441: BD_Shape::relation_with(const Constraint& c) const { -2441: const dimension_type c_space_dim = c.space_dimension(); -2441: const dimension_type space_dim = space_dimension(); -2441: -2441: -2441: if (c_space_dim > space_dim) { -2441: throw_dimension_incompatible("relation_with(c)", c); -2441: } -2441: shortest_path_closure_assign(); -2441: -2441: if (marked_empty()) { -2441: return Poly_Con_Relation::saturates() -2441: && Poly_Con_Relation::is_included() -2441: && Poly_Con_Relation::is_disjoint(); -2441: } -2441: if (space_dim == 0) { -2441: if ((c.is_equality() && c.inhomogeneous_term() != 0) -2441: || (c.is_inequality() && c.inhomogeneous_term() < 0)) { -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: else if (c.is_strict_inequality() && c.inhomogeneous_term() == 0) { -2441: -2441: -2441: return Poly_Con_Relation::saturates() -2441: && Poly_Con_Relation::is_disjoint(); -2441: } -2441: else if (c.is_equality() || c.inhomogeneous_term() == 0) { -2441: return Poly_Con_Relation::saturates() -2441: && Poly_Con_Relation::is_included(); -2441: } -2441: else { -2441: -2441: -2441: -2441: return Poly_Con_Relation::is_included(); -2441: } -2441: } -2441: -2441: dimension_type num_vars = 0; -2441: dimension_type i = 0; -2441: dimension_type j = 0; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_coeff; Parma_Polyhedra_Library::Coefficient& coeff = holder_coeff.item(); -2441: if (!BD_Shape_Helpers::extract_bounded_difference(c, num_vars, i, j, coeff)) { -2441: -2441: -2441: -2441: -2441: -2441: -2441: Linear_Expression le(c.expression()); -2441: le.set_inhomogeneous_term(Coefficient_zero()); -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_max_numer; Parma_Polyhedra_Library::Coefficient& max_numer = holder_max_numer.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_max_denom; Parma_Polyhedra_Library::Coefficient& max_denom = holder_max_denom.item(); -2441: bool max_included; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_min_numer; Parma_Polyhedra_Library::Coefficient& min_numer = holder_min_numer.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_min_denom; Parma_Polyhedra_Library::Coefficient& min_denom = holder_min_denom.item(); -2441: bool min_included; -2441: bool bounded_above = maximize(le, max_numer, max_denom, max_included); -2441: bool bounded_below = minimize(le, min_numer, min_denom, min_included); -2441: if (!bounded_above) { -2441: if (!bounded_below) { -2441: return Poly_Con_Relation::strictly_intersects(); -2441: } -2441: min_numer += c.inhomogeneous_term() * min_denom; -2441: switch (sgn(min_numer)) { -2441: case 1: -2441: if (c.is_equality()) { -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: return Poly_Con_Relation::is_included(); -2441: case 0: -2441: if (c.is_strict_inequality() || c.is_equality()) { -2441: return Poly_Con_Relation::strictly_intersects(); -2441: } -2441: return Poly_Con_Relation::is_included(); -2441: case -1: -2441: return Poly_Con_Relation::strictly_intersects(); -2441: } -2441: } -2441: if (!bounded_below) { -2441: max_numer += c.inhomogeneous_term() * max_denom; -2441: switch (sgn(max_numer)) { -2441: case 1: -2441: return Poly_Con_Relation::strictly_intersects(); -2441: case 0: -2441: if (c.is_strict_inequality()) { -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: return Poly_Con_Relation::strictly_intersects(); -2441: case -1: -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: } -2441: else { -2441: max_numer += c.inhomogeneous_term() * max_denom; -2441: min_numer += c.inhomogeneous_term() * min_denom; -2441: switch (sgn(max_numer)) { -2441: case 1: -2441: switch (sgn(min_numer)) { -2441: case 1: -2441: if (c.is_equality()) { -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: return Poly_Con_Relation::is_included(); -2441: case 0: -2441: if (c.is_equality()) { -2441: return Poly_Con_Relation::strictly_intersects(); -2441: } -2441: if (c.is_strict_inequality()) { -2441: return Poly_Con_Relation::strictly_intersects(); -2441: } -2441: return Poly_Con_Relation::is_included(); -2441: case -1: -2441: return Poly_Con_Relation::strictly_intersects(); -2441: } -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: case 0: -2441: if (min_numer == 0) { -2441: if (c.is_strict_inequality()) { -2441: return Poly_Con_Relation::is_disjoint() -2441: && Poly_Con_Relation::saturates(); -2441: } -2441: return Poly_Con_Relation::is_included() -2441: && Poly_Con_Relation::saturates(); -2441: } -2441: if (c.is_strict_inequality()) { -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: return Poly_Con_Relation::strictly_intersects(); -2441: case -1: -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: } -2441: } -2441: -2441: -2441: if (num_vars == 0) { -2441: -2441: switch (sgn(c.inhomogeneous_term())) { -2441: case -1: -2441: return Poly_Con_Relation::is_disjoint(); -2441: case 0: -2441: if (c.is_strict_inequality()) { -2441: return Poly_Con_Relation::saturates() -2441: && Poly_Con_Relation::is_disjoint(); -2441: } -2441: else { -2441: return Poly_Con_Relation::saturates() -2441: && Poly_Con_Relation::is_included(); -2441: } -2441: case 1: -2441: if (c.is_equality()) { -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: else { -2441: return Poly_Con_Relation::is_included(); -2441: } -2441: } -2441: } -2441: -2441: -2441: -2441: const bool negative = (coeff < 0); -2441: const N& x = negative ? dbm[i][j] : dbm[j][i]; -2441: const N& y = negative ? dbm[j][i] : dbm[i][j]; -2441: if (negative) { -2441: neg_assign(coeff); -2441: } -2441: # 1672 "../../src/BD_Shape_templates.hh" -2441: Parma_Polyhedra_Library::Dirty_Temp holder_q_x; mpq_class& q_x = holder_q_x.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_q_y; mpq_class& q_y = holder_q_y.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_d; mpq_class& d = holder_d.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_d1; mpq_class& d1 = holder_d1.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_c_denom; mpq_class& c_denom = holder_c_denom.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_q_denom; mpq_class& q_denom = holder_q_denom.item(); -2441: assign_r(c_denom, coeff, ROUND_NOT_NEEDED); -2441: assign_r(d, c.inhomogeneous_term(), ROUND_NOT_NEEDED); -2441: neg_assign_r(d1, d, ROUND_NOT_NEEDED); -2441: div_assign_r(d, d, c_denom, ROUND_NOT_NEEDED); -2441: div_assign_r(d1, d1, c_denom, ROUND_NOT_NEEDED); -2441: -2441: if (is_plus_infinity(x)) { -2441: if (!is_plus_infinity(y)) { -2441: -2441: -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_numer; Parma_Polyhedra_Library::Coefficient& numer = holder_numer.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_denom; Parma_Polyhedra_Library::Coefficient& denom = holder_denom.item(); -2441: numer_denom(y, numer, denom); -2441: assign_r(q_denom, denom, ROUND_NOT_NEEDED); -2441: assign_r(q_y, numer, ROUND_NOT_NEEDED); -2441: div_assign_r(q_y, q_y, q_denom, ROUND_NOT_NEEDED); -2441: if (q_y < d1) { -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: if (q_y == d1 && c.is_strict_inequality()) { -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: } -2441: -2441: -2441: return Poly_Con_Relation::strictly_intersects(); -2441: } -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_numer; Parma_Polyhedra_Library::Coefficient& numer = holder_numer.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_denom; Parma_Polyhedra_Library::Coefficient& denom = holder_denom.item(); -2441: numer_denom(x, numer, denom); -2441: assign_r(q_denom, denom, ROUND_NOT_NEEDED); -2441: assign_r(q_x, numer, ROUND_NOT_NEEDED); -2441: div_assign_r(q_x, q_x, q_denom, ROUND_NOT_NEEDED); -2441: -2441: if (!is_plus_infinity(y)) { -2441: numer_denom(y, numer, denom); -2441: assign_r(q_denom, denom, ROUND_NOT_NEEDED); -2441: assign_r(q_y, numer, ROUND_NOT_NEEDED); -2441: div_assign_r(q_y, q_y, q_denom, ROUND_NOT_NEEDED); -2441: if (q_x == d && q_y == d1) { -2441: if (c.is_strict_inequality()) { -2441: return Poly_Con_Relation::saturates() -2441: && Poly_Con_Relation::is_disjoint(); -2441: } -2441: else { -2441: return Poly_Con_Relation::saturates() -2441: && Poly_Con_Relation::is_included(); -2441: } -2441: } -2441: -2441: -2441: -2441: if (q_y < d1) { -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: if (q_y == d1 && c.is_strict_inequality()) { -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: } -2441: -2441: -2441: -2441: -2441: if (d > q_x) { -2441: if (c.is_equality()) { -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: else { -2441: return Poly_Con_Relation::is_included(); -2441: } -2441: } -2441: -2441: if (d == q_x && c.is_nonstrict_inequality()) { -2441: return Poly_Con_Relation::is_included(); -2441: } -2441: -2441: return Poly_Con_Relation::strictly_intersects(); -2441: } -2441: -2441: template -2441: Poly_Gen_Relation -2441: BD_Shape::relation_with(const Generator& g) const { -2441: const dimension_type space_dim = space_dimension(); -2441: const dimension_type g_space_dim = g.space_dimension(); -2441: -2441: -2441: if (space_dim < g_space_dim) { -2441: throw_dimension_incompatible("relation_with(g)", g); -2441: } -2441: shortest_path_closure_assign(); -2441: -2441: if (marked_empty()) { -2441: return Poly_Gen_Relation::nothing(); -2441: } -2441: -2441: -2441: if (space_dim == 0) { -2441: return Poly_Gen_Relation::subsumes(); -2441: } -2441: const bool is_line = g.is_line(); -2441: const bool is_line_or_ray = g.is_line_or_ray(); -2441: # 1792 "../../src/BD_Shape_templates.hh" -2441: Parma_Polyhedra_Library::Dirty_Temp holder_numer; Parma_Polyhedra_Library::Coefficient& numer = holder_numer.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_denom; Parma_Polyhedra_Library::Coefficient& denom = holder_denom.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_product; Parma_Polyhedra_Library::Coefficient& product = holder_product.item(); -2441: -2441: -2441: for (dimension_type i = 0; i <= space_dim; ++i) { -2441: const Coefficient& g_coeff_y = (i > g_space_dim || i == 0) -2441: ? Coefficient_zero() : g.coefficient(Variable(i-1)); -2441: const DB_Row& dbm_i = dbm[i]; -2441: for (dimension_type j = i + 1; j <= space_dim; ++j) { -2441: const Coefficient& g_coeff_x = (j > g_space_dim) -2441: ? Coefficient_zero() : g.coefficient(Variable(j-1)); -2441: const N& dbm_ij = dbm_i[j]; -2441: const N& dbm_ji = dbm[j][i]; -2441: if (is_additive_inverse(dbm_ji, dbm_ij)) { -2441: -2441: -2441: numer_denom(dbm_ij, numer, denom); -2441: product = g_coeff_y; -2441: product -= g_coeff_x; -2441: product *= denom; -2441: if (!is_line_or_ray) { -2441: add_mul_assign(product, numer, g.divisor()); -2441: } -2441: if (product != 0) { -2441: return Poly_Gen_Relation::nothing(); -2441: } -2441: } -2441: else { -2441: -2441: if (!is_plus_infinity(dbm_ij)) { -2441: -2441: -2441: -2441: numer_denom(dbm_ij, numer, denom); -2441: product = g_coeff_y; -2441: product -= g_coeff_x; -2441: product *= denom; -2441: if (!is_line_or_ray) { -2441: add_mul_assign(product, numer, g.divisor()); -2441: } -2441: if (is_line) { -2441: if (product != 0) { -2441: -2441: return Poly_Gen_Relation::nothing(); -2441: } -2441: } -2441: else { -2441: -2441: if (product < 0) { -2441: return Poly_Gen_Relation::nothing(); -2441: } -2441: } -2441: } -2441: -2441: if (!is_plus_infinity(dbm_ji)) { -2441: -2441: -2441: numer_denom(dbm_ji, numer, denom); -2441: product = 0; -2441: add_mul_assign(product, denom, g_coeff_x); -2441: add_mul_assign(product, -denom, g_coeff_y); -2441: if (!is_line_or_ray) { -2441: add_mul_assign(product, numer, g.divisor()); -2441: } -2441: if (is_line) { -2441: if (product != 0) { -2441: -2441: return Poly_Gen_Relation::nothing(); -2441: } -2441: } -2441: else { -2441: -2441: if (product < 0) { -2441: return Poly_Gen_Relation::nothing(); -2441: } -2441: } -2441: } -2441: } -2441: } -2441: } -2441: -2441: -2441: return Poly_Gen_Relation::subsumes(); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::shortest_path_closure_assign() const { -2441: -2441: if (marked_empty() || marked_shortest_path_closed()) { -2441: return; -2441: } -2441: const dimension_type num_dimensions = space_dimension(); -2441: -2441: if (num_dimensions == 0) { -2441: return; -2441: } -2441: -2441: -2441: BD_Shape& x = const_cast&>(*this); -2441: -2441: -2441: for (dimension_type h = num_dimensions + 1; h-- > 0; ) { -2441: ((void) 0); -2441: assign_r(x.dbm[h][h], 0, ROUND_NOT_NEEDED); -2441: } -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_sum; N& sum = holder_sum.item(); -2441: for (dimension_type k = num_dimensions + 1; k-- > 0; ) { -2441: const DB_Row& x_dbm_k = x.dbm[k]; -2441: for (dimension_type i = num_dimensions + 1; i-- > 0; ) { -2441: DB_Row& x_dbm_i = x.dbm[i]; -2441: const N& x_dbm_i_k = x_dbm_i[k]; -2441: if (!is_plus_infinity(x_dbm_i_k)) { -2441: for (dimension_type j = num_dimensions + 1; j-- > 0; ) { -2441: const N& x_dbm_k_j = x_dbm_k[j]; -2441: if (!is_plus_infinity(x_dbm_k_j)) { -2441: -2441: add_assign_r(sum, x_dbm_i_k, x_dbm_k_j, ROUND_UP); -2441: min_assign(x_dbm_i[j], sum); -2441: } -2441: } -2441: } -2441: } -2441: } -2441: -2441: -2441: -2441: for (dimension_type h = num_dimensions + 1; h-- > 0; ) { -2441: N& x_dbm_hh = x.dbm[h][h]; -2441: if (sgn(x_dbm_hh) < 0) { -2441: x.set_empty(); -2441: return; -2441: } -2441: else { -2441: ((void) 0); -2441: -2441: assign_r(x_dbm_hh, PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: } -2441: -2441: -2441: x.set_shortest_path_closed(); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::incremental_shortest_path_closure_assign(Variable var) const { -2441: -2441: if (marked_empty() || marked_shortest_path_closed()) { -2441: return; -2441: } -2441: const dimension_type num_dimensions = space_dimension(); -2441: ((void) 0); -2441: -2441: -2441: -2441: BD_Shape& x = const_cast(*this); -2441: -2441: -2441: for (dimension_type h = num_dimensions + 1; h-- > 0; ) { -2441: ((void) 0); -2441: assign_r(x.dbm[h][h], 0, ROUND_NOT_NEEDED); -2441: } -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_sum; N& sum = holder_sum.item(); -2441: const dimension_type v = var.id() + 1; -2441: DB_Row& x_v = x.dbm[v]; -2441: -2441: for (dimension_type k = num_dimensions + 1; k-- > 0; ) { -2441: DB_Row& x_k = x.dbm[k]; -2441: const N& x_v_k = x_v[k]; -2441: const N& x_k_v = x_k[v]; -2441: const bool x_v_k_finite = !is_plus_infinity(x_v_k); -2441: const bool x_k_v_finite = !is_plus_infinity(x_k_v); -2441: -2441: if (x_v_k_finite) { -2441: if (x_k_v_finite) { -2441: -2441: for (dimension_type i = num_dimensions + 1; i-- > 0; ) { -2441: DB_Row& x_i = x.dbm[i]; -2441: const N& x_i_k = x_i[k]; -2441: if (!is_plus_infinity(x_i_k)) { -2441: add_assign_r(sum, x_i_k, x_k_v, ROUND_UP); -2441: min_assign(x_i[v], sum); -2441: } -2441: const N& x_k_i = x_k[i]; -2441: if (!is_plus_infinity(x_k_i)) { -2441: add_assign_r(sum, x_v_k, x_k_i, ROUND_UP); -2441: min_assign(x_v[i], sum); -2441: } -2441: } -2441: } -2441: else { -2441: -2441: for (dimension_type i = num_dimensions + 1; i-- > 0; ) { -2441: const N& x_k_i = x_k[i]; -2441: if (!is_plus_infinity(x_k_i)) { -2441: add_assign_r(sum, x_v_k, x_k_i, ROUND_UP); -2441: min_assign(x_v[i], sum); -2441: } -2441: } -2441: } -2441: } -2441: else if (x_k_v_finite) { -2441: -2441: for (dimension_type i = num_dimensions + 1; i-- > 0; ) { -2441: DB_Row& x_i = x.dbm[i]; -2441: const N& x_i_k = x_i[k]; -2441: if (!is_plus_infinity(x_i_k)) { -2441: add_assign_r(sum, x_i_k, x_k_v, ROUND_UP); -2441: min_assign(x_i[v], sum); -2441: } -2441: } -2441: } -2441: else { -2441: -2441: continue; -2441: } -2441: } -2441: -2441: -2441: -2441: for (dimension_type i = num_dimensions + 1; i-- > 0; ) { -2441: DB_Row& x_i = x.dbm[i]; -2441: const N& x_i_v = x_i[v]; -2441: if (!is_plus_infinity(x_i_v)) { -2441: for (dimension_type j = num_dimensions + 1; j-- > 0; ) { -2441: const N& x_v_j = x_v[j]; -2441: if (!is_plus_infinity(x_v_j)) { -2441: add_assign_r(sum, x_i_v, x_v_j, ROUND_UP); -2441: min_assign(x_i[j], sum); -2441: } -2441: } -2441: } -2441: } -2441: -2441: -2441: -2441: for (dimension_type h = num_dimensions + 1; h-- > 0; ) { -2441: N& x_dbm_hh = x.dbm[h][h]; -2441: if (sgn(x_dbm_hh) < 0) { -2441: x.set_empty(); -2441: return; -2441: } -2441: else { -2441: ((void) 0); -2441: -2441: assign_r(x_dbm_hh, PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: } -2441: -2441: -2441: x.set_shortest_path_closed(); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::shortest_path_reduction_assign() const { -2441: -2441: if (marked_shortest_path_reduced()) { -2441: return; -2441: } -2441: const dimension_type space_dim = space_dimension(); -2441: -2441: if (space_dim == 0) { -2441: return; -2441: } -2441: -2441: shortest_path_closure_assign(); -2441: -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: -2441: -2441: -2441: std::vector predecessor; -2441: compute_predecessors(predecessor); -2441: std::vector leaders; -2441: compute_leader_indices(predecessor, leaders); -2441: const dimension_type num_leaders = leaders.size(); -2441: -2441: Bit_Matrix redundancy(space_dim + 1, space_dim + 1); -2441: -2441: -2441: Bit_Row& red_0 = redundancy[0]; -2441: for (dimension_type j = space_dim + 1; j-- > 0; ) { -2441: red_0.set(j); -2441: } -2441: for (dimension_type i = space_dim + 1; i-- > 0; ) { -2441: redundancy[i] = red_0; -2441: } -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_c; N& c = holder_c.item(); -2441: for (dimension_type l_i = 0; l_i < num_leaders; ++l_i) { -2441: const dimension_type i = leaders[l_i]; -2441: const DB_Row& dbm_i = dbm[i]; -2441: Bit_Row& redundancy_i = redundancy[i]; -2441: for (dimension_type l_j = 0; l_j < num_leaders; ++l_j) { -2441: const dimension_type j = leaders[l_j]; -2441: if (redundancy_i[j]) { -2441: const N& dbm_i_j = dbm_i[j]; -2441: redundancy_i.clear(j); -2441: for (dimension_type l_k = 0; l_k < num_leaders; ++l_k) { -2441: const dimension_type k = leaders[l_k]; -2441: add_assign_r(c, dbm_i[k], dbm[k][j], ROUND_UP); -2441: if (dbm_i_j >= c) { -2441: redundancy_i.set(j); -2441: break; -2441: } -2441: } -2441: } -2441: } -2441: } -2441: -2441: -2441: -2441: -2441: std::deque dealt_with(space_dim + 1, false); -2441: for (dimension_type i = space_dim + 1; i-- > 0; ) { -2441: -2441: -2441: if (i != predecessor[i] && !dealt_with[i]) { -2441: dimension_type j = i; -2441: while (true) { -2441: const dimension_type predecessor_j = predecessor[j]; -2441: if (j == predecessor_j) { -2441: -2441: ((void) 0); -2441: redundancy[i].clear(j); -2441: -2441: -2441: break; -2441: } -2441: -2441: ((void) 0); -2441: redundancy[predecessor_j].clear(j); -2441: dealt_with[predecessor_j] = true; -2441: j = predecessor_j; -2441: } -2441: } -2441: } -2441: -2441: -2441: BD_Shape& x = const_cast&>(*this); -2441: using std::swap; -2441: swap(x.redundancy_dbm, redundancy); -2441: x.set_shortest_path_reduced(); -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::upper_bound_assign(const BD_Shape& y) { -2441: const dimension_type space_dim = space_dimension(); -2441: -2441: -2441: if (space_dim != y.space_dimension()) { -2441: throw_dimension_incompatible("upper_bound_assign(y)", y); -2441: } -2441: -2441: y.shortest_path_closure_assign(); -2441: if (y.marked_empty()) { -2441: return; -2441: } -2441: shortest_path_closure_assign(); -2441: if (marked_empty()) { -2441: *this = y; -2441: return; -2441: } -2441: -2441: -2441: -2441: ((void) 0); -2441: for (dimension_type i = space_dim + 1; i-- > 0; ) { -2441: DB_Row& dbm_i = dbm[i]; -2441: const DB_Row& y_dbm_i = y.dbm[i]; -2441: for (dimension_type j = space_dim + 1; j-- > 0; ) { -2441: N& dbm_ij = dbm_i[j]; -2441: const N& y_dbm_ij = y_dbm_i[j]; -2441: if (dbm_ij < y_dbm_ij) { -2441: dbm_ij = y_dbm_ij; -2441: } -2441: } -2441: } -2441: -2441: -2441: if (marked_shortest_path_reduced()) { -2441: reset_shortest_path_reduced(); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: bool -2441: BD_Shape::BFT00_upper_bound_assign_if_exact(const BD_Shape& y) { -2441: -2441: const BD_Shape& x = *this; -2441: const dimension_type x_space_dim = x.space_dimension(); -2441: -2441: -2441: ((void) 0); -2441: -2441: -2441: if (x_space_dim == 0) { -2441: upper_bound_assign(y); -2441: return true; -2441: } -2441: -2441: if (x.marked_empty()) { -2441: *this = y; -2441: return true; -2441: } -2441: else if (y.is_empty()) { -2441: return true; -2441: } -2441: else if (x.is_empty()) { -2441: *this = y; -2441: return true; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: Variable epsilon(x_space_dim); -2441: Linear_Expression zero_expr; -2441: zero_expr.set_space_dimension(x_space_dim + 1); -2441: Linear_Expression db_expr; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_numer; Parma_Polyhedra_Library::Coefficient& numer = holder_numer.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_denom; Parma_Polyhedra_Library::Coefficient& denom = holder_denom.item(); -2441: -2441: -2441: -2441: -2441: -2441: Constraint_System env_cs; -2441: Constraint_System x_cs_removed; -2441: Constraint_System y_cs_removed; -2441: x.shortest_path_reduction_assign(); -2441: y.shortest_path_reduction_assign(); -2441: for (dimension_type i = x_space_dim + 1; i-- > 0; ) { -2441: const Bit_Row& x_red_i = x.redundancy_dbm[i]; -2441: const Bit_Row& y_red_i = y.redundancy_dbm[i]; -2441: const DB_Row& x_dbm_i = x.dbm[i]; -2441: const DB_Row& y_dbm_i = y.dbm[i]; -2441: for (dimension_type j = x_space_dim + 1; j-- > 0; ) { -2441: if (x_red_i[j] && y_red_i[j]) { -2441: continue; -2441: } -2441: if (!x_red_i[j]) { -2441: const N& x_dbm_ij = x_dbm_i[j]; -2441: ((void) 0); -2441: numer_denom(x_dbm_ij, numer, denom); -2441: -2441: db_expr = zero_expr; -2441: if (i > 0) { -2441: db_expr += Variable(i-1); -2441: } -2441: if (j > 0) { -2441: db_expr -= Variable(j-1); -2441: } -2441: if (denom != 1) { -2441: db_expr *= denom; -2441: } -2441: db_expr += numer; -2441: if (x_dbm_ij >= y_dbm_i[j]) { -2441: env_cs.insert(db_expr >= 0); -2441: } -2441: else { -2441: db_expr += epsilon; -2441: x_cs_removed.insert(db_expr == 0); -2441: } -2441: } -2441: if (!y_red_i[j]) { -2441: const N& y_dbm_ij = y_dbm_i[j]; -2441: const N& x_dbm_ij = x_dbm_i[j]; -2441: ((void) 0); -2441: numer_denom(y_dbm_ij, numer, denom); -2441: -2441: db_expr = zero_expr; -2441: if (i > 0) { -2441: db_expr += Variable(i-1); -2441: } -2441: if (j > 0) { -2441: db_expr -= Variable(j-1); -2441: } -2441: if (denom != 1) { -2441: db_expr *= denom; -2441: } -2441: db_expr += numer; -2441: if (y_dbm_ij >= x_dbm_ij) { -2441: -2441: if (!x_red_i[j] && x_dbm_ij == y_dbm_ij) { -2441: continue; -2441: } -2441: env_cs.insert(db_expr >= 0); -2441: } -2441: else { -2441: db_expr += epsilon; -2441: y_cs_removed.insert(db_expr == 0); -2441: } -2441: } -2441: } -2441: } -2441: -2441: if (x_cs_removed.empty()) { -2441: -2441: return true; -2441: } -2441: if (y_cs_removed.empty()) { -2441: -2441: *this = y; -2441: return true; -2441: } -2441: -2441: -2441: -2441: -2441: MIP_Problem env_lp(x_space_dim + 1, env_cs, epsilon, MAXIMIZATION); -2441: -2441: env_lp.solve(); -2441: ((void) 0); -2441: -2441: -2441: for (Constraint_System::const_iterator i = x_cs_removed.begin(), -2441: i_end = x_cs_removed.end(); i != i_end; ++i) { -2441: MIP_Problem lp_i(env_lp); -2441: lp_i.add_constraint(*i); -2441: -2441: if (lp_i.solve() == UNFEASIBLE_MIP_PROBLEM) { -2441: continue; -2441: } -2441: for (Constraint_System::const_iterator j = y_cs_removed.begin(), -2441: j_end = y_cs_removed.end(); j != j_end; ++j) { -2441: MIP_Problem lp_ij(lp_i); -2441: lp_ij.add_constraint(*j); -2441: -2441: switch (lp_ij.solve()) { -2441: case UNFEASIBLE_MIP_PROBLEM: -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return false; -2441: case UNBOUNDED_MIP_PROBLEM: -2441: return false; -2441: case OPTIMIZED_MIP_PROBLEM: -2441: lp_ij.optimal_value(numer, denom); -2441: if (numer > 0) { -2441: return false; -2441: } -2441: break; -2441: } -2441: } -2441: } -2441: -2441: -2441: upper_bound_assign(y); -2441: ((void) 0); -2441: return true; -2441: } -2441: -2441: template -2441: template -2441: bool -2441: BD_Shape::BHZ09_upper_bound_assign_if_exact(const BD_Shape& y) { -2441: enum anonymous_enum_compile_time_check___LINE__ { compile_time_check_2368 = sizeof(Parma_Polyhedra_Library::Compile_Time_Check<(!integer_upper_bound || std::numeric_limits::is_integer)>) } -2441: -2441: -2441: -2441: ; -2441: -2441: -2441: -2441: const BD_Shape& x = *this; -2441: const dimension_type x_space_dim = x.space_dimension(); -2441: -2441: -2441: ((void) 0); -2441: -2441: -2441: if (x_space_dim == 0) { -2441: upper_bound_assign(y); -2441: return true; -2441: } -2441: -2441: if (x.marked_empty()) { -2441: *this = y; -2441: return true; -2441: } -2441: else if (y.is_empty()) { -2441: return true; -2441: } -2441: else if (x.is_empty()) { -2441: *this = y; -2441: return true; -2441: } -2441: -2441: -2441: x.shortest_path_reduction_assign(); -2441: y.shortest_path_reduction_assign(); -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: BD_Shape ub(x); -2441: ub.upper_bound_assign(y); -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_lhs; N& lhs = holder_lhs.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_rhs; N& rhs = holder_rhs.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_temp_zero; N& temp_zero = holder_temp_zero.item(); -2441: assign_r(temp_zero, 0, ROUND_NOT_NEEDED); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_temp_one; N& temp_one = holder_temp_one.item(); -2441: if (integer_upper_bound) { -2441: assign_r(temp_one, 1, ROUND_NOT_NEEDED); -2441: } -2441: for (dimension_type i = x_space_dim + 1; i-- > 0; ) { -2441: const DB_Row& x_i = x.dbm[i]; -2441: const Bit_Row& x_red_i = x.redundancy_dbm[i]; -2441: const DB_Row& y_i = y.dbm[i]; -2441: const DB_Row& ub_i = ub.dbm[i]; -2441: for (dimension_type j = x_space_dim + 1; j-- > 0; ) { -2441: -2441: if (x_red_i[j]) { -2441: continue; -2441: } -2441: -2441: ((void) 0); -2441: const N& x_i_j = x_i[j]; -2441: if (x_i_j < y_i[j]) { -2441: for (dimension_type k = x_space_dim + 1; k-- > 0; ) { -2441: const DB_Row& x_k = x.dbm[k]; -2441: const DB_Row& y_k = y.dbm[k]; -2441: const Bit_Row& y_red_k = y.redundancy_dbm[k]; -2441: const DB_Row& ub_k = ub.dbm[k]; -2441: const N& ub_k_j = (k == j) ? temp_zero : ub_k[j]; -2441: for (dimension_type ell = x_space_dim + 1; ell-- > 0; ) { -2441: -2441: if (y_red_k[ell]) { -2441: continue; -2441: } -2441: -2441: ((void) 0); -2441: const N& y_k_ell = y_k[ell]; -2441: if (y_k_ell < x_k[ell]) { -2441: -2441: -2441: add_assign_r(lhs, x_i_j, y_k_ell, ROUND_UP); -2441: const N& ub_i_ell = (i == ell) ? temp_zero : ub_i[ell]; -2441: add_assign_r(rhs, ub_i_ell, ub_k_j, ROUND_UP); -2441: if (integer_upper_bound) { -2441: -2441: -2441: add_assign_r(lhs, lhs, temp_one, ROUND_NOT_NEEDED); -2441: } -2441: -2441: if (lhs < rhs) { -2441: return false; -2441: } -2441: } -2441: } -2441: } -2441: } -2441: } -2441: } -2441: -2441: m_swap(ub); -2441: ((void) 0); -2441: return true; -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::difference_assign(const BD_Shape& y) { -2441: const dimension_type space_dim = space_dimension(); -2441: -2441: -2441: if (space_dim != y.space_dimension()) { -2441: throw_dimension_incompatible("difference_assign(y)", y); -2441: } -2441: BD_Shape new_bd_shape(space_dim, EMPTY); -2441: -2441: BD_Shape& x = *this; -2441: -2441: x.shortest_path_closure_assign(); -2441: -2441: -2441: if (x.marked_empty()) { -2441: return; -2441: } -2441: y.shortest_path_closure_assign(); -2441: -2441: -2441: if (y.marked_empty()) { -2441: return; -2441: } -2441: -2441: -2441: -2441: if (space_dim == 0) { -2441: x.set_empty(); -2441: return; -2441: } -2441: -2441: -2441: -2441: if (y.contains(x)) { -2441: x.set_empty(); -2441: return; -2441: } -2441: -2441: -2441: -2441: -2441: const Constraint_System& y_cs = y.constraints(); -2441: for (Constraint_System::const_iterator i = y_cs.begin(), -2441: y_cs_end = y_cs.end(); i != y_cs_end; ++i) { -2441: const Constraint& c = *i; -2441: -2441: -2441: -2441: -2441: -2441: -2441: if (x.relation_with(c).implies(Poly_Con_Relation::is_included())) { -2441: continue; -2441: } -2441: BD_Shape z = x; -2441: const Linear_Expression e(c.expression()); -2441: z.add_constraint(e <= 0); -2441: if (!z.is_empty()) { -2441: new_bd_shape.upper_bound_assign(z); -2441: } -2441: if (c.is_equality()) { -2441: z = x; -2441: z.add_constraint(e >= 0); -2441: if (!z.is_empty()) { -2441: new_bd_shape.upper_bound_assign(z); -2441: } -2441: } -2441: } -2441: *this = new_bd_shape; -2441: ((void) 0); -2441: } -2441: -2441: template -2441: bool -2441: BD_Shape::simplify_using_context_assign(const BD_Shape& y) { -2441: BD_Shape& x = *this; -2441: const dimension_type dim = x.space_dimension(); -2441: -2441: if (dim != y.space_dimension()) { -2441: throw_dimension_incompatible("simplify_using_context_assign(y)", y); -2441: } -2441: -2441: if (dim == 0) { -2441: if (y.marked_empty()) { -2441: x.set_zero_dim_univ(); -2441: return false; -2441: } -2441: else { -2441: return !x.marked_empty(); -2441: } -2441: } -2441: -2441: -2441: -2441: y.shortest_path_closure_assign(); -2441: if (x.contains(y)) { -2441: BD_Shape res(dim, UNIVERSE); -2441: x.m_swap(res); -2441: return false; -2441: } -2441: -2441: -2441: x.shortest_path_closure_assign(); -2441: if (x.marked_empty()) { -2441: -2441: dimension_type i; -2441: dimension_type j; -2441: -2441: i = 0; -2441: const DB_Row& y_dbm_0 = y.dbm[0]; -2441: for (j = 1; j <= dim; ++j) { -2441: if (!is_plus_infinity(y_dbm_0[j])) { -2441: -2441: -2441: -2441: goto found; -2441: } -2441: } -2441: j = 0; -2441: for (i = 1; i <= dim; ++i) { -2441: if (!is_plus_infinity(y.dbm[i][0])) { -2441: -2441: -2441: -2441: goto found; -2441: } -2441: } -2441: -2441: for (i = 1; i <= dim; ++i) { -2441: const DB_Row& y_dbm_i = y.dbm[i]; -2441: for (j = 1; j <= dim; ++j) { -2441: if (!is_plus_infinity(y_dbm_i[j])) { -2441: -2441: -2441: -2441: goto found; -2441: } -2441: } -2441: } -2441: -2441: -2441: return false; -2441: -2441: found: -2441: -2441: ((void) 0); -2441: BD_Shape res(dim, UNIVERSE); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp; N& tmp = holder_tmp.item(); -2441: assign_r(tmp, 1, ROUND_UP); -2441: add_assign_r(tmp, tmp, y.dbm[i][j], ROUND_UP); -2441: ((void) 0); -2441: -2441: neg_assign_r(res.dbm[j][i], tmp, ROUND_DOWN); -2441: x.m_swap(res); -2441: return false; -2441: } -2441: -2441: -2441: -2441: -2441: BD_Shape target = x; -2441: target.intersection_assign(y); -2441: const bool bool_result = !target.is_empty(); -2441: -2441: -2441: x.shortest_path_reduction_assign(); -2441: -2441: dimension_type x_num_non_redundant = (dim+1)*(dim+1); -2441: for (dimension_type i = dim + 1; i-- > 0; ) { -2441: x_num_non_redundant -= x.redundancy_dbm[i].count_ones(); -2441: } -2441: ((void) 0); -2441: -2441: -2441: -2441: -2441: BD_Shape yy = y; -2441: -2441: -2441: BD_Shape res(dim, UNIVERSE); -2441: -2441: dimension_type res_num_non_redundant = 0; -2441: -2441: -2441: std::vector x_leaders; -2441: x.compute_leaders(x_leaders); -2441: -2441: -2441: const DB_Row& x_dbm_0 = x.dbm[0]; -2441: DB_Row& yy_dbm_0 = yy.dbm[0]; -2441: DB_Row& res_dbm_0 = res.dbm[0]; -2441: for (dimension_type j = 1; j <= dim; ++j) { -2441: -2441: -2441: if (x_leaders[j] != 0) { -2441: continue; -2441: } -2441: ((void) 0); -2441: if (x_dbm_0[j] < yy_dbm_0[j]) { -2441: res_dbm_0[j] = x_dbm_0[j]; -2441: ++res_num_non_redundant; -2441: -2441: yy_dbm_0[j] = x_dbm_0[j]; -2441: yy.reset_shortest_path_closed(); -2441: } -2441: ((void) 0); -2441: if (x.dbm[j][0] < yy.dbm[j][0]) { -2441: res.dbm[j][0] = x.dbm[j][0]; -2441: ++res_num_non_redundant; -2441: -2441: yy.dbm[j][0] = x.dbm[j][0]; -2441: yy.reset_shortest_path_closed(); -2441: } -2441: -2441: if (!yy.marked_shortest_path_closed()) { -2441: Variable var_j(j-1); -2441: yy.incremental_shortest_path_closure_assign(var_j); -2441: if (target.contains(yy)) { -2441: -2441: if (res_num_non_redundant < x_num_non_redundant) { -2441: res.reset_shortest_path_closed(); -2441: x.m_swap(res); -2441: } -2441: return bool_result; -2441: } -2441: } -2441: } -2441: -2441: -2441: -2441: for (dimension_type i = 2; i <= dim; ++i) { -2441: const dimension_type j = x_leaders[i]; -2441: if (j == i || j == 0) { -2441: continue; -2441: } -2441: ((void) 0); -2441: if (x.dbm[i][j] < yy.dbm[i][j]) { -2441: res.dbm[i][j] = x.dbm[i][j]; -2441: ++res_num_non_redundant; -2441: -2441: yy.dbm[i][j] = x.dbm[i][j]; -2441: yy.reset_shortest_path_closed(); -2441: } -2441: ((void) 0); -2441: if (x.dbm[j][i] < yy.dbm[j][i]) { -2441: res.dbm[j][i] = x.dbm[j][i]; -2441: ++res_num_non_redundant; -2441: -2441: yy.dbm[j][i] = x.dbm[j][i]; -2441: yy.reset_shortest_path_closed(); -2441: } -2441: -2441: if (!yy.marked_shortest_path_closed()) { -2441: Variable var_j(j-1); -2441: yy.incremental_shortest_path_closure_assign(var_j); -2441: if (target.contains(yy)) { -2441: -2441: if (res_num_non_redundant < x_num_non_redundant) { -2441: res.reset_shortest_path_closed(); -2441: x.m_swap(res); -2441: } -2441: return bool_result; -2441: } -2441: } -2441: } -2441: -2441: -2441: -2441: for (dimension_type i = 0; i <= dim; ++i) { -2441: if (i != x_leaders[i]) { -2441: continue; -2441: } -2441: const DB_Row& x_dbm_i = x.dbm[i]; -2441: const Bit_Row& x_redundancy_dbm_i = x.redundancy_dbm[i]; -2441: DB_Row& yy_dbm_i = yy.dbm[i]; -2441: DB_Row& res_dbm_i = res.dbm[i]; -2441: for (dimension_type j = 0; j <= dim; ++j) { -2441: if (j != x_leaders[j] || x_redundancy_dbm_i[j]) { -2441: continue; -2441: } -2441: N& yy_dbm_ij = yy_dbm_i[j]; -2441: const N& x_dbm_ij = x_dbm_i[j]; -2441: if (x_dbm_ij < yy_dbm_ij) { -2441: res_dbm_i[j] = x_dbm_ij; -2441: ++res_num_non_redundant; -2441: -2441: yy_dbm_ij = x_dbm_ij; -2441: yy.reset_shortest_path_closed(); -2441: ((void) 0); -2441: Variable var(((i > 0) ? i : j) - 1); -2441: yy.incremental_shortest_path_closure_assign(var); -2441: if (target.contains(yy)) { -2441: -2441: if (res_num_non_redundant < x_num_non_redundant) { -2441: res.reset_shortest_path_closed(); -2441: x.m_swap(res); -2441: } -2441: return bool_result; -2441: } -2441: } -2441: } -2441: } -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return false; -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::add_space_dimensions_and_embed(const dimension_type m) { -2441: -2441: if (m == 0) { -2441: return; -2441: } -2441: const dimension_type space_dim = space_dimension(); -2441: const dimension_type new_space_dim = space_dim + m; -2441: const bool was_zero_dim_univ = (!marked_empty() && space_dim == 0); -2441: -2441: -2441: -2441: -2441: dbm.grow(new_space_dim + 1); -2441: -2441: -2441: -2441: if (marked_shortest_path_reduced()) { -2441: reset_shortest_path_reduced(); -2441: } -2441: -2441: -2441: if (was_zero_dim_univ) { -2441: set_shortest_path_closed(); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::add_space_dimensions_and_project(const dimension_type m) { -2441: -2441: if (m == 0) { -2441: return; -2441: } -2441: const dimension_type space_dim = space_dimension(); -2441: -2441: -2441: -2441: -2441: if (space_dim == 0) { -2441: dbm.grow(m + 1); -2441: if (!marked_empty()) { -2441: for (dimension_type i = m + 1; i-- > 0; ) { -2441: DB_Row& dbm_i = dbm[i]; -2441: for (dimension_type j = m + 1; j-- > 0; ) { -2441: if (i != j) { -2441: assign_r(dbm_i[j], 0, ROUND_NOT_NEEDED); -2441: } -2441: } -2441: } -2441: set_shortest_path_closed(); -2441: } -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: const dimension_type new_space_dim = space_dim + m; -2441: dbm.grow(new_space_dim + 1); -2441: -2441: -2441: DB_Row& dbm_0 = dbm[0]; -2441: for (dimension_type i = space_dim + 1; i <= new_space_dim; ++i) { -2441: assign_r(dbm[i][0], 0, ROUND_NOT_NEEDED); -2441: assign_r(dbm_0[i], 0, ROUND_NOT_NEEDED); -2441: } -2441: -2441: if (marked_shortest_path_closed()) { -2441: reset_shortest_path_closed(); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::remove_space_dimensions(const Variables_Set& vars) { -2441: -2441: -2441: -2441: if (vars.empty()) { -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: const dimension_type old_space_dim = space_dimension(); -2441: -2441: -2441: const dimension_type min_space_dim = vars.space_dimension(); -2441: if (old_space_dim < min_space_dim) { -2441: throw_dimension_incompatible("remove_space_dimensions(vs)", min_space_dim); -2441: } -2441: -2441: shortest_path_closure_assign(); -2441: -2441: -2441: -2441: const dimension_type new_space_dim = old_space_dim - vars.size(); -2441: if (new_space_dim == 0) { -2441: dbm.resize_no_copy(1); -2441: if (!marked_empty()) { -2441: -2441: set_zero_dim_univ(); -2441: } -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: -2441: if (marked_empty()) { -2441: dbm.resize_no_copy(new_space_dim + 1); -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: -2441: -2441: if (marked_shortest_path_reduced()) { -2441: reset_shortest_path_reduced(); -2441: } -2441: -2441: -2441: -2441: Variables_Set::const_iterator vsi = vars.begin(); -2441: Variables_Set::const_iterator vsi_end = vars.end(); -2441: dimension_type dst = *vsi + 1; -2441: dimension_type src = dst + 1; -2441: for (++vsi; vsi != vsi_end; ++vsi) { -2441: const dimension_type vsi_next = *vsi + 1; -2441: -2441: -2441: while (src < vsi_next) { -2441: using std::swap; -2441: swap(dbm[dst], dbm[src]); -2441: for (dimension_type i = old_space_dim + 1; i-- > 0; ) { -2441: DB_Row& dbm_i = dbm[i]; -2441: assign_or_swap(dbm_i[dst], dbm_i[src]); -2441: } -2441: ++dst; -2441: ++src; -2441: } -2441: ++src; -2441: } -2441: -2441: -2441: while (src <= old_space_dim) { -2441: using std::swap; -2441: swap(dbm[dst], dbm[src]); -2441: for (dimension_type i = old_space_dim + 1; i-- > 0; ) { -2441: DB_Row& dbm_i = dbm[i]; -2441: assign_or_swap(dbm_i[dst], dbm_i[src]); -2441: } -2441: ++src; -2441: ++dst; -2441: } -2441: -2441: -2441: dbm.resize_no_copy(new_space_dim + 1); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: template -2441: void -2441: BD_Shape::map_space_dimensions(const Partial_Function& pfunc) { -2441: const dimension_type space_dim = space_dimension(); -2441: -2441: if (space_dim == 0) { -2441: return; -2441: } -2441: if (pfunc.has_empty_codomain()) { -2441: -2441: remove_higher_space_dimensions(0); -2441: return; -2441: } -2441: -2441: const dimension_type new_space_dim = pfunc.max_in_codomain() + 1; -2441: -2441: -2441: if (new_space_dim < space_dim) { -2441: shortest_path_closure_assign(); -2441: } -2441: -2441: -2441: if (marked_empty()) { -2441: remove_higher_space_dimensions(new_space_dim); -2441: return; -2441: } -2441: -2441: -2441: -2441: if (marked_shortest_path_reduced()) { -2441: reset_shortest_path_reduced(); -2441: } -2441: -2441: DB_Matrix x(new_space_dim+1); -2441: -2441: -2441: -2441: DB_Row& dbm_0 = dbm[0]; -2441: DB_Row& x_0 = x[0]; -2441: for (dimension_type j = 1; j <= space_dim; ++j) { -2441: dimension_type new_j; -2441: if (pfunc.maps(j - 1, new_j)) { -2441: assign_or_swap(x_0[new_j + 1], dbm_0[j]); -2441: assign_or_swap(x[new_j + 1][0], dbm[j][0]); -2441: } -2441: } -2441: -2441: for (dimension_type i = 1; i <= space_dim; ++i) { -2441: dimension_type new_i; -2441: if (pfunc.maps(i - 1, new_i)) { -2441: DB_Row& dbm_i = dbm[i]; -2441: ++new_i; -2441: DB_Row& x_new_i = x[new_i]; -2441: for (dimension_type j = i+1; j <= space_dim; ++j) { -2441: dimension_type new_j; -2441: if (pfunc.maps(j - 1, new_j)) { -2441: ++new_j; -2441: assign_or_swap(x_new_i[new_j], dbm_i[j]); -2441: assign_or_swap(x[new_j][new_i], dbm[j][i]); -2441: } -2441: } -2441: } -2441: } -2441: -2441: using std::swap; -2441: swap(dbm, x); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::intersection_assign(const BD_Shape& y) { -2441: const dimension_type space_dim = space_dimension(); -2441: -2441: -2441: if (space_dim != y.space_dimension()) { -2441: throw_dimension_incompatible("intersection_assign(y)", y); -2441: } -2441: -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: if (y.marked_empty()) { -2441: set_empty(); -2441: return; -2441: } -2441: -2441: -2441: -2441: -2441: if (space_dim == 0) { -2441: return; -2441: } -2441: -2441: -2441: bool changed = false; -2441: for (dimension_type i = space_dim + 1; i-- > 0; ) { -2441: DB_Row& dbm_i = dbm[i]; -2441: const DB_Row& y_dbm_i = y.dbm[i]; -2441: for (dimension_type j = space_dim + 1; j-- > 0; ) { -2441: N& dbm_ij = dbm_i[j]; -2441: const N& y_dbm_ij = y_dbm_i[j]; -2441: if (dbm_ij > y_dbm_ij) { -2441: dbm_ij = y_dbm_ij; -2441: changed = true; -2441: } -2441: } -2441: } -2441: -2441: if (changed && marked_shortest_path_closed()) { -2441: reset_shortest_path_closed(); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: template -2441: void -2441: BD_Shape::CC76_extrapolation_assign(const BD_Shape& y, -2441: Iterator first, Iterator last, -2441: unsigned* tp) { -2441: const dimension_type space_dim = space_dimension(); -2441: -2441: -2441: if (space_dim != y.space_dimension()) { -2441: throw_dimension_incompatible("CC76_extrapolation_assign(y)", y); -2441: } -2441: -2441: ((void) 0); -2441: -2441: -2441: -2441: if (space_dim == 0) { -2441: return; -2441: } -2441: shortest_path_closure_assign(); -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: y.shortest_path_closure_assign(); -2441: -2441: if (y.marked_empty()) { -2441: return; -2441: } -2441: -2441: if (tp != 0 && *tp > 0) { -2441: BD_Shape x_tmp(*this); -2441: x_tmp.CC76_extrapolation_assign(y, first, last, 0); -2441: -2441: if (!contains(x_tmp)) { -2441: --(*tp); -2441: } -2441: return; -2441: } -2441: # 3108 "../../src/BD_Shape_templates.hh" -2441: for (dimension_type i = space_dim + 1; i-- > 0; ) { -2441: DB_Row& dbm_i = dbm[i]; -2441: const DB_Row& y_dbm_i = y.dbm[i]; -2441: for (dimension_type j = space_dim + 1; j-- > 0; ) { -2441: N& dbm_ij = dbm_i[j]; -2441: const N& y_dbm_ij = y_dbm_i[j]; -2441: if (y_dbm_ij < dbm_ij) { -2441: Iterator k = std::lower_bound(first, last, dbm_ij); -2441: if (k != last) { -2441: if (dbm_ij < *k) { -2441: assign_r(dbm_ij, *k, ROUND_UP); -2441: } -2441: } -2441: else { -2441: assign_r(dbm_ij, PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: } -2441: } -2441: } -2441: reset_shortest_path_closed(); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::get_limiting_shape(const Constraint_System& cs, -2441: BD_Shape& limiting_shape) const { -2441: -2441: ((void) 0); -2441: -2441: shortest_path_closure_assign(); -2441: bool changed = false; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_coeff; Parma_Polyhedra_Library::Coefficient& coeff = holder_coeff.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_c_term; Parma_Polyhedra_Library::Coefficient& minus_c_term = holder_minus_c_term.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_d; N& d = holder_d.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_d1; N& d1 = holder_d1.item(); -2441: for (Constraint_System::const_iterator cs_i = cs.begin(), -2441: cs_end = cs.end(); cs_i != cs_end; ++cs_i) { -2441: const Constraint& c = *cs_i; -2441: dimension_type num_vars = 0; -2441: dimension_type i = 0; -2441: dimension_type j = 0; -2441: -2441: if (BD_Shape_Helpers::extract_bounded_difference(c, num_vars, i, j, coeff)) { -2441: -2441: -2441: const bool negative = (coeff < 0); -2441: const N& x = negative ? dbm[i][j] : dbm[j][i]; -2441: const N& y = negative ? dbm[j][i] : dbm[i][j]; -2441: DB_Matrix& ls_dbm = limiting_shape.dbm; -2441: if (negative) { -2441: neg_assign(coeff); -2441: } -2441: -2441: div_round_up(d, c.inhomogeneous_term(), coeff); -2441: if (x <= d) { -2441: if (c.is_inequality()) { -2441: N& ls_x = negative ? ls_dbm[i][j] : ls_dbm[j][i]; -2441: if (ls_x > d) { -2441: ls_x = d; -2441: changed = true; -2441: } -2441: } -2441: else { -2441: -2441: neg_assign(minus_c_term, c.inhomogeneous_term()); -2441: div_round_up(d1, minus_c_term, coeff); -2441: if (y <= d1) { -2441: N& ls_x = negative ? ls_dbm[i][j] : ls_dbm[j][i]; -2441: N& ls_y = negative ? ls_dbm[j][i] : ls_dbm[i][j]; -2441: if ((ls_x >= d && ls_y > d1) || (ls_x > d && ls_y >= d1)) { -2441: ls_x = d; -2441: ls_y = d1; -2441: changed = true; -2441: } -2441: } -2441: } -2441: } -2441: } -2441: } -2441: -2441: -2441: -2441: if (changed && limiting_shape.marked_shortest_path_closed()) { -2441: limiting_shape.reset_shortest_path_closed(); -2441: } -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::limited_CC76_extrapolation_assign(const BD_Shape& y, -2441: const Constraint_System& cs, -2441: unsigned* tp) { -2441: -2441: const dimension_type space_dim = space_dimension(); -2441: if (space_dim != y.space_dimension()) { -2441: throw_dimension_incompatible("limited_CC76_extrapolation_assign(y, cs)", -2441: y); -2441: } -2441: -2441: -2441: const dimension_type cs_space_dim = cs.space_dimension(); -2441: if (space_dim < cs_space_dim) { -2441: throw_invalid_argument("limited_CC76_extrapolation_assign(y, cs)", -2441: "cs is space_dimension incompatible"); -2441: } -2441: -2441: -2441: if (cs.has_strict_inequalities()) { -2441: throw_invalid_argument("limited_CC76_extrapolation_assign(y, cs)", -2441: "cs has strict inequalities"); -2441: } -2441: -2441: -2441: -2441: if (space_dim == 0) { -2441: return; -2441: } -2441: -2441: ((void) 0); -2441: -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: if (y.marked_empty()) { -2441: return; -2441: } -2441: BD_Shape limiting_shape(space_dim, UNIVERSE); -2441: get_limiting_shape(cs, limiting_shape); -2441: CC76_extrapolation_assign(y, tp); -2441: intersection_assign(limiting_shape); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::BHMZ05_widening_assign(const BD_Shape& y, unsigned* tp) { -2441: const dimension_type space_dim = space_dimension(); -2441: -2441: -2441: if (space_dim != y.space_dimension()) { -2441: throw_dimension_incompatible("BHMZ05_widening_assign(y)", y); -2441: } -2441: -2441: ((void) 0); -2441: -2441: -2441: const dimension_type y_affine_dim = y.affine_dimension(); -2441: -2441: -2441: -2441: if (y_affine_dim == 0) { -2441: return; -2441: } -2441: -2441: -2441: const dimension_type x_affine_dim = affine_dimension(); -2441: ((void) 0); -2441: if (x_affine_dim != y_affine_dim) { -2441: return; -2441: } -2441: -2441: if (tp != 0 && *tp > 0) { -2441: BD_Shape x_tmp(*this); -2441: x_tmp.BHMZ05_widening_assign(y, 0); -2441: -2441: if (!contains(x_tmp)) { -2441: --(*tp); -2441: } -2441: return; -2441: } -2441: -2441: -2441: ((void) 0); -2441: -2441: y.shortest_path_reduction_assign(); -2441: -2441: -2441: for (dimension_type i = space_dim + 1; i-- > 0; ) { -2441: DB_Row& dbm_i = dbm[i]; -2441: const DB_Row& y_dbm_i = y.dbm[i]; -2441: const Bit_Row& y_redundancy_i = y.redundancy_dbm[i]; -2441: for (dimension_type j = space_dim + 1; j-- > 0; ) { -2441: N& dbm_ij = dbm_i[j]; -2441: -2441: -2441: -2441: if (y_redundancy_i[j] || y_dbm_i[j] != dbm_ij) { -2441: assign_r(dbm_ij, PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: } -2441: } -2441: -2441: -2441: -2441: -2441: reset_shortest_path_closed(); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::limited_BHMZ05_extrapolation_assign(const BD_Shape& y, -2441: const Constraint_System& cs, -2441: unsigned* tp) { -2441: -2441: const dimension_type space_dim = space_dimension(); -2441: if (space_dim != y.space_dimension()) { -2441: throw_dimension_incompatible("limited_BHMZ05_extrapolation_assign(y, cs)", -2441: y); -2441: } -2441: -2441: -2441: const dimension_type cs_space_dim = cs.space_dimension(); -2441: if (space_dim < cs_space_dim) { -2441: throw_invalid_argument("limited_BHMZ05_extrapolation_assign(y, cs)", -2441: "cs is space-dimension incompatible"); -2441: } -2441: -2441: if (cs.has_strict_inequalities()) { -2441: throw_invalid_argument("limited_BHMZ05_extrapolation_assign(y, cs)", -2441: "cs has strict inequalities"); -2441: } -2441: -2441: -2441: -2441: if (space_dim == 0) { -2441: return; -2441: } -2441: -2441: ((void) 0); -2441: -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: if (y.marked_empty()) { -2441: return; -2441: } -2441: BD_Shape limiting_shape(space_dim, UNIVERSE); -2441: get_limiting_shape(cs, limiting_shape); -2441: BHMZ05_widening_assign(y, tp); -2441: intersection_assign(limiting_shape); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::CC76_narrowing_assign(const BD_Shape& y) { -2441: const dimension_type space_dim = space_dimension(); -2441: -2441: -2441: if (space_dim != y.space_dimension()) { -2441: throw_dimension_incompatible("CC76_narrowing_assign(y)", y); -2441: } -2441: -2441: ((void) 0); -2441: -2441: -2441: -2441: if (space_dim == 0) { -2441: return; -2441: } -2441: y.shortest_path_closure_assign(); -2441: -2441: if (y.marked_empty()) { -2441: return; -2441: } -2441: shortest_path_closure_assign(); -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: -2441: bool changed = false; -2441: for (dimension_type i = space_dim + 1; i-- > 0; ) { -2441: DB_Row& dbm_i = dbm[i]; -2441: const DB_Row& y_dbm_i = y.dbm[i]; -2441: for (dimension_type j = space_dim + 1; j-- > 0; ) { -2441: N& dbm_ij = dbm_i[j]; -2441: const N& y_dbm_ij = y_dbm_i[j]; -2441: if (!is_plus_infinity(dbm_ij) -2441: && !is_plus_infinity(y_dbm_ij) -2441: && dbm_ij != y_dbm_ij) { -2441: dbm_ij = y_dbm_ij; -2441: changed = true; -2441: } -2441: } -2441: } -2441: if (changed && marked_shortest_path_closed()) { -2441: reset_shortest_path_closed(); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape -2441: ::deduce_v_minus_u_bounds(const dimension_type v, -2441: const dimension_type last_v, -2441: const Linear_Expression& sc_expr, -2441: Coefficient_traits::const_reference sc_denom, -2441: const N& ub_v) { -2441: ((void) 0); -2441: ((void) 0); -2441: # 3423 "../../src/BD_Shape_templates.hh" -2441: Parma_Polyhedra_Library::Dirty_Temp holder_mpq_sc_denom; mpq_class& mpq_sc_denom = holder_mpq_sc_denom.item(); -2441: assign_r(mpq_sc_denom, sc_denom, ROUND_NOT_NEEDED); -2441: const DB_Row& dbm_0 = dbm[0]; -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_lb_u; mpq_class& minus_lb_u = holder_minus_lb_u.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_q; mpq_class& q = holder_q.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_ub_u; mpq_class& ub_u = holder_ub_u.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_up_approx; N& up_approx = holder_up_approx.item(); -2441: for (Linear_Expression::const_iterator u = sc_expr.begin(), -2441: u_end = sc_expr.lower_bound(Variable(last_v)); u != u_end; ++u) { -2441: const dimension_type u_dim = u.variable().space_dimension(); -2441: if (u_dim == v) { -2441: continue; -2441: } -2441: const Coefficient& expr_u = *u; -2441: if (expr_u < 0) { -2441: continue; -2441: } -2441: ((void) 0); -2441: if (expr_u >= sc_denom) { -2441: -2441: sub_assign_r(dbm[u_dim][v], ub_v, dbm_0[u_dim], ROUND_UP); -2441: } -2441: else { -2441: DB_Row& dbm_u = dbm[u_dim]; -2441: const N& dbm_u0 = dbm_u[0]; -2441: if (!is_plus_infinity(dbm_u0)) { -2441: -2441: -2441: -2441: -2441: -2441: -2441: assign_r(minus_lb_u, dbm_u0, ROUND_NOT_NEEDED); -2441: assign_r(q, expr_u, ROUND_NOT_NEEDED); -2441: div_assign_r(q, q, mpq_sc_denom, ROUND_NOT_NEEDED); -2441: assign_r(ub_u, dbm_0[u_dim], ROUND_NOT_NEEDED); -2441: -2441: add_assign_r(ub_u, ub_u, minus_lb_u, ROUND_NOT_NEEDED); -2441: -2441: sub_mul_assign_r(minus_lb_u, q, ub_u, ROUND_NOT_NEEDED); -2441: assign_r(up_approx, minus_lb_u, ROUND_UP); -2441: -2441: add_assign_r(dbm_u[v], ub_v, up_approx, ROUND_UP); -2441: } -2441: } -2441: } -2441: } -2441: -2441: template -2441: void -2441: BD_Shape -2441: ::deduce_u_minus_v_bounds(const dimension_type v, -2441: const dimension_type last_v, -2441: const Linear_Expression& sc_expr, -2441: Coefficient_traits::const_reference sc_denom, -2441: const N& minus_lb_v) { -2441: ((void) 0); -2441: ((void) 0); -2441: # 3490 "../../src/BD_Shape_templates.hh" -2441: Parma_Polyhedra_Library::Dirty_Temp holder_mpq_sc_denom; mpq_class& mpq_sc_denom = holder_mpq_sc_denom.item(); -2441: assign_r(mpq_sc_denom, sc_denom, ROUND_NOT_NEEDED); -2441: DB_Row& dbm_0 = dbm[0]; -2441: DB_Row& dbm_v = dbm[v]; -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_ub_u; mpq_class& ub_u = holder_ub_u.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_q; mpq_class& q = holder_q.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_lb_u; mpq_class& minus_lb_u = holder_minus_lb_u.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_up_approx; N& up_approx = holder_up_approx.item(); -2441: -2441: for (Linear_Expression::const_iterator u = sc_expr.begin(), -2441: u_end = sc_expr.lower_bound(Variable(last_v)); u != u_end; ++u) { -2441: const Variable u_var = u.variable(); -2441: const dimension_type u_dim = u_var.space_dimension(); -2441: if (u_var.space_dimension() == v) { -2441: continue; -2441: } -2441: const Coefficient& expr_u = *u; -2441: if (expr_u < 0) { -2441: continue; -2441: } -2441: ((void) 0); -2441: if (expr_u >= sc_denom) { -2441: -2441: -2441: sub_assign_r(dbm_v[u_dim], minus_lb_v, dbm[u_dim][0], ROUND_UP); -2441: } -2441: else { -2441: const N& dbm_0u = dbm_0[u_dim]; -2441: if (!is_plus_infinity(dbm_0u)) { -2441: -2441: -2441: -2441: -2441: -2441: -2441: assign_r(ub_u, dbm_0u, ROUND_NOT_NEEDED); -2441: assign_r(q, expr_u, ROUND_NOT_NEEDED); -2441: div_assign_r(q, q, mpq_sc_denom, ROUND_NOT_NEEDED); -2441: assign_r(minus_lb_u, dbm[u_dim][0], ROUND_NOT_NEEDED); -2441: -2441: add_assign_r(minus_lb_u, minus_lb_u, ub_u, ROUND_NOT_NEEDED); -2441: -2441: sub_mul_assign_r(ub_u, q, minus_lb_u, ROUND_NOT_NEEDED); -2441: assign_r(up_approx, ub_u, ROUND_UP); -2441: -2441: add_assign_r(dbm_v[u_dim], up_approx, minus_lb_v, ROUND_UP); -2441: } -2441: } -2441: } -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::forget_all_dbm_constraints(const dimension_type v) { -2441: ((void) 0); -2441: DB_Row& dbm_v = dbm[v]; -2441: for (dimension_type i = dbm.num_rows(); i-- > 0; ) { -2441: assign_r(dbm_v[i], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: assign_r(dbm[i][v], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::forget_binary_dbm_constraints(const dimension_type v) { -2441: ((void) 0); -2441: DB_Row& dbm_v = dbm[v]; -2441: for (dimension_type i = dbm.num_rows()-1; i > 0; --i) { -2441: assign_r(dbm_v[i], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: assign_r(dbm[i][v], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::unconstrain(const Variable var) { -2441: -2441: const dimension_type var_space_dim = var.space_dimension(); -2441: if (space_dimension() < var_space_dim) { -2441: throw_dimension_incompatible("unconstrain(var)", var_space_dim); -2441: } -2441: -2441: -2441: shortest_path_closure_assign(); -2441: -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: forget_all_dbm_constraints(var_space_dim); -2441: -2441: reset_shortest_path_reduced(); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::unconstrain(const Variables_Set& vars) { -2441: -2441: -2441: if (vars.empty()) { -2441: return; -2441: } -2441: -2441: const dimension_type min_space_dim = vars.space_dimension(); -2441: if (space_dimension() < min_space_dim) { -2441: throw_dimension_incompatible("unconstrain(vs)", min_space_dim); -2441: } -2441: -2441: -2441: shortest_path_closure_assign(); -2441: -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: for (Variables_Set::const_iterator vsi = vars.begin(), -2441: vsi_end = vars.end(); vsi != vsi_end; ++vsi) { -2441: forget_all_dbm_constraints(*vsi + 1); -2441: } -2441: -2441: reset_shortest_path_reduced(); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::refine(const Variable var, -2441: const Relation_Symbol relsym, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference denominator) { -2441: ((void) 0); -2441: ((void) 0); -2441: const dimension_type v = var.id() + 1; -2441: ((void) 0); -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: const Coefficient& b = expr.inhomogeneous_term(); -2441: -2441: -2441: dimension_type t = 0; -2441: -2441: dimension_type w = expr.last_nonzero(); -2441: -2441: if (w != 0) { -2441: ++t; -2441: if (!expr.all_zeroes(1, w)) { -2441: ++t; -2441: } -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: if (t == 1 && expr.get(Variable(w - 1)) != denominator) { -2441: t = 2; -2441: } -2441: -2441: -2441: -2441: -2441: const DB_Row& dbm_0 = dbm[0]; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_denom; Parma_Polyhedra_Library::Coefficient& minus_denom = holder_minus_denom.item(); -2441: neg_assign(minus_denom, denominator); -2441: -2441: if (t == 0) { -2441: -2441: switch (relsym) { -2441: case EQUAL: -2441: -2441: add_dbm_constraint(0, v, b, denominator); -2441: add_dbm_constraint(v, 0, b, minus_denom); -2441: break; -2441: case LESS_OR_EQUAL: -2441: -2441: add_dbm_constraint(0, v, b, denominator); -2441: break; -2441: case GREATER_OR_EQUAL: -2441: -2441: -2441: add_dbm_constraint(v, 0, b, minus_denom); -2441: break; -2441: default: -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: return; -2441: } -2441: -2441: if (t == 1) { -2441: -2441: ((void) 0); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_d; N& d = holder_d.item(); -2441: switch (relsym) { -2441: case EQUAL: -2441: -2441: div_round_up(d, b, denominator); -2441: add_dbm_constraint(w, v, d); -2441: -2441: -2441: div_round_up(d, b, minus_denom); -2441: add_dbm_constraint(v, w, d); -2441: break; -2441: case LESS_OR_EQUAL: -2441: -2441: div_round_up(d, b, denominator); -2441: add_dbm_constraint(w, v, d); -2441: break; -2441: case GREATER_OR_EQUAL: -2441: -2441: -2441: div_round_up(d, b, minus_denom); -2441: add_dbm_constraint(v, w, d); -2441: break; -2441: default: -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: return; -2441: } -2441: -2441: -2441: -2441: -2441: const bool is_sc = (denominator > 0); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_b; Parma_Polyhedra_Library::Coefficient& minus_b = holder_minus_b.item(); -2441: neg_assign(minus_b, b); -2441: const Coefficient& sc_b = is_sc ? b : minus_b; -2441: const Coefficient& minus_sc_b = is_sc ? minus_b : b; -2441: const Coefficient& sc_denom = is_sc ? denominator : minus_denom; -2441: const Coefficient& minus_sc_denom = is_sc ? minus_denom : denominator; -2441: -2441: -2441: -2441: Linear_Expression minus_expr; -2441: if (!is_sc) { -2441: minus_expr = -expr; -2441: } -2441: const Linear_Expression& sc_expr = is_sc ? expr : minus_expr; -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_sum; N& sum = holder_sum.item(); -2441: -2441: dimension_type pinf_index = Suppress_Uninitialized_Warnings_Type::synonym(); -2441: -2441: dimension_type pinf_count = 0; -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_sc_i; Parma_Polyhedra_Library::Coefficient& minus_sc_i = holder_minus_sc_i.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_coeff_i; N& coeff_i = holder_coeff_i.item(); -2441: -2441: switch (relsym) { -2441: case EQUAL: -2441: { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_neg_sum; N& neg_sum = holder_neg_sum.item(); -2441: -2441: dimension_type neg_pinf_index = Suppress_Uninitialized_Warnings_Type::synonym(); -2441: -2441: dimension_type neg_pinf_count = 0; -2441: -2441: -2441: -2441: -2441: -2441: assign_r(sum, sc_b, ROUND_UP); -2441: assign_r(neg_sum, minus_sc_b, ROUND_UP); -2441: -2441: -2441: -2441: -2441: for (Linear_Expression::const_iterator i = sc_expr.begin(), -2441: i_end = sc_expr.lower_bound(Variable(w)); i != i_end; ++i) { -2441: const dimension_type i_dim = i.variable().space_dimension(); -2441: const Coefficient& sc_i = *i; -2441: const int sign_i = sgn(sc_i); -2441: ((void) 0); -2441: if (sign_i > 0) { -2441: assign_r(coeff_i, sc_i, ROUND_UP); -2441: -2441: if (pinf_count <= 1) { -2441: const N& approx_i = dbm_0[i_dim]; -2441: if (!is_plus_infinity(approx_i)) { -2441: add_mul_assign_r(sum, coeff_i, approx_i, ROUND_UP); -2441: } -2441: else { -2441: ++pinf_count; -2441: pinf_index = i_dim; -2441: } -2441: } -2441: -2441: if (neg_pinf_count <= 1) { -2441: const N& approx_minus_i = dbm[i_dim][0]; -2441: if (!is_plus_infinity(approx_minus_i)) { -2441: add_mul_assign_r(neg_sum, coeff_i, approx_minus_i, ROUND_UP); -2441: } -2441: else { -2441: ++neg_pinf_count; -2441: neg_pinf_index = i_dim; -2441: } -2441: } -2441: } -2441: else { -2441: ((void) 0); -2441: neg_assign(minus_sc_i, sc_i); -2441: -2441: assign_r(coeff_i, minus_sc_i, ROUND_UP); -2441: -2441: if (pinf_count <= 1) { -2441: const N& approx_minus_i = dbm[i_dim][0]; -2441: if (!is_plus_infinity(approx_minus_i)) { -2441: add_mul_assign_r(sum, coeff_i, approx_minus_i, ROUND_UP); -2441: } -2441: else { -2441: ++pinf_count; -2441: pinf_index = i_dim; -2441: } -2441: } -2441: -2441: if (neg_pinf_count <= 1) { -2441: const N& approx_i = dbm_0[i_dim]; -2441: if (!is_plus_infinity(approx_i)) { -2441: add_mul_assign_r(neg_sum, coeff_i, approx_i, ROUND_UP); -2441: } -2441: else { -2441: ++neg_pinf_count; -2441: neg_pinf_index = i_dim; -2441: } -2441: } -2441: } -2441: } -2441: -2441: if (pinf_count > 1 && neg_pinf_count > 1) { -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: -2441: reset_shortest_path_closed(); -2441: -2441: -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_down_sc_denom; N& down_sc_denom = holder_down_sc_denom.item(); -2441: assign_r(down_sc_denom, minus_sc_denom, ROUND_UP); -2441: neg_assign_r(down_sc_denom, down_sc_denom, ROUND_UP); -2441: -2441: -2441: if (pinf_count <= 1) { -2441: -2441: if (down_sc_denom != 1) { -2441: div_assign_r(sum, sum, down_sc_denom, ROUND_UP); -2441: } -2441: -2441: if (pinf_count == 0) { -2441: -2441: dbm[0][v] = sum; -2441: -2441: deduce_v_minus_u_bounds(v, w, sc_expr, sc_denom, sum); -2441: } -2441: else { -2441: -2441: if (pinf_index != v -2441: && sc_expr.get(Variable(pinf_index - 1)) == sc_denom) { -2441: -2441: dbm[pinf_index][v] = sum; -2441: } -2441: } -2441: } -2441: -2441: -2441: if (neg_pinf_count <= 1) { -2441: -2441: if (down_sc_denom != 1) { -2441: div_assign_r(neg_sum, neg_sum, down_sc_denom, ROUND_UP); -2441: } -2441: -2441: if (neg_pinf_count == 0) { -2441: -2441: DB_Row& dbm_v = dbm[v]; -2441: dbm_v[0] = neg_sum; -2441: -2441: deduce_u_minus_v_bounds(v, w, sc_expr, sc_denom, neg_sum); -2441: } -2441: -2441: else if (neg_pinf_index != v -2441: && sc_expr.get(Variable(neg_pinf_index - 1)) == sc_denom) { -2441: -2441: -2441: dbm[v][neg_pinf_index] = neg_sum; -2441: } -2441: } -2441: } -2441: break; -2441: -2441: case LESS_OR_EQUAL: -2441: -2441: -2441: -2441: -2441: assign_r(sum, sc_b, ROUND_UP); -2441: -2441: -2441: -2441: -2441: for (Linear_Expression::const_iterator i = sc_expr.begin(), -2441: i_end = sc_expr.lower_bound(Variable(w)); i != i_end; ++i) { -2441: const Coefficient& sc_i = *i; -2441: const dimension_type i_dim = i.variable().space_dimension(); -2441: const int sign_i = sgn(sc_i); -2441: ((void) 0); -2441: -2441: const N& approx_i = (sign_i > 0) ? dbm_0[i_dim] : dbm[i_dim][0]; -2441: if (is_plus_infinity(approx_i)) { -2441: if (++pinf_count > 1) { -2441: break; -2441: } -2441: pinf_index = i_dim; -2441: continue; -2441: } -2441: if (sign_i > 0) { -2441: assign_r(coeff_i, sc_i, ROUND_UP); -2441: } -2441: else { -2441: neg_assign(minus_sc_i, sc_i); -2441: assign_r(coeff_i, minus_sc_i, ROUND_UP); -2441: } -2441: add_mul_assign_r(sum, coeff_i, approx_i, ROUND_UP); -2441: } -2441: -2441: -2441: if (sc_denom != 1) { -2441: -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_down_sc_denom; N& down_sc_denom = holder_down_sc_denom.item(); -2441: assign_r(down_sc_denom, minus_sc_denom, ROUND_UP); -2441: neg_assign_r(down_sc_denom, down_sc_denom, ROUND_UP); -2441: div_assign_r(sum, sum, down_sc_denom, ROUND_UP); -2441: } -2441: -2441: if (pinf_count == 0) { -2441: -2441: add_dbm_constraint(0, v, sum); -2441: -2441: deduce_v_minus_u_bounds(v, w, sc_expr, sc_denom, sum); -2441: } -2441: else if (pinf_count == 1) { -2441: if (expr.get(Variable(pinf_index - 1)) == denominator) { -2441: -2441: add_dbm_constraint(pinf_index, v, sum); -2441: } -2441: } -2441: break; -2441: -2441: case GREATER_OR_EQUAL: -2441: -2441: -2441: -2441: -2441: -2441: assign_r(sum, minus_sc_b, ROUND_UP); -2441: -2441: -2441: for (Linear_Expression::const_iterator i = sc_expr.begin(), -2441: i_end = sc_expr.lower_bound(Variable(w)); i != i_end; ++i) { -2441: const Coefficient& sc_i = *i; -2441: const dimension_type i_dim = i.variable().space_dimension(); -2441: const int sign_i = sgn(sc_i); -2441: ((void) 0); -2441: -2441: const N& approx_i = (sign_i > 0) ? dbm[i_dim][0] : dbm_0[i_dim]; -2441: if (is_plus_infinity(approx_i)) { -2441: if (++pinf_count > 1) { -2441: break; -2441: } -2441: pinf_index = i_dim; -2441: continue; -2441: } -2441: if (sign_i > 0) { -2441: assign_r(coeff_i, sc_i, ROUND_UP); -2441: } -2441: else { -2441: neg_assign(minus_sc_i, sc_i); -2441: assign_r(coeff_i, minus_sc_i, ROUND_UP); -2441: } -2441: add_mul_assign_r(sum, coeff_i, approx_i, ROUND_UP); -2441: } -2441: -2441: -2441: if (sc_denom != 1) { -2441: -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_down_sc_denom; N& down_sc_denom = holder_down_sc_denom.item(); -2441: assign_r(down_sc_denom, minus_sc_denom, ROUND_UP); -2441: neg_assign_r(down_sc_denom, down_sc_denom, ROUND_UP); -2441: div_assign_r(sum, sum, down_sc_denom, ROUND_UP); -2441: } -2441: -2441: if (pinf_count == 0) { -2441: -2441: add_dbm_constraint(v, 0, sum); -2441: -2441: deduce_u_minus_v_bounds(v, w, sc_expr, sc_denom, sum); -2441: } -2441: else if (pinf_count == 1) { -2441: if (pinf_index != v -2441: && expr.get(Variable(pinf_index - 1)) == denominator) { -2441: -2441: -2441: add_dbm_constraint(v, pinf_index, sum); -2441: } -2441: } -2441: break; -2441: -2441: default: -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::affine_image(const Variable var, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference denominator) { -2441: -2441: if (denominator == 0) { -2441: throw_invalid_argument("affine_image(v, e, d)", "d == 0"); -2441: } -2441: -2441: -2441: -2441: const dimension_type space_dim = space_dimension(); -2441: const dimension_type expr_space_dim = expr.space_dimension(); -2441: if (space_dim < expr_space_dim) { -2441: throw_dimension_incompatible("affine_image(v, e, d)", "e", expr); -2441: } -2441: -2441: const dimension_type v = var.id() + 1; -2441: if (v > space_dim) { -2441: throw_dimension_incompatible("affine_image(v, e, d)", var.id()); -2441: } -2441: -2441: shortest_path_closure_assign(); -2441: if (marked_empty()) { -2441: return; -2441: } -2441: const Coefficient& b = expr.inhomogeneous_term(); -2441: -2441: -2441: dimension_type t = 0; -2441: -2441: dimension_type w = expr.last_nonzero(); -2441: -2441: if (w != 0) { -2441: ++t; -2441: if (!expr.all_zeroes(1, w)) { -2441: ++t; -2441: } -2441: } -2441: # 4071 "../../src/BD_Shape_templates.hh" -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_denom; Parma_Polyhedra_Library::Coefficient& minus_denom = holder_minus_denom.item(); -2441: neg_assign(minus_denom, denominator); -2441: -2441: if (t == 0) { -2441: -2441: -2441: forget_all_dbm_constraints(v); -2441: -2441: if (marked_shortest_path_reduced()) { -2441: reset_shortest_path_reduced(); -2441: } -2441: -2441: add_dbm_constraint(0, v, b, denominator); -2441: add_dbm_constraint(v, 0, b, minus_denom); -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: if (t == 1) { -2441: -2441: const Coefficient& a = expr.get(Variable(w - 1)); -2441: if (a == denominator || a == minus_denom) { -2441: -2441: if (w == v) { -2441: -2441: if (a == denominator) { -2441: if (b == 0) { -2441: -2441: return; -2441: } -2441: else { -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_d; N& d = holder_d.item(); -2441: div_round_up(d, b, denominator); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_c; N& c = holder_c.item(); -2441: div_round_up(c, b, minus_denom); -2441: DB_Row& dbm_v = dbm[v]; -2441: for (dimension_type i = space_dim + 1; i-- > 0; ) { -2441: N& dbm_vi = dbm_v[i]; -2441: add_assign_r(dbm_vi, dbm_vi, c, ROUND_UP); -2441: N& dbm_iv = dbm[i][v]; -2441: add_assign_r(dbm_iv, dbm_iv, d, ROUND_UP); -2441: } -2441: -2441: } -2441: } -2441: else { -2441: -2441: -2441: forget_binary_dbm_constraints(v); -2441: -2441: using std::swap; -2441: swap(dbm[v][0], dbm[0][v]); -2441: -2441: reset_shortest_path_closed(); -2441: if (b != 0) { -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_c; N& c = holder_c.item(); -2441: div_round_up(c, b, minus_denom); -2441: N& dbm_v0 = dbm[v][0]; -2441: add_assign_r(dbm_v0, dbm_v0, c, ROUND_UP); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_d; N& d = holder_d.item(); -2441: div_round_up(d, b, denominator); -2441: N& dbm_0v = dbm[0][v]; -2441: add_assign_r(dbm_0v, dbm_0v, d, ROUND_UP); -2441: } -2441: } -2441: } -2441: else { -2441: -2441: -2441: -2441: forget_all_dbm_constraints(v); -2441: -2441: if (marked_shortest_path_reduced()) { -2441: reset_shortest_path_reduced(); -2441: } -2441: if (a == denominator) { -2441: -2441: add_dbm_constraint(w, v, b, denominator); -2441: add_dbm_constraint(v, w, b, minus_denom); -2441: } -2441: else { -2441: -2441: -2441: -2441: const N& dbm_w0 = dbm[w][0]; -2441: if (!is_plus_infinity(dbm_w0)) { -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_d; N& d = holder_d.item(); -2441: div_round_up(d, b, denominator); -2441: add_assign_r(dbm[0][v], d, dbm_w0, ROUND_UP); -2441: reset_shortest_path_closed(); -2441: } -2441: const N& dbm_0w = dbm[0][w]; -2441: if (!is_plus_infinity(dbm_0w)) { -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_c; N& c = holder_c.item(); -2441: div_round_up(c, b, minus_denom); -2441: add_assign_r(dbm[v][0], dbm_0w, c, ROUND_UP); -2441: reset_shortest_path_closed(); -2441: } -2441: } -2441: } -2441: ((void) 0); -2441: return; -2441: } -2441: } -2441: # 4194 "../../src/BD_Shape_templates.hh" -2441: const bool is_sc = (denominator > 0); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_b; Parma_Polyhedra_Library::Coefficient& minus_b = holder_minus_b.item(); -2441: neg_assign(minus_b, b); -2441: const Coefficient& sc_b = is_sc ? b : minus_b; -2441: const Coefficient& minus_sc_b = is_sc ? minus_b : b; -2441: const Coefficient& sc_denom = is_sc ? denominator : minus_denom; -2441: const Coefficient& minus_sc_denom = is_sc ? minus_denom : denominator; -2441: -2441: -2441: -2441: Linear_Expression minus_expr; -2441: if (!is_sc) { -2441: minus_expr = -expr; -2441: } -2441: const Linear_Expression& sc_expr = is_sc ? expr : minus_expr; -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_pos_sum; N& pos_sum = holder_pos_sum.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_neg_sum; N& neg_sum = holder_neg_sum.item(); -2441: -2441: dimension_type pos_pinf_index = Suppress_Uninitialized_Warnings_Type::synonym(); -2441: dimension_type neg_pinf_index = Suppress_Uninitialized_Warnings_Type::synonym(); -2441: -2441: dimension_type pos_pinf_count = 0; -2441: dimension_type neg_pinf_count = 0; -2441: -2441: -2441: assign_r(pos_sum, sc_b, ROUND_UP); -2441: assign_r(neg_sum, minus_sc_b, ROUND_UP); -2441: -2441: -2441: const DB_Row& dbm_0 = dbm[0]; -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_coeff_i; N& coeff_i = holder_coeff_i.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_sc_i; Parma_Polyhedra_Library::Coefficient& minus_sc_i = holder_minus_sc_i.item(); -2441: -2441: -2441: -2441: for (Linear_Expression::const_iterator i = sc_expr.begin(), -2441: i_end = sc_expr.lower_bound(Variable(w)); i != i_end; ++i) { -2441: const Coefficient& sc_i = *i; -2441: const dimension_type i_dim = i.variable().space_dimension(); -2441: const int sign_i = sgn(sc_i); -2441: if (sign_i > 0) { -2441: assign_r(coeff_i, sc_i, ROUND_UP); -2441: -2441: if (pos_pinf_count <= 1) { -2441: const N& up_approx_i = dbm_0[i_dim]; -2441: if (!is_plus_infinity(up_approx_i)) { -2441: add_mul_assign_r(pos_sum, coeff_i, up_approx_i, ROUND_UP); -2441: } -2441: else { -2441: ++pos_pinf_count; -2441: pos_pinf_index = i_dim; -2441: } -2441: } -2441: -2441: if (neg_pinf_count <= 1) { -2441: const N& up_approx_minus_i = dbm[i_dim][0]; -2441: if (!is_plus_infinity(up_approx_minus_i)) { -2441: add_mul_assign_r(neg_sum, coeff_i, up_approx_minus_i, ROUND_UP); -2441: } -2441: else { -2441: ++neg_pinf_count; -2441: neg_pinf_index = i_dim; -2441: } -2441: } -2441: } -2441: else { -2441: ((void) 0); -2441: neg_assign(minus_sc_i, sc_i); -2441: -2441: assign_r(coeff_i, minus_sc_i, ROUND_UP); -2441: -2441: if (pos_pinf_count <= 1) { -2441: const N& up_approx_minus_i = dbm[i_dim][0]; -2441: if (!is_plus_infinity(up_approx_minus_i)) { -2441: add_mul_assign_r(pos_sum, coeff_i, up_approx_minus_i, ROUND_UP); -2441: } -2441: else { -2441: ++pos_pinf_count; -2441: pos_pinf_index = i_dim; -2441: } -2441: } -2441: -2441: if (neg_pinf_count <= 1) { -2441: const N& up_approx_i = dbm_0[i_dim]; -2441: if (!is_plus_infinity(up_approx_i)) { -2441: add_mul_assign_r(neg_sum, coeff_i, up_approx_i, ROUND_UP); -2441: } -2441: else { -2441: ++neg_pinf_count; -2441: neg_pinf_index = i_dim; -2441: } -2441: } -2441: } -2441: } -2441: -2441: -2441: forget_all_dbm_constraints(v); -2441: -2441: if (marked_shortest_path_reduced()) { -2441: reset_shortest_path_reduced(); -2441: } -2441: -2441: if (pos_pinf_count > 1 && neg_pinf_count > 1) { -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: -2441: reset_shortest_path_closed(); -2441: -2441: -2441: if (pos_pinf_count <= 1) { -2441: -2441: if (sc_denom != 1) { -2441: -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_down_sc_denom; N& down_sc_denom = holder_down_sc_denom.item(); -2441: assign_r(down_sc_denom, minus_sc_denom, ROUND_UP); -2441: neg_assign_r(down_sc_denom, down_sc_denom, ROUND_UP); -2441: div_assign_r(pos_sum, pos_sum, down_sc_denom, ROUND_UP); -2441: } -2441: -2441: if (pos_pinf_count == 0) { -2441: -2441: dbm[0][v] = pos_sum; -2441: -2441: deduce_v_minus_u_bounds(v, w, sc_expr, sc_denom, pos_sum); -2441: } -2441: else if (pos_pinf_index != v -2441: && sc_expr.get(Variable(pos_pinf_index - 1)) == sc_denom) { -2441: -2441: dbm[pos_pinf_index][v] = pos_sum; -2441: } -2441: } -2441: -2441: -2441: if (neg_pinf_count <= 1) { -2441: -2441: if (sc_denom != 1) { -2441: -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_down_sc_denom; N& down_sc_denom = holder_down_sc_denom.item(); -2441: assign_r(down_sc_denom, minus_sc_denom, ROUND_UP); -2441: neg_assign_r(down_sc_denom, down_sc_denom, ROUND_UP); -2441: div_assign_r(neg_sum, neg_sum, down_sc_denom, ROUND_UP); -2441: } -2441: -2441: if (neg_pinf_count == 0) { -2441: -2441: DB_Row& dbm_v = dbm[v]; -2441: dbm_v[0] = neg_sum; -2441: -2441: deduce_u_minus_v_bounds(v, w, sc_expr, sc_denom, neg_sum); -2441: } -2441: -2441: else if (neg_pinf_index != v -2441: && sc_expr.get(Variable(neg_pinf_index - 1)) == sc_denom) { -2441: -2441: -2441: dbm[v][neg_pinf_index] = neg_sum; -2441: } -2441: } -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: template -2441: void -2441: BD_Shape::affine_form_image(const Variable var, -2441: const Linear_Form< Interval >& lf) { -2441: -2441: -2441: enum anonymous_enum_compile_time_check___LINE__ { compile_time_check_4375 = sizeof(Parma_Polyhedra_Library::Compile_Time_Check<(!std::numeric_limits::is_exact)>) } -2441: -2441: ; -2441: -2441: -2441: -2441: -2441: const dimension_type space_dim = space_dimension(); -2441: const dimension_type lf_space_dim = lf.space_dimension(); -2441: if (space_dim < lf_space_dim) { -2441: throw_dimension_incompatible("affine_form_image(var_id, l)", "l", lf); -2441: } -2441: -2441: const dimension_type var_id = var.id() + 1; -2441: if (space_dim < var_id) { -2441: throw_dimension_incompatible("affine_form_image(var_id, l)", var.id()); -2441: } -2441: -2441: shortest_path_closure_assign(); -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: -2441: dimension_type t = 0; -2441: -2441: dimension_type w_id = 0; -2441: -2441: for (dimension_type i = lf_space_dim; i-- > 0; ) { -2441: if (lf.coefficient(Variable(i)) != 0) { -2441: if (t++ == 1) { -2441: break; -2441: } -2441: else { -2441: w_id = i + 1; -2441: } -2441: } -2441: } -2441: typedef Interval FP_Interval_Type; -2441: -2441: const FP_Interval_Type& b = lf.inhomogeneous_term(); -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: if (t == 0) { -2441: inhomogeneous_affine_form_image(var_id, b); -2441: ((void) 0); -2441: return; -2441: } -2441: else if (t == 1) { -2441: const FP_Interval_Type& w_coeff = lf.coefficient(Variable(w_id - 1)); -2441: if (w_coeff == 1 || w_coeff == -1) { -2441: one_variable_affine_form_image(var_id, b, w_coeff, w_id, space_dim); -2441: ((void) 0); -2441: return; -2441: } -2441: } -2441: two_variables_affine_form_image(var_id, lf, space_dim); -2441: ((void) 0); -2441: } -2441: -2441: -2441: template -2441: template -2441: void -2441: BD_Shape -2441: ::inhomogeneous_affine_form_image(const dimension_type& var_id, -2441: const Interval& b) { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_b_ub; N& b_ub = holder_b_ub.item(); -2441: assign_r(b_ub, b.upper(), ROUND_NOT_NEEDED); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_b_mlb; N& b_mlb = holder_b_mlb.item(); -2441: neg_assign_r(b_mlb, b.lower(), ROUND_NOT_NEEDED); -2441: -2441: -2441: forget_all_dbm_constraints(var_id); -2441: -2441: if (marked_shortest_path_reduced()) { -2441: reset_shortest_path_reduced(); -2441: } -2441: -2441: add_dbm_constraint(0, var_id, b_ub); -2441: add_dbm_constraint(var_id, 0, b_mlb); -2441: return; -2441: } -2441: -2441: -2441: -2441: template -2441: template -2441: void BD_Shape -2441: ::one_variable_affine_form_image(const dimension_type& var_id, -2441: const Interval& b, -2441: const Interval& w_coeff, -2441: const dimension_type& w_id, -2441: const dimension_type& space_dim) { -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_b_ub; N& b_ub = holder_b_ub.item(); -2441: assign_r(b_ub, b.upper(), ROUND_NOT_NEEDED); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_b_mlb; N& b_mlb = holder_b_mlb.item(); -2441: neg_assign_r(b_mlb, b.lower(), ROUND_NOT_NEEDED); -2441: -2441: -2441: bool is_w_coeff_one = (w_coeff == 1); -2441: -2441: if (w_id == var_id) { -2441: -2441: bool is_b_zero = (b_mlb == 0 && b_ub == 0); -2441: -2441: if (is_w_coeff_one) { -2441: if (is_b_zero) { -2441: -2441: return; -2441: } -2441: else { -2441: -2441: -2441: DB_Row& dbm_v = dbm[var_id]; -2441: for (dimension_type i = space_dim + 1; i-- > 0; ) { -2441: N& dbm_vi = dbm_v[i]; -2441: add_assign_r(dbm_vi, dbm_vi, b_mlb, ROUND_UP); -2441: N& dbm_iv = dbm[i][var_id]; -2441: add_assign_r(dbm_iv, dbm_iv, b_ub, ROUND_UP); -2441: } -2441: -2441: } -2441: } -2441: else { -2441: -2441: -2441: forget_binary_dbm_constraints(var_id); -2441: using std::swap; -2441: swap(dbm[var_id][0], dbm[0][var_id]); -2441: -2441: reset_shortest_path_closed(); -2441: if (!is_b_zero) { -2441: -2441: -2441: N& dbm_v0 = dbm[var_id][0]; -2441: add_assign_r(dbm_v0, dbm_v0, b_mlb, ROUND_UP); -2441: N& dbm_0v = dbm[0][var_id]; -2441: add_assign_r(dbm_0v, dbm_0v, b_ub, ROUND_UP); -2441: } -2441: } -2441: } -2441: else { -2441: -2441: -2441: -2441: forget_all_dbm_constraints(var_id); -2441: -2441: if (marked_shortest_path_reduced()) { -2441: reset_shortest_path_reduced(); -2441: } -2441: if (is_w_coeff_one) { -2441: -2441: -2441: add_dbm_constraint(w_id, var_id, b_ub); -2441: add_dbm_constraint(var_id, w_id, b_mlb); -2441: } -2441: else { -2441: -2441: -2441: const N& mlb_w = dbm[w_id][0]; -2441: if (!is_plus_infinity(mlb_w)) { -2441: -2441: add_assign_r(dbm[0][var_id], b_ub, mlb_w, ROUND_UP); -2441: reset_shortest_path_closed(); -2441: } -2441: const N& ub_w = dbm[0][w_id]; -2441: if (!is_plus_infinity(ub_w)) { -2441: -2441: add_assign_r(dbm[var_id][0], ub_w, b_mlb, ROUND_UP); -2441: reset_shortest_path_closed(); -2441: } -2441: } -2441: } -2441: return; -2441: } -2441: -2441: -2441: -2441: -2441: -2441: template -2441: template -2441: void BD_Shape -2441: ::two_variables_affine_form_image(const dimension_type& var_id, -2441: const Linear_Form< Interval >& lf, -2441: const dimension_type& space_dim) { -2441: -2441: if (marked_shortest_path_reduced()) { -2441: reset_shortest_path_reduced(); -2441: } -2441: reset_shortest_path_closed(); -2441: -2441: Linear_Form< Interval > minus_lf(lf); -2441: minus_lf.negate(); -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_upper_bound; N& upper_bound = holder_upper_bound.item(); -2441: -2441: -2441: for (dimension_type curr_var = 1; curr_var < var_id; ++curr_var) { -2441: Variable current(curr_var - 1); -2441: linear_form_upper_bound(lf - current, upper_bound); -2441: assign_r(dbm[curr_var][var_id], upper_bound, ROUND_NOT_NEEDED); -2441: linear_form_upper_bound(minus_lf + current, upper_bound); -2441: assign_r(dbm[var_id][curr_var], upper_bound, ROUND_NOT_NEEDED); -2441: } -2441: for (dimension_type curr_var = var_id + 1; curr_var <= space_dim; -2441: ++curr_var) { -2441: Variable current(curr_var - 1); -2441: linear_form_upper_bound(lf - current, upper_bound); -2441: assign_r(dbm[curr_var][var_id], upper_bound, ROUND_NOT_NEEDED); -2441: linear_form_upper_bound(minus_lf + current, upper_bound); -2441: assign_r(dbm[var_id][curr_var], upper_bound, ROUND_NOT_NEEDED); -2441: } -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_lf_ub; N& lf_ub = holder_lf_ub.item(); -2441: linear_form_upper_bound(lf, lf_ub); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_lf_ub; N& minus_lf_ub = holder_minus_lf_ub.item(); -2441: linear_form_upper_bound(minus_lf, minus_lf_ub); -2441: assign_r(dbm[0][var_id], lf_ub, ROUND_NOT_NEEDED); -2441: assign_r(dbm[var_id][0], minus_lf_ub, ROUND_NOT_NEEDED); -2441: } -2441: -2441: template -2441: template -2441: void BD_Shape::refine_with_linear_form_inequality( -2441: const Linear_Form< Interval >& left, -2441: const Linear_Form< Interval >& right) { -2441: -2441: enum anonymous_enum_compile_time_check___LINE__ { compile_time_check_4611 = sizeof(Parma_Polyhedra_Library::Compile_Time_Check<(!std::numeric_limits::is_exact)>) } -2441: -2441: ; -2441: -2441: -2441: ((void) 0); -2441: -2441: -2441: -2441: -2441: const dimension_type left_space_dim = left.space_dimension(); -2441: const dimension_type space_dim = space_dimension(); -2441: if (space_dim < left_space_dim) { -2441: throw_dimension_incompatible( -2441: "refine_with_linear_form_inequality(left, right)", "left", left); -2441: } -2441: const dimension_type right_space_dim = right.space_dimension(); -2441: if (space_dim < right_space_dim) { -2441: throw_dimension_incompatible( -2441: "refine_with_linear_form_inequality(left, right)", "right", right); -2441: } -2441: -2441: -2441: dimension_type left_t = 0; -2441: -2441: dimension_type left_w_id = 0; -2441: -2441: -2441: dimension_type right_t = 0; -2441: -2441: dimension_type right_w_id = 0; -2441: -2441: typedef Interval FP_Interval_Type; -2441: -2441: -2441: for (dimension_type i = left_space_dim; i-- > 0; ) { -2441: if (left.coefficient(Variable(i)) != 0) { -2441: if (left_t++ == 1) { -2441: break; -2441: } -2441: else { -2441: left_w_id = i; -2441: } -2441: } -2441: } -2441: -2441: -2441: for (dimension_type i = right_space_dim; i-- > 0; ) { -2441: if (right.coefficient(Variable(i)) != 0) { -2441: if (right_t++ == 1) { -2441: break; -2441: } -2441: else { -2441: right_w_id = i; -2441: } -2441: } -2441: } -2441: -2441: const FP_Interval_Type& left_w_coeff = -2441: left.coefficient(Variable(left_w_id)); -2441: const FP_Interval_Type& right_w_coeff = -2441: right.coefficient(Variable(right_w_id)); -2441: -2441: if (left_t == 0) { -2441: if (right_t == 0) { -2441: -2441: -2441: ((void) 0); -2441: return; -2441: } -2441: else if (right_w_coeff == 1 || right_w_coeff == -1) { -2441: left_inhomogeneous_refine(right_t, right_w_id, left, right); -2441: ((void) 0); -2441: return; -2441: } -2441: } -2441: else if (left_t == 1) { -2441: if (left_w_coeff == 1 || left_w_coeff == -1) { -2441: if (right_t == 0 || (right_w_coeff == 1 || right_w_coeff == -1)) { -2441: left_one_var_refine(left_w_id, right_t, right_w_id, left, right); -2441: ((void) 0); -2441: return; -2441: } -2441: } -2441: } -2441: -2441: -2441: general_refine(left_w_id, right_w_id, left, right); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: template -2441: void -2441: BD_Shape -2441: ::export_interval_constraints(U& dest) const { -2441: const dimension_type space_dim = space_dimension(); -2441: if (space_dim > dest.space_dimension()) { -2441: throw std::invalid_argument( -2441: "BD_Shape::export_interval_constraints"); -2441: } -2441: -2441: -2441: shortest_path_closure_assign(); -2441: -2441: if (marked_empty()) { -2441: dest.set_empty(); -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp; N& tmp = holder_tmp.item(); -2441: const DB_Row& dbm_0 = dbm[0]; -2441: for (dimension_type i = space_dim; i-- > 0; ) { -2441: -2441: const N& u = dbm_0[i+1]; -2441: if (!is_plus_infinity(u)) { -2441: if (!dest.restrict_upper(i, u.raw_value())) { -2441: return; -2441: } -2441: } -2441: -2441: const N& negated_l = dbm[i+1][0]; -2441: if (!is_plus_infinity(negated_l)) { -2441: neg_assign_r(tmp, negated_l, ROUND_DOWN); -2441: if (!dest.restrict_lower(i, tmp.raw_value())) { -2441: return; -2441: } -2441: } -2441: } -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: template -2441: void -2441: BD_Shape::left_inhomogeneous_refine(const dimension_type& right_t, -2441: const dimension_type& right_w_id, -2441: const Linear_Form< Interval >& left, -2441: const Linear_Form< Interval >& right) { -2441: -2441: typedef Interval FP_Interval_Type; -2441: -2441: if (right_t == 1) { -2441: -2441: -2441: const FP_Interval_Type& right_w_coeff = -2441: right.coefficient(Variable(right_w_id)); -2441: if (right_w_coeff == 1) { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_b_plus_minus_a_minus; N& b_plus_minus_a_minus = holder_b_plus_minus_a_minus.item(); -2441: const FP_Interval_Type& left_a = left.inhomogeneous_term(); -2441: const FP_Interval_Type& right_b = right.inhomogeneous_term(); -2441: sub_assign_r(b_plus_minus_a_minus, right_b.upper(), left_a.lower(), -2441: ROUND_UP); -2441: add_dbm_constraint(right_w_id+1, 0, b_plus_minus_a_minus); -2441: return; -2441: } -2441: -2441: if (right_w_coeff == -1) { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_b_plus_minus_a_minus; N& b_plus_minus_a_minus = holder_b_plus_minus_a_minus.item(); -2441: const FP_Interval_Type& left_a = left.inhomogeneous_term(); -2441: const FP_Interval_Type& right_b = right.inhomogeneous_term(); -2441: sub_assign_r(b_plus_minus_a_minus, right_b.upper(), left_a.lower(), -2441: ROUND_UP); -2441: add_dbm_constraint(0, right_w_id+1, b_plus_minus_a_minus); -2441: return; -2441: } -2441: } -2441: } -2441: -2441: -2441: template -2441: template -2441: void -2441: BD_Shape -2441: ::left_one_var_refine(const dimension_type& left_w_id, -2441: const dimension_type& right_t, -2441: const dimension_type& right_w_id, -2441: const Linear_Form< Interval >& left, -2441: const Linear_Form< Interval >& right) { -2441: -2441: typedef Interval FP_Interval_Type; -2441: -2441: if (right_t == 0) { -2441: -2441: -2441: const FP_Interval_Type& left_w_coeff = -2441: left.coefficient(Variable(left_w_id)); -2441: -2441: if (left_w_coeff == 1) { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_a_plus_minus_b_minus; N& a_plus_minus_b_minus = holder_a_plus_minus_b_minus.item(); -2441: const FP_Interval_Type& left_b = left.inhomogeneous_term(); -2441: const FP_Interval_Type& right_a = right.inhomogeneous_term(); -2441: sub_assign_r(a_plus_minus_b_minus, right_a.upper(), left_b.lower(), -2441: ROUND_UP); -2441: add_dbm_constraint(0, left_w_id+1, a_plus_minus_b_minus); -2441: return; -2441: } -2441: -2441: if (left_w_coeff == -1) { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_a_plus_minus_b_minus; N& a_plus_minus_b_minus = holder_a_plus_minus_b_minus.item(); -2441: const FP_Interval_Type& left_b = left.inhomogeneous_term(); -2441: const FP_Interval_Type& right_a = right.inhomogeneous_term(); -2441: sub_assign_r(a_plus_minus_b_minus, right_a.upper(), left_b.lower(), -2441: ROUND_UP); -2441: add_dbm_constraint(left_w_id+1, 0, a_plus_minus_b_minus); -2441: return; -2441: } -2441: } -2441: else if (right_t == 1) { -2441: -2441: -2441: -2441: -2441: const FP_Interval_Type& left_w_coeff = -2441: left.coefficient(Variable(left_w_id)); -2441: -2441: const FP_Interval_Type& right_w_coeff = -2441: right.coefficient(Variable(right_w_id)); -2441: -2441: bool is_left_coeff_one = (left_w_coeff == 1); -2441: bool is_left_coeff_minus_one = (left_w_coeff == -1); -2441: bool is_right_coeff_one = (right_w_coeff == 1); -2441: bool is_right_coeff_minus_one = (right_w_coeff == -1); -2441: if (left_w_id == right_w_id) { -2441: if ((is_left_coeff_one && is_right_coeff_one) -2441: || -2441: (is_left_coeff_minus_one && is_right_coeff_minus_one)) { -2441: -2441: return; -2441: } -2441: if (is_left_coeff_one && is_right_coeff_minus_one) { -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_a_plus_minus_b_minus; N& a_plus_minus_b_minus = holder_a_plus_minus_b_minus.item(); -2441: const FP_Interval_Type& left_b = left.inhomogeneous_term(); -2441: const FP_Interval_Type& right_a = right.inhomogeneous_term(); -2441: sub_assign_r(a_plus_minus_b_minus, right_a.upper(), left_b.lower(), -2441: ROUND_UP); -2441: div_2exp_assign_r(a_plus_minus_b_minus, a_plus_minus_b_minus, 1, -2441: ROUND_UP); -2441: add_dbm_constraint(0, left_w_id + 1, a_plus_minus_b_minus); -2441: return; -2441: } -2441: if (is_left_coeff_minus_one && is_right_coeff_one) { -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_a_plus_minus_b_minus; N& a_plus_minus_b_minus = holder_a_plus_minus_b_minus.item(); -2441: const FP_Interval_Type& left_b = left.inhomogeneous_term(); -2441: const FP_Interval_Type& right_a = right.inhomogeneous_term(); -2441: sub_assign_r(a_plus_minus_b_minus, right_a.upper(), left_b.lower(), -2441: ROUND_UP); -2441: div_2exp_assign_r(a_plus_minus_b_minus, a_plus_minus_b_minus, 1, -2441: ROUND_UP); -2441: add_dbm_constraint(right_w_id + 1, 0, a_plus_minus_b_minus); -2441: return; -2441: } -2441: } -2441: else if (is_left_coeff_minus_one && is_right_coeff_one) { -2441: -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_a_plus_minus_b_minus; N& a_plus_minus_b_minus = holder_a_plus_minus_b_minus.item(); -2441: const FP_Interval_Type& left_b = left.inhomogeneous_term(); -2441: const FP_Interval_Type& right_a = right.inhomogeneous_term(); -2441: sub_assign_r(a_plus_minus_b_minus, right_a.upper(), left_b.lower(), -2441: ROUND_UP); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_ub; N& ub = holder_ub.item(); -2441: ub = dbm[0][right_w_id + 1]; -2441: if (!is_plus_infinity(ub)) { -2441: add_assign_r(ub, ub, a_plus_minus_b_minus, ROUND_UP); -2441: add_dbm_constraint(left_w_id + 1, 0, ub); -2441: } -2441: ub = dbm[0][left_w_id + 1]; -2441: if (!is_plus_infinity(ub)) { -2441: add_assign_r(ub, ub, a_plus_minus_b_minus, ROUND_UP); -2441: add_dbm_constraint(right_w_id + 1, 0, ub); -2441: } -2441: return; -2441: } -2441: if (is_left_coeff_one && is_right_coeff_minus_one) { -2441: -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_a_plus_minus_b_minus; N& a_plus_minus_b_minus = holder_a_plus_minus_b_minus.item(); -2441: const FP_Interval_Type& left_b = left.inhomogeneous_term(); -2441: const FP_Interval_Type& right_a = right.inhomogeneous_term(); -2441: sub_assign_r(a_plus_minus_b_minus, right_a.upper(), left_b.lower(), -2441: ROUND_UP); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_ub; N& ub = holder_ub.item(); -2441: ub = dbm[right_w_id + 1][0]; -2441: if (!is_plus_infinity(ub)) { -2441: add_assign_r(ub, ub, a_plus_minus_b_minus, ROUND_UP); -2441: add_dbm_constraint(0, left_w_id + 1, ub); -2441: } -2441: ub = dbm[left_w_id + 1][0]; -2441: if (!is_plus_infinity(ub)) { -2441: add_assign_r(ub, ub, a_plus_minus_b_minus, ROUND_UP); -2441: add_dbm_constraint(0, right_w_id + 1, ub); -2441: } -2441: return; -2441: } -2441: if (is_left_coeff_one && is_right_coeff_one) { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_c_plus_minus_a_minus; N& c_plus_minus_a_minus = holder_c_plus_minus_a_minus.item(); -2441: const FP_Interval_Type& left_a = left.inhomogeneous_term(); -2441: const FP_Interval_Type& right_c = right.inhomogeneous_term(); -2441: sub_assign_r(c_plus_minus_a_minus, right_c.upper(), left_a.lower(), -2441: ROUND_UP); -2441: add_dbm_constraint(right_w_id+1, left_w_id+1, c_plus_minus_a_minus); -2441: return; -2441: } -2441: if (is_left_coeff_minus_one && is_right_coeff_minus_one) { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_c_plus_minus_a_minus; N& c_plus_minus_a_minus = holder_c_plus_minus_a_minus.item(); -2441: const FP_Interval_Type& left_a = left.inhomogeneous_term(); -2441: const FP_Interval_Type& right_c = right.inhomogeneous_term(); -2441: sub_assign_r(c_plus_minus_a_minus, right_c.upper(), left_a.lower(), -2441: ROUND_UP); -2441: add_dbm_constraint(left_w_id+1, right_w_id+1, c_plus_minus_a_minus); -2441: return; -2441: } -2441: } -2441: } -2441: -2441: template -2441: template -2441: void -2441: BD_Shape -2441: ::general_refine(const dimension_type& left_w_id, -2441: const dimension_type& right_w_id, -2441: const Linear_Form< Interval >& left, -2441: const Linear_Form< Interval >& right) { -2441: -2441: typedef Interval FP_Interval_Type; -2441: Linear_Form right_minus_left(right); -2441: right_minus_left -= left; -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_low_coeff; N& low_coeff = holder_low_coeff.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_high_coeff; N& high_coeff = holder_high_coeff.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_upper_bound; N& upper_bound = holder_upper_bound.item(); -2441: -2441: dimension_type max_w_id = std::max(left_w_id, right_w_id); -2441: -2441: for (dimension_type first_v = 0; first_v < max_w_id; ++first_v) { -2441: for (dimension_type second_v = first_v+1; -2441: second_v <= max_w_id; ++second_v) { -2441: const FP_Interval_Type& lfv_coefficient = -2441: left.coefficient(Variable(first_v)); -2441: const FP_Interval_Type& lsv_coefficient = -2441: left.coefficient(Variable(second_v)); -2441: const FP_Interval_Type& rfv_coefficient = -2441: right.coefficient(Variable(first_v)); -2441: const FP_Interval_Type& rsv_coefficient = -2441: right.coefficient(Variable(second_v)); -2441: -2441: -2441: bool do_update = false; -2441: assign_r(low_coeff, lfv_coefficient.lower(), ROUND_NOT_NEEDED); -2441: assign_r(high_coeff, lfv_coefficient.upper(), ROUND_NOT_NEEDED); -2441: if (low_coeff != 0 || high_coeff != 0) { -2441: assign_r(low_coeff, lsv_coefficient.lower(), ROUND_NOT_NEEDED); -2441: assign_r(high_coeff, lsv_coefficient.upper(), ROUND_NOT_NEEDED); -2441: if (low_coeff != 0 || high_coeff != 0) { -2441: do_update = true; -2441: } -2441: else { -2441: assign_r(low_coeff, rsv_coefficient.lower(), ROUND_NOT_NEEDED); -2441: assign_r(high_coeff, rsv_coefficient.upper(), ROUND_NOT_NEEDED); -2441: if (low_coeff != 0 || high_coeff != 0) { -2441: do_update = true; -2441: } -2441: } -2441: } -2441: else { -2441: assign_r(low_coeff, rfv_coefficient.lower(), ROUND_NOT_NEEDED); -2441: assign_r(high_coeff, rfv_coefficient.upper(), ROUND_NOT_NEEDED); -2441: if (low_coeff != 0 || high_coeff != 0) { -2441: assign_r(low_coeff, lsv_coefficient.lower(), ROUND_NOT_NEEDED); -2441: assign_r(high_coeff, lsv_coefficient.upper(), ROUND_NOT_NEEDED); -2441: if (low_coeff != 0 || high_coeff != 0) { -2441: do_update = true; -2441: } -2441: else { -2441: assign_r(low_coeff, rsv_coefficient.lower(), ROUND_NOT_NEEDED); -2441: assign_r(high_coeff, rsv_coefficient.upper(), ROUND_NOT_NEEDED); -2441: if (low_coeff != 0 || high_coeff != 0) { -2441: do_update = true; -2441: } -2441: } -2441: } -2441: } -2441: -2441: if (do_update) { -2441: Variable first(first_v); -2441: Variable second(second_v); -2441: dimension_type n_first_var = first_v +1 ; -2441: dimension_type n_second_var = second_v + 1; -2441: linear_form_upper_bound(right_minus_left - first + second, -2441: upper_bound); -2441: add_dbm_constraint(n_first_var, n_second_var, upper_bound); -2441: linear_form_upper_bound(right_minus_left + first - second, -2441: upper_bound); -2441: add_dbm_constraint(n_second_var, n_first_var, upper_bound); -2441: } -2441: } -2441: } -2441: -2441: -2441: for (dimension_type v = 0; v < max_w_id; ++v) { -2441: const FP_Interval_Type& lv_coefficient = -2441: left.coefficient(Variable(v)); -2441: const FP_Interval_Type& rv_coefficient = -2441: right.coefficient(Variable(v)); -2441: -2441: -2441: bool do_update = false; -2441: assign_r(low_coeff, lv_coefficient.lower(), ROUND_NOT_NEEDED); -2441: assign_r(high_coeff, lv_coefficient.upper(), ROUND_NOT_NEEDED); -2441: if (low_coeff != 0 || high_coeff != 0) { -2441: do_update = true; -2441: } -2441: else { -2441: assign_r(low_coeff, rv_coefficient.lower(), ROUND_NOT_NEEDED); -2441: assign_r(high_coeff, rv_coefficient.upper(), ROUND_NOT_NEEDED); -2441: if (low_coeff != 0 || high_coeff != 0) { -2441: do_update = true; -2441: } -2441: } -2441: -2441: if (do_update) { -2441: Variable var(v); -2441: dimension_type n_var = v + 1; -2441: linear_form_upper_bound(right_minus_left + var, upper_bound); -2441: add_dbm_constraint(0, n_var, upper_bound); -2441: linear_form_upper_bound(right_minus_left - var, upper_bound); -2441: add_dbm_constraint(n_var, 0, upper_bound); -2441: } -2441: } -2441: -2441: } -2441: -2441: template -2441: template -2441: void -2441: BD_Shape:: -2441: linear_form_upper_bound(const Linear_Form< Interval >& lf, -2441: N& result) const { -2441: -2441: -2441: enum anonymous_enum_compile_time_check___LINE__ { compile_time_check_5061 = sizeof(Parma_Polyhedra_Library::Compile_Time_Check<(!std::numeric_limits::is_exact)>) } -2441: -2441: ; -2441: -2441: const dimension_type lf_space_dimension = lf.space_dimension(); -2441: ((void) 0); -2441: -2441: typedef Interval FP_Interval_Type; -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_curr_lb; N& curr_lb = holder_curr_lb.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_curr_ub; N& curr_ub = holder_curr_ub.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_curr_var_ub; N& curr_var_ub = holder_curr_var_ub.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_curr_minus_var_ub; N& curr_minus_var_ub = holder_curr_minus_var_ub.item(); -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_first_comparison_term; N& first_comparison_term = holder_first_comparison_term.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_second_comparison_term; N& second_comparison_term = holder_second_comparison_term.item(); -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_negator; N& negator = holder_negator.item(); -2441: -2441: assign_r(result, lf.inhomogeneous_term().upper(), ROUND_NOT_NEEDED); -2441: -2441: for (dimension_type curr_var = 0, n_var = 0; curr_var < lf_space_dimension; -2441: ++curr_var) { -2441: n_var = curr_var + 1; -2441: const FP_Interval_Type& -2441: curr_coefficient = lf.coefficient(Variable(curr_var)); -2441: assign_r(curr_lb, curr_coefficient.lower(), ROUND_NOT_NEEDED); -2441: assign_r(curr_ub, curr_coefficient.upper(), ROUND_NOT_NEEDED); -2441: if (curr_lb != 0 || curr_ub != 0) { -2441: assign_r(curr_var_ub, dbm[0][n_var], ROUND_NOT_NEEDED); -2441: neg_assign_r(curr_minus_var_ub, dbm[n_var][0], ROUND_NOT_NEEDED); -2441: -2441: if (curr_lb == 1 && curr_ub == 1) { -2441: add_assign_r(result, result, std::max(curr_var_ub, curr_minus_var_ub), -2441: ROUND_UP); -2441: } -2441: else if (curr_lb == -1 && curr_ub == -1) { -2441: neg_assign_r(negator, std::min(curr_var_ub, curr_minus_var_ub), -2441: ROUND_NOT_NEEDED); -2441: add_assign_r(result, result, negator, ROUND_UP); -2441: } -2441: else { -2441: -2441: assign_r(first_comparison_term, 0, ROUND_NOT_NEEDED); -2441: assign_r(second_comparison_term, 0, ROUND_NOT_NEEDED); -2441: add_mul_assign_r(first_comparison_term, curr_var_ub, curr_ub, -2441: ROUND_UP); -2441: add_mul_assign_r(second_comparison_term, curr_var_ub, curr_lb, -2441: ROUND_UP); -2441: assign_r(first_comparison_term, std::max(first_comparison_term, -2441: second_comparison_term), -2441: ROUND_NOT_NEEDED); -2441: assign_r(second_comparison_term, 0, ROUND_NOT_NEEDED); -2441: add_mul_assign_r(second_comparison_term, curr_minus_var_ub, curr_ub, -2441: ROUND_UP); -2441: assign_r(first_comparison_term, std::max(first_comparison_term, -2441: second_comparison_term), -2441: ROUND_NOT_NEEDED); -2441: assign_r(second_comparison_term, 0, ROUND_NOT_NEEDED); -2441: add_mul_assign_r(second_comparison_term, curr_minus_var_ub, curr_lb, -2441: ROUND_UP); -2441: assign_r(first_comparison_term, std::max(first_comparison_term, -2441: second_comparison_term), -2441: ROUND_NOT_NEEDED); -2441: -2441: add_assign_r(result, result, first_comparison_term, ROUND_UP); -2441: } -2441: } -2441: } -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::affine_preimage(const Variable var, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference denominator) { -2441: -2441: if (denominator == 0) { -2441: throw_invalid_argument("affine_preimage(v, e, d)", "d == 0"); -2441: } -2441: -2441: -2441: -2441: const dimension_type space_dim = space_dimension(); -2441: const dimension_type expr_space_dim = expr.space_dimension(); -2441: if (space_dim < expr_space_dim) { -2441: throw_dimension_incompatible("affine_preimage(v, e, d)", "e", expr); -2441: } -2441: -2441: -2441: const dimension_type v = var.id() + 1; -2441: if (v > space_dim) { -2441: throw_dimension_incompatible("affine_preimage(v, e, d)", var.id()); -2441: } -2441: -2441: shortest_path_closure_assign(); -2441: if (marked_empty()) { -2441: return; -2441: } -2441: const Coefficient& b = expr.inhomogeneous_term(); -2441: -2441: -2441: dimension_type t = 0; -2441: -2441: dimension_type j = expr.last_nonzero(); -2441: -2441: if (j != 0) { -2441: ++t; -2441: if (!expr.all_zeroes(1, j)) { -2441: ++t; -2441: } -2441: } -2441: # 5179 "../../src/BD_Shape_templates.hh" -2441: if (t == 0) { -2441: -2441: forget_all_dbm_constraints(v); -2441: -2441: if (marked_shortest_path_reduced()) { -2441: reset_shortest_path_reduced(); -2441: } -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: if (t == 1) { -2441: -2441: const Coefficient& a = expr.get(Variable(j - 1)); -2441: if (a == denominator || a == -denominator) { -2441: -2441: if (j == var.space_dimension()) { -2441: -2441: affine_image(var, denominator*var - b, a); -2441: } -2441: else { -2441: -2441: -2441: forget_all_dbm_constraints(v); -2441: -2441: if (marked_shortest_path_reduced()) { -2441: reset_shortest_path_reduced(); -2441: } -2441: ((void) 0); -2441: } -2441: return; -2441: } -2441: } -2441: -2441: -2441: -2441: -2441: -2441: const Coefficient& expr_v = expr.coefficient(var); -2441: if (expr_v != 0) { -2441: -2441: Linear_Expression inverse((expr_v + denominator)*var); -2441: inverse -= expr; -2441: affine_image(var, inverse, expr_v); -2441: } -2441: else { -2441: -2441: forget_all_dbm_constraints(v); -2441: -2441: if (marked_shortest_path_reduced()) { -2441: reset_shortest_path_reduced(); -2441: } -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape -2441: ::bounded_affine_image(const Variable var, -2441: const Linear_Expression& lb_expr, -2441: const Linear_Expression& ub_expr, -2441: Coefficient_traits::const_reference denominator) { -2441: -2441: if (denominator == 0) { -2441: throw_invalid_argument("bounded_affine_image(v, lb, ub, d)", "d == 0"); -2441: } -2441: -2441: -2441: const dimension_type bds_space_dim = space_dimension(); -2441: const dimension_type v = var.id() + 1; -2441: if (v > bds_space_dim) { -2441: throw_dimension_incompatible("bounded_affine_image(v, lb, ub, d)", -2441: "v", var); -2441: } -2441: -2441: -2441: const dimension_type lb_space_dim = lb_expr.space_dimension(); -2441: if (bds_space_dim < lb_space_dim) { -2441: throw_dimension_incompatible("bounded_affine_image(v, lb, ub, d)", -2441: "lb", lb_expr); -2441: } -2441: const dimension_type ub_space_dim = ub_expr.space_dimension(); -2441: if (bds_space_dim < ub_space_dim) { -2441: throw_dimension_incompatible("bounded_affine_image(v, lb, ub, d)", -2441: "ub", ub_expr); -2441: } -2441: -2441: shortest_path_closure_assign(); -2441: if (marked_empty()) { -2441: return; -2441: } -2441: const Coefficient& b = ub_expr.inhomogeneous_term(); -2441: -2441: -2441: dimension_type t = 0; -2441: -2441: dimension_type w = ub_expr.last_nonzero(); -2441: -2441: if (w != 0) { -2441: ++t; -2441: if (!ub_expr.all_zeroes(1, w)) { -2441: ++t; -2441: } -2441: } -2441: # 5292 "../../src/BD_Shape_templates.hh" -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_denom; Parma_Polyhedra_Library::Coefficient& minus_denom = holder_minus_denom.item(); -2441: neg_assign(minus_denom, denominator); -2441: -2441: if (t == 0) { -2441: -2441: generalized_affine_image(var, -2441: GREATER_OR_EQUAL, -2441: lb_expr, -2441: denominator); -2441: -2441: add_dbm_constraint(0, v, b, denominator); -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: if (t == 1) { -2441: -2441: const Coefficient& a = ub_expr.get(Variable(w - 1)); -2441: if (a == denominator || a == minus_denom) { -2441: -2441: if (w == v) { -2441: -2441: -2441: const Variable new_var(bds_space_dim); -2441: add_space_dimensions_and_embed(1); -2441: -2441: affine_image(new_var, ub_expr, denominator); -2441: -2441: shortest_path_closure_assign(); -2441: ((void) 0); -2441: -2441: generalized_affine_image(var, -2441: GREATER_OR_EQUAL, -2441: lb_expr, -2441: denominator); -2441: -2441: add_constraint(var <= new_var); -2441: -2441: remove_higher_space_dimensions(bds_space_dim); -2441: return; -2441: } -2441: else { -2441: -2441: -2441: -2441: generalized_affine_image(var, -2441: GREATER_OR_EQUAL, -2441: lb_expr, -2441: denominator); -2441: if (a == denominator) { -2441: -2441: add_dbm_constraint(w, v, b, denominator); -2441: } -2441: else { -2441: -2441: -2441: -2441: const N& dbm_w0 = dbm[w][0]; -2441: if (!is_plus_infinity(dbm_w0)) { -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_d; N& d = holder_d.item(); -2441: div_round_up(d, b, denominator); -2441: add_assign_r(dbm[0][v], d, dbm_w0, ROUND_UP); -2441: reset_shortest_path_closed(); -2441: } -2441: } -2441: ((void) 0); -2441: return; -2441: } -2441: } -2441: } -2441: # 5373 "../../src/BD_Shape_templates.hh" -2441: const bool is_sc = (denominator > 0); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_b; Parma_Polyhedra_Library::Coefficient& minus_b = holder_minus_b.item(); -2441: neg_assign(minus_b, b); -2441: const Coefficient& sc_b = is_sc ? b : minus_b; -2441: const Coefficient& sc_denom = is_sc ? denominator : minus_denom; -2441: const Coefficient& minus_sc_denom = is_sc ? minus_denom : denominator; -2441: -2441: -2441: -2441: Linear_Expression minus_expr; -2441: if (!is_sc) { -2441: minus_expr = -ub_expr; -2441: } -2441: const Linear_Expression& sc_expr = is_sc ? ub_expr : minus_expr; -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_pos_sum; N& pos_sum = holder_pos_sum.item(); -2441: -2441: dimension_type pos_pinf_index = Suppress_Uninitialized_Warnings_Type::synonym(); -2441: -2441: dimension_type pos_pinf_count = 0; -2441: -2441: -2441: assign_r(pos_sum, sc_b, ROUND_UP); -2441: -2441: -2441: const DB_Row& dbm_0 = dbm[0]; -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_coeff_i; N& coeff_i = holder_coeff_i.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_sc_i; Parma_Polyhedra_Library::Coefficient& minus_sc_i = holder_minus_sc_i.item(); -2441: -2441: -2441: for (Linear_Expression::const_iterator i = sc_expr.begin(), -2441: i_end = sc_expr.lower_bound(Variable(w)); i != i_end; ++i) { -2441: const Coefficient& sc_i = *i; -2441: const dimension_type i_dim = i.variable().space_dimension(); -2441: const int sign_i = sgn(sc_i); -2441: if (sign_i > 0) { -2441: assign_r(coeff_i, sc_i, ROUND_UP); -2441: -2441: if (pos_pinf_count <= 1) { -2441: const N& up_approx_i = dbm_0[i_dim]; -2441: if (!is_plus_infinity(up_approx_i)) { -2441: add_mul_assign_r(pos_sum, coeff_i, up_approx_i, ROUND_UP); -2441: } -2441: else { -2441: ++pos_pinf_count; -2441: pos_pinf_index = i_dim; -2441: } -2441: } -2441: } -2441: else { -2441: ((void) 0); -2441: neg_assign(minus_sc_i, sc_i); -2441: -2441: assign_r(coeff_i, minus_sc_i, ROUND_UP); -2441: -2441: if (pos_pinf_count <= 1) { -2441: const N& up_approx_minus_i = dbm[i_dim][0]; -2441: if (!is_plus_infinity(up_approx_minus_i)) { -2441: add_mul_assign_r(pos_sum, coeff_i, up_approx_minus_i, ROUND_UP); -2441: } -2441: else { -2441: ++pos_pinf_count; -2441: pos_pinf_index = i_dim; -2441: } -2441: } -2441: } -2441: } -2441: -2441: generalized_affine_image(var, -2441: GREATER_OR_EQUAL, -2441: lb_expr, -2441: denominator); -2441: -2441: if (pos_pinf_count > 1) { -2441: return; -2441: } -2441: -2441: -2441: reset_shortest_path_closed(); -2441: -2441: -2441: if (pos_pinf_count <= 1) { -2441: -2441: if (sc_denom != 1) { -2441: -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_down_sc_denom; N& down_sc_denom = holder_down_sc_denom.item(); -2441: assign_r(down_sc_denom, minus_sc_denom, ROUND_UP); -2441: neg_assign_r(down_sc_denom, down_sc_denom, ROUND_UP); -2441: div_assign_r(pos_sum, pos_sum, down_sc_denom, ROUND_UP); -2441: } -2441: -2441: if (pos_pinf_count == 0) { -2441: -2441: dbm[0][v] = pos_sum; -2441: -2441: deduce_v_minus_u_bounds(v, w, sc_expr, sc_denom, pos_sum); -2441: } -2441: -2441: else if (pos_pinf_index != v -2441: && sc_expr.get(Variable(pos_pinf_index - 1)) == sc_denom) { -2441: -2441: dbm[pos_pinf_index][v] = pos_sum; -2441: } -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape -2441: ::bounded_affine_preimage(const Variable var, -2441: const Linear_Expression& lb_expr, -2441: const Linear_Expression& ub_expr, -2441: Coefficient_traits::const_reference denominator) { -2441: -2441: if (denominator == 0) { -2441: throw_invalid_argument("bounded_affine_preimage(v, lb, ub, d)", "d == 0"); -2441: } -2441: -2441: -2441: const dimension_type space_dim = space_dimension(); -2441: const dimension_type v = var.id() + 1; -2441: if (v > space_dim) { -2441: throw_dimension_incompatible("bounded_affine_preimage(v, lb, ub, d)", -2441: "v", var); -2441: } -2441: -2441: -2441: const dimension_type lb_space_dim = lb_expr.space_dimension(); -2441: if (space_dim < lb_space_dim) { -2441: throw_dimension_incompatible("bounded_affine_preimage(v, lb, ub, d)", -2441: "lb", lb_expr); -2441: } -2441: const dimension_type ub_space_dim = ub_expr.space_dimension(); -2441: if (space_dim < ub_space_dim) { -2441: throw_dimension_incompatible("bounded_affine_preimage(v, lb, ub, d)", -2441: "ub", ub_expr); -2441: } -2441: -2441: shortest_path_closure_assign(); -2441: if (marked_empty()) { -2441: return; -2441: } -2441: if (ub_expr.coefficient(var) == 0) { -2441: refine(var, LESS_OR_EQUAL, ub_expr, denominator); -2441: generalized_affine_preimage(var, GREATER_OR_EQUAL, -2441: lb_expr, denominator); -2441: return; -2441: } -2441: if (lb_expr.coefficient(var) == 0) { -2441: refine(var, GREATER_OR_EQUAL, lb_expr, denominator); -2441: generalized_affine_preimage(var, LESS_OR_EQUAL, -2441: ub_expr, denominator); -2441: return; -2441: } -2441: -2441: const Coefficient& lb_expr_v = lb_expr.coefficient(var); -2441: -2441: -2441: const Variable new_var(space_dim); -2441: add_space_dimensions_and_embed(1); -2441: const Linear_Expression lb_inverse -2441: = lb_expr - (lb_expr_v + denominator)*var; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_lb_inverse_denom; Parma_Polyhedra_Library::Coefficient& lb_inverse_denom = holder_lb_inverse_denom.item(); -2441: neg_assign(lb_inverse_denom, lb_expr_v); -2441: affine_image(new_var, lb_inverse, lb_inverse_denom); -2441: shortest_path_closure_assign(); -2441: ((void) 0); -2441: generalized_affine_preimage(var, LESS_OR_EQUAL, -2441: ub_expr, denominator); -2441: if (sgn(denominator) == sgn(lb_inverse_denom)) { -2441: add_constraint(var >= new_var); -2441: } -2441: else { -2441: add_constraint(var <= new_var); -2441: } -2441: -2441: remove_higher_space_dimensions(space_dim); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::generalized_affine_image(const Variable var, -2441: const Relation_Symbol relsym, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference -2441: denominator) { -2441: -2441: if (denominator == 0) { -2441: throw_invalid_argument("generalized_affine_image(v, r, e, d)", "d == 0"); -2441: } -2441: -2441: -2441: -2441: const dimension_type space_dim = space_dimension(); -2441: const dimension_type expr_space_dim = expr.space_dimension(); -2441: if (space_dim < expr_space_dim) { -2441: throw_dimension_incompatible("generalized_affine_image(v, r, e, d)", -2441: "e", expr); -2441: } -2441: -2441: const dimension_type v = var.id() + 1; -2441: if (v > space_dim) { -2441: throw_dimension_incompatible("generalized_affine_image(v, r, e, d)", -2441: var.id()); -2441: } -2441: -2441: if (relsym == LESS_THAN || relsym == GREATER_THAN) { -2441: throw_invalid_argument("generalized_affine_image(v, r, e, d)", -2441: "r is a strict relation symbol"); -2441: } -2441: -2441: if (relsym == NOT_EQUAL) { -2441: throw_invalid_argument("generalized_affine_image(v, r, e, d)", -2441: "r is the disequality relation symbol"); -2441: } -2441: if (relsym == EQUAL) { -2441: -2441: -2441: affine_image(var, expr, denominator); -2441: return; -2441: } -2441: -2441: -2441: shortest_path_closure_assign(); -2441: if (marked_empty()) { -2441: return; -2441: } -2441: const Coefficient& b = expr.inhomogeneous_term(); -2441: -2441: -2441: dimension_type t = 0; -2441: -2441: dimension_type w = expr.last_nonzero(); -2441: -2441: if (w != 0) { -2441: ++t; -2441: if (!expr.all_zeroes(1, w)) { -2441: ++t; -2441: } -2441: } -2441: # 5626 "../../src/BD_Shape_templates.hh" -2441: DB_Row& dbm_0 = dbm[0]; -2441: DB_Row& dbm_v = dbm[v]; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_denom; Parma_Polyhedra_Library::Coefficient& minus_denom = holder_minus_denom.item(); -2441: neg_assign(minus_denom, denominator); -2441: -2441: if (t == 0) { -2441: -2441: -2441: forget_all_dbm_constraints(v); -2441: -2441: reset_shortest_path_closed(); -2441: switch (relsym) { -2441: case LESS_OR_EQUAL: -2441: -2441: add_dbm_constraint(0, v, b, denominator); -2441: break; -2441: case GREATER_OR_EQUAL: -2441: -2441: -2441: add_dbm_constraint(v, 0, b, minus_denom); -2441: break; -2441: default: -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: if (t == 1) { -2441: -2441: const Coefficient& a = expr.get(Variable(w - 1)); -2441: if (a == denominator || a == minus_denom) { -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_d; N& d = holder_d.item(); -2441: switch (relsym) { -2441: case LESS_OR_EQUAL: -2441: div_round_up(d, b, denominator); -2441: if (w == v) { -2441: -2441: -2441: reset_shortest_path_closed(); -2441: if (a == denominator) { -2441: -2441: -2441: -2441: for (dimension_type i = space_dim + 1; i-- > 0; ) { -2441: N& dbm_iv = dbm[i][v]; -2441: add_assign_r(dbm_iv, dbm_iv, d, ROUND_UP); -2441: assign_r(dbm_v[i], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: } -2441: else { -2441: -2441: -2441: -2441: N& dbm_v0 = dbm_v[0]; -2441: add_assign_r(dbm_0[v], dbm_v0, d, ROUND_UP); -2441: -2441: assign_r(dbm_v0, PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: forget_binary_dbm_constraints(v); -2441: } -2441: } -2441: else { -2441: -2441: -2441: -2441: forget_all_dbm_constraints(v); -2441: -2441: if (marked_shortest_path_reduced()) { -2441: reset_shortest_path_reduced(); -2441: } -2441: if (a == denominator) { -2441: -2441: add_dbm_constraint(w, v, d); -2441: } -2441: else { -2441: -2441: -2441: -2441: const N& dbm_w0 = dbm[w][0]; -2441: if (!is_plus_infinity(dbm_w0)) { -2441: -2441: add_assign_r(dbm_0[v], d, dbm_w0, ROUND_UP); -2441: -2441: reset_shortest_path_closed(); -2441: } -2441: } -2441: } -2441: break; -2441: -2441: case GREATER_OR_EQUAL: -2441: div_round_up(d, b, minus_denom); -2441: if (w == v) { -2441: -2441: -2441: reset_shortest_path_closed(); -2441: if (a == denominator) { -2441: -2441: -2441: -2441: for (dimension_type i = space_dim + 1; i-- > 0; ) { -2441: N& dbm_vi = dbm_v[i]; -2441: add_assign_r(dbm_vi, dbm_vi, d, ROUND_UP); -2441: assign_r(dbm[i][v], PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: } -2441: else { -2441: -2441: -2441: -2441: N& dbm_0v = dbm_0[v]; -2441: add_assign_r(dbm_v[0], dbm_0v, d, ROUND_UP); -2441: -2441: assign_r(dbm_0v, PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: forget_binary_dbm_constraints(v); -2441: } -2441: } -2441: else { -2441: -2441: -2441: -2441: forget_all_dbm_constraints(v); -2441: -2441: if (marked_shortest_path_reduced()) { -2441: reset_shortest_path_reduced(); -2441: } -2441: if (a == denominator) { -2441: -2441: -2441: add_dbm_constraint(v, w, d); -2441: } -2441: else { -2441: -2441: -2441: -2441: -2441: const N& dbm_0w = dbm_0[w]; -2441: if (!is_plus_infinity(dbm_0w)) { -2441: -2441: add_assign_r(dbm_v[0], dbm_0w, d, ROUND_UP); -2441: -2441: reset_shortest_path_closed(); -2441: } -2441: } -2441: } -2441: break; -2441: -2441: default: -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: ((void) 0); -2441: return; -2441: } -2441: } -2441: # 5792 "../../src/BD_Shape_templates.hh" -2441: const bool is_sc = (denominator > 0); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_b; Parma_Polyhedra_Library::Coefficient& minus_b = holder_minus_b.item(); -2441: neg_assign(minus_b, b); -2441: const Coefficient& sc_b = is_sc ? b : minus_b; -2441: const Coefficient& minus_sc_b = is_sc ? minus_b : b; -2441: const Coefficient& sc_denom = is_sc ? denominator : minus_denom; -2441: const Coefficient& minus_sc_denom = is_sc ? minus_denom : denominator; -2441: -2441: -2441: -2441: Linear_Expression minus_expr; -2441: if (!is_sc) { -2441: minus_expr = -expr; -2441: } -2441: const Linear_Expression& sc_expr = is_sc ? expr : minus_expr; -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_sum; N& sum = holder_sum.item(); -2441: -2441: dimension_type pinf_index = Suppress_Uninitialized_Warnings_Type::synonym(); -2441: -2441: dimension_type pinf_count = 0; -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_coeff_i; N& coeff_i = holder_coeff_i.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_minus_sc_i; Parma_Polyhedra_Library::Coefficient& minus_sc_i = holder_minus_sc_i.item(); -2441: -2441: switch (relsym) { -2441: case LESS_OR_EQUAL: -2441: -2441: -2441: -2441: assign_r(sum, sc_b, ROUND_UP); -2441: -2441: -2441: -2441: ((void) 0); -2441: for (Linear_Expression::const_iterator i = sc_expr.begin(), -2441: i_end = sc_expr.lower_bound(Variable(w)); i != i_end; ++i) { -2441: const Coefficient& sc_i = *i; -2441: const dimension_type i_dim = i.variable().space_dimension(); -2441: const int sign_i = sgn(sc_i); -2441: ((void) 0); -2441: -2441: const N& approx_i = (sign_i > 0) ? dbm_0[i_dim] : dbm[i_dim][0]; -2441: if (is_plus_infinity(approx_i)) { -2441: if (++pinf_count > 1) { -2441: break; -2441: } -2441: pinf_index = i_dim; -2441: continue; -2441: } -2441: if (sign_i > 0) { -2441: assign_r(coeff_i, sc_i, ROUND_UP); -2441: } -2441: else { -2441: neg_assign(minus_sc_i, sc_i); -2441: assign_r(coeff_i, minus_sc_i, ROUND_UP); -2441: } -2441: add_mul_assign_r(sum, coeff_i, approx_i, ROUND_UP); -2441: } -2441: -2441: -2441: forget_all_dbm_constraints(v); -2441: -2441: if (marked_shortest_path_reduced()) { -2441: reset_shortest_path_reduced(); -2441: } -2441: -2441: if (pinf_count > 1) { -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: -2441: if (sc_denom != 1) { -2441: -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_down_sc_denom; N& down_sc_denom = holder_down_sc_denom.item(); -2441: assign_r(down_sc_denom, minus_sc_denom, ROUND_UP); -2441: neg_assign_r(down_sc_denom, down_sc_denom, ROUND_UP); -2441: div_assign_r(sum, sum, down_sc_denom, ROUND_UP); -2441: } -2441: -2441: if (pinf_count == 0) { -2441: -2441: add_dbm_constraint(0, v, sum); -2441: -2441: deduce_v_minus_u_bounds(v, w, sc_expr, sc_denom, sum); -2441: } -2441: else if (pinf_count == 1) { -2441: if (pinf_index != v -2441: && expr.get(Variable(pinf_index - 1)) == denominator) { -2441: -2441: add_dbm_constraint(pinf_index, v, sum); -2441: } -2441: } -2441: break; -2441: -2441: case GREATER_OR_EQUAL: -2441: -2441: -2441: -2441: -2441: -2441: assign_r(sum, minus_sc_b, ROUND_UP); -2441: -2441: for (Linear_Expression::const_iterator i = sc_expr.begin(), -2441: i_end = sc_expr.lower_bound(Variable(w)); i != i_end; ++i) { -2441: const Coefficient& sc_i = *i; -2441: const int sign_i = sgn(sc_i); -2441: ((void) 0); -2441: const dimension_type i_dim = i.variable().space_dimension(); -2441: -2441: const N& approx_i = (sign_i > 0) ? dbm[i_dim][0] : dbm_0[i_dim]; -2441: if (is_plus_infinity(approx_i)) { -2441: if (++pinf_count > 1) { -2441: break; -2441: } -2441: pinf_index = i_dim; -2441: continue; -2441: } -2441: if (sign_i > 0) { -2441: assign_r(coeff_i, sc_i, ROUND_UP); -2441: } -2441: else { -2441: neg_assign(minus_sc_i, sc_i); -2441: assign_r(coeff_i, minus_sc_i, ROUND_UP); -2441: } -2441: add_mul_assign_r(sum, coeff_i, approx_i, ROUND_UP); -2441: } -2441: -2441: -2441: forget_all_dbm_constraints(v); -2441: -2441: if (marked_shortest_path_reduced()) { -2441: reset_shortest_path_reduced(); -2441: } -2441: -2441: if (pinf_count > 1) { -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: -2441: if (sc_denom != 1) { -2441: -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_down_sc_denom; N& down_sc_denom = holder_down_sc_denom.item(); -2441: assign_r(down_sc_denom, minus_sc_denom, ROUND_UP); -2441: neg_assign_r(down_sc_denom, down_sc_denom, ROUND_UP); -2441: div_assign_r(sum, sum, down_sc_denom, ROUND_UP); -2441: } -2441: -2441: if (pinf_count == 0) { -2441: -2441: add_dbm_constraint(v, 0, sum); -2441: -2441: deduce_u_minus_v_bounds(v, w, sc_expr, sc_denom, sum); -2441: } -2441: else if (pinf_count == 1) { -2441: if (pinf_index != v -2441: && expr.get(Variable(pinf_index - 1)) == denominator) { -2441: -2441: -2441: add_dbm_constraint(v, pinf_index, sum); -2441: } -2441: } -2441: break; -2441: -2441: default: -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::generalized_affine_image(const Linear_Expression& lhs, -2441: const Relation_Symbol relsym, -2441: const Linear_Expression& rhs) { -2441: -2441: -2441: -2441: const dimension_type space_dim = space_dimension(); -2441: const dimension_type lhs_space_dim = lhs.space_dimension(); -2441: if (space_dim < lhs_space_dim) { -2441: throw_dimension_incompatible("generalized_affine_image(e1, r, e2)", -2441: "e1", lhs); -2441: } -2441: -2441: -2441: const dimension_type rhs_space_dim = rhs.space_dimension(); -2441: if (space_dim < rhs_space_dim) { -2441: throw_dimension_incompatible("generalized_affine_image(e1, r, e2)", -2441: "e2", rhs); -2441: } -2441: -2441: if (relsym == LESS_THAN || relsym == GREATER_THAN) { -2441: throw_invalid_argument("generalized_affine_image(e1, r, e2)", -2441: "r is a strict relation symbol"); -2441: } -2441: -2441: if (relsym == NOT_EQUAL) { -2441: throw_invalid_argument("generalized_affine_image(e1, r, e2)", -2441: "r is the disequality relation symbol"); -2441: } -2441: -2441: shortest_path_closure_assign(); -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: -2441: dimension_type t_lhs = 0; -2441: -2441: dimension_type j_lhs = lhs.last_nonzero(); -2441: -2441: if (j_lhs != 0) { -2441: ++t_lhs; -2441: if (!lhs.all_zeroes(1, j_lhs)) { -2441: ++t_lhs; -2441: } -2441: --j_lhs; -2441: } -2441: -2441: const Coefficient& b_lhs = lhs.inhomogeneous_term(); -2441: -2441: if (t_lhs == 0) { -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: switch (relsym) { -2441: case LESS_OR_EQUAL: -2441: refine_no_check(lhs <= rhs); -2441: break; -2441: case EQUAL: -2441: refine_no_check(lhs == rhs); -2441: break; -2441: case GREATER_OR_EQUAL: -2441: refine_no_check(lhs >= rhs); -2441: break; -2441: default: -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: } -2441: else if (t_lhs == 1) { -2441: -2441: -2441: -2441: Variable v(j_lhs); -2441: -2441: const Coefficient& denom = lhs.coefficient(v); -2441: Relation_Symbol new_relsym = relsym; -2441: if (denom < 0) { -2441: if (relsym == LESS_OR_EQUAL) { -2441: new_relsym = GREATER_OR_EQUAL; -2441: } -2441: else if (relsym == GREATER_OR_EQUAL) { -2441: new_relsym = LESS_OR_EQUAL; -2441: } -2441: } -2441: Linear_Expression expr = rhs - b_lhs; -2441: generalized_affine_image(v, new_relsym, expr, denom); -2441: } -2441: else { -2441: -2441: -2441: std::vector lhs_vars; -2441: for (Linear_Expression::const_iterator i = lhs.begin(), i_end = lhs.end(); -2441: i != i_end; ++i) { -2441: lhs_vars.push_back(i.variable()); -2441: } -2441: const dimension_type num_common_dims = std::min(lhs_space_dim, rhs_space_dim); -2441: if (!lhs.have_a_common_variable(rhs, Variable(0), Variable(num_common_dims))) { -2441: -2441: -2441: for (dimension_type i = lhs_vars.size(); i-- > 0; ) { -2441: forget_all_dbm_constraints(lhs_vars[i].id() + 1); -2441: } -2441: -2441: -2441: -2441: -2441: switch (relsym) { -2441: case LESS_OR_EQUAL: -2441: refine_no_check(lhs <= rhs); -2441: break; -2441: case EQUAL: -2441: refine_no_check(lhs == rhs); -2441: break; -2441: case GREATER_OR_EQUAL: -2441: refine_no_check(lhs >= rhs); -2441: break; -2441: default: -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: } -2441: else { -2441: -2441: -2441: -2441: -2441: for (dimension_type i = lhs_vars.size(); i-- > 0; ) { -2441: forget_all_dbm_constraints(lhs_vars[i].id() + 1); -2441: } -2441: # 6155 "../../src/BD_Shape_templates.hh" -2441: } -2441: } -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::generalized_affine_preimage(const Variable var, -2441: const Relation_Symbol relsym, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference -2441: denominator) { -2441: -2441: if (denominator == 0) { -2441: throw_invalid_argument("generalized_affine_preimage(v, r, e, d)", -2441: "d == 0"); -2441: } -2441: -2441: -2441: -2441: const dimension_type space_dim = space_dimension(); -2441: const dimension_type expr_space_dim = expr.space_dimension(); -2441: if (space_dim < expr_space_dim) { -2441: throw_dimension_incompatible("generalized_affine_preimage(v, r, e, d)", -2441: "e", expr); -2441: } -2441: -2441: const dimension_type v = var.id() + 1; -2441: if (v > space_dim) { -2441: throw_dimension_incompatible("generalized_affine_preimage(v, r, e, d)", -2441: var.id()); -2441: } -2441: -2441: if (relsym == LESS_THAN || relsym == GREATER_THAN) { -2441: throw_invalid_argument("generalized_affine_preimage(v, r, e, d)", -2441: "r is a strict relation symbol"); -2441: } -2441: -2441: if (relsym == NOT_EQUAL) { -2441: throw_invalid_argument("generalized_affine_preimage(v, r, e, d)", -2441: "r is the disequality relation symbol"); -2441: } -2441: if (relsym == EQUAL) { -2441: -2441: -2441: affine_preimage(var, expr, denominator); -2441: return; -2441: } -2441: -2441: -2441: shortest_path_closure_assign(); -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: -2441: const Coefficient& expr_v = expr.coefficient(var); -2441: if (expr_v != 0) { -2441: const Relation_Symbol reversed_relsym = (relsym == LESS_OR_EQUAL) -2441: ? GREATER_OR_EQUAL : LESS_OR_EQUAL; -2441: const Linear_Expression inverse -2441: = expr - (expr_v + denominator)*var; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_inverse_denom; Parma_Polyhedra_Library::Coefficient& inverse_denom = holder_inverse_denom.item(); -2441: neg_assign(inverse_denom, expr_v); -2441: const Relation_Symbol inverse_relsym -2441: = (sgn(denominator) == sgn(inverse_denom)) ? relsym : reversed_relsym; -2441: generalized_affine_image(var, inverse_relsym, inverse, inverse_denom); -2441: return; -2441: } -2441: -2441: refine(var, relsym, expr, denominator); -2441: -2441: if (is_empty()) { -2441: return; -2441: } -2441: -2441: -2441: forget_all_dbm_constraints(v); -2441: -2441: if (marked_shortest_path_reduced()) { -2441: reset_shortest_path_reduced(); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::generalized_affine_preimage(const Linear_Expression& lhs, -2441: const Relation_Symbol relsym, -2441: const Linear_Expression& rhs) { -2441: -2441: -2441: -2441: const dimension_type bds_space_dim = space_dimension(); -2441: const dimension_type lhs_space_dim = lhs.space_dimension(); -2441: if (bds_space_dim < lhs_space_dim) { -2441: throw_dimension_incompatible("generalized_affine_preimage(e1, r, e2)", -2441: "e1", lhs); -2441: } -2441: -2441: -2441: const dimension_type rhs_space_dim = rhs.space_dimension(); -2441: if (bds_space_dim < rhs_space_dim) { -2441: throw_dimension_incompatible("generalized_affine_preimage(e1, r, e2)", -2441: "e2", rhs); -2441: } -2441: -2441: if (relsym == LESS_THAN || relsym == GREATER_THAN) { -2441: throw_invalid_argument("generalized_affine_preimage(e1, r, e2)", -2441: "r is a strict relation symbol"); -2441: } -2441: -2441: if (relsym == NOT_EQUAL) { -2441: throw_invalid_argument("generalized_affine_preimage(e1, r, e2)", -2441: "r is the disequality relation symbol"); -2441: } -2441: -2441: shortest_path_closure_assign(); -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: -2441: dimension_type t_lhs = 0; -2441: -2441: dimension_type j_lhs = lhs.last_nonzero(); -2441: -2441: if (j_lhs != 0) { -2441: ++t_lhs; -2441: if (!lhs.all_zeroes(1, j_lhs)) { -2441: ++t_lhs; -2441: } -2441: --j_lhs; -2441: } -2441: -2441: const Coefficient& b_lhs = lhs.inhomogeneous_term(); -2441: -2441: if (t_lhs == 0) { -2441: -2441: -2441: generalized_affine_image(lhs, relsym, rhs); -2441: return; -2441: } -2441: else if (t_lhs == 1) { -2441: -2441: -2441: -2441: Variable v(j_lhs); -2441: -2441: const Coefficient& denom = lhs.coefficient(v); -2441: Relation_Symbol new_relsym = relsym; -2441: if (denom < 0) { -2441: if (relsym == LESS_OR_EQUAL) { -2441: new_relsym = GREATER_OR_EQUAL; -2441: } -2441: else if (relsym == GREATER_OR_EQUAL) { -2441: new_relsym = LESS_OR_EQUAL; -2441: } -2441: } -2441: Linear_Expression expr = rhs - b_lhs; -2441: generalized_affine_preimage(v, new_relsym, expr, denom); -2441: } -2441: else { -2441: -2441: -2441: std::vector lhs_vars; -2441: for (Linear_Expression::const_iterator i = lhs.begin(), i_end = lhs.end(); -2441: i != i_end; ++i) { -2441: lhs_vars.push_back(i.variable()); -2441: } -2441: const dimension_type num_common_dims = std::min(lhs_space_dim, rhs_space_dim); -2441: if (!lhs.have_a_common_variable(rhs, Variable(0), Variable(num_common_dims))) { -2441: -2441: -2441: -2441: -2441: -2441: -2441: switch (relsym) { -2441: case LESS_OR_EQUAL: -2441: refine_no_check(lhs <= rhs); -2441: break; -2441: case EQUAL: -2441: refine_no_check(lhs == rhs); -2441: break; -2441: case GREATER_OR_EQUAL: -2441: refine_no_check(lhs >= rhs); -2441: break; -2441: default: -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: -2441: -2441: if (is_empty()) { -2441: return; -2441: } -2441: -2441: for (dimension_type i = lhs_vars.size(); i-- > 0; ) { -2441: forget_all_dbm_constraints(lhs_vars[i].id() + 1); -2441: } -2441: } -2441: else { -2441: -2441: -2441: -2441: const Variable new_var(bds_space_dim); -2441: add_space_dimensions_and_embed(1); -2441: -2441: -2441: -2441: -2441: affine_image(new_var, lhs); -2441: -2441: -2441: shortest_path_closure_assign(); -2441: ((void) 0); -2441: for (dimension_type i = lhs_vars.size(); i-- > 0; ) { -2441: forget_all_dbm_constraints(lhs_vars[i].id() + 1); -2441: } -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: switch (relsym) { -2441: case LESS_OR_EQUAL: -2441: refine_no_check(new_var <= rhs); -2441: break; -2441: case EQUAL: -2441: refine_no_check(new_var == rhs); -2441: break; -2441: case GREATER_OR_EQUAL: -2441: refine_no_check(new_var >= rhs); -2441: break; -2441: default: -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: -2441: remove_higher_space_dimensions(bds_space_dim); -2441: } -2441: } -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: Constraint_System -2441: BD_Shape::constraints() const { -2441: const dimension_type space_dim = space_dimension(); -2441: Constraint_System cs; -2441: cs.set_space_dimension(space_dim); -2441: -2441: if (space_dim == 0) { -2441: if (marked_empty()) { -2441: cs = Constraint_System::zero_dim_empty(); -2441: } -2441: return cs; -2441: } -2441: -2441: if (marked_empty()) { -2441: cs.insert(Constraint::zero_dim_false()); -2441: return cs; -2441: } -2441: -2441: if (marked_shortest_path_reduced()) { -2441: -2441: cs = minimized_constraints(); -2441: return cs; -2441: } -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_a; Parma_Polyhedra_Library::Coefficient& a = holder_a.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_b; Parma_Polyhedra_Library::Coefficient& b = holder_b.item(); -2441: -2441: const DB_Row& dbm_0 = dbm[0]; -2441: for (dimension_type j = 1; j <= space_dim; ++j) { -2441: const Variable x(j-1); -2441: const N& dbm_0j = dbm_0[j]; -2441: const N& dbm_j0 = dbm[j][0]; -2441: if (is_additive_inverse(dbm_j0, dbm_0j)) { -2441: -2441: numer_denom(dbm_0j, b, a); -2441: cs.insert(a*x == b); -2441: } -2441: else { -2441: -2441: if (!is_plus_infinity(dbm_0j)) { -2441: numer_denom(dbm_0j, b, a); -2441: cs.insert(a*x <= b); -2441: } -2441: if (!is_plus_infinity(dbm_j0)) { -2441: numer_denom(dbm_j0, b, a); -2441: cs.insert(-a*x <= b); -2441: } -2441: } -2441: } -2441: -2441: -2441: for (dimension_type i = 1; i <= space_dim; ++i) { -2441: const Variable y(i-1); -2441: const DB_Row& dbm_i = dbm[i]; -2441: for (dimension_type j = i + 1; j <= space_dim; ++j) { -2441: const Variable x(j-1); -2441: const N& dbm_ij = dbm_i[j]; -2441: const N& dbm_ji = dbm[j][i]; -2441: if (is_additive_inverse(dbm_ji, dbm_ij)) { -2441: -2441: numer_denom(dbm_ij, b, a); -2441: cs.insert(a*x - a*y == b); -2441: } -2441: else { -2441: -2441: if (!is_plus_infinity(dbm_ij)) { -2441: numer_denom(dbm_ij, b, a); -2441: cs.insert(a*x - a*y <= b); -2441: } -2441: if (!is_plus_infinity(dbm_ji)) { -2441: numer_denom(dbm_ji, b, a); -2441: cs.insert(a*y - a*x <= b); -2441: } -2441: } -2441: } -2441: } -2441: return cs; -2441: } -2441: -2441: template -2441: Constraint_System -2441: BD_Shape::minimized_constraints() const { -2441: shortest_path_reduction_assign(); -2441: const dimension_type space_dim = space_dimension(); -2441: Constraint_System cs; -2441: cs.set_space_dimension(space_dim); -2441: -2441: if (space_dim == 0) { -2441: if (marked_empty()) { -2441: cs = Constraint_System::zero_dim_empty(); -2441: } -2441: return cs; -2441: } -2441: -2441: if (marked_empty()) { -2441: cs.insert(Constraint::zero_dim_false()); -2441: return cs; -2441: } -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_numer; Parma_Polyhedra_Library::Coefficient& numer = holder_numer.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_denom; Parma_Polyhedra_Library::Coefficient& denom = holder_denom.item(); -2441: -2441: -2441: std::vector leaders; -2441: compute_leaders(leaders); -2441: std::vector leader_indices; -2441: compute_leader_indices(leaders, leader_indices); -2441: const dimension_type num_leaders = leader_indices.size(); -2441: -2441: -2441: const DB_Row& dbm_0 = dbm[0]; -2441: for (dimension_type i = 1; i <= space_dim; ++i) { -2441: const dimension_type leader = leaders[i]; -2441: if (i != leader) { -2441: -2441: if (leader == 0) { -2441: -2441: ((void) 0); -2441: numer_denom(dbm_0[i], numer, denom); -2441: cs.insert(denom*Variable(i-1) == numer); -2441: } -2441: else { -2441: -2441: ((void) 0); -2441: numer_denom(dbm[i][leader], numer, denom); -2441: cs.insert(denom*Variable(leader-1) - denom*Variable(i-1) == numer); -2441: } -2441: } -2441: } -2441: -2441: -2441: -2441: const Bit_Row& red_0 = redundancy_dbm[0]; -2441: for (dimension_type l_i = 1; l_i < num_leaders; ++l_i) { -2441: const dimension_type i = leader_indices[l_i]; -2441: if (!red_0[i]) { -2441: numer_denom(dbm_0[i], numer, denom); -2441: cs.insert(denom*Variable(i-1) <= numer); -2441: } -2441: if (!redundancy_dbm[i][0]) { -2441: numer_denom(dbm[i][0], numer, denom); -2441: cs.insert(-denom*Variable(i-1) <= numer); -2441: } -2441: } -2441: -2441: for (dimension_type l_i = 1; l_i < num_leaders; ++l_i) { -2441: const dimension_type i = leader_indices[l_i]; -2441: const DB_Row& dbm_i = dbm[i]; -2441: const Bit_Row& red_i = redundancy_dbm[i]; -2441: for (dimension_type l_j = l_i + 1; l_j < num_leaders; ++l_j) { -2441: const dimension_type j = leader_indices[l_j]; -2441: if (!red_i[j]) { -2441: numer_denom(dbm_i[j], numer, denom); -2441: cs.insert(denom*Variable(j-1) - denom*Variable(i-1) <= numer); -2441: } -2441: if (!redundancy_dbm[j][i]) { -2441: numer_denom(dbm[j][i], numer, denom); -2441: cs.insert(denom*Variable(i-1) - denom*Variable(j-1) <= numer); -2441: } -2441: } -2441: } -2441: return cs; -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::expand_space_dimension(Variable var, dimension_type m) { -2441: dimension_type old_dim = space_dimension(); -2441: -2441: if (var.space_dimension() > old_dim) { -2441: throw_dimension_incompatible("expand_space_dimension(v, m)", "v", var); -2441: } -2441: -2441: -2441: -2441: if (m > max_space_dimension() - space_dimension()) { -2441: throw_invalid_argument("expand_dimension(v, m)", -2441: "adding m new space dimensions exceeds " -2441: "the maximum allowed space dimension"); -2441: } -2441: -2441: if (m == 0) { -2441: return; -2441: } -2441: -2441: add_space_dimensions_and_embed(m); -2441: -2441: -2441: -2441: -2441: const dimension_type v_id = var.id() + 1; -2441: const DB_Row& dbm_v = dbm[v_id]; -2441: for (dimension_type i = old_dim + 1; i-- > 0; ) { -2441: DB_Row& dbm_i = dbm[i]; -2441: const N& dbm_i_v = dbm[i][v_id]; -2441: const N& dbm_v_i = dbm_v[i]; -2441: for (dimension_type j = old_dim+1; j < old_dim+m+1; ++j) { -2441: dbm_i[j] = dbm_i_v; -2441: dbm[j][i] = dbm_v_i; -2441: } -2441: } -2441: -2441: -2441: if (marked_shortest_path_closed()) { -2441: reset_shortest_path_closed(); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::fold_space_dimensions(const Variables_Set& vars, -2441: Variable dest) { -2441: const dimension_type space_dim = space_dimension(); -2441: -2441: if (dest.space_dimension() > space_dim) { -2441: throw_dimension_incompatible("fold_space_dimensions(vs, v)", -2441: "v", dest); -2441: } -2441: -2441: if (vars.empty()) { -2441: return; -2441: } -2441: -2441: if (vars.space_dimension() > space_dim) { -2441: throw_dimension_incompatible("fold_space_dimensions(vs, v)", -2441: vars.space_dimension()); -2441: } -2441: -2441: if (vars.find(dest.id()) != vars.end()) { -2441: throw_invalid_argument("fold_space_dimensions(vs, v)", -2441: "v should not occur in vs"); -2441: } -2441: shortest_path_closure_assign(); -2441: if (!marked_empty()) { -2441: -2441: -2441: -2441: -2441: const dimension_type v_id = dest.id() + 1; -2441: DB_Row& dbm_v = dbm[v_id]; -2441: for (Variables_Set::const_iterator i = vars.begin(), -2441: vs_end = vars.end(); i != vs_end; ++i) { -2441: const dimension_type to_be_folded_id = *i + 1; -2441: const DB_Row& dbm_to_be_folded_id = dbm[to_be_folded_id]; -2441: for (dimension_type j = space_dim + 1; j-- > 0; ) { -2441: max_assign(dbm[j][v_id], dbm[j][to_be_folded_id]); -2441: max_assign(dbm_v[j], dbm_to_be_folded_id[j]); -2441: } -2441: } -2441: } -2441: remove_space_dimensions(vars); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::drop_some_non_integer_points(Complexity_Class) { -2441: if (std::numeric_limits::is_integer) { -2441: return; -2441: } -2441: const dimension_type space_dim = space_dimension(); -2441: shortest_path_closure_assign(); -2441: if (space_dim == 0 || marked_empty()) { -2441: return; -2441: } -2441: for (dimension_type i = space_dim + 1; i-- > 0; ) { -2441: DB_Row& dbm_i = dbm[i]; -2441: for (dimension_type j = space_dim + 1; j-- > 0; ) { -2441: if (i != j) { -2441: drop_some_non_integer_points_helper(dbm_i[j]); -2441: } -2441: } -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::drop_some_non_integer_points(const Variables_Set& vars, -2441: Complexity_Class) { -2441: -2441: const dimension_type space_dim = space_dimension(); -2441: const dimension_type min_space_dim = vars.space_dimension(); -2441: if (space_dim < min_space_dim) { -2441: throw_dimension_incompatible("drop_some_non_integer_points(vs, cmpl)", -2441: min_space_dim); -2441: } -2441: if (std::numeric_limits::is_integer || min_space_dim == 0) { -2441: return; -2441: } -2441: shortest_path_closure_assign(); -2441: if (marked_empty()) { -2441: return; -2441: } -2441: const Variables_Set::const_iterator v_begin = vars.begin(); -2441: const Variables_Set::const_iterator v_end = vars.end(); -2441: ((void) 0); -2441: -2441: DB_Row& dbm_0 = dbm[0]; -2441: for (Variables_Set::const_iterator v_i = v_begin; v_i != v_end; ++v_i) { -2441: const dimension_type i = *v_i + 1; -2441: drop_some_non_integer_points_helper(dbm_0[i]); -2441: drop_some_non_integer_points_helper(dbm[i][0]); -2441: } -2441: -2441: -2441: for (Variables_Set::const_iterator v_i = v_begin; v_i != v_end; ++v_i) { -2441: const dimension_type i = *v_i + 1; -2441: DB_Row& dbm_i = dbm[i]; -2441: for (Variables_Set::const_iterator v_j = v_begin; v_j != v_end; ++v_j) { -2441: const dimension_type j = *v_j + 1; -2441: if (i != j) { -2441: drop_some_non_integer_points_helper(dbm_i[j]); -2441: } -2441: } -2441: } -2441: ((void) 0); -2441: } -2441: -2441: -2441: template -2441: std::ostream& -2441: IO_Operators::operator<<(std::ostream& s, const BD_Shape& bds) { -2441: typedef typename BD_Shape::coefficient_type N; -2441: if (bds.is_universe()) { -2441: s << "true"; -2441: } -2441: else { -2441: -2441: dimension_type n = bds.space_dimension(); -2441: if (bds.marked_empty()) { -2441: s << "false"; -2441: } -2441: else { -2441: Parma_Polyhedra_Library::Dirty_Temp holder_v; N& v = holder_v.item(); -2441: bool first = true; -2441: for (dimension_type i = 0; i <= n; ++i) { -2441: for (dimension_type j = i + 1; j <= n; ++j) { -2441: const N& c_i_j = bds.dbm[i][j]; -2441: const N& c_j_i = bds.dbm[j][i]; -2441: if (is_additive_inverse(c_j_i, c_i_j)) { -2441: -2441: if (first) { -2441: first = false; -2441: } -2441: else { -2441: s << ", "; -2441: } -2441: if (i == 0) { -2441: -2441: s << Variable(j - 1); -2441: s << " = " << c_i_j; -2441: } -2441: else { -2441: -2441: if (sgn(c_i_j) >= 0) { -2441: s << Variable(j - 1); -2441: s << " - "; -2441: s << Variable(i - 1); -2441: s << " = " << c_i_j; -2441: } -2441: else { -2441: s << Variable(i - 1); -2441: s << " - "; -2441: s << Variable(j - 1); -2441: s << " = " << c_j_i; -2441: } -2441: } -2441: } -2441: else { -2441: -2441: if (!is_plus_infinity(c_j_i)) { -2441: if (first) { -2441: first = false; -2441: } -2441: else { -2441: s << ", "; -2441: } -2441: if (i == 0) { -2441: -2441: s << Variable(j - 1); -2441: neg_assign_r(v, c_j_i, ROUND_DOWN); -2441: s << " >= " << v; -2441: } -2441: else { -2441: -2441: if (sgn(c_j_i) >= 0) { -2441: s << Variable(i - 1); -2441: s << " - "; -2441: s << Variable(j - 1); -2441: s << " <= " << c_j_i; -2441: } -2441: else { -2441: s << Variable(j - 1); -2441: s << " - "; -2441: s << Variable(i - 1); -2441: neg_assign_r(v, c_j_i, ROUND_DOWN); -2441: s << " >= " << v; -2441: } -2441: } -2441: } -2441: if (!is_plus_infinity(c_i_j)) { -2441: if (first) { -2441: first = false; -2441: } -2441: else { -2441: s << ", "; -2441: } -2441: if (i == 0) { -2441: -2441: s << Variable(j - 1); -2441: s << " <= " << c_i_j; -2441: } -2441: else { -2441: -2441: if (sgn(c_i_j) >= 0) { -2441: s << Variable(j - 1); -2441: s << " - "; -2441: s << Variable(i - 1); -2441: s << " <= " << c_i_j; -2441: } -2441: else { -2441: s << Variable(i - 1); -2441: s << " - "; -2441: s << Variable(j - 1); -2441: neg_assign_r(v, c_i_j, ROUND_DOWN); -2441: s << " >= " << v; -2441: } -2441: } -2441: } -2441: } -2441: } -2441: } -2441: } -2441: } -2441: return s; -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::ascii_dump(std::ostream& s) const { -2441: status.ascii_dump(s); -2441: s << "\n"; -2441: dbm.ascii_dump(s); -2441: s << "\n"; -2441: redundancy_dbm.ascii_dump(s); -2441: } -2441: -2441: template void BD_Shape::ascii_dump() const { ascii_dump(std::cerr); } template void BD_Shape::print() const { using IO_Operators::operator<<; std::cerr << *this; } -2441: -2441: template -2441: bool -2441: BD_Shape::ascii_load(std::istream& s) { -2441: if (!status.ascii_load(s)) { -2441: return false; -2441: } -2441: if (!dbm.ascii_load(s)) { -2441: return false; -2441: } -2441: if (!redundancy_dbm.ascii_load(s)) { -2441: return false; -2441: } -2441: return true; -2441: } -2441: -2441: template -2441: memory_size_type -2441: BD_Shape::external_memory_in_bytes() const { -2441: return dbm.external_memory_in_bytes() -2441: + redundancy_dbm.external_memory_in_bytes(); -2441: } -2441: -2441: template -2441: bool -2441: BD_Shape::OK() const { -2441: -2441: if (!dbm.OK()) { -2441: return false; -2441: } -2441: -2441: if (!status.OK()) { -2441: return false; -2441: } -2441: -2441: if (marked_empty()) { -2441: return true; -2441: } -2441: -2441: for (dimension_type i = dbm.num_rows(); i-- > 0; ) { -2441: for (dimension_type j = dbm.num_rows(); j-- > 0; ) { -2441: if (is_minus_infinity(dbm[i][j])) { -2441: -2441: -2441: -2441: -2441: -2441: -2441: return false; -2441: } -2441: } -2441: } -2441: -2441: for (dimension_type i = dbm.num_rows(); i-- > 0; ) { -2441: if (!is_plus_infinity(dbm[i][i])) { -2441: -2441: -2441: -2441: -2441: -2441: -2441: return false; -2441: } -2441: } -2441: -2441: if (marked_shortest_path_closed()) { -2441: BD_Shape x = *this; -2441: x.reset_shortest_path_closed(); -2441: x.shortest_path_closure_assign(); -2441: if (x.dbm != dbm) { -2441: -2441: -2441: -2441: -2441: return false; -2441: } -2441: } -2441: -2441: -2441: -2441: -2441: if (std::numeric_limits::is_exact) { -2441: -2441: -2441: if (marked_shortest_path_reduced()) { -2441: -2441: for (dimension_type i = dbm.num_rows(); i-- > 0; ) { -2441: for (dimension_type j = dbm.num_rows(); j-- > 0; ) { -2441: if (!redundancy_dbm[i][j] && is_plus_infinity(dbm[i][j])) { -2441: -2441: -2441: -2441: -2441: -2441: -2441: return false; -2441: } -2441: } -2441: } -2441: BD_Shape x = *this; -2441: x.reset_shortest_path_reduced(); -2441: x.shortest_path_reduction_assign(); -2441: if (x.redundancy_dbm != redundancy_dbm) { -2441: -2441: -2441: -2441: -2441: return false; -2441: } -2441: } -2441: } -2441: -2441: -2441: return true; -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::throw_dimension_incompatible(const char* method, -2441: const BD_Shape& y) const { -2441: std::ostringstream s; -2441: s << "PPL::BD_Shape::" << method << ":" << std::endl -2441: << "this->space_dimension() == " << space_dimension() -2441: << ", y->space_dimension() == " << y.space_dimension() << "."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::throw_dimension_incompatible(const char* method, -2441: dimension_type required_dim) const { -2441: std::ostringstream s; -2441: s << "PPL::BD_Shape::" << method << ":" << std::endl -2441: << "this->space_dimension() == " << space_dimension() -2441: << ", required dimension == " << required_dim << "."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::throw_dimension_incompatible(const char* method, -2441: const Constraint& c) const { -2441: std::ostringstream s; -2441: s << "PPL::BD_Shape::" << method << ":" << std::endl -2441: << "this->space_dimension() == " << space_dimension() -2441: << ", c->space_dimension == " << c.space_dimension() << "."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::throw_dimension_incompatible(const char* method, -2441: const Congruence& cg) const { -2441: std::ostringstream s; -2441: s << "PPL::BD_Shape::" << method << ":" << std::endl -2441: << "this->space_dimension() == " << space_dimension() -2441: << ", cg->space_dimension == " << cg.space_dimension() << "."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::throw_dimension_incompatible(const char* method, -2441: const Generator& g) const { -2441: std::ostringstream s; -2441: s << "PPL::BD_Shape::" << method << ":" << std::endl -2441: << "this->space_dimension() == " << space_dimension() -2441: << ", g->space_dimension == " << g.space_dimension() << "."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::throw_expression_too_complex(const char* method, -2441: const Linear_Expression& le) { -2441: using namespace IO_Operators; -2441: std::ostringstream s; -2441: s << "PPL::BD_Shape::" << method << ":" << std::endl -2441: << le << " is too complex."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: -2441: template -2441: void -2441: BD_Shape::throw_dimension_incompatible(const char* method, -2441: const char* le_name, -2441: const Linear_Expression& le) const { -2441: std::ostringstream s; -2441: s << "PPL::BD_Shape::" << method << ":" << std::endl -2441: << "this->space_dimension() == " << space_dimension() -2441: << ", " << le_name << "->space_dimension() == " -2441: << le.space_dimension() << "."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: template -2441: template -2441: void -2441: BD_Shape::throw_dimension_incompatible(const char* method, -2441: const char* lf_name, -2441: const Linear_Form< Interval >& lf) const { -2441: std::ostringstream s; -2441: s << "PPL::BD_Shape::" << method << ":" << std::endl -2441: << "this->space_dimension() == " << space_dimension() -2441: << ", " << lf_name << "->space_dimension() == " -2441: << lf.space_dimension() << "."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: template -2441: void -2441: BD_Shape::throw_invalid_argument(const char* method, const char* reason) { -2441: std::ostringstream s; -2441: s << "PPL::BD_Shape::" << method << ":" << std::endl -2441: << reason << "."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: } -2441: # 2373 "../../src/BD_Shape_defs.hh" 2 -2441: # 39 "../../src/Box_templates.hh" 2 -2441: -2441: -2441: # 1 "../../src/Rational_Interval.hh" 1 -2441: # 30 "../../src/Rational_Interval.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: struct Rational_Interval_Info_Policy { -2441: enum const_bool_value_store_special { store_special = (true) }; -2441: enum const_bool_value_store_open { store_open = (true) }; -2441: enum const_bool_value_cache_empty { cache_empty = (true) }; -2441: enum const_bool_value_cache_singleton { cache_singleton = (true) }; -2441: enum const_bool_value_cache_normalized { cache_normalized = (false) }; -2441: enum anonymous_enum_next_bit { next_bit = (0) }; -2441: enum const_bool_value_may_be_empty { may_be_empty = (true) }; -2441: enum const_bool_value_may_contain_infinity { may_contain_infinity = (false) }; -2441: enum const_bool_value_check_inexact { check_inexact = (false) }; -2441: }; -2441: -2441: typedef Interval_Info_Bitset Rational_Interval_Info; -2441: -2441: -2441: -2441: -2441: typedef Interval Rational_Interval; -2441: -2441: } -2441: # 42 "../../src/Box_templates.hh" 2 -2441: -2441: -2441: -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: inline -2441: Box::Box(dimension_type num_dimensions, Degenerate_Element kind) -2441: : seq(check_space_dimension_overflow(num_dimensions, -2441: max_space_dimension(), -2441: "PPL::Box::", -2441: "Box(n, k)", -2441: "n exceeds the maximum " -2441: "allowed space dimension")), -2441: status() { -2441: -2441: -2441: if (kind == UNIVERSE) { -2441: for (dimension_type i = num_dimensions; i-- > 0; ) { -2441: seq[i].assign(UNIVERSE); -2441: } -2441: set_empty_up_to_date(); -2441: } -2441: else { -2441: set_empty(); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline -2441: Box::Box(const Constraint_System& cs) -2441: : seq(check_space_dimension_overflow(cs.space_dimension(), -2441: max_space_dimension(), -2441: "PPL::Box::", -2441: "Box(cs)", -2441: "cs exceeds the maximum " -2441: "allowed space dimension")), -2441: status() { -2441: -2441: for (dimension_type i = cs.space_dimension(); i-- > 0; ) { -2441: seq[i].assign(UNIVERSE); -2441: } -2441: add_constraints_no_check(cs); -2441: } -2441: -2441: template -2441: inline -2441: Box::Box(const Congruence_System& cgs) -2441: : seq(check_space_dimension_overflow(cgs.space_dimension(), -2441: max_space_dimension(), -2441: "PPL::Box::", -2441: "Box(cgs)", -2441: "cgs exceeds the maximum " -2441: "allowed space dimension")), -2441: status() { -2441: -2441: for (dimension_type i = cgs.space_dimension(); i-- > 0; ) { -2441: seq[i].assign(UNIVERSE); -2441: } -2441: add_congruences_no_check(cgs); -2441: } -2441: -2441: template -2441: template -2441: inline -2441: Box::Box(const Box& y, Complexity_Class) -2441: : seq(y.space_dimension()), -2441: -2441: -2441: status() { -2441: -2441: if (y.marked_empty()) { -2441: set_empty(); -2441: } -2441: -2441: if (!y.marked_empty()) { -2441: for (dimension_type k = y.space_dimension(); k-- > 0; ) { -2441: seq[k].assign(y.seq[k]); -2441: } -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: Box::Box(const Generator_System& gs) -2441: : seq(check_space_dimension_overflow(gs.space_dimension(), -2441: max_space_dimension(), -2441: "PPL::Box::", -2441: "Box(gs)", -2441: "gs exceeds the maximum " -2441: "allowed space dimension")), -2441: status() { -2441: const Generator_System::const_iterator gs_begin = gs.begin(); -2441: const Generator_System::const_iterator gs_end = gs.end(); -2441: if (gs_begin == gs_end) { -2441: -2441: set_empty(); -2441: return; -2441: } -2441: -2441: -2441: set_empty_up_to_date(); -2441: -2441: const dimension_type space_dim = space_dimension(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_q; mpq_class& q = holder_q.item(); -2441: bool point_seen = false; -2441: -2441: for (Generator_System::const_iterator -2441: gs_i = gs_begin; gs_i != gs_end; ++gs_i) { -2441: const Generator& g = *gs_i; -2441: if (g.is_point()) { -2441: const Coefficient& d = g.divisor(); -2441: if (point_seen) { -2441: -2441: -2441: -2441: -2441: for (dimension_type i = space_dim; i-- > 0; ) { -2441: assign_r(q.get_num(), g.coefficient(Variable(i)), ROUND_NOT_NEEDED); -2441: assign_r(q.get_den(), d, ROUND_NOT_NEEDED); -2441: q.canonicalize(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_iq; ITV& iq = holder_iq.item(); -2441: iq.build(i_constraint(EQUAL, q)); -2441: seq[i].join_assign(iq); -2441: } -2441: } -2441: else { -2441: -2441: point_seen = true; -2441: -2441: -2441: -2441: for (dimension_type i = space_dim; i-- > 0; ) { -2441: assign_r(q.get_num(), g.coefficient(Variable(i)), ROUND_NOT_NEEDED); -2441: assign_r(q.get_den(), d, ROUND_NOT_NEEDED); -2441: q.canonicalize(); -2441: seq[i].build(i_constraint(EQUAL, q)); -2441: } -2441: } -2441: } -2441: } -2441: -2441: if (!point_seen) { -2441: -2441: throw std::invalid_argument("PPL::Box::Box(gs):\n" -2441: "the non-empty generator system gs " -2441: "contains no points."); -2441: } -2441: -2441: -2441: for (Generator_System::const_iterator gs_i = gs_begin; -2441: gs_i != gs_end; ++gs_i) { -2441: const Generator& g = *gs_i; -2441: switch (g.type()) { -2441: case Generator::LINE: -2441: for (Generator::expr_type::const_iterator i = g.expression().begin(), -2441: i_end = g.expression().end(); -2441: i != i_end; ++i) { -2441: seq[i.variable().id()].assign(UNIVERSE); -2441: } -2441: break; -2441: case Generator::RAY: -2441: for (Generator::expr_type::const_iterator i = g.expression().begin(), -2441: i_end = g.expression().end(); -2441: i != i_end; ++i) { -2441: switch (sgn(*i)) { -2441: case 1: -2441: seq[i.variable().id()].upper_extend(); -2441: break; -2441: case -1: -2441: seq[i.variable().id()].lower_extend(); -2441: break; -2441: default: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: } -2441: break; -2441: case Generator::CLOSURE_POINT: -2441: { -2441: const Coefficient& d = g.divisor(); -2441: -2441: -2441: -2441: for (dimension_type i = space_dim; i-- > 0; ) { -2441: assign_r(q.get_num(), g.coefficient(Variable(i)), ROUND_NOT_NEEDED); -2441: assign_r(q.get_den(), d, ROUND_NOT_NEEDED); -2441: q.canonicalize(); -2441: ITV& seq_i = seq[i]; -2441: seq_i.lower_extend(i_constraint(GREATER_THAN, q)); -2441: seq_i.upper_extend(i_constraint(LESS_THAN, q)); -2441: } -2441: } -2441: break; -2441: default: -2441: -2441: break; -2441: } -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: template -2441: Box::Box(const BD_Shape& bds, Complexity_Class) -2441: : seq(check_space_dimension_overflow(bds.space_dimension(), -2441: max_space_dimension(), -2441: "PPL::Box::", -2441: "Box(bds)", -2441: "bds exceeds the maximum " -2441: "allowed space dimension")), -2441: status() { -2441: -2441: bds.shortest_path_closure_assign(); -2441: if (bds.marked_empty()) { -2441: set_empty(); -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: -2441: set_empty_up_to_date(); -2441: -2441: const dimension_type space_dim = space_dimension(); -2441: if (space_dim == 0) { -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: typedef typename BD_Shape::coefficient_type Coeff; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp; Coeff& tmp = holder_tmp.item(); -2441: const DB_Row& dbm_0 = bds.dbm[0]; -2441: for (dimension_type i = space_dim; i-- > 0; ) { -2441: I_Constraint lower; -2441: I_Constraint upper; -2441: ITV& seq_i = seq[i]; -2441: -2441: -2441: const Coeff& u = dbm_0[i+1]; -2441: if (!is_plus_infinity(u)) { -2441: upper.set(LESS_OR_EQUAL, u, true); -2441: } -2441: -2441: -2441: const Coeff& negated_l = bds.dbm[i+1][0]; -2441: if (!is_plus_infinity(negated_l)) { -2441: neg_assign_r(tmp, negated_l, ROUND_DOWN); -2441: lower.set(GREATER_OR_EQUAL, tmp); -2441: } -2441: -2441: seq_i.build(lower, upper); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: template -2441: Box::Box(const Octagonal_Shape& oct, Complexity_Class) -2441: : seq(check_space_dimension_overflow(oct.space_dimension(), -2441: max_space_dimension(), -2441: "PPL::Box::", -2441: "Box(oct)", -2441: "oct exceeds the maximum " -2441: "allowed space dimension")), -2441: status() { -2441: -2441: oct.strong_closure_assign(); -2441: if (oct.marked_empty()) { -2441: set_empty(); -2441: return; -2441: } -2441: -2441: -2441: set_empty_up_to_date(); -2441: -2441: const dimension_type space_dim = space_dimension(); -2441: if (space_dim == 0) { -2441: return; -2441: } -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_lower_bound; mpq_class& lower_bound = holder_lower_bound.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_upper_bound; mpq_class& upper_bound = holder_upper_bound.item(); -2441: for (dimension_type i = space_dim; i-- > 0; ) { -2441: typedef typename Octagonal_Shape::coefficient_type Coeff; -2441: I_Constraint lower; -2441: I_Constraint upper; -2441: ITV& seq_i = seq[i]; -2441: const dimension_type ii = 2*i; -2441: const dimension_type cii = ii + 1; -2441: -2441: -2441: const Coeff& twice_ub = oct.matrix[cii][ii]; -2441: if (!is_plus_infinity(twice_ub)) { -2441: assign_r(upper_bound, twice_ub, ROUND_NOT_NEEDED); -2441: div_2exp_assign_r(upper_bound, upper_bound, 1, ROUND_NOT_NEEDED); -2441: upper.set(LESS_OR_EQUAL, upper_bound); -2441: } -2441: -2441: -2441: const Coeff& twice_lb = oct.matrix[ii][cii]; -2441: if (!is_plus_infinity(twice_lb)) { -2441: assign_r(lower_bound, twice_lb, ROUND_NOT_NEEDED); -2441: neg_assign_r(lower_bound, lower_bound, ROUND_NOT_NEEDED); -2441: div_2exp_assign_r(lower_bound, lower_bound, 1, ROUND_NOT_NEEDED); -2441: lower.set(GREATER_OR_EQUAL, lower_bound); -2441: } -2441: seq_i.build(lower, upper); -2441: } -2441: } -2441: -2441: template -2441: Box::Box(const Polyhedron& ph, Complexity_Class complexity) -2441: : seq(check_space_dimension_overflow(ph.space_dimension(), -2441: max_space_dimension(), -2441: "PPL::Box::", -2441: "Box(ph)", -2441: "ph exceeds the maximum " -2441: "allowed space dimension")), -2441: status() { -2441: -2441: set_empty_up_to_date(); -2441: -2441: -2441: -2441: if (ph.marked_empty()) { -2441: set_empty(); -2441: return; -2441: } -2441: -2441: -2441: const dimension_type space_dim = ph.space_dimension(); -2441: if (space_dim == 0) { -2441: return; -2441: } -2441: -2441: -2441: if (ph.generators_are_up_to_date() && !ph.has_pending_constraints()) { -2441: Box tmp(ph.generators()); -2441: m_swap(tmp); -2441: return; -2441: } -2441: -2441: -2441: ((void) 0); -2441: -2441: if (complexity == POLYNOMIAL_COMPLEXITY) { -2441: -2441: for (dimension_type i = space_dim; i-- > 0; ) { -2441: seq[i].assign(UNIVERSE); -2441: } -2441: -2441: const Constraint_System cs = ph.simplified_constraints(); -2441: -2441: -2441: -2441: const dimension_type max_iterations = 20; -2441: propagate_constraints_no_check(cs, max_iterations); -2441: } -2441: else if (complexity == SIMPLEX_COMPLEXITY) { -2441: MIP_Problem lp(space_dim); -2441: const Constraint_System& ph_cs = ph.constraints(); -2441: if (!ph_cs.has_strict_inequalities()) { -2441: lp.add_constraints(ph_cs); -2441: } -2441: else { -2441: -2441: for (Constraint_System::const_iterator i = ph_cs.begin(), -2441: ph_cs_end = ph_cs.end(); i != ph_cs_end; ++i) { -2441: const Constraint& c = *i; -2441: if (c.is_strict_inequality()) { -2441: const Linear_Expression expr(c.expression()); -2441: lp.add_constraint(expr >= 0); -2441: } -2441: else { -2441: lp.add_constraint(c); -2441: } -2441: } -2441: } -2441: -2441: if (!lp.is_satisfiable()) { -2441: set_empty(); -2441: return; -2441: } -2441: -2441: Generator g(point()); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_lower_bound; mpq_class& lower_bound = holder_lower_bound.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_upper_bound; mpq_class& upper_bound = holder_upper_bound.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_bound_numer; Parma_Polyhedra_Library::Coefficient& bound_numer = holder_bound_numer.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_bound_denom; Parma_Polyhedra_Library::Coefficient& bound_denom = holder_bound_denom.item(); -2441: for (dimension_type i = space_dim; i-- > 0; ) { -2441: I_Constraint lower; -2441: I_Constraint upper; -2441: ITV& seq_i = seq[i]; -2441: lp.set_objective_function(Variable(i)); -2441: -2441: lp.set_optimization_mode(MAXIMIZATION); -2441: if (lp.solve() == OPTIMIZED_MIP_PROBLEM) { -2441: g = lp.optimizing_point(); -2441: lp.evaluate_objective_function(g, bound_numer, bound_denom); -2441: assign_r(upper_bound.get_num(), bound_numer, ROUND_NOT_NEEDED); -2441: assign_r(upper_bound.get_den(), bound_denom, ROUND_NOT_NEEDED); -2441: ((void) 0); -2441: upper.set(LESS_OR_EQUAL, upper_bound); -2441: } -2441: -2441: lp.set_optimization_mode(MINIMIZATION); -2441: if (lp.solve() == OPTIMIZED_MIP_PROBLEM) { -2441: g = lp.optimizing_point(); -2441: lp.evaluate_objective_function(g, bound_numer, bound_denom); -2441: assign_r(lower_bound.get_num(), bound_numer, ROUND_NOT_NEEDED); -2441: assign_r(lower_bound.get_den(), bound_denom, ROUND_NOT_NEEDED); -2441: ((void) 0); -2441: lower.set(GREATER_OR_EQUAL, lower_bound); -2441: } -2441: seq_i.build(lower, upper); -2441: } -2441: } -2441: else { -2441: ((void) 0); -2441: if (ph.is_empty()) { -2441: set_empty(); -2441: } -2441: else { -2441: Box tmp(ph.generators()); -2441: m_swap(tmp); -2441: } -2441: } -2441: } -2441: -2441: template -2441: Box::Box(const Grid& gr, Complexity_Class) -2441: : seq(check_space_dimension_overflow(gr.space_dimension(), -2441: max_space_dimension(), -2441: "PPL::Box::", -2441: "Box(gr)", -2441: "gr exceeds the maximum " -2441: "allowed space dimension")), -2441: status() { -2441: -2441: if (gr.marked_empty()) { -2441: set_empty(); -2441: return; -2441: } -2441: -2441: -2441: set_empty_up_to_date(); -2441: -2441: const dimension_type space_dim = gr.space_dimension(); -2441: -2441: if (space_dim == 0) { -2441: return; -2441: } -2441: -2441: if (!gr.generators_are_up_to_date() && !gr.update_generators()) { -2441: -2441: set_empty(); -2441: return; -2441: } -2441: -2441: ((void) 0); -2441: -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_bound; mpq_class& bound = holder_bound.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_bound_numer; Parma_Polyhedra_Library::Coefficient& bound_numer = holder_bound_numer.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_bound_denom; Parma_Polyhedra_Library::Coefficient& bound_denom = holder_bound_denom.item(); -2441: for (dimension_type i = space_dim; i-- > 0; ) { -2441: ITV& seq_i = seq[i]; -2441: Variable var(i); -2441: bool max; -2441: if (gr.maximize(var, bound_numer, bound_denom, max)) { -2441: assign_r(bound.get_num(), bound_numer, ROUND_NOT_NEEDED); -2441: assign_r(bound.get_den(), bound_denom, ROUND_NOT_NEEDED); -2441: bound.canonicalize(); -2441: seq_i.build(i_constraint(EQUAL, bound)); -2441: } -2441: else { -2441: seq_i.assign(UNIVERSE); -2441: } -2441: } -2441: } -2441: -2441: template -2441: template -2441: Box::Box(const Partially_Reduced_Product& dp, -2441: Complexity_Class complexity) -2441: : seq(), status() { -2441: check_space_dimension_overflow(dp.space_dimension(), -2441: max_space_dimension(), -2441: "PPL::Box::", -2441: "Box(dp)", -2441: "dp exceeds the maximum " -2441: "allowed space dimension"); -2441: Box tmp1(dp.domain1(), complexity); -2441: Box tmp2(dp.domain2(), complexity); -2441: tmp1.intersection_assign(tmp2); -2441: m_swap(tmp1); -2441: } -2441: -2441: template -2441: inline void -2441: Box::add_space_dimensions_and_embed(const dimension_type m) { -2441: -2441: if (m == 0) { -2441: return; -2441: } -2441: check_space_dimension_overflow(m, max_space_dimension() - space_dimension(), -2441: "PPL::Box::", -2441: "add_space_dimensions_and_embed(m)", -2441: "adding m new space dimensions exceeds " -2441: "the maximum allowed space dimension"); -2441: -2441: -2441: seq.insert(seq.end(), m, ITV(UNIVERSE)); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline void -2441: Box::add_space_dimensions_and_project(const dimension_type m) { -2441: -2441: if (m == 0) { -2441: return; -2441: } -2441: check_space_dimension_overflow(m, max_space_dimension() - space_dimension(), -2441: "PPL::Box::", -2441: "add_space_dimensions_and_project(m)", -2441: "adding m new space dimensions exceeds " -2441: "the maximum allowed space dimension"); -2441: -2441: seq.insert(seq.end(), m, ITV(0)); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: bool -2441: operator==(const Box& x, const Box& y) { -2441: const dimension_type x_space_dim = x.space_dimension(); -2441: if (x_space_dim != y.space_dimension()) { -2441: return false; -2441: } -2441: -2441: if (x.is_empty()) { -2441: return y.is_empty(); -2441: } -2441: -2441: if (y.is_empty()) { -2441: return x.is_empty(); -2441: } -2441: -2441: for (dimension_type k = x_space_dim; k-- > 0; ) { -2441: if (x.seq[k] != y.seq[k]) { -2441: return false; -2441: } -2441: } -2441: return true; -2441: } -2441: -2441: template -2441: bool -2441: Box::bounds(const Linear_Expression& expr, const bool from_above) const { -2441: -2441: const dimension_type expr_space_dim = expr.space_dimension(); -2441: const dimension_type space_dim = space_dimension(); -2441: if (space_dim < expr_space_dim) { -2441: throw_dimension_incompatible((from_above -2441: ? "bounds_from_above(e)" -2441: : "bounds_from_below(e)"), "e", expr); -2441: } -2441: -2441: if (space_dim == 0 || is_empty()) { -2441: return true; -2441: } -2441: const int from_above_sign = from_above ? 1 : -1; -2441: -2441: -2441: for (Linear_Expression::const_iterator i = expr.begin(), -2441: i_end = expr.end(); i != i_end; ++i) { -2441: const Variable v = i.variable(); -2441: switch (sgn(*i) * from_above_sign) { -2441: case 1: -2441: if (seq[v.id()].upper_is_boundary_infinity()) { -2441: return false; -2441: } -2441: break; -2441: case 0: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: case -1: -2441: if (seq[v.id()].lower_is_boundary_infinity()) { -2441: return false; -2441: } -2441: break; -2441: } -2441: } -2441: return true; -2441: } -2441: -2441: template -2441: Poly_Con_Relation -2441: interval_relation(const ITV& i, -2441: const Constraint::Type constraint_type, -2441: Coefficient_traits::const_reference numer, -2441: Coefficient_traits::const_reference denom) { -2441: -2441: if (i.is_universe()) { -2441: return Poly_Con_Relation::strictly_intersects(); -2441: } -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_bound; mpq_class& bound = holder_bound.item(); -2441: assign_r(bound.get_num(), numer, ROUND_NOT_NEEDED); -2441: assign_r(bound.get_den(), denom, ROUND_NOT_NEEDED); -2441: bound.canonicalize(); -2441: neg_assign_r(bound, bound, ROUND_NOT_NEEDED); -2441: const bool is_lower_bound = (denom > 0); -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_bound_diff; mpq_class& bound_diff = holder_bound_diff.item(); -2441: if (constraint_type == Constraint::EQUALITY) { -2441: if (i.lower_is_boundary_infinity()) { -2441: ((void) 0); -2441: assign_r(bound_diff, i.upper(), ROUND_NOT_NEEDED); -2441: sub_assign_r(bound_diff, bound_diff, bound, ROUND_NOT_NEEDED); -2441: switch (sgn(bound_diff)) { -2441: case 1: -2441: return Poly_Con_Relation::strictly_intersects(); -2441: case 0: -2441: return i.upper_is_open() -2441: ? Poly_Con_Relation::is_disjoint() -2441: : Poly_Con_Relation::strictly_intersects(); -2441: case -1: -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: } -2441: else { -2441: assign_r(bound_diff, i.lower(), ROUND_NOT_NEEDED); -2441: sub_assign_r(bound_diff, bound_diff, bound, ROUND_NOT_NEEDED); -2441: switch (sgn(bound_diff)) { -2441: case 1: -2441: return Poly_Con_Relation::is_disjoint(); -2441: case 0: -2441: if (i.lower_is_open()) { -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: if (i.is_singleton()) { -2441: return Poly_Con_Relation::is_included() -2441: && Poly_Con_Relation::saturates(); -2441: } -2441: return Poly_Con_Relation::strictly_intersects(); -2441: case -1: -2441: if (i.upper_is_boundary_infinity()) { -2441: return Poly_Con_Relation::strictly_intersects(); -2441: } -2441: else { -2441: assign_r(bound_diff, i.upper(), ROUND_NOT_NEEDED); -2441: sub_assign_r(bound_diff, bound_diff, bound, ROUND_NOT_NEEDED); -2441: switch (sgn(bound_diff)) { -2441: case 1: -2441: return Poly_Con_Relation::strictly_intersects(); -2441: case 0: -2441: if (i.upper_is_open()) { -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: else { -2441: return Poly_Con_Relation::strictly_intersects(); -2441: } -2441: case -1: -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: } -2441: } -2441: } -2441: } -2441: -2441: ((void) 0); -2441: if (is_lower_bound) { -2441: if (i.lower_is_boundary_infinity()) { -2441: ((void) 0); -2441: assign_r(bound_diff, i.upper(), ROUND_NOT_NEEDED); -2441: sub_assign_r(bound_diff, bound_diff, bound, ROUND_NOT_NEEDED); -2441: switch (sgn(bound_diff)) { -2441: case 1: -2441: return Poly_Con_Relation::strictly_intersects(); -2441: case 0: -2441: if (constraint_type == Constraint::STRICT_INEQUALITY -2441: || i.upper_is_open()) { -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: else { -2441: return Poly_Con_Relation::strictly_intersects(); -2441: } -2441: case -1: -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: } -2441: else { -2441: assign_r(bound_diff, i.lower(), ROUND_NOT_NEEDED); -2441: sub_assign_r(bound_diff, bound_diff, bound, ROUND_NOT_NEEDED); -2441: switch (sgn(bound_diff)) { -2441: case 1: -2441: return Poly_Con_Relation::is_included(); -2441: case 0: -2441: if (constraint_type == Constraint::NONSTRICT_INEQUALITY -2441: || i.lower_is_open()) { -2441: Poly_Con_Relation result = Poly_Con_Relation::is_included(); -2441: if (i.is_singleton()) { -2441: result = result && Poly_Con_Relation::saturates(); -2441: } -2441: return result; -2441: } -2441: else { -2441: ((void) 0) -2441: ; -2441: if (i.is_singleton()) { -2441: return Poly_Con_Relation::is_disjoint() -2441: && Poly_Con_Relation::saturates(); -2441: } -2441: else { -2441: return Poly_Con_Relation::strictly_intersects(); -2441: } -2441: } -2441: case -1: -2441: if (i.upper_is_boundary_infinity()) { -2441: return Poly_Con_Relation::strictly_intersects(); -2441: } -2441: else { -2441: assign_r(bound_diff, i.upper(), ROUND_NOT_NEEDED); -2441: sub_assign_r(bound_diff, bound_diff, bound, ROUND_NOT_NEEDED); -2441: switch (sgn(bound_diff)) { -2441: case 1: -2441: return Poly_Con_Relation::strictly_intersects(); -2441: case 0: -2441: if (constraint_type == Constraint::STRICT_INEQUALITY -2441: || i.upper_is_open()) { -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: else { -2441: return Poly_Con_Relation::strictly_intersects(); -2441: } -2441: case -1: -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: } -2441: } -2441: } -2441: } -2441: else { -2441: -2441: if (i.upper_is_boundary_infinity()) { -2441: return Poly_Con_Relation::strictly_intersects(); -2441: } -2441: else { -2441: assign_r(bound_diff, i.upper(), ROUND_NOT_NEEDED); -2441: sub_assign_r(bound_diff, bound_diff, bound, ROUND_NOT_NEEDED); -2441: switch (sgn(bound_diff)) { -2441: case -1: -2441: return Poly_Con_Relation::is_included(); -2441: case 0: -2441: if (constraint_type == Constraint::NONSTRICT_INEQUALITY -2441: || i.upper_is_open()) { -2441: Poly_Con_Relation result = Poly_Con_Relation::is_included(); -2441: if (i.is_singleton()) { -2441: result = result && Poly_Con_Relation::saturates(); -2441: } -2441: return result; -2441: } -2441: else { -2441: ((void) 0) -2441: ; -2441: if (i.is_singleton()) { -2441: return Poly_Con_Relation::is_disjoint() -2441: && Poly_Con_Relation::saturates(); -2441: } -2441: else { -2441: return Poly_Con_Relation::strictly_intersects(); -2441: } -2441: } -2441: case 1: -2441: if (i.lower_is_boundary_infinity()) { -2441: return Poly_Con_Relation::strictly_intersects(); -2441: } -2441: else { -2441: assign_r(bound_diff, i.lower(), ROUND_NOT_NEEDED); -2441: sub_assign_r(bound_diff, bound_diff, bound, ROUND_NOT_NEEDED); -2441: switch (sgn(bound_diff)) { -2441: case -1: -2441: return Poly_Con_Relation::strictly_intersects(); -2441: case 0: -2441: if (constraint_type == Constraint::STRICT_INEQUALITY -2441: || i.lower_is_open()) { -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: else { -2441: return Poly_Con_Relation::strictly_intersects(); -2441: } -2441: case 1: -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: } -2441: } -2441: } -2441: } -2441: -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return Poly_Con_Relation::nothing(); -2441: } -2441: -2441: template -2441: Poly_Con_Relation -2441: Box::relation_with(const Congruence& cg) const { -2441: const dimension_type cg_space_dim = cg.space_dimension(); -2441: const dimension_type space_dim = space_dimension(); -2441: -2441: -2441: if (cg_space_dim > space_dim) { -2441: throw_dimension_incompatible("relation_with(cg)", cg); -2441: } -2441: if (is_empty()) { -2441: return Poly_Con_Relation::saturates() -2441: && Poly_Con_Relation::is_included() -2441: && Poly_Con_Relation::is_disjoint(); -2441: } -2441: -2441: if (space_dim == 0) { -2441: if (cg.is_inconsistent()) { -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: else { -2441: return Poly_Con_Relation::saturates() -2441: && Poly_Con_Relation::is_included(); -2441: } -2441: } -2441: -2441: if (cg.is_equality()) { -2441: const Constraint c(cg); -2441: return relation_with(c); -2441: } -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_r; Rational_Interval& r = holder_r.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_t; Rational_Interval& t = holder_t.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_m; mpq_class& m = holder_m.item(); -2441: r = 0; -2441: for (Congruence::expr_type::const_iterator i = cg.expression().begin(), -2441: i_end = cg.expression().end(); i != i_end; ++i) { -2441: const Coefficient& cg_i = *i; -2441: const Variable v = i.variable(); -2441: assign_r(m, cg_i, ROUND_NOT_NEEDED); -2441: -2441: t.build(seq[v.id()].lower_constraint(), seq[v.id()].upper_constraint()); -2441: t *= m; -2441: r += t; -2441: } -2441: -2441: if (r.lower_is_boundary_infinity() || r.upper_is_boundary_infinity()) { -2441: return Poly_Con_Relation::strictly_intersects(); -2441: } -2441: -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_lower; Parma_Polyhedra_Library::Coefficient& lower = holder_lower.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_mod; Parma_Polyhedra_Library::Coefficient& mod = holder_mod.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_v; Parma_Polyhedra_Library::Coefficient& v = holder_v.item(); -2441: mod = cg.modulus(); -2441: v = cg.inhomogeneous_term() % mod; -2441: assign_r(lower, r.lower(), ROUND_DOWN); -2441: v -= ((lower / mod) * mod); -2441: if (v + lower > 0) { -2441: v -= mod; -2441: } -2441: return interval_relation(r, Constraint::EQUALITY, v); -2441: } -2441: -2441: template -2441: Poly_Con_Relation -2441: Box::relation_with(const Constraint& c) const { -2441: const dimension_type c_space_dim = c.space_dimension(); -2441: const dimension_type space_dim = space_dimension(); -2441: -2441: -2441: if (c_space_dim > space_dim) { -2441: throw_dimension_incompatible("relation_with(c)", c); -2441: } -2441: -2441: if (is_empty()) { -2441: return Poly_Con_Relation::saturates() -2441: && Poly_Con_Relation::is_included() -2441: && Poly_Con_Relation::is_disjoint(); -2441: } -2441: -2441: if (space_dim == 0) { -2441: if ((c.is_equality() && c.inhomogeneous_term() != 0) -2441: || (c.is_inequality() && c.inhomogeneous_term() < 0)) { -2441: return Poly_Con_Relation::is_disjoint(); -2441: } -2441: else if (c.is_strict_inequality() && c.inhomogeneous_term() == 0) { -2441: -2441: -2441: return Poly_Con_Relation::saturates() -2441: && Poly_Con_Relation::is_disjoint(); -2441: } -2441: else if (c.is_equality() || c.inhomogeneous_term() == 0) { -2441: return Poly_Con_Relation::saturates() -2441: && Poly_Con_Relation::is_included(); -2441: } -2441: else { -2441: -2441: -2441: -2441: return Poly_Con_Relation::is_included(); -2441: } -2441: } -2441: -2441: dimension_type c_num_vars = 0; -2441: dimension_type c_only_var = 0; -2441: -2441: if (Box_Helpers::extract_interval_constraint(c, c_num_vars, c_only_var)) { -2441: if (c_num_vars == 0) { -2441: -2441: switch (sgn(c.inhomogeneous_term())) { -2441: case -1: -2441: return Poly_Con_Relation::is_disjoint(); -2441: case 0: -2441: if (c.is_strict_inequality()) { -2441: return Poly_Con_Relation::saturates() -2441: && Poly_Con_Relation::is_disjoint(); -2441: } -2441: else { -2441: return Poly_Con_Relation::saturates() -2441: && Poly_Con_Relation::is_included(); -2441: } -2441: case 1: -2441: return Poly_Con_Relation::is_included(); -2441: } -2441: } -2441: else { -2441: -2441: return interval_relation(seq[c_only_var], -2441: c.type(), -2441: c.inhomogeneous_term(), -2441: c.coefficient(Variable(c_only_var))); -2441: } -2441: } -2441: else { -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_r; Rational_Interval& r = holder_r.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_t; Rational_Interval& t = holder_t.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_m; mpq_class& m = holder_m.item(); -2441: r = 0; -2441: const Constraint::expr_type& e = c.expression(); -2441: for (Constraint::expr_type::const_iterator i = e.begin(), i_end = e.end(); -2441: i != i_end; ++i) { -2441: assign_r(m, *i, ROUND_NOT_NEEDED); -2441: const Variable v = i.variable(); -2441: -2441: t.build(seq[v.id()].lower_constraint(), seq[v.id()].upper_constraint()); -2441: t *= m; -2441: r += t; -2441: } -2441: return interval_relation(r, -2441: c.type(), -2441: c.inhomogeneous_term()); -2441: } -2441: -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return Poly_Con_Relation::nothing(); -2441: } -2441: -2441: template -2441: Poly_Gen_Relation -2441: Box::relation_with(const Generator& g) const { -2441: const dimension_type space_dim = space_dimension(); -2441: const dimension_type g_space_dim = g.space_dimension(); -2441: -2441: -2441: if (space_dim < g_space_dim) { -2441: throw_dimension_incompatible("relation_with(g)", g); -2441: } -2441: -2441: -2441: if (is_empty()) { -2441: return Poly_Gen_Relation::nothing(); -2441: } -2441: -2441: -2441: -2441: if (space_dim == 0) { -2441: return Poly_Gen_Relation::subsumes(); -2441: } -2441: -2441: if (g.is_line_or_ray()) { -2441: if (g.is_line()) { -2441: const Generator::expr_type& e = g.expression(); -2441: for (Generator::expr_type::const_iterator i = e.begin(), i_end = e.end(); -2441: i != i_end; ++i) { -2441: if (!seq[i.variable().id()].is_universe()) { -2441: return Poly_Gen_Relation::nothing(); -2441: } -2441: } -2441: return Poly_Gen_Relation::subsumes(); -2441: } -2441: else { -2441: ((void) 0); -2441: const Generator::expr_type& e = g.expression(); -2441: for (Generator::expr_type::const_iterator i = e.begin(), i_end = e.end(); -2441: i != i_end; ++i) { -2441: const Variable v = i.variable(); -2441: switch (sgn(*i)) { -2441: case 1: -2441: if (!seq[v.id()].upper_is_boundary_infinity()) { -2441: return Poly_Gen_Relation::nothing(); -2441: } -2441: break; -2441: case 0: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: case -1: -2441: if (!seq[v.id()].lower_is_boundary_infinity()) { -2441: return Poly_Gen_Relation::nothing(); -2441: } -2441: break; -2441: } -2441: } -2441: return Poly_Gen_Relation::subsumes(); -2441: } -2441: } -2441: -2441: -2441: const Coefficient& g_divisor = g.divisor(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_g_coord; mpq_class& g_coord = holder_g_coord.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_bound; mpq_class& bound = holder_bound.item(); -2441: -2441: -2441: -2441: for (dimension_type i = g_space_dim; i-- > 0; ) { -2441: const ITV& seq_i = seq[i]; -2441: if (seq_i.is_universe()) { -2441: continue; -2441: } -2441: assign_r(g_coord.get_num(), g.coefficient(Variable(i)), ROUND_NOT_NEEDED); -2441: assign_r(g_coord.get_den(), g_divisor, ROUND_NOT_NEEDED); -2441: g_coord.canonicalize(); -2441: -2441: if (!seq_i.lower_is_boundary_infinity()) { -2441: assign_r(bound, seq_i.lower(), ROUND_NOT_NEEDED); -2441: if (g_coord <= bound) { -2441: if (seq_i.lower_is_open()) { -2441: if (g.is_point() || g_coord != bound) { -2441: return Poly_Gen_Relation::nothing(); -2441: } -2441: } -2441: else if (g_coord != bound) { -2441: return Poly_Gen_Relation::nothing(); -2441: } -2441: } -2441: } -2441: -2441: if (!seq_i.upper_is_boundary_infinity()) { -2441: assign_r(bound, seq_i.upper(), ROUND_NOT_NEEDED); -2441: if (g_coord >= bound) { -2441: if (seq_i.upper_is_open()) { -2441: if (g.is_point() || g_coord != bound) { -2441: return Poly_Gen_Relation::nothing(); -2441: } -2441: } -2441: else if (g_coord != bound) { -2441: return Poly_Gen_Relation::nothing(); -2441: } -2441: } -2441: } -2441: } -2441: return Poly_Gen_Relation::subsumes(); -2441: } -2441: -2441: -2441: template -2441: bool -2441: Box::max_min(const Linear_Expression& expr, -2441: const bool maximize, -2441: Coefficient& ext_n, Coefficient& ext_d, -2441: bool& included) const { -2441: -2441: const dimension_type space_dim = space_dimension(); -2441: const dimension_type expr_space_dim = expr.space_dimension(); -2441: if (space_dim < expr_space_dim) { -2441: throw_dimension_incompatible((maximize -2441: ? "maximize(e, ...)" -2441: : "minimize(e, ...)"), "e", expr); -2441: } -2441: -2441: -2441: if (space_dim == 0) { -2441: if (marked_empty()) { -2441: return false; -2441: } -2441: else { -2441: ext_n = expr.inhomogeneous_term(); -2441: ext_d = 1; -2441: included = true; -2441: return true; -2441: } -2441: } -2441: -2441: -2441: if (is_empty()) { -2441: return false; -2441: } -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_result; mpq_class& result = holder_result.item(); -2441: assign_r(result, expr.inhomogeneous_term(), ROUND_NOT_NEEDED); -2441: bool is_included = true; -2441: const int maximize_sign = maximize ? 1 : -1; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_bound_i; mpq_class& bound_i = holder_bound_i.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_expr_i; mpq_class& expr_i = holder_expr_i.item(); -2441: for (Linear_Expression::const_iterator i = expr.begin(), -2441: i_end = expr.end(); i != i_end; ++i) { -2441: const ITV& seq_i = seq[i.variable().id()]; -2441: assign_r(expr_i, *i, ROUND_NOT_NEEDED); -2441: switch (sgn(expr_i) * maximize_sign) { -2441: case 1: -2441: if (seq_i.upper_is_boundary_infinity()) { -2441: return false; -2441: } -2441: assign_r(bound_i, seq_i.upper(), ROUND_NOT_NEEDED); -2441: add_mul_assign_r(result, bound_i, expr_i, ROUND_NOT_NEEDED); -2441: if (seq_i.upper_is_open()) { -2441: is_included = false; -2441: } -2441: break; -2441: case 0: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: case -1: -2441: if (seq_i.lower_is_boundary_infinity()) { -2441: return false; -2441: } -2441: assign_r(bound_i, seq_i.lower(), ROUND_NOT_NEEDED); -2441: add_mul_assign_r(result, bound_i, expr_i, ROUND_NOT_NEEDED); -2441: if (seq_i.lower_is_open()) { -2441: is_included = false; -2441: } -2441: break; -2441: } -2441: } -2441: -2441: ((void) 0); -2441: ext_n = result.get_num(); -2441: ext_d = result.get_den(); -2441: included = is_included; -2441: return true; -2441: } -2441: -2441: template -2441: bool -2441: Box::max_min(const Linear_Expression& expr, -2441: const bool maximize, -2441: Coefficient& ext_n, Coefficient& ext_d, -2441: bool& included, -2441: Generator& g) const { -2441: if (!max_min(expr, maximize, ext_n, ext_d, included)) { -2441: return false; -2441: } -2441: -2441: Linear_Expression g_expr; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_g_divisor; Parma_Polyhedra_Library::Coefficient& g_divisor = holder_g_divisor.item(); -2441: g_divisor = 1; -2441: const int maximize_sign = maximize ? 1 : -1; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_g_coord; mpq_class& g_coord = holder_g_coord.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_numer; Parma_Polyhedra_Library::Coefficient& numer = holder_numer.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_denom; Parma_Polyhedra_Library::Coefficient& denom = holder_denom.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_lcm; Parma_Polyhedra_Library::Coefficient& lcm = holder_lcm.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_factor; Parma_Polyhedra_Library::Coefficient& factor = holder_factor.item(); -2441: -2441: -2441: for (dimension_type i = space_dimension(); i-- > 0; ) { -2441: const ITV& seq_i = seq[i]; -2441: switch (sgn(expr.coefficient(Variable(i))) * maximize_sign) { -2441: case 1: -2441: assign_r(g_coord, seq_i.upper(), ROUND_NOT_NEEDED); -2441: break; -2441: case 0: -2441: -2441: -2441: -2441: if (seq_i.contains(0)) { -2441: continue; -2441: } -2441: if (!seq_i.lower_is_boundary_infinity()) { -2441: if (seq_i.lower_is_open()) { -2441: if (!seq_i.upper_is_boundary_infinity()) { -2441: if (seq_i.upper_is_open()) { -2441: -2441: assign_r(g_coord, seq_i.lower(), ROUND_NOT_NEEDED); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_q_seq_i_upper; mpq_class& q_seq_i_upper = holder_q_seq_i_upper.item(); -2441: assign_r(q_seq_i_upper, seq_i.upper(), ROUND_NOT_NEEDED); -2441: g_coord += q_seq_i_upper; -2441: g_coord /= 2; -2441: } -2441: else { -2441: -2441: assign_r(g_coord, seq_i.upper(), ROUND_NOT_NEEDED); -2441: } -2441: } -2441: else { -2441: -2441: assign_r(g_coord, seq_i.lower(), ROUND_NOT_NEEDED); -2441: ++g_coord; -2441: } -2441: } -2441: else { -2441: -2441: assign_r(g_coord, seq_i.lower(), ROUND_NOT_NEEDED); -2441: } -2441: } -2441: else { -2441: -2441: -2441: ((void) 0); -2441: assign_r(g_coord, seq_i.upper(), ROUND_NOT_NEEDED); -2441: if (seq_i.upper_is_open()) { -2441: --g_coord; -2441: } -2441: } -2441: break; -2441: case -1: -2441: assign_r(g_coord, seq_i.lower(), ROUND_NOT_NEEDED); -2441: break; -2441: } -2441: -2441: assign_r(denom, g_coord.get_den(), ROUND_NOT_NEEDED); -2441: lcm_assign(lcm, g_divisor, denom); -2441: exact_div_assign(factor, lcm, g_divisor); -2441: g_expr *= factor; -2441: exact_div_assign(factor, lcm, denom); -2441: assign_r(numer, g_coord.get_num(), ROUND_NOT_NEEDED); -2441: numer *= factor; -2441: g_expr += numer * Variable(i); -2441: g_divisor = lcm; -2441: } -2441: g = Generator::point(g_expr, g_divisor); -2441: return true; -2441: } -2441: -2441: template -2441: bool -2441: Box::contains(const Box& y) const { -2441: const Box& x = *this; -2441: -2441: if (x.space_dimension() != y.space_dimension()) { -2441: x.throw_dimension_incompatible("contains(y)", y); -2441: } -2441: -2441: -2441: if (y.is_empty()) { -2441: return true; -2441: } -2441: -2441: -2441: if (x.is_empty()) { -2441: return false; -2441: } -2441: -2441: for (dimension_type k = x.seq.size(); k-- > 0; ) { -2441: -2441: if (!x.seq[k].contains(y.seq[k])) { -2441: return false; -2441: } -2441: } -2441: return true; -2441: } -2441: -2441: template -2441: bool -2441: Box::is_disjoint_from(const Box& y) const { -2441: const Box& x = *this; -2441: -2441: if (x.space_dimension() != y.space_dimension()) { -2441: x.throw_dimension_incompatible("is_disjoint_from(y)", y); -2441: } -2441: -2441: -2441: -2441: if (x.marked_empty() || y.marked_empty()) { -2441: return true; -2441: } -2441: -2441: for (dimension_type k = x.seq.size(); k-- > 0; ) { -2441: -2441: if (x.seq[k].is_disjoint_from(y.seq[k])) { -2441: return true; -2441: } -2441: } -2441: return false; -2441: } -2441: -2441: template -2441: inline bool -2441: Box::upper_bound_assign_if_exact(const Box& y) { -2441: Box& x = *this; -2441: -2441: -2441: if (x.space_dimension() != y.space_dimension()) { -2441: x.throw_dimension_incompatible("upper_bound_assign_if_exact(y)", y); -2441: } -2441: -2441: -2441: if (y.is_empty()) { -2441: return true; -2441: } -2441: if (x.is_empty()) { -2441: x = y; -2441: return true; -2441: } -2441: -2441: bool x_j_does_not_contain_y_j = false; -2441: bool y_j_does_not_contain_x_j = false; -2441: -2441: for (dimension_type i = x.seq.size(); i-- > 0; ) { -2441: const ITV& x_seq_i = x.seq[i]; -2441: const ITV& y_seq_i = y.seq[i]; -2441: -2441: if (!x_seq_i.can_be_exactly_joined_to(y_seq_i)) { -2441: return false; -2441: } -2441: -2441: -2441: -2441: -2441: bool y_i_does_not_contain_x_i = !y_seq_i.contains(x_seq_i); -2441: if (y_i_does_not_contain_x_i && x_j_does_not_contain_y_j) { -2441: return false; -2441: } -2441: if (!x_seq_i.contains(y_seq_i)) { -2441: if (y_j_does_not_contain_x_j) { -2441: return false; -2441: } -2441: else { -2441: x_j_does_not_contain_y_j = true; -2441: } -2441: } -2441: if (y_i_does_not_contain_x_i) { -2441: y_j_does_not_contain_x_j = true; -2441: } -2441: } -2441: -2441: -2441: for (dimension_type k = x.seq.size(); k-- > 0; ) { -2441: x.seq[k].join_assign(y.seq[k]); -2441: } -2441: return true; -2441: } -2441: -2441: template -2441: bool -2441: Box::OK() const { -2441: if (status.test_empty_up_to_date() && !status.test_empty()) { -2441: Box tmp = *this; -2441: tmp.reset_empty_up_to_date(); -2441: if (tmp.check_empty()) { -2441: -2441: -2441: -2441: -2441: return false; -2441: } -2441: } -2441: -2441: -2441: if (!marked_empty()) { -2441: for (dimension_type k = seq.size(); k-- > 0; ) { -2441: if (!seq[k].OK()) { -2441: return false; -2441: } -2441: } -2441: } -2441: -2441: return true; -2441: } -2441: -2441: template -2441: dimension_type -2441: Box::affine_dimension() const { -2441: dimension_type d = space_dimension(); -2441: -2441: if (d == 0) { -2441: return 0; -2441: } -2441: -2441: -2441: if (is_empty()) { -2441: return 0; -2441: } -2441: -2441: for (dimension_type k = d; k-- > 0; ) { -2441: if (seq[k].is_singleton()) { -2441: --d; -2441: } -2441: } -2441: -2441: return d; -2441: } -2441: -2441: template -2441: bool -2441: Box::check_empty() const { -2441: ((void) 0); -2441: Box& x = const_cast&>(*this); -2441: for (dimension_type k = seq.size(); k-- > 0; ) { -2441: if (seq[k].is_empty()) { -2441: x.set_empty(); -2441: return true; -2441: } -2441: } -2441: x.set_nonempty(); -2441: return false; -2441: } -2441: -2441: template -2441: bool -2441: Box::is_universe() const { -2441: if (marked_empty()) { -2441: return false; -2441: } -2441: for (dimension_type k = seq.size(); k-- > 0; ) { -2441: if (!seq[k].is_universe()) { -2441: return false; -2441: } -2441: } -2441: return true; -2441: } -2441: -2441: template -2441: bool -2441: Box::is_topologically_closed() const { -2441: if (ITV::is_always_topologically_closed() || is_empty()) { -2441: return true; -2441: } -2441: -2441: for (dimension_type k = seq.size(); k-- > 0; ) { -2441: if (!seq[k].is_topologically_closed()) { -2441: return false; -2441: } -2441: } -2441: return true; -2441: } -2441: -2441: template -2441: bool -2441: Box::is_discrete() const { -2441: if (is_empty()) { -2441: return true; -2441: } -2441: for (dimension_type k = seq.size(); k-- > 0; ) { -2441: if (!seq[k].is_singleton()) { -2441: return false; -2441: } -2441: } -2441: return true; -2441: } -2441: -2441: template -2441: bool -2441: Box::is_bounded() const { -2441: if (is_empty()) { -2441: return true; -2441: } -2441: for (dimension_type k = seq.size(); k-- > 0; ) { -2441: if (!seq[k].is_bounded()) { -2441: return false; -2441: } -2441: } -2441: return true; -2441: } -2441: -2441: template -2441: bool -2441: Box::contains_integer_point() const { -2441: if (marked_empty()) { -2441: return false; -2441: } -2441: for (dimension_type k = seq.size(); k-- > 0; ) { -2441: if (!seq[k].contains_integer_point()) { -2441: return false; -2441: } -2441: } -2441: return true; -2441: } -2441: -2441: template -2441: bool -2441: Box::frequency(const Linear_Expression& expr, -2441: Coefficient& freq_n, Coefficient& freq_d, -2441: Coefficient& val_n, Coefficient& val_d) const { -2441: dimension_type space_dim = space_dimension(); -2441: -2441: if (space_dim < expr.space_dimension()) { -2441: throw_dimension_incompatible("frequency(e, ...)", "e", expr); -2441: } -2441: # 1552 "../../src/Box_templates.hh" -2441: if (space_dim == 0) { -2441: if (is_empty()) { -2441: return false; -2441: } -2441: freq_n = 0; -2441: freq_d = 1; -2441: val_n = expr.inhomogeneous_term(); -2441: val_d = 1; -2441: return true; -2441: } -2441: -2441: -2441: if (is_empty()) { -2441: return false; -2441: } -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_numer; Parma_Polyhedra_Library::Coefficient& numer = holder_numer.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_denom; Parma_Polyhedra_Library::Coefficient& denom = holder_denom.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp; mpq_class& tmp = holder_tmp.item(); -2441: Coefficient c = expr.inhomogeneous_term(); -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_val_denom; Parma_Polyhedra_Library::Coefficient& val_denom = holder_val_denom.item(); -2441: val_denom = 1; -2441: -2441: for (Linear_Expression::const_iterator i = expr.begin(), i_end = expr.end(); -2441: i != i_end; ++i) { -2441: const ITV& seq_i = seq[i.variable().id()]; -2441: -2441: if (seq_i.is_singleton()) { -2441: -2441: assign_r(tmp, seq_i.lower(), ROUND_NOT_NEEDED); -2441: numer = tmp.get_num(); -2441: denom = tmp.get_den(); -2441: c *= denom; -2441: c += numer * val_denom * (*i); -2441: val_denom *= denom; -2441: continue; -2441: } -2441: -2441: return false; -2441: } -2441: -2441: -2441: freq_n = 0; -2441: freq_d = 1; -2441: -2441: -2441: normalize2(c, val_denom, val_n, val_d); -2441: return true; -2441: } -2441: -2441: template -2441: bool -2441: Box::constrains(Variable var) const { -2441: -2441: const dimension_type var_space_dim = var.space_dimension(); -2441: if (space_dimension() < var_space_dim) { -2441: throw_dimension_incompatible("constrains(v)", "v", var); -2441: } -2441: -2441: if (marked_empty() || !seq[var_space_dim-1].is_universe()) { -2441: return true; -2441: } -2441: -2441: return is_empty(); -2441: } -2441: -2441: template -2441: void -2441: Box::unconstrain(const Variables_Set& vars) { -2441: -2441: -2441: -2441: if (vars.empty()) { -2441: return; -2441: } -2441: -2441: -2441: const dimension_type min_space_dim = vars.space_dimension(); -2441: if (space_dimension() < min_space_dim) { -2441: throw_dimension_incompatible("unconstrain(vs)", min_space_dim); -2441: } -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: -2441: -2441: -2441: for (Variables_Set::const_iterator vsi = vars.begin(), -2441: vsi_end = vars.end(); vsi != vsi_end; ++vsi) { -2441: ITV& seq_vsi = seq[*vsi]; -2441: if (!seq_vsi.is_empty()) { -2441: seq_vsi.assign(UNIVERSE); -2441: } -2441: else { -2441: set_empty(); -2441: break; -2441: } -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Box::topological_closure_assign() { -2441: if (ITV::is_always_topologically_closed() || is_empty()) { -2441: return; -2441: } -2441: -2441: for (dimension_type k = seq.size(); k-- > 0; ) { -2441: seq[k].topological_closure_assign(); -2441: } -2441: } -2441: -2441: template -2441: void -2441: Box::wrap_assign(const Variables_Set& vars, -2441: Bounded_Integer_Type_Width w, -2441: Bounded_Integer_Type_Representation r, -2441: Bounded_Integer_Type_Overflow o, -2441: const Constraint_System* cs_p, -2441: unsigned complexity_threshold, -2441: bool wrap_individually) { -2441: -2441: -2441: -2441: -2441: -2441: -2441: (void)(wrap_individually); -2441: (void)(complexity_threshold); -2441: Box& x = *this; -2441: -2441: -2441: const dimension_type vars_space_dim = vars.space_dimension(); -2441: if (cs_p != 0 && cs_p->space_dimension() > vars_space_dim) { -2441: std::ostringstream s; -2441: s << "PPL::Box::wrap_assign(vars, w, r, o, cs_p, ...):" -2441: << std::endl -2441: << "vars.space_dimension() == " << vars_space_dim -2441: << ", cs_p->space_dimension() == " << cs_p->space_dimension() << "."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: -2441: if (vars.empty()) { -2441: if (cs_p != 0) { -2441: refine_with_constraints(*cs_p); -2441: } -2441: return; -2441: } -2441: -2441: -2441: const dimension_type space_dim = x.space_dimension(); -2441: if (space_dim < vars_space_dim) { -2441: std::ostringstream s; -2441: s << "PPL::Box::wrap_assign(vars, ...):" -2441: << std::endl -2441: << "this->space_dimension() == " << space_dim -2441: << ", required space dimension == " << vars_space_dim << "."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: -2441: if (x.is_empty()) { -2441: return; -2441: } -2441: -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_min_value; Parma_Polyhedra_Library::Coefficient& min_value = holder_min_value.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_max_value; Parma_Polyhedra_Library::Coefficient& max_value = holder_max_value.item(); -2441: if (r == UNSIGNED) { -2441: min_value = 0; -2441: mul_2exp_assign(max_value, Coefficient_one(), w); -2441: --max_value; -2441: } -2441: else { -2441: ((void) 0); -2441: mul_2exp_assign(max_value, Coefficient_one(), w-1); -2441: neg_assign(min_value, max_value); -2441: --max_value; -2441: } -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_integer_quadrant_itv; ITV& integer_quadrant_itv = holder_integer_quadrant_itv.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_rational_quadrant_itv; ITV& rational_quadrant_itv = holder_rational_quadrant_itv.item(); -2441: { -2441: I_Constraint lower = i_constraint(GREATER_OR_EQUAL, min_value); -2441: I_Constraint upper = i_constraint(LESS_OR_EQUAL, max_value); -2441: integer_quadrant_itv.build(lower, upper); -2441: -2441: if (o == OVERFLOW_UNDEFINED) { -2441: ++max_value; -2441: upper = i_constraint(LESS_THAN, max_value); -2441: rational_quadrant_itv.build(lower, upper); -2441: } -2441: } -2441: -2441: const Variables_Set::const_iterator vs_end = vars.end(); -2441: -2441: if (cs_p == 0) { -2441: -2441: switch (o) { -2441: case OVERFLOW_WRAPS: -2441: for (Variables_Set::const_iterator i = vars.begin(); i != vs_end; ++i) { -2441: x.seq[*i].wrap_assign(w, r, integer_quadrant_itv); -2441: } -2441: reset_empty_up_to_date(); -2441: break; -2441: case OVERFLOW_UNDEFINED: -2441: for (Variables_Set::const_iterator i = vars.begin(); i != vs_end; ++i) { -2441: ITV& x_seq_v = x.seq[*i]; -2441: if (!rational_quadrant_itv.contains(x_seq_v)) { -2441: x_seq_v.assign(integer_quadrant_itv); -2441: } -2441: } -2441: break; -2441: case OVERFLOW_IMPOSSIBLE: -2441: for (Variables_Set::const_iterator i = vars.begin(); i != vs_end; ++i) { -2441: x.seq[*i].intersect_assign(integer_quadrant_itv); -2441: } -2441: reset_empty_up_to_date(); -2441: break; -2441: } -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: ((void) 0); -2441: const Constraint_System& cs = *cs_p; -2441: -2441: typedef std::map > map_type; -2441: map_type var_cs_map; -2441: for (Constraint_System::const_iterator i = cs.begin(), -2441: i_end = cs.end(); i != i_end; ++i) { -2441: const Constraint& c = *i; -2441: dimension_type c_num_vars = 0; -2441: dimension_type c_only_var = 0; -2441: if (Box_Helpers::extract_interval_constraint(c, c_num_vars, c_only_var)) { -2441: if (c_num_vars == 1) { -2441: -2441: ((void) 0); -2441: -2441: if (vars.find(c_only_var) != vs_end) { -2441: var_cs_map[c_only_var].push_back(&c); -2441: } -2441: } -2441: else { -2441: ((void) 0); -2441: -2441: ((void) 0); -2441: x.set_empty(); -2441: return; -2441: } -2441: } -2441: } -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_refinement_itv; ITV& refinement_itv = holder_refinement_itv.item(); -2441: const map_type::const_iterator var_cs_map_end = var_cs_map.end(); -2441: -2441: for (Variables_Set::const_iterator i = vars.begin(); i != vs_end; ++i) { -2441: const dimension_type v = *i; -2441: refinement_itv = integer_quadrant_itv; -2441: -2441: map_type::const_iterator var_cs_map_iter = var_cs_map.find(v); -2441: if (var_cs_map_iter != var_cs_map_end) { -2441: -2441: const map_type::mapped_type& var_cs = var_cs_map_iter->second; -2441: for (dimension_type j = var_cs.size(); j-- > 0; ) { -2441: const Constraint& c = *var_cs[j]; -2441: refine_interval_no_check(refinement_itv, -2441: c.type(), -2441: c.inhomogeneous_term(), -2441: c.coefficient(Variable(v))); -2441: } -2441: } -2441: -2441: ITV& x_seq_v = x.seq[v]; -2441: switch (o) { -2441: case OVERFLOW_WRAPS: -2441: x_seq_v.wrap_assign(w, r, refinement_itv); -2441: break; -2441: case OVERFLOW_UNDEFINED: -2441: if (!rational_quadrant_itv.contains(x_seq_v)) { -2441: x_seq_v.assign(UNIVERSE); -2441: } -2441: break; -2441: case OVERFLOW_IMPOSSIBLE: -2441: x_seq_v.intersect_assign(refinement_itv); -2441: break; -2441: } -2441: } -2441: ((void) 0); -2441: -2441: } -2441: -2441: template -2441: void -2441: Box::drop_some_non_integer_points(Complexity_Class) { -2441: if (std::numeric_limits::is_integer -2441: && !ITV::info_type::store_open) { -2441: return; -2441: } -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: for (dimension_type k = seq.size(); k-- > 0; ) { -2441: seq[k].drop_some_non_integer_points(); -2441: } -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Box::drop_some_non_integer_points(const Variables_Set& vars, -2441: Complexity_Class) { -2441: -2441: const dimension_type min_space_dim = vars.space_dimension(); -2441: if (space_dimension() < min_space_dim) { -2441: throw_dimension_incompatible("drop_some_non_integer_points(vs, cmpl)", -2441: min_space_dim); -2441: } -2441: if (std::numeric_limits::is_integer -2441: && !ITV::info_type::store_open) { -2441: return; -2441: } -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: for (Variables_Set::const_iterator v_i = vars.begin(), -2441: v_end = vars.end(); v_i != v_end; ++v_i) { -2441: seq[*v_i].drop_some_non_integer_points(); -2441: } -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Box::intersection_assign(const Box& y) { -2441: Box& x = *this; -2441: const dimension_type space_dim = space_dimension(); -2441: -2441: -2441: if (space_dim != y.space_dimension()) { -2441: x.throw_dimension_incompatible("intersection_assign(y)", y); -2441: } -2441: -2441: -2441: if (x.marked_empty()) { -2441: return; -2441: } -2441: if (y.marked_empty()) { -2441: x.set_empty(); -2441: return; -2441: } -2441: -2441: -2441: -2441: if (space_dim == 0) { -2441: return; -2441: } -2441: -2441: -2441: -2441: reset_empty_up_to_date(); -2441: -2441: for (dimension_type k = space_dim; k-- > 0; ) { -2441: x.seq[k].intersect_assign(y.seq[k]); -2441: } -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Box::upper_bound_assign(const Box& y) { -2441: Box& x = *this; -2441: -2441: -2441: if (x.space_dimension() != y.space_dimension()) { -2441: x.throw_dimension_incompatible("upper_bound_assign(y)", y); -2441: } -2441: -2441: -2441: if (y.is_empty()) { -2441: return; -2441: } -2441: if (x.is_empty()) { -2441: x = y; -2441: return; -2441: } -2441: -2441: for (dimension_type k = x.seq.size(); k-- > 0; ) { -2441: x.seq[k].join_assign(y.seq[k]); -2441: } -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Box::concatenate_assign(const Box& y) { -2441: Box& x = *this; -2441: const dimension_type x_space_dim = x.space_dimension(); -2441: const dimension_type y_space_dim = y.space_dimension(); -2441: -2441: -2441: if (y.marked_empty()) { -2441: x.set_empty(); -2441: } -2441: -2441: -2441: if (y_space_dim == 0) { -2441: return; -2441: } -2441: -2441: check_space_dimension_overflow(y.space_dimension(), -2441: max_space_dimension() - space_dimension(), -2441: "PPL::Box::", -2441: "concatenate_assign(y)", -2441: "concatenation exceeds the maximum " -2441: "allowed space dimension"); -2441: -2441: -2441: x.seq.reserve(x_space_dim + y_space_dim); -2441: -2441: -2441: -2441: if (x.marked_empty()) { -2441: x.seq.insert(x.seq.end(), y_space_dim, ITV(EMPTY)); -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: -2441: std::copy(y.seq.begin(), y.seq.end(), -2441: std::back_insert_iterator(x.seq)); -2441: -2441: if (!y.status.test_empty_up_to_date()) { -2441: reset_empty_up_to_date(); -2441: } -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Box::difference_assign(const Box& y) { -2441: const dimension_type space_dim = space_dimension(); -2441: -2441: -2441: if (space_dim != y.space_dimension()) { -2441: throw_dimension_incompatible("difference_assign(y)", y); -2441: } -2441: -2441: Box& x = *this; -2441: if (x.is_empty() || y.is_empty()) { -2441: return; -2441: } -2441: switch (space_dim) { -2441: case 0: -2441: -2441: -2441: x.set_empty(); -2441: break; -2441: -2441: case 1: -2441: x.seq[0].difference_assign(y.seq[0]); -2441: if (x.seq[0].is_empty()) { -2441: x.set_empty(); -2441: } -2441: break; -2441: -2441: default: -2441: { -2441: dimension_type index_non_contained = space_dim; -2441: dimension_type number_non_contained = 0; -2441: for (dimension_type i = space_dim; i-- > 0; ) { -2441: if (!y.seq[i].contains(x.seq[i])) { -2441: if (++number_non_contained == 1) { -2441: index_non_contained = i; -2441: } -2441: else { -2441: break; -2441: } -2441: } -2441: } -2441: -2441: switch (number_non_contained) { -2441: case 0: -2441: -2441: x.set_empty(); -2441: break; -2441: case 1: -2441: x.seq[index_non_contained] -2441: .difference_assign(y.seq[index_non_contained]); -2441: if (x.seq[index_non_contained].is_empty()) { -2441: x.set_empty(); -2441: } -2441: break; -2441: default: -2441: -2441: break; -2441: } -2441: } -2441: break; -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: bool -2441: Box::simplify_using_context_assign(const Box& y) { -2441: Box& x = *this; -2441: const dimension_type num_dims = x.space_dimension(); -2441: -2441: if (num_dims != y.space_dimension()) { -2441: x.throw_dimension_incompatible("simplify_using_context_assign(y)", y); -2441: } -2441: -2441: -2441: if (num_dims == 0) { -2441: if (y.marked_empty()) { -2441: x.set_nonempty(); -2441: return false; -2441: } -2441: else { -2441: return !x.marked_empty(); -2441: } -2441: } -2441: -2441: -2441: if (y.is_empty()) { -2441: for (dimension_type i = num_dims; i-- > 0; ) { -2441: x.seq[i].assign(UNIVERSE); -2441: } -2441: x.set_nonempty(); -2441: return false; -2441: } -2441: -2441: if (x.is_empty()) { -2441: -2441: for (dimension_type i = 0; i < num_dims; ++i) { -2441: if (y.seq[i].is_universe()) { -2441: x.seq[i].assign(UNIVERSE); -2441: } -2441: else { -2441: -2441: ITV& seq_i = x.seq[i]; -2441: seq_i.empty_intersection_assign(y.seq[i]); -2441: if (seq_i.is_empty()) { -2441: -2441: -2441: seq_i.assign(UNIVERSE); -2441: continue; -2441: } -2441: -2441: -2441: for (++i; i < num_dims; ++i) { -2441: x.seq[i].assign(UNIVERSE); -2441: } -2441: x.set_nonempty(); -2441: ((void) 0); -2441: return false; -2441: } -2441: } -2441: -2441: -2441: ((void) 0); -2441: return false; -2441: } -2441: -2441: -2441: for (dimension_type i = 0; i < num_dims; ++i) { -2441: if (!x.seq[i].simplify_using_context_assign(y.seq[i])) { -2441: ((void) 0); -2441: -2441: -2441: for (dimension_type j = num_dims; j-- > i; ) { -2441: x.seq[j].assign(UNIVERSE); -2441: } -2441: for (dimension_type j = i; j-- > 0; ) { -2441: x.seq[j].assign(UNIVERSE); -2441: } -2441: ((void) 0); -2441: return false; -2441: } -2441: } -2441: ((void) 0); -2441: return true; -2441: } -2441: -2441: template -2441: void -2441: Box::time_elapse_assign(const Box& y) { -2441: Box& x = *this; -2441: const dimension_type x_space_dim = x.space_dimension(); -2441: -2441: -2441: if (x_space_dim != y.space_dimension()) { -2441: x.throw_dimension_incompatible("time_elapse_assign(y)", y); -2441: } -2441: -2441: -2441: if (x_space_dim == 0) { -2441: if (y.marked_empty()) { -2441: x.set_empty(); -2441: } -2441: return; -2441: } -2441: -2441: -2441: -2441: if (x.marked_empty() || y.marked_empty() -2441: || x.is_empty() || y.is_empty()) { -2441: x.set_empty(); -2441: return; -2441: } -2441: -2441: for (dimension_type i = x_space_dim; i-- > 0; ) { -2441: ITV& x_seq_i = x.seq[i]; -2441: const ITV& y_seq_i = y.seq[i]; -2441: if (!x_seq_i.lower_is_boundary_infinity()) { -2441: if (y_seq_i.lower_is_boundary_infinity() || y_seq_i.lower() < 0) { -2441: x_seq_i.lower_extend(); -2441: } -2441: } -2441: if (!x_seq_i.upper_is_boundary_infinity()) { -2441: if (y_seq_i.upper_is_boundary_infinity() || y_seq_i.upper() > 0) { -2441: x_seq_i.upper_extend(); -2441: } -2441: } -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: inline void -2441: Box::remove_space_dimensions(const Variables_Set& vars) { -2441: -2441: -2441: -2441: if (vars.empty()) { -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: const dimension_type old_space_dim = space_dimension(); -2441: -2441: -2441: const dimension_type vsi_space_dim = vars.space_dimension(); -2441: if (old_space_dim < vsi_space_dim) { -2441: throw_dimension_incompatible("remove_space_dimensions(vs)", -2441: vsi_space_dim); -2441: } -2441: -2441: const dimension_type new_space_dim = old_space_dim - vars.size(); -2441: -2441: -2441: -2441: -2441: if (is_empty() || new_space_dim == 0) { -2441: seq.resize(new_space_dim); -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: -2441: -2441: Variables_Set::const_iterator vsi = vars.begin(); -2441: Variables_Set::const_iterator vsi_end = vars.end(); -2441: dimension_type dst = *vsi; -2441: dimension_type src = dst + 1; -2441: for (++vsi; vsi != vsi_end; ++vsi) { -2441: const dimension_type vsi_next = *vsi; -2441: -2441: while (src < vsi_next) { -2441: swap(seq[dst++], seq[src++]); -2441: } -2441: ++src; -2441: } -2441: -2441: -2441: while (src < old_space_dim) { -2441: swap(seq[dst++], seq[src++]); -2441: } -2441: -2441: ((void) 0); -2441: seq.resize(new_space_dim); -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Box::remove_higher_space_dimensions(const dimension_type new_dimension) { -2441: -2441: -2441: const dimension_type space_dim = space_dimension(); -2441: if (new_dimension > space_dim) { -2441: throw_dimension_incompatible("remove_higher_space_dimensions(nd)", -2441: new_dimension); -2441: } -2441: -2441: -2441: -2441: -2441: if (new_dimension == space_dim) { -2441: ((void) 0); -2441: return; -2441: } -2441: -2441: seq.resize(new_dimension); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: template -2441: void -2441: Box::map_space_dimensions(const Partial_Function& pfunc) { -2441: const dimension_type space_dim = space_dimension(); -2441: if (space_dim == 0) { -2441: return; -2441: } -2441: -2441: if (pfunc.has_empty_codomain()) { -2441: -2441: remove_higher_space_dimensions(0); -2441: return; -2441: } -2441: -2441: const dimension_type new_space_dim = pfunc.max_in_codomain() + 1; -2441: -2441: if (is_empty()) { -2441: remove_higher_space_dimensions(new_space_dim); -2441: return; -2441: } -2441: -2441: -2441: Box tmp(new_space_dim); -2441: -2441: for (dimension_type i = 0; i < space_dim; ++i) { -2441: dimension_type new_i; -2441: if (pfunc.maps(i, new_i)) { -2441: swap(seq[i], tmp.seq[new_i]); -2441: } -2441: } -2441: m_swap(tmp); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Box::fold_space_dimensions(const Variables_Set& vars, -2441: const Variable dest) { -2441: const dimension_type space_dim = space_dimension(); -2441: -2441: if (dest.space_dimension() > space_dim) { -2441: throw_dimension_incompatible("fold_space_dimensions(vs, v)", "v", dest); -2441: } -2441: -2441: -2441: if (vars.empty()) { -2441: return; -2441: } -2441: -2441: -2441: if (vars.space_dimension() > space_dim) { -2441: throw_dimension_incompatible("fold_space_dimensions(vs, v)", -2441: vars.space_dimension()); -2441: } -2441: -2441: if (vars.find(dest.id()) != vars.end()) { -2441: throw_invalid_argument("fold_space_dimensions(vs, v)", -2441: "v should not occur in vs"); -2441: } -2441: -2441: -2441: if (!is_empty()) { -2441: -2441: -2441: ITV& seq_v = seq[dest.id()]; -2441: for (Variables_Set::const_iterator i = vars.begin(), -2441: vs_end = vars.end(); i != vs_end; ++i) { -2441: seq_v.join_assign(seq[*i]); -2441: } -2441: } -2441: remove_space_dimensions(vars); -2441: } -2441: -2441: template -2441: void -2441: Box::add_constraint_no_check(const Constraint& c) { -2441: ((void) 0); -2441: -2441: dimension_type c_num_vars = 0; -2441: dimension_type c_only_var = 0; -2441: -2441: if (!Box_Helpers::extract_interval_constraint(c, c_num_vars, c_only_var)) { -2441: throw_invalid_argument("add_constraint(c)", -2441: "c is not an interval constraint"); -2441: } -2441: -2441: -2441: -2441: if (c.is_strict_inequality() && c_num_vars != 0 -2441: && ITV::is_always_topologically_closed()) { -2441: throw_invalid_argument("add_constraint(c)", -2441: "c is a nontrivial strict constraint"); -2441: } -2441: -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: const Coefficient& n = c.inhomogeneous_term(); -2441: if (c_num_vars == 0) { -2441: -2441: if (n < 0 -2441: || (c.is_equality() && n != 0) -2441: || (c.is_strict_inequality() && n == 0)) { -2441: set_empty(); -2441: } -2441: return; -2441: } -2441: -2441: ((void) 0); -2441: const Coefficient& d = c.coefficient(Variable(c_only_var)); -2441: add_interval_constraint_no_check(c_only_var, c.type(), n, d); -2441: } -2441: -2441: template -2441: void -2441: Box::add_constraints_no_check(const Constraint_System& cs) { -2441: ((void) 0); -2441: -2441: -2441: -2441: for (Constraint_System::const_iterator i = cs.begin(), -2441: cs_end = cs.end(); i != cs_end; ++i) { -2441: add_constraint_no_check(*i); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Box::add_congruence_no_check(const Congruence& cg) { -2441: ((void) 0); -2441: -2441: -2441: if (cg.is_proper_congruence()) { -2441: if (cg.is_inconsistent()) { -2441: set_empty(); -2441: return; -2441: } -2441: else if (cg.is_tautological()) { -2441: return; -2441: } -2441: else { -2441: throw_invalid_argument("add_congruence(cg)", -2441: "cg is a nontrivial proper congruence"); -2441: } -2441: } -2441: -2441: ((void) 0); -2441: dimension_type cg_num_vars = 0; -2441: dimension_type cg_only_var = 0; -2441: -2441: if (!Box_Helpers::extract_interval_congruence(cg, cg_num_vars, cg_only_var)) { -2441: throw_invalid_argument("add_congruence(cg)", -2441: "cg is not an interval congruence"); -2441: } -2441: -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: const Coefficient& n = cg.inhomogeneous_term(); -2441: if (cg_num_vars == 0) { -2441: -2441: if (n != 0) { -2441: set_empty(); -2441: } -2441: return; -2441: } -2441: -2441: ((void) 0); -2441: const Coefficient& d = cg.coefficient(Variable(cg_only_var)); -2441: add_interval_constraint_no_check(cg_only_var, Constraint::EQUALITY, n, d); -2441: } -2441: -2441: template -2441: void -2441: Box::add_congruences_no_check(const Congruence_System& cgs) { -2441: ((void) 0); -2441: -2441: -2441: -2441: for (Congruence_System::const_iterator i = cgs.begin(), -2441: cgs_end = cgs.end(); i != cgs_end; ++i) { -2441: add_congruence_no_check(*i); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Box::refine_no_check(const Constraint& c) { -2441: ((void) 0); -2441: ((void) 0); -2441: -2441: dimension_type c_num_vars = 0; -2441: dimension_type c_only_var = 0; -2441: -2441: if (!Box_Helpers::extract_interval_constraint(c, c_num_vars, c_only_var)) { -2441: propagate_constraint_no_check(c); -2441: return; -2441: } -2441: -2441: const Coefficient& n = c.inhomogeneous_term(); -2441: if (c_num_vars == 0) { -2441: -2441: if (n < 0 -2441: || (c.is_equality() && n != 0) -2441: || (c.is_strict_inequality() && n == 0)) { -2441: set_empty(); -2441: } -2441: return; -2441: } -2441: -2441: ((void) 0); -2441: const Coefficient& d = c.coefficient(Variable(c_only_var)); -2441: add_interval_constraint_no_check(c_only_var, c.type(), n, d); -2441: } -2441: -2441: template -2441: void -2441: Box::refine_no_check(const Constraint_System& cs) { -2441: ((void) 0); -2441: for (Constraint_System::const_iterator i = cs.begin(), -2441: cs_end = cs.end(); !marked_empty() && i != cs_end; ++i) { -2441: refine_no_check(*i); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Box::refine_no_check(const Congruence& cg) { -2441: ((void) 0); -2441: -2441: ((void) 0); -2441: -2441: if (cg.is_proper_congruence()) { -2441: -2441: -2441: if (cg.is_inconsistent()) { -2441: set_empty(); -2441: } -2441: return; -2441: } -2441: -2441: ((void) 0); -2441: Constraint c(cg); -2441: refine_no_check(c); -2441: } -2441: -2441: template -2441: void -2441: Box::refine_no_check(const Congruence_System& cgs) { -2441: ((void) 0); -2441: for (Congruence_System::const_iterator i = cgs.begin(), -2441: cgs_end = cgs.end(); !marked_empty() && i != cgs_end; ++i) { -2441: refine_no_check(*i); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: -2441: namespace Implementation { -2441: -2441: namespace Boxes { -2441: -2441: inline bool -2441: propagate_constraint_check_result(Result r, Ternary& open) { -2441: r = result_relation_class(r); -2441: switch (r) { -2441: case V_GT_MINUS_INFINITY: -2441: case V_LT_PLUS_INFINITY: -2441: return true; -2441: case V_LT: -2441: case V_GT: -2441: open = T_YES; -2441: return false; -2441: case V_LE: -2441: case V_GE: -2441: if (open == T_NO) { -2441: open = T_MAYBE; -2441: } -2441: return false; -2441: case V_EQ: -2441: return false; -2441: default: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: return true; -2441: } -2441: } -2441: -2441: } -2441: -2441: } -2441: -2441: -2441: template -2441: void -2441: Box::propagate_constraint_no_check(const Constraint& c) { -2441: using namespace Implementation::Boxes; -2441: -2441: ((void) 0); -2441: -2441: typedef -2441: typename Select_Temp_Boundary_Type::type -2441: Temp_Boundary_Type; -2441: -2441: const dimension_type c_space_dim = c.space_dimension(); -2441: const Constraint::Type c_type = c.type(); -2441: const Coefficient& c_inhomogeneous_term = c.inhomogeneous_term(); -2441: -2441: -2441: const dimension_type last_k -2441: = c.expression().last_nonzero(1, c_space_dim + 1); -2441: if (last_k == c_space_dim + 1) { -2441: -2441: if (c_inhomogeneous_term < 0 -2441: || (c_inhomogeneous_term == 0 -2441: && c_type != Constraint::NONSTRICT_INEQUALITY)) { -2441: set_empty(); -2441: } -2441: return; -2441: } -2441: -2441: -2441: ((void) 0); -2441: Temp_Boundary_Type t_bound; -2441: Temp_Boundary_Type t_a; -2441: Temp_Boundary_Type t_x; -2441: Ternary open; -2441: const Constraint::expr_type c_e = c.expression(); -2441: for (Constraint::expr_type::const_iterator k = c_e.begin(), -2441: k_end = c_e.lower_bound(Variable(last_k)); k != k_end; ++k) { -2441: const Coefficient& a_k = *k; -2441: const Variable k_var = k.variable(); -2441: const int sgn_a_k = sgn(a_k); -2441: if (sgn_a_k == 0) { -2441: continue; -2441: } -2441: Result r; -2441: if (sgn_a_k > 0) { -2441: open = (c_type == Constraint::STRICT_INEQUALITY) ? T_YES : T_NO; -2441: if (open == T_NO) { -2441: maybe_reset_fpu_inexact(); -2441: } -2441: r = assign_r(t_bound, c_inhomogeneous_term, ROUND_UP); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto maybe_refine_upper_1; -2441: } -2441: r = neg_assign_r(t_bound, t_bound, ROUND_DOWN); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto maybe_refine_upper_1; -2441: } -2441: for (Constraint::expr_type::const_iterator i = c_e.begin(), -2441: i_end = c_e.lower_bound(Variable(last_k)); i != i_end; ++i) { -2441: const Variable i_var = i.variable(); -2441: if (i_var.id() == k_var.id()) { -2441: continue; -2441: } -2441: const Coefficient& a_i = *i; -2441: const int sgn_a_i = sgn(a_i); -2441: ITV& x_i = seq[i_var.id()]; -2441: if (sgn_a_i < 0) { -2441: if (x_i.lower_is_boundary_infinity()) { -2441: goto maybe_refine_upper_1; -2441: } -2441: r = assign_r(t_a, a_i, ROUND_DOWN); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto maybe_refine_upper_1; -2441: } -2441: r = assign_r(t_x, x_i.lower(), ROUND_DOWN); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto maybe_refine_upper_1; -2441: } -2441: if (x_i.lower_is_open()) { -2441: open = T_YES; -2441: } -2441: r = sub_mul_assign_r(t_bound, t_a, t_x, ROUND_DOWN); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto maybe_refine_upper_1; -2441: } -2441: } -2441: else { -2441: ((void) 0); -2441: if (x_i.upper_is_boundary_infinity()) { -2441: goto maybe_refine_upper_1; -2441: } -2441: r = assign_r(t_a, a_i, ROUND_UP); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto maybe_refine_upper_1; -2441: } -2441: r = assign_r(t_x, x_i.upper(), ROUND_UP); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto maybe_refine_upper_1; -2441: } -2441: if (x_i.upper_is_open()) { -2441: open = T_YES; -2441: } -2441: r = sub_mul_assign_r(t_bound, t_a, t_x, ROUND_DOWN); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto maybe_refine_upper_1; -2441: } -2441: } -2441: } -2441: r = assign_r(t_a, a_k, ROUND_UP); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto maybe_refine_upper_1; -2441: } -2441: r = div_assign_r(t_bound, t_bound, t_a, ROUND_DOWN); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto maybe_refine_upper_1; -2441: } -2441: -2441: -2441: if (open == T_MAYBE -2441: && maybe_check_fpu_inexact() == 1) { -2441: open = T_YES; -2441: } -2441: { -2441: const Relation_Symbol rel -2441: = (open == T_YES) ? GREATER_THAN : GREATER_OR_EQUAL; -2441: seq[k_var.id()].add_constraint(i_constraint(rel, t_bound)); -2441: } -2441: reset_empty_up_to_date(); -2441: maybe_refine_upper_1: -2441: if (c_type != Constraint::EQUALITY) { -2441: continue; -2441: } -2441: open = T_NO; -2441: maybe_reset_fpu_inexact(); -2441: r = assign_r(t_bound, c_inhomogeneous_term, ROUND_DOWN); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto next_k; -2441: } -2441: r = neg_assign_r(t_bound, t_bound, ROUND_UP); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto next_k; -2441: } -2441: for (Constraint::expr_type::const_iterator i = c_e.begin(), -2441: i_end = c_e.lower_bound(Variable(c_space_dim)); i != i_end; ++i) { -2441: const Variable i_var = i.variable(); -2441: if (i_var.id() == k_var.id()) { -2441: continue; -2441: } -2441: const Coefficient& a_i = *i; -2441: const int sgn_a_i = sgn(a_i); -2441: ITV& x_i = seq[i_var.id()]; -2441: if (sgn_a_i < 0) { -2441: if (x_i.upper_is_boundary_infinity()) { -2441: goto next_k; -2441: } -2441: r = assign_r(t_a, a_i, ROUND_UP); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto next_k; -2441: } -2441: r = assign_r(t_x, x_i.upper(), ROUND_UP); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto next_k; -2441: } -2441: if (x_i.upper_is_open()) { -2441: open = T_YES; -2441: } -2441: r = sub_mul_assign_r(t_bound, t_a, t_x, ROUND_UP); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto next_k; -2441: } -2441: } -2441: else { -2441: ((void) 0); -2441: if (x_i.lower_is_boundary_infinity()) { -2441: goto next_k; -2441: } -2441: r = assign_r(t_a, a_i, ROUND_DOWN); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto next_k; -2441: } -2441: r = assign_r(t_x, x_i.lower(), ROUND_DOWN); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto next_k; -2441: } -2441: if (x_i.lower_is_open()) { -2441: open = T_YES; -2441: } -2441: r = sub_mul_assign_r(t_bound, t_a, t_x, ROUND_UP); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto next_k; -2441: } -2441: } -2441: } -2441: r = assign_r(t_a, a_k, ROUND_DOWN); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto next_k; -2441: } -2441: r = div_assign_r(t_bound, t_bound, t_a, ROUND_UP); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto next_k; -2441: } -2441: -2441: -2441: if (open == T_MAYBE -2441: && maybe_check_fpu_inexact() == 1) { -2441: open = T_YES; -2441: } -2441: const Relation_Symbol rel -2441: = (open == T_YES) ? LESS_THAN : LESS_OR_EQUAL; -2441: seq[k_var.id()].add_constraint(i_constraint(rel, t_bound)); -2441: reset_empty_up_to_date(); -2441: } -2441: else { -2441: ((void) 0); -2441: open = (c_type == Constraint::STRICT_INEQUALITY) ? T_YES : T_NO; -2441: if (open == T_NO) { -2441: maybe_reset_fpu_inexact(); -2441: } -2441: r = assign_r(t_bound, c_inhomogeneous_term, ROUND_UP); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto maybe_refine_upper_2; -2441: } -2441: r = neg_assign_r(t_bound, t_bound, ROUND_DOWN); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto maybe_refine_upper_2; -2441: } -2441: for (Constraint::expr_type::const_iterator i = c_e.begin(), -2441: i_end = c_e.lower_bound(Variable(c_space_dim)); i != i_end; ++i) { -2441: const Variable i_var = i.variable(); -2441: if (i_var.id() == k_var.id()) { -2441: continue; -2441: } -2441: const Coefficient& a_i = *i; -2441: const int sgn_a_i = sgn(a_i); -2441: ITV& x_i = seq[i_var.id()]; -2441: if (sgn_a_i < 0) { -2441: if (x_i.lower_is_boundary_infinity()) { -2441: goto maybe_refine_upper_2; -2441: } -2441: r = assign_r(t_a, a_i, ROUND_DOWN); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto maybe_refine_upper_2; -2441: } -2441: r = assign_r(t_x, x_i.lower(), ROUND_DOWN); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto maybe_refine_upper_2; -2441: } -2441: if (x_i.lower_is_open()) { -2441: open = T_YES; -2441: } -2441: r = sub_mul_assign_r(t_bound, t_a, t_x, ROUND_UP); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto maybe_refine_upper_2; -2441: } -2441: } -2441: else { -2441: ((void) 0); -2441: if (x_i.upper_is_boundary_infinity()) { -2441: goto maybe_refine_upper_2; -2441: } -2441: r = assign_r(t_a, a_i, ROUND_UP); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto maybe_refine_upper_2; -2441: } -2441: r = assign_r(t_x, x_i.upper(), ROUND_UP); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto maybe_refine_upper_2; -2441: } -2441: if (x_i.upper_is_open()) { -2441: open = T_YES; -2441: } -2441: r = sub_mul_assign_r(t_bound, t_a, t_x, ROUND_DOWN); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto maybe_refine_upper_2; -2441: } -2441: } -2441: } -2441: r = assign_r(t_a, a_k, ROUND_UP); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto maybe_refine_upper_2; -2441: } -2441: r = div_assign_r(t_bound, t_bound, t_a, ROUND_UP); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto maybe_refine_upper_2; -2441: } -2441: -2441: if (open == T_MAYBE -2441: && maybe_check_fpu_inexact() == 1) { -2441: open = T_YES; -2441: } -2441: { -2441: const Relation_Symbol rel -2441: = (open == T_YES) ? LESS_THAN : LESS_OR_EQUAL; -2441: seq[k_var.id()].add_constraint(i_constraint(rel, t_bound)); -2441: } -2441: reset_empty_up_to_date(); -2441: maybe_refine_upper_2: -2441: if (c_type != Constraint::EQUALITY) { -2441: continue; -2441: } -2441: open = T_NO; -2441: maybe_reset_fpu_inexact(); -2441: r = assign_r(t_bound, c_inhomogeneous_term, ROUND_DOWN); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto next_k; -2441: } -2441: r = neg_assign_r(t_bound, t_bound, ROUND_UP); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto next_k; -2441: } -2441: for (Constraint::expr_type::const_iterator i = c_e.begin(), -2441: i_end = c_e.lower_bound(Variable(c_space_dim)); i != i_end; ++i) { -2441: const Variable i_var = i.variable(); -2441: if (i_var.id() == k_var.id()) { -2441: continue; -2441: } -2441: const Coefficient& a_i = *i; -2441: const int sgn_a_i = sgn(a_i); -2441: ITV& x_i = seq[i_var.id()]; -2441: if (sgn_a_i < 0) { -2441: if (x_i.upper_is_boundary_infinity()) { -2441: goto next_k; -2441: } -2441: r = assign_r(t_a, a_i, ROUND_UP); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto next_k; -2441: } -2441: r = assign_r(t_x, x_i.upper(), ROUND_UP); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto next_k; -2441: } -2441: if (x_i.upper_is_open()) { -2441: open = T_YES; -2441: } -2441: r = sub_mul_assign_r(t_bound, t_a, t_x, ROUND_UP); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto next_k; -2441: } -2441: } -2441: else { -2441: ((void) 0); -2441: if (x_i.lower_is_boundary_infinity()) { -2441: goto next_k; -2441: } -2441: r = assign_r(t_a, a_i, ROUND_DOWN); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto next_k; -2441: } -2441: r = assign_r(t_x, x_i.lower(), ROUND_DOWN); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto next_k; -2441: } -2441: if (x_i.lower_is_open()) { -2441: open = T_YES; -2441: } -2441: r = sub_mul_assign_r(t_bound, t_a, t_x, ROUND_UP); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto next_k; -2441: } -2441: } -2441: } -2441: r = assign_r(t_a, a_k, ROUND_DOWN); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto next_k; -2441: } -2441: r = div_assign_r(t_bound, t_bound, t_a, ROUND_DOWN); -2441: if (propagate_constraint_check_result(r, open)) { -2441: goto next_k; -2441: } -2441: -2441: -2441: if (open == T_MAYBE -2441: && maybe_check_fpu_inexact() == 1) { -2441: open = T_YES; -2441: } -2441: const Relation_Symbol rel -2441: = (open == T_YES) ? GREATER_THAN : GREATER_OR_EQUAL; -2441: seq[k_var.id()].add_constraint(i_constraint(rel, t_bound)); -2441: reset_empty_up_to_date(); -2441: } -2441: next_k: -2441: ; -2441: } -2441: } -2441: # 3027 "../../src/Box_templates.hh" -2441: template -2441: void -2441: Box -2441: ::propagate_constraints_no_check(const Constraint_System& cs, -2441: const dimension_type max_iterations) { -2441: const dimension_type space_dim = space_dimension(); -2441: ((void) 0); -2441: -2441: const Constraint_System::const_iterator cs_begin = cs.begin(); -2441: const Constraint_System::const_iterator cs_end = cs.end(); -2441: const dimension_type propagation_weight -2441: = Implementation::num_constraints(cs) * space_dim; -2441: -2441: Sequence copy; -2441: bool changed; -2441: dimension_type num_iterations = 0; -2441: do { -2441: do { } while (false); -2441: ++num_iterations; -2441: copy = seq; -2441: for (Constraint_System::const_iterator i = cs_begin; i != cs_end; ++i) { -2441: propagate_constraint_no_check(*i); -2441: } -2441: -2441: do { Weightwatch_Traits::weight += (40)*(propagation_weight); } while (false); -2441: -2441: -2441: -2441: maybe_abandon(); -2441: -2441: -2441: -2441: if (num_iterations == max_iterations) { -2441: break; -2441: } -2441: -2441: changed = (copy != seq); -2441: } while (changed); -2441: } -2441: -2441: template -2441: void -2441: Box::affine_image(const Variable var, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference denominator) { -2441: -2441: if (denominator == 0) { -2441: throw_invalid_argument("affine_image(v, e, d)", "d == 0"); -2441: } -2441: -2441: -2441: const dimension_type space_dim = space_dimension(); -2441: const dimension_type expr_space_dim = expr.space_dimension(); -2441: if (space_dim < expr_space_dim) { -2441: throw_dimension_incompatible("affine_image(v, e, d)", "e", expr); -2441: } -2441: -2441: const dimension_type var_space_dim = var.space_dimension(); -2441: if (space_dim < var_space_dim) { -2441: throw_dimension_incompatible("affine_image(v, e, d)", "v", var); -2441: } -2441: -2441: if (is_empty()) { -2441: return; -2441: } -2441: -2441: Tmp_Interval_Type expr_value; -2441: Tmp_Interval_Type temp0; -2441: Tmp_Interval_Type temp1; -2441: expr_value.assign(expr.inhomogeneous_term()); -2441: for (Linear_Expression::const_iterator i = expr.begin(), -2441: i_end = expr.end(); i != i_end; ++i) { -2441: temp0.assign(*i); -2441: temp1.assign(seq[i.variable().id()]); -2441: temp0.mul_assign(temp0, temp1); -2441: expr_value.add_assign(expr_value, temp0); -2441: } -2441: if (denominator != 1) { -2441: temp0.assign(denominator); -2441: expr_value.div_assign(expr_value, temp0); -2441: } -2441: seq[var.id()].assign(expr_value); -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Box::affine_form_image(const Variable var, -2441: const Linear_Form& lf) { -2441: -2441: -2441: enum anonymous_enum_compile_time_check___LINE__ { compile_time_check_3121 = sizeof(Parma_Polyhedra_Library::Compile_Time_Check<(!std::numeric_limits ::is_exact)>) } -2441: -2441: ; -2441: -2441: -2441: const dimension_type space_dim = space_dimension(); -2441: const dimension_type lf_space_dim = lf.space_dimension(); -2441: if (space_dim < lf_space_dim) { -2441: throw_dimension_incompatible("affine_form_image(var, lf)", "lf", lf); -2441: } -2441: -2441: -2441: const dimension_type var_space_dim = var.space_dimension(); -2441: if (space_dim < var_space_dim) { -2441: throw_dimension_incompatible("affine_form_image(var, lf)", "var", var); -2441: } -2441: -2441: if (is_empty()) { -2441: return; -2441: } -2441: -2441: -2441: ITV result = lf.inhomogeneous_term(); -2441: for (dimension_type i = 0; i < lf_space_dim; ++i) { -2441: ITV current_addend = lf.coefficient(Variable(i)); -2441: const ITV& curr_int = seq[i]; -2441: current_addend *= curr_int; -2441: result += current_addend; -2441: } -2441: -2441: seq[var.id()].assign(result); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Box::affine_preimage(const Variable var, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference -2441: denominator) { -2441: -2441: if (denominator == 0) { -2441: throw_invalid_argument("affine_preimage(v, e, d)", "d == 0"); -2441: } -2441: -2441: -2441: const dimension_type x_space_dim = space_dimension(); -2441: const dimension_type expr_space_dim = expr.space_dimension(); -2441: if (x_space_dim < expr_space_dim) { -2441: throw_dimension_incompatible("affine_preimage(v, e, d)", "e", expr); -2441: } -2441: -2441: const dimension_type var_space_dim = var.space_dimension(); -2441: if (x_space_dim < var_space_dim) { -2441: throw_dimension_incompatible("affine_preimage(v, e, d)", "v", var); -2441: } -2441: -2441: if (is_empty()) { -2441: return; -2441: } -2441: -2441: const Coefficient& expr_v = expr.coefficient(var); -2441: const bool invertible = (expr_v != 0); -2441: if (!invertible) { -2441: Tmp_Interval_Type expr_value; -2441: Tmp_Interval_Type temp0; -2441: Tmp_Interval_Type temp1; -2441: expr_value.assign(expr.inhomogeneous_term()); -2441: for (Linear_Expression::const_iterator i = expr.begin(), -2441: i_end = expr.end(); i != i_end; ++i) { -2441: temp0.assign(*i); -2441: temp1.assign(seq[i.variable().id()]); -2441: temp0.mul_assign(temp0, temp1); -2441: expr_value.add_assign(expr_value, temp0); -2441: } -2441: if (denominator != 1) { -2441: temp0.assign(denominator); -2441: expr_value.div_assign(expr_value, temp0); -2441: } -2441: ITV& x_seq_v = seq[var.id()]; -2441: expr_value.intersect_assign(x_seq_v); -2441: if (expr_value.is_empty()) { -2441: set_empty(); -2441: } -2441: else { -2441: x_seq_v.assign(UNIVERSE); -2441: } -2441: } -2441: else { -2441: -2441: -2441: -2441: -2441: Linear_Expression inverse; -2441: inverse -= expr; -2441: inverse += (expr_v + denominator) * var; -2441: affine_image(var, inverse, expr_v); -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Box -2441: ::bounded_affine_image(const Variable var, -2441: const Linear_Expression& lb_expr, -2441: const Linear_Expression& ub_expr, -2441: Coefficient_traits::const_reference denominator) { -2441: -2441: if (denominator == 0) { -2441: throw_invalid_argument("bounded_affine_image(v, lb, ub, d)", "d == 0"); -2441: } -2441: -2441: -2441: const dimension_type space_dim = space_dimension(); -2441: -2441: -2441: const dimension_type lb_space_dim = lb_expr.space_dimension(); -2441: if (space_dim < lb_space_dim) { -2441: throw_dimension_incompatible("bounded_affine_image(v, lb, ub, d)", -2441: "lb", lb_expr); -2441: } -2441: const dimension_type ub_space_dim = ub_expr.space_dimension(); -2441: if (space_dim < ub_space_dim) { -2441: throw_dimension_incompatible("bounded_affine_image(v, lb, ub, d)", -2441: "ub", ub_expr); -2441: } -2441: -2441: const dimension_type var_space_dim = var.space_dimension(); -2441: if (space_dim < var_space_dim) { -2441: throw_dimension_incompatible("affine_image(v, e, d)", "v", var); -2441: } -2441: -2441: if (is_empty()) { -2441: return; -2441: } -2441: -2441: if (denominator > 0) { -2441: refine_with_constraint(lb_expr <= ub_expr); -2441: } -2441: else { -2441: refine_with_constraint(lb_expr >= ub_expr); -2441: } -2441: -2441: -2441: if (lb_expr.coefficient(var) == 0) { -2441: -2441: generalized_affine_image(var, -2441: LESS_OR_EQUAL, -2441: ub_expr, -2441: denominator); -2441: if (denominator > 0) { -2441: refine_with_constraint(lb_expr <= denominator*var); -2441: } -2441: else { -2441: refine_with_constraint(denominator*var <= lb_expr); -2441: } -2441: } -2441: else if (ub_expr.coefficient(var) == 0) { -2441: -2441: generalized_affine_image(var, -2441: GREATER_OR_EQUAL, -2441: lb_expr, -2441: denominator); -2441: if (denominator > 0) { -2441: refine_with_constraint(denominator*var <= ub_expr); -2441: } -2441: else { -2441: refine_with_constraint(ub_expr <= denominator*var); -2441: } -2441: } -2441: else { -2441: -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_max_numer; Parma_Polyhedra_Library::Coefficient& max_numer = holder_max_numer.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_max_denom; Parma_Polyhedra_Library::Coefficient& max_denom = holder_max_denom.item(); -2441: bool max_included; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_min_numer; Parma_Polyhedra_Library::Coefficient& min_numer = holder_min_numer.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_min_denom; Parma_Polyhedra_Library::Coefficient& min_denom = holder_min_denom.item(); -2441: bool min_included; -2441: ITV& seq_v = seq[var.id()]; -2441: if (maximize(ub_expr, max_numer, max_denom, max_included)) { -2441: if (minimize(lb_expr, min_numer, min_denom, min_included)) { -2441: -2441: -2441: -2441: min_denom *= denominator; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_q1; mpq_class& q1 = holder_q1.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_q2; mpq_class& q2 = holder_q2.item(); -2441: assign_r(q1.get_num(), min_numer, ROUND_NOT_NEEDED); -2441: assign_r(q1.get_den(), min_denom, ROUND_NOT_NEEDED); -2441: q1.canonicalize(); -2441: -2441: -2441: max_denom *= denominator; -2441: assign_r(q2.get_num(), max_numer, ROUND_NOT_NEEDED); -2441: assign_r(q2.get_den(), max_denom, ROUND_NOT_NEEDED); -2441: q2.canonicalize(); -2441: -2441: if (denominator > 0) { -2441: Relation_Symbol gr = min_included ? GREATER_OR_EQUAL : GREATER_THAN; -2441: Relation_Symbol lr = max_included ? LESS_OR_EQUAL : LESS_THAN; -2441: seq_v.build(i_constraint(gr, q1), i_constraint(lr, q2)); -2441: } -2441: else { -2441: Relation_Symbol gr = max_included ? GREATER_OR_EQUAL : GREATER_THAN; -2441: Relation_Symbol lr = min_included ? LESS_OR_EQUAL : LESS_THAN; -2441: seq_v.build(i_constraint(gr, q2), i_constraint(lr, q1)); -2441: } -2441: } -2441: else { -2441: -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_q; mpq_class& q = holder_q.item(); -2441: max_denom *= denominator; -2441: assign_r(q.get_num(), max_numer, ROUND_NOT_NEEDED); -2441: assign_r(q.get_den(), max_denom, ROUND_NOT_NEEDED); -2441: q.canonicalize(); -2441: Relation_Symbol rel = (denominator > 0) -2441: ? (max_included ? LESS_OR_EQUAL : LESS_THAN) -2441: : (max_included ? GREATER_OR_EQUAL : GREATER_THAN); -2441: seq_v.build(i_constraint(rel, q)); -2441: } -2441: } -2441: else if (minimize(lb_expr, min_numer, min_denom, min_included)) { -2441: -2441: -2441: -2441: min_denom *= denominator; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_q; mpq_class& q = holder_q.item(); -2441: assign_r(q.get_num(), min_numer, ROUND_NOT_NEEDED); -2441: assign_r(q.get_den(), min_denom, ROUND_NOT_NEEDED); -2441: q.canonicalize(); -2441: -2441: Relation_Symbol rel = (denominator > 0) -2441: ? (min_included ? GREATER_OR_EQUAL : GREATER_THAN) -2441: : (min_included ? LESS_OR_EQUAL : LESS_THAN); -2441: seq_v.build(i_constraint(rel, q)); -2441: } -2441: else { -2441: -2441: -2441: -2441: seq_v.assign(UNIVERSE); -2441: } -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Box -2441: ::bounded_affine_preimage(const Variable var, -2441: const Linear_Expression& lb_expr, -2441: const Linear_Expression& ub_expr, -2441: Coefficient_traits::const_reference denominator) { -2441: -2441: const dimension_type space_dim = space_dimension(); -2441: if (denominator == 0) { -2441: throw_invalid_argument("bounded_affine_preimage(v, lb, ub, d)", "d == 0"); -2441: } -2441: -2441: -2441: -2441: const dimension_type var_space_dim = var.space_dimension(); -2441: if (space_dim < var_space_dim) { -2441: throw_dimension_incompatible("bounded_affine_preimage(v, lb, ub, d)", -2441: "v", var); -2441: } -2441: -2441: -2441: const dimension_type lb_space_dim = lb_expr.space_dimension(); -2441: if (space_dim < lb_space_dim) { -2441: throw_dimension_incompatible("bounded_affine_preimage(v, lb, ub, d)", -2441: "lb", lb_expr); -2441: } -2441: const dimension_type ub_space_dim = ub_expr.space_dimension(); -2441: if (space_dim < ub_space_dim) { -2441: throw_dimension_incompatible("bounded_affine_preimage(v, lb, ub, d)", -2441: "ub", ub_expr); -2441: } -2441: -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: const bool negative_denom = (denominator < 0); -2441: const Coefficient& lb_var_coeff = lb_expr.coefficient(var); -2441: const Coefficient& ub_var_coeff = ub_expr.coefficient(var); -2441: -2441: -2441: -2441: if (lb_var_coeff == ub_var_coeff) { -2441: if (negative_denom) { -2441: refine_with_constraint(lb_expr >= ub_expr); -2441: } -2441: else { -2441: refine_with_constraint(lb_expr <= ub_expr); -2441: } -2441: } -2441: -2441: ITV& seq_var = seq[var.id()]; -2441: if (!seq_var.is_universe()) { -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_pos_denominator; Parma_Polyhedra_Library::Coefficient& pos_denominator = holder_pos_denominator.item(); -2441: pos_denominator = denominator; -2441: if (negative_denom) { -2441: neg_assign(pos_denominator, pos_denominator); -2441: } -2441: -2441: -2441: bool open_lower = seq_var.lower_is_open(); -2441: bool unbounded_lower = seq_var.lower_is_boundary_infinity(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_q_seq_var_lower; mpq_class& q_seq_var_lower = holder_q_seq_var_lower.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_numer_lower; Parma_Polyhedra_Library::Coefficient& numer_lower = holder_numer_lower.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_denom_lower; Parma_Polyhedra_Library::Coefficient& denom_lower = holder_denom_lower.item(); -2441: if (!unbounded_lower) { -2441: assign_r(q_seq_var_lower, seq_var.lower(), ROUND_NOT_NEEDED); -2441: assign_r(numer_lower, q_seq_var_lower.get_num(), ROUND_NOT_NEEDED); -2441: assign_r(denom_lower, q_seq_var_lower.get_den(), ROUND_NOT_NEEDED); -2441: if (negative_denom) { -2441: neg_assign(denom_lower, denom_lower); -2441: } -2441: numer_lower *= pos_denominator; -2441: seq_var.lower_extend(); -2441: } -2441: bool open_upper = seq_var.upper_is_open(); -2441: bool unbounded_upper = seq_var.upper_is_boundary_infinity(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_q_seq_var_upper; mpq_class& q_seq_var_upper = holder_q_seq_var_upper.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_numer_upper; Parma_Polyhedra_Library::Coefficient& numer_upper = holder_numer_upper.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_denom_upper; Parma_Polyhedra_Library::Coefficient& denom_upper = holder_denom_upper.item(); -2441: if (!unbounded_upper) { -2441: assign_r(q_seq_var_upper, seq_var.upper(), ROUND_NOT_NEEDED); -2441: assign_r(numer_upper, q_seq_var_upper.get_num(), ROUND_NOT_NEEDED); -2441: assign_r(denom_upper, q_seq_var_upper.get_den(), ROUND_NOT_NEEDED); -2441: if (negative_denom) { -2441: neg_assign(denom_upper, denom_upper); -2441: } -2441: numer_upper *= pos_denominator; -2441: seq_var.upper_extend(); -2441: } -2441: -2441: if (!unbounded_lower) { -2441: -2441: -2441: -2441: Linear_Expression revised_lb_expr(ub_expr); -2441: revised_lb_expr -= ub_var_coeff * var; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_d; Parma_Polyhedra_Library::Coefficient& d = holder_d.item(); -2441: neg_assign(d, denom_lower); -2441: revised_lb_expr *= d; -2441: revised_lb_expr += numer_lower; -2441: -2441: -2441: -2441: bool included; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_denom; Parma_Polyhedra_Library::Coefficient& denom = holder_denom.item(); -2441: if (minimize(revised_lb_expr, numer_lower, denom, included)) { -2441: denom_lower *= (denom * ub_var_coeff); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_q; mpq_class& q = holder_q.item(); -2441: assign_r(q.get_num(), numer_lower, ROUND_NOT_NEEDED); -2441: assign_r(q.get_den(), denom_lower, ROUND_NOT_NEEDED); -2441: q.canonicalize(); -2441: if (!included) { -2441: open_lower = true; -2441: } -2441: Relation_Symbol rel; -2441: if ((ub_var_coeff >= 0) ? !negative_denom : negative_denom) { -2441: rel = open_lower ? GREATER_THAN : GREATER_OR_EQUAL; -2441: } -2441: else { -2441: rel = open_lower ? LESS_THAN : LESS_OR_EQUAL; -2441: } -2441: seq_var.add_constraint(i_constraint(rel, q)); -2441: if (seq_var.is_empty()) { -2441: set_empty(); -2441: return; -2441: } -2441: } -2441: } -2441: -2441: if (!unbounded_upper) { -2441: -2441: -2441: -2441: Linear_Expression revised_ub_expr(lb_expr); -2441: revised_ub_expr -= lb_var_coeff * var; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_d; Parma_Polyhedra_Library::Coefficient& d = holder_d.item(); -2441: neg_assign(d, denom_upper); -2441: revised_ub_expr *= d; -2441: revised_ub_expr += numer_upper; -2441: -2441: -2441: -2441: bool included; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_denom; Parma_Polyhedra_Library::Coefficient& denom = holder_denom.item(); -2441: if (maximize(revised_ub_expr, numer_upper, denom, included)) { -2441: denom_upper *= (denom * lb_var_coeff); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_q; mpq_class& q = holder_q.item(); -2441: assign_r(q.get_num(), numer_upper, ROUND_NOT_NEEDED); -2441: assign_r(q.get_den(), denom_upper, ROUND_NOT_NEEDED); -2441: q.canonicalize(); -2441: if (!included) { -2441: open_upper = true; -2441: } -2441: Relation_Symbol rel; -2441: if ((lb_var_coeff >= 0) ? !negative_denom : negative_denom) { -2441: rel = open_upper ? LESS_THAN : LESS_OR_EQUAL; -2441: } -2441: else { -2441: rel = open_upper ? GREATER_THAN : GREATER_OR_EQUAL; -2441: } -2441: seq_var.add_constraint(i_constraint(rel, q)); -2441: if (seq_var.is_empty()) { -2441: set_empty(); -2441: return; -2441: } -2441: } -2441: } -2441: } -2441: -2441: -2441: -2441: if (lb_var_coeff != ub_var_coeff) { -2441: if (denominator > 0) { -2441: refine_with_constraint(lb_expr <= ub_expr); -2441: } -2441: else { -2441: refine_with_constraint(lb_expr >= ub_expr); -2441: } -2441: } -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Box -2441: ::generalized_affine_image(const Variable var, -2441: const Relation_Symbol relsym, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference denominator) { -2441: -2441: if (denominator == 0) { -2441: throw_invalid_argument("generalized_affine_image(v, r, e, d)", "d == 0"); -2441: } -2441: -2441: -2441: const dimension_type space_dim = space_dimension(); -2441: -2441: -2441: if (space_dim < expr.space_dimension()) { -2441: throw_dimension_incompatible("generalized_affine_image(v, r, e, d)", -2441: "e", expr); -2441: } -2441: -2441: const dimension_type var_space_dim = var.space_dimension(); -2441: if (space_dim < var_space_dim) { -2441: throw_dimension_incompatible("generalized_affine_image(v, r, e, d)", -2441: "v", var); -2441: } -2441: -2441: -2441: if (relsym == NOT_EQUAL) { -2441: throw_invalid_argument("generalized_affine_image(v, r, e, d)", -2441: "r is the disequality relation symbol"); -2441: } -2441: -2441: -2441: affine_image(var, expr, denominator); -2441: -2441: if (relsym == EQUAL) { -2441: -2441: return; -2441: } -2441: -2441: if (is_empty()) { -2441: return; -2441: } -2441: -2441: ITV& seq_var = seq[var.id()]; -2441: switch (relsym) { -2441: case LESS_OR_EQUAL: -2441: seq_var.lower_extend(); -2441: break; -2441: case LESS_THAN: -2441: seq_var.lower_extend(); -2441: if (!seq_var.upper_is_boundary_infinity()) { -2441: seq_var.remove_sup(); -2441: } -2441: break; -2441: case GREATER_OR_EQUAL: -2441: seq_var.upper_extend(); -2441: break; -2441: case GREATER_THAN: -2441: seq_var.upper_extend(); -2441: if (!seq_var.lower_is_boundary_infinity()) { -2441: seq_var.remove_inf(); -2441: } -2441: break; -2441: default: -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Box -2441: ::generalized_affine_preimage(const Variable var, -2441: const Relation_Symbol relsym, -2441: const Linear_Expression& expr, -2441: Coefficient_traits::const_reference denominator) -2441: { -2441: -2441: if (denominator == 0) { -2441: throw_invalid_argument("generalized_affine_preimage(v, r, e, d)", -2441: "d == 0"); -2441: } -2441: -2441: const dimension_type space_dim = space_dimension(); -2441: -2441: -2441: if (space_dim < expr.space_dimension()) { -2441: throw_dimension_incompatible("generalized_affine_preimage(v, r, e, d)", -2441: "e", expr); -2441: } -2441: -2441: const dimension_type var_space_dim = var.space_dimension(); -2441: if (space_dim < var_space_dim) { -2441: throw_dimension_incompatible("generalized_affine_preimage(v, r, e, d)", -2441: "v", var); -2441: } -2441: -2441: if (relsym == NOT_EQUAL) { -2441: throw_invalid_argument("generalized_affine_preimage(v, r, e, d)", -2441: "r is the disequality relation symbol"); -2441: } -2441: -2441: -2441: if (relsym == EQUAL) { -2441: affine_preimage(var, expr, denominator); -2441: return; -2441: } -2441: -2441: -2441: Relation_Symbol reversed_relsym; -2441: switch (relsym) { -2441: case LESS_THAN: -2441: reversed_relsym = GREATER_THAN; -2441: break; -2441: case LESS_OR_EQUAL: -2441: reversed_relsym = GREATER_OR_EQUAL; -2441: break; -2441: case GREATER_OR_EQUAL: -2441: reversed_relsym = LESS_OR_EQUAL; -2441: break; -2441: case GREATER_THAN: -2441: reversed_relsym = LESS_THAN; -2441: break; -2441: default: -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: -2441: -2441: -2441: const Coefficient& var_coefficient = expr.coefficient(var); -2441: if (var_coefficient != 0) { -2441: Linear_Expression inverse_expr -2441: = expr - (denominator + var_coefficient) * var; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_inverse_denominator; Parma_Polyhedra_Library::Coefficient& inverse_denominator = holder_inverse_denominator.item(); -2441: neg_assign(inverse_denominator, var_coefficient); -2441: Relation_Symbol inverse_relsym -2441: = (sgn(denominator) == sgn(inverse_denominator)) -2441: ? relsym -2441: : reversed_relsym; -2441: generalized_affine_image(var, inverse_relsym, inverse_expr, -2441: inverse_denominator); -2441: return; -2441: } -2441: # 3716 "../../src/Box_templates.hh" -2441: Parma_Polyhedra_Library::Dirty_Temp holder_max_numer; Parma_Polyhedra_Library::Coefficient& max_numer = holder_max_numer.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_max_denom; Parma_Polyhedra_Library::Coefficient& max_denom = holder_max_denom.item(); -2441: bool max_included; -2441: bool bound_above = maximize(denominator*var, max_numer, max_denom, max_included); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_min_numer; Parma_Polyhedra_Library::Coefficient& min_numer = holder_min_numer.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_min_denom; Parma_Polyhedra_Library::Coefficient& min_denom = holder_min_denom.item(); -2441: bool min_included; -2441: bool bound_below = minimize(denominator*var, min_numer, min_denom, min_included); -2441: -2441: const Relation_Symbol corrected_relsym -2441: = (denominator > 0) ? relsym : reversed_relsym; -2441: -2441: -2441: Linear_Expression revised_expr; -2441: Parma_Polyhedra_Library::Dirty_Temp holder_d; Parma_Polyhedra_Library::Coefficient& d = holder_d.item(); -2441: if (corrected_relsym == LESS_THAN || corrected_relsym == LESS_OR_EQUAL) { -2441: if (bound_below) { -2441: revised_expr = expr; -2441: revised_expr.set_inhomogeneous_term(Coefficient_zero()); -2441: revised_expr *= d; -2441: } -2441: } -2441: else { -2441: if (bound_above) { -2441: revised_expr = expr; -2441: revised_expr.set_inhomogeneous_term(Coefficient_zero()); -2441: revised_expr *= max_denom; -2441: } -2441: } -2441: -2441: switch (corrected_relsym) { -2441: case LESS_THAN: -2441: if (bound_below) { -2441: refine_with_constraint(min_numer < revised_expr); -2441: } -2441: break; -2441: case LESS_OR_EQUAL: -2441: if (bound_below) { -2441: (min_included) -2441: ? refine_with_constraint(min_numer <= revised_expr) -2441: : refine_with_constraint(min_numer < revised_expr); -2441: } -2441: break; -2441: case GREATER_OR_EQUAL: -2441: if (bound_above) { -2441: (max_included) -2441: ? refine_with_constraint(max_numer >= revised_expr) -2441: : refine_with_constraint(max_numer > revised_expr); -2441: } -2441: break; -2441: case GREATER_THAN: -2441: if (bound_above) { -2441: refine_with_constraint(max_numer > revised_expr); -2441: } -2441: break; -2441: default: -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: -2441: if (is_empty()) { -2441: return; -2441: } -2441: ITV& seq_v = seq[var.id()]; -2441: seq_v.assign(UNIVERSE); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Box -2441: ::generalized_affine_image(const Linear_Expression& lhs, -2441: const Relation_Symbol relsym, -2441: const Linear_Expression& rhs) { -2441: -2441: -2441: -2441: dimension_type lhs_space_dim = lhs.space_dimension(); -2441: const dimension_type space_dim = space_dimension(); -2441: if (space_dim < lhs_space_dim) { -2441: throw_dimension_incompatible("generalized_affine_image(e1, r, e2)", -2441: "e1", lhs); -2441: } -2441: -2441: -2441: const dimension_type rhs_space_dim = rhs.space_dimension(); -2441: if (space_dim < rhs_space_dim) { -2441: throw_dimension_incompatible("generalized_affine_image(e1, r, e2)", -2441: "e2", rhs); -2441: } -2441: -2441: -2441: if (relsym == NOT_EQUAL) { -2441: throw_invalid_argument("generalized_affine_image(e1, r, e2)", -2441: "r is the disequality relation symbol"); -2441: } -2441: -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: -2441: Parma_Polyhedra_Library::Dirty_Temp holder_max_numer; Parma_Polyhedra_Library::Coefficient& max_numer = holder_max_numer.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_max_denom; Parma_Polyhedra_Library::Coefficient& max_denom = holder_max_denom.item(); -2441: bool max_included; -2441: bool max_rhs = maximize(rhs, max_numer, max_denom, max_included); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_min_numer; Parma_Polyhedra_Library::Coefficient& min_numer = holder_min_numer.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_min_denom; Parma_Polyhedra_Library::Coefficient& min_denom = holder_min_denom.item(); -2441: bool min_included; -2441: bool min_rhs = minimize(rhs, min_numer, min_denom, min_included); -2441: -2441: -2441: -2441: -2441: -2441: bool has_var = false; -2441: dimension_type has_var_id = lhs.last_nonzero(); -2441: -2441: if (has_var_id != 0) { -2441: has_var = true; -2441: --has_var_id; -2441: dimension_type other_var = lhs.first_nonzero(1, has_var_id + 1); -2441: --other_var; -2441: if (other_var != has_var_id) { -2441: -2441: -2441: ITV& seq_var = seq[has_var_id]; -2441: seq_var.assign(UNIVERSE); -2441: -2441: -2441: -2441: ITV& seq_i = seq[other_var]; -2441: seq_i.assign(UNIVERSE); -2441: ((void) 0); -2441: return; -2441: } -2441: } -2441: -2441: if (has_var) { -2441: -2441: ITV& seq_var = seq[has_var_id]; -2441: -2441: -2441: -2441: const Coefficient& inhomo = lhs.inhomogeneous_term(); -2441: const Coefficient& coeff = lhs.coefficient(Variable(has_var_id)); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_q_max; mpq_class& q_max = holder_q_max.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_q_min; mpq_class& q_min = holder_q_min.item(); -2441: if (max_rhs) { -2441: max_numer -= inhomo * max_denom; -2441: max_denom *= coeff; -2441: assign_r(q_max.get_num(), max_numer, ROUND_NOT_NEEDED); -2441: assign_r(q_max.get_den(), max_denom, ROUND_NOT_NEEDED); -2441: q_max.canonicalize(); -2441: } -2441: if (min_rhs) { -2441: min_numer -= inhomo * min_denom; -2441: min_denom *= coeff; -2441: assign_r(q_min.get_num(), min_numer, ROUND_NOT_NEEDED); -2441: assign_r(q_min.get_den(), min_denom, ROUND_NOT_NEEDED); -2441: q_min.canonicalize(); -2441: } -2441: -2441: -2441: -2441: if (coeff > 0) { -2441: -2441: switch (relsym) { -2441: case LESS_OR_EQUAL: -2441: if (max_rhs) { -2441: Relation_Symbol rel = max_included ? LESS_OR_EQUAL : LESS_THAN; -2441: seq_var.build(i_constraint(rel, q_max)); -2441: } -2441: else { -2441: seq_var.assign(UNIVERSE); -2441: } -2441: break; -2441: case LESS_THAN: -2441: if (max_rhs) { -2441: seq_var.build(i_constraint(LESS_THAN, q_max)); -2441: } -2441: else { -2441: seq_var.assign(UNIVERSE); -2441: } -2441: break; -2441: case EQUAL: -2441: { -2441: I_Constraint l; -2441: I_Constraint u; -2441: if (max_rhs) { -2441: u.set(max_included ? LESS_OR_EQUAL : LESS_THAN, q_max); -2441: } -2441: if (min_rhs) { -2441: l.set(min_included ? GREATER_OR_EQUAL : GREATER_THAN, q_min); -2441: } -2441: seq_var.build(l, u); -2441: break; -2441: } -2441: case GREATER_OR_EQUAL: -2441: if (min_rhs) { -2441: Relation_Symbol rel = min_included ? GREATER_OR_EQUAL : GREATER_THAN; -2441: seq_var.build(i_constraint(rel, q_min)); -2441: } -2441: else { -2441: seq_var.assign(UNIVERSE); -2441: } -2441: break; -2441: case GREATER_THAN: -2441: if (min_rhs) { -2441: seq_var.build(i_constraint(GREATER_THAN, q_min)); -2441: } -2441: else { -2441: seq_var.assign(UNIVERSE); -2441: } -2441: break; -2441: default: -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: } -2441: else { -2441: -2441: switch (relsym) { -2441: case GREATER_OR_EQUAL: -2441: if (min_rhs) { -2441: Relation_Symbol rel = min_included ? LESS_OR_EQUAL : LESS_THAN; -2441: seq_var.build(i_constraint(rel, q_min)); -2441: } -2441: else { -2441: seq_var.assign(UNIVERSE); -2441: } -2441: break; -2441: case GREATER_THAN: -2441: if (min_rhs) { -2441: seq_var.build(i_constraint(LESS_THAN, q_min)); -2441: } -2441: else { -2441: seq_var.assign(UNIVERSE); -2441: } -2441: break; -2441: case EQUAL: -2441: { -2441: I_Constraint l; -2441: I_Constraint u; -2441: if (max_rhs) { -2441: l.set(max_included ? GREATER_OR_EQUAL : GREATER_THAN, q_max); -2441: } -2441: if (min_rhs) { -2441: u.set(min_included ? LESS_OR_EQUAL : LESS_THAN, q_min); -2441: } -2441: seq_var.build(l, u); -2441: break; -2441: } -2441: case LESS_OR_EQUAL: -2441: if (max_rhs) { -2441: Relation_Symbol rel = max_included ? GREATER_OR_EQUAL : GREATER_THAN; -2441: seq_var.build(i_constraint(rel, q_max)); -2441: } -2441: else { -2441: seq_var.assign(UNIVERSE); -2441: } -2441: break; -2441: case LESS_THAN: -2441: if (max_rhs) { -2441: seq_var.build(i_constraint(GREATER_THAN, q_max)); -2441: } -2441: else { -2441: seq_var.assign(UNIVERSE); -2441: } -2441: break; -2441: default: -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: } -2441: } -2441: -2441: else { -2441: -2441: -2441: const Coefficient& inhomo = lhs.inhomogeneous_term(); -2441: switch (relsym) { -2441: case LESS_THAN: -2441: refine_with_constraint(inhomo < rhs); -2441: break; -2441: case LESS_OR_EQUAL: -2441: refine_with_constraint(inhomo <= rhs); -2441: break; -2441: case EQUAL: -2441: refine_with_constraint(inhomo == rhs); -2441: break; -2441: case GREATER_OR_EQUAL: -2441: refine_with_constraint(inhomo >= rhs); -2441: break; -2441: case GREATER_THAN: -2441: refine_with_constraint(inhomo > rhs); -2441: break; -2441: default: -2441: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: void -2441: Box::generalized_affine_preimage(const Linear_Expression& lhs, -2441: const Relation_Symbol relsym, -2441: const Linear_Expression& rhs) { -2441: -2441: -2441: -2441: dimension_type lhs_space_dim = lhs.space_dimension(); -2441: const dimension_type space_dim = space_dimension(); -2441: if (space_dim < lhs_space_dim) { -2441: throw_dimension_incompatible("generalized_affine_image(e1, r, e2)", -2441: "e1", lhs); -2441: } -2441: -2441: -2441: const dimension_type rhs_space_dim = rhs.space_dimension(); -2441: if (space_dim < rhs_space_dim) { -2441: throw_dimension_incompatible("generalized_affine_image(e1, r, e2)", -2441: "e2", rhs); -2441: } -2441: -2441: -2441: if (relsym == NOT_EQUAL) { -2441: throw_invalid_argument("generalized_affine_image(e1, r, e2)", -2441: "r is the disequality relation symbol"); -2441: } -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: -2441: -2441: Linear_Expression revised_lhs = lhs; -2441: Linear_Expression revised_rhs = rhs; -2441: for (Linear_Expression::const_iterator i = lhs.begin(), -2441: i_end = lhs.end(); i != i_end; ++i) { -2441: const Variable var = i.variable(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_tmp; Parma_Polyhedra_Library::Coefficient& tmp = holder_tmp.item(); -2441: tmp = *i; -2441: tmp += rhs.coefficient(var); -2441: sub_mul_assign(revised_rhs, tmp, var); -2441: sub_mul_assign(revised_lhs, tmp, var); -2441: } -2441: generalized_affine_image(revised_lhs, relsym, revised_rhs); -2441: ((void) 0); -2441: } -2441: -2441: template -2441: template -2441: typename Enable_If >::value -2441: && Is_Same_Or_Derived::value, -2441: void>::type -2441: Box::CC76_widening_assign(const T& y, Iterator first, Iterator last) { -2441: if (y.is_empty()) { -2441: return; -2441: } -2441: for (dimension_type i = seq.size(); i-- > 0; ) { -2441: seq[i].CC76_widening_assign(y.seq[i], first, last); -2441: } -2441: -2441: ((void) 0); -2441: } -2441: -2441: template -2441: template -2441: typename Enable_If >::value -2441: && Is_Same_Or_Derived::value, -2441: void>::type -2441: Box::CC76_widening_assign(const T& y, unsigned* tp) { -2441: static typename ITV::boundary_type stop_points[] = { -2441: typename ITV::boundary_type(-2), -2441: typename ITV::boundary_type(-1), -2441: typename ITV::boundary_type(0), -2441: typename ITV::boundary_type(1), -2441: typename ITV::boundary_type(2) -2441: }; -2441: -2441: Box& x = *this; -2441: -2441: if (tp != 0 && *tp > 0) { -2441: Box x_tmp(x); -2441: x_tmp.CC76_widening_assign(y, 0); -2441: -2441: if (!x.contains(x_tmp)) { -2441: --(*tp); -2441: } -2441: return; -2441: } -2441: x.CC76_widening_assign(y, -2441: stop_points, -2441: stop_points -2441: + sizeof(stop_points)/sizeof(stop_points[0])); -2441: } -2441: -2441: template -2441: void -2441: Box::get_limiting_box(const Constraint_System& cs, -2441: Box& limiting_box) const { -2441: -2441: ((void) 0); -2441: -2441: for (Constraint_System::const_iterator cs_i = cs.begin(), -2441: cs_end = cs.end(); cs_i != cs_end; ++cs_i) { -2441: const Constraint& c = *cs_i; -2441: dimension_type c_num_vars = 0; -2441: dimension_type c_only_var = 0; -2441: -2441: if (!Box_Helpers::extract_interval_constraint(c, c_num_vars, c_only_var)) { -2441: continue; -2441: } -2441: -2441: if (c_num_vars != 0) { -2441: -2441: -2441: const Coefficient& n = c.inhomogeneous_term(); -2441: const Coefficient& d = c.coefficient(Variable(c_only_var)); -2441: if (interval_relation(seq[c_only_var], c.type(), n, d) -2441: == Poly_Con_Relation::is_included()) { -2441: limiting_box.add_interval_constraint_no_check(c_only_var, c.type(), -2441: n, d); -2441: } -2441: } -2441: } -2441: } -2441: -2441: template -2441: void -2441: Box::limited_CC76_extrapolation_assign(const Box& y, -2441: const Constraint_System& cs, -2441: unsigned* tp) { -2441: Box& x = *this; -2441: const dimension_type space_dim = x.space_dimension(); -2441: -2441: -2441: if (space_dim != y.space_dimension()) { -2441: throw_dimension_incompatible("limited_CC76_extrapolation_assign(y, cs)", -2441: y); -2441: } -2441: -2441: const dimension_type cs_space_dim = cs.space_dimension(); -2441: if (space_dim < cs_space_dim) { -2441: throw_constraint_incompatible("limited_CC76_extrapolation_assign(y, cs)"); -2441: } -2441: -2441: -2441: if (space_dim == 0) { -2441: return; -2441: } -2441: -2441: ((void) 0); -2441: -2441: -2441: if (marked_empty()) { -2441: return; -2441: } -2441: -2441: if (y.marked_empty()) { -2441: return; -2441: } -2441: -2441: -2441: Box limiting_box(space_dim, UNIVERSE); -2441: get_limiting_box(cs, limiting_box); -2441: -2441: x.CC76_widening_assign(y, tp); -2441: -2441: -2441: intersection_assign(limiting_box); -2441: } -2441: -2441: template -2441: template -2441: typename Enable_If >::value -2441: && Is_Same_Or_Derived::value, -2441: void>::type -2441: Box::CC76_narrowing_assign(const T& y) { -2441: const dimension_type space_dim = space_dimension(); -2441: -2441: -2441: if (space_dim != y.space_dimension()) { -2441: throw_dimension_incompatible("CC76_narrowing_assign(y)", y); -2441: } -2441: -2441: -2441: ((void) 0); -2441: -2441: -2441: -2441: if (space_dim == 0) { -2441: return; -2441: } -2441: -2441: if (y.is_empty()) { -2441: return; -2441: } -2441: -2441: if (is_empty()) { -2441: return; -2441: } -2441: -2441: -2441: for (dimension_type i = space_dim; i-- > 0; ) { -2441: ITV& x_i = seq[i]; -2441: const ITV& y_i = y.seq[i]; -2441: if (!x_i.lower_is_boundary_infinity() -2441: && !y_i.lower_is_boundary_infinity() -2441: && x_i.lower() != y_i.lower()) { -2441: x_i.lower() = y_i.lower(); -2441: } -2441: if (!x_i.upper_is_boundary_infinity() -2441: && !y_i.upper_is_boundary_infinity() -2441: && x_i.upper() != y_i.upper()) { -2441: x_i.upper() = y_i.upper(); -2441: } -2441: } -2441: ((void) 0); -2441: } -2441: -2441: template -2441: Constraint_System -2441: Box::constraints() const { -2441: const dimension_type space_dim = space_dimension(); -2441: Constraint_System cs; -2441: cs.set_space_dimension(space_dim); -2441: -2441: if (space_dim == 0) { -2441: if (marked_empty()) { -2441: cs = Constraint_System::zero_dim_empty(); -2441: } -2441: return cs; -2441: } -2441: -2441: if (marked_empty()) { -2441: cs.insert(Constraint::zero_dim_false()); -2441: return cs; -2441: } -2441: -2441: for (dimension_type k = 0; k < space_dim; ++k) { -2441: const Variable v_k = Variable(k); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_n; Parma_Polyhedra_Library::Coefficient& n = holder_n.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_d; Parma_Polyhedra_Library::Coefficient& d = holder_d.item(); -2441: bool closed = false; -2441: if (has_lower_bound(v_k, n, d, closed)) { -2441: if (closed) { -2441: cs.insert(d * v_k >= n); -2441: } -2441: else { -2441: cs.insert(d * v_k > n); -2441: } -2441: } -2441: if (has_upper_bound(v_k, n, d, closed)) { -2441: if (closed) { -2441: cs.insert(d * v_k <= n); -2441: } -2441: else { -2441: cs.insert(d * v_k < n); -2441: } -2441: } -2441: } -2441: return cs; -2441: } -2441: -2441: template -2441: Constraint_System -2441: Box::minimized_constraints() const { -2441: const dimension_type space_dim = space_dimension(); -2441: Constraint_System cs; -2441: cs.set_space_dimension(space_dim); -2441: -2441: if (space_dim == 0) { -2441: if (marked_empty()) { -2441: cs = Constraint_System::zero_dim_empty(); -2441: } -2441: return cs; -2441: } -2441: -2441: -2441: if (is_empty()) { -2441: cs.insert(Constraint::zero_dim_false()); -2441: return cs; -2441: } -2441: -2441: for (dimension_type k = 0; k < space_dim; ++k) { -2441: const Variable v_k = Variable(k); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_n; Parma_Polyhedra_Library::Coefficient& n = holder_n.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_d; Parma_Polyhedra_Library::Coefficient& d = holder_d.item(); -2441: bool closed = false; -2441: if (has_lower_bound(v_k, n, d, closed)) { -2441: if (closed) { -2441: -2441: if (seq[k].is_singleton()) { -2441: cs.insert(d * v_k == n); -2441: continue; -2441: } -2441: else { -2441: cs.insert(d * v_k >= n); -2441: } -2441: } -2441: else { -2441: cs.insert(d * v_k > n); -2441: } -2441: } -2441: if (has_upper_bound(v_k, n, d, closed)) { -2441: if (closed) { -2441: cs.insert(d * v_k <= n); -2441: } -2441: else { -2441: cs.insert(d * v_k < n); -2441: } -2441: } -2441: } -2441: return cs; -2441: } -2441: -2441: template -2441: Congruence_System -2441: Box::congruences() const { -2441: const dimension_type space_dim = space_dimension(); -2441: Congruence_System cgs(space_dim); -2441: -2441: if (space_dim == 0) { -2441: if (marked_empty()) { -2441: cgs = Congruence_System::zero_dim_empty(); -2441: } -2441: return cgs; -2441: } -2441: -2441: -2441: if (is_empty()) { -2441: cgs.insert(Congruence::zero_dim_false()); -2441: return cgs; -2441: } -2441: -2441: for (dimension_type k = 0; k < space_dim; ++k) { -2441: const Variable v_k = Variable(k); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_n; Parma_Polyhedra_Library::Coefficient& n = holder_n.item(); -2441: Parma_Polyhedra_Library::Dirty_Temp holder_d; Parma_Polyhedra_Library::Coefficient& d = holder_d.item(); -2441: bool closed = false; -2441: if (has_lower_bound(v_k, n, d, closed) && closed) { -2441: -2441: if (seq[k].is_singleton()) { -2441: cgs.insert((d * v_k %= n) / 0); -2441: } -2441: } -2441: } -2441: return cgs; -2441: } -2441: -2441: template -2441: memory_size_type -2441: Box::external_memory_in_bytes() const { -2441: memory_size_type n = seq.capacity() * sizeof(ITV); -2441: for (dimension_type k = seq.size(); k-- > 0; ) { -2441: n += seq[k].external_memory_in_bytes(); -2441: } -2441: return n; -2441: } -2441: -2441: -2441: template -2441: std::ostream& -2441: IO_Operators::operator<<(std::ostream& s, const Box& box) { -2441: if (box.is_empty()) { -2441: s << "false"; -2441: } -2441: else if (box.is_universe()) { -2441: s << "true"; -2441: } -2441: else { -2441: for (dimension_type k = 0, -2441: space_dim = box.space_dimension(); k < space_dim; ) { -2441: s << Variable(k) << " in " << box[k]; -2441: ++k; -2441: if (k < space_dim) { -2441: s << ", "; -2441: } -2441: else { -2441: break; -2441: } -2441: } -2441: } -2441: return s; -2441: } -2441: -2441: template -2441: void -2441: Box::ascii_dump(std::ostream& s) const { -2441: const char separator = ' '; -2441: status.ascii_dump(s); -2441: const dimension_type space_dim = space_dimension(); -2441: s << "space_dim" << separator << space_dim; -2441: s << "\n"; -2441: for (dimension_type i = 0; i < space_dim; ++i) { -2441: seq[i].ascii_dump(s); -2441: } -2441: } -2441: -2441: template void Box::ascii_dump() const { ascii_dump(std::cerr); } template void Box::print() const { using IO_Operators::operator<<; std::cerr << *this; } -2441: -2441: template -2441: bool -2441: Box::ascii_load(std::istream& s) { -2441: if (!status.ascii_load(s)) { -2441: return false; -2441: } -2441: std::string str; -2441: dimension_type space_dim; -2441: if (!(s >> str) || str != "space_dim") { -2441: return false; -2441: } -2441: if (!(s >> space_dim)) { -2441: return false; -2441: } -2441: seq.clear(); -2441: ITV seq_i; -2441: for (dimension_type i = 0; i < space_dim; ++i) { -2441: if (seq_i.ascii_load(s)) { -2441: seq.push_back(seq_i); -2441: } -2441: else { -2441: return false; -2441: } -2441: } -2441: -2441: -2441: ((void) 0); -2441: return true; -2441: } -2441: -2441: template -2441: void -2441: Box::throw_dimension_incompatible(const char* method, -2441: const Box& y) const { -2441: std::ostringstream s; -2441: s << "PPL::Box::" << method << ":" << std::endl -2441: << "this->space_dimension() == " << this->space_dimension() -2441: << ", y->space_dimension() == " << y.space_dimension() << "."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: template -2441: void -2441: Box -2441: ::throw_dimension_incompatible(const char* method, -2441: dimension_type required_dim) const { -2441: std::ostringstream s; -2441: s << "PPL::Box::" << method << ":" << std::endl -2441: << "this->space_dimension() == " << space_dimension() -2441: << ", required dimension == " << required_dim << "."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: template -2441: void -2441: Box::throw_dimension_incompatible(const char* method, -2441: const Constraint& c) const { -2441: std::ostringstream s; -2441: s << "PPL::Box::" << method << ":" << std::endl -2441: << "this->space_dimension() == " << space_dimension() -2441: << ", c->space_dimension == " << c.space_dimension() << "."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: template -2441: void -2441: Box::throw_dimension_incompatible(const char* method, -2441: const Congruence& cg) const { -2441: std::ostringstream s; -2441: s << "PPL::Box::" << method << ":" << std::endl -2441: << "this->space_dimension() == " << space_dimension() -2441: << ", cg->space_dimension == " << cg.space_dimension() << "."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: template -2441: void -2441: Box::throw_dimension_incompatible(const char* method, -2441: const Constraint_System& cs) const { -2441: std::ostringstream s; -2441: s << "PPL::Box::" << method << ":" << std::endl -2441: << "this->space_dimension() == " << space_dimension() -2441: << ", cs->space_dimension == " << cs.space_dimension() << "."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: template -2441: void -2441: Box::throw_dimension_incompatible(const char* method, -2441: const Congruence_System& cgs) const { -2441: std::ostringstream s; -2441: s << "PPL::Box::" << method << ":" << std::endl -2441: << "this->space_dimension() == " << space_dimension() -2441: << ", cgs->space_dimension == " << cgs.space_dimension() << "."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: template -2441: void -2441: Box::throw_dimension_incompatible(const char* method, -2441: const Generator& g) const { -2441: std::ostringstream s; -2441: s << "PPL::Box::" << method << ":" << std::endl -2441: << "this->space_dimension() == " << space_dimension() -2441: << ", g->space_dimension == " << g.space_dimension() << "."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: template -2441: void -2441: Box::throw_constraint_incompatible(const char* method) { -2441: std::ostringstream s; -2441: s << "PPL::Box::" << method << ":" << std::endl -2441: << "the constraint is incompatible."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: template -2441: void -2441: Box::throw_expression_too_complex(const char* method, -2441: const Linear_Expression& le) { -2441: using namespace IO_Operators; -2441: std::ostringstream s; -2441: s << "PPL::Box::" << method << ":" << std::endl -2441: << le << " is too complex."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: template -2441: void -2441: Box::throw_dimension_incompatible(const char* method, -2441: const char* le_name, -2441: const Linear_Expression& le) const { -2441: std::ostringstream s; -2441: s << "PPL::Box::" << method << ":" << std::endl -2441: << "this->space_dimension() == " << space_dimension() -2441: << ", " << le_name << "->space_dimension() == " -2441: << le.space_dimension() << "."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: template -2441: template -2441: void -2441: Box::throw_dimension_incompatible(const char* method, -2441: const char* lf_name, -2441: const Linear_Form& lf) const { -2441: std::ostringstream s; -2441: s << "PPL::Box::" << method << ":\n" -2441: << "this->space_dimension() == " << space_dimension() -2441: << ", " << lf_name << "->space_dimension() == " -2441: << lf.space_dimension() << "."; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: template -2441: void -2441: Box::throw_invalid_argument(const char* method, const char* reason) { -2441: std::ostringstream s; -2441: s << "PPL::Box::" << method << ":" << std::endl -2441: << reason; -2441: throw std::invalid_argument(s.str()); -2441: } -2441: -2441: -2441: -2441: -2441: template -2441: bool -2441: l_m_distance_assign(Checked_Number& r, -2441: const Box& x, const Box& y, -2441: const Rounding_Dir dir, -2441: Temp& tmp0, Temp& tmp1, Temp& tmp2) { -2441: const dimension_type x_space_dim = x.space_dimension(); -2441: -2441: if (x_space_dim != y.space_dimension()) { -2441: return false; -2441: } -2441: -2441: if (x_space_dim == 0) { -2441: if (x.marked_empty() == y.marked_empty()) { -2441: assign_r(r, 0, ROUND_NOT_NEEDED); -2441: } -2441: else { -2441: assign_r(r, PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: } -2441: return true; -2441: } -2441: -2441: -2441: (void) x.is_empty(); -2441: (void) y.is_empty(); -2441: -2441: -2441: if (x.marked_empty() || y.marked_empty()) { -2441: if (x.marked_empty() == y.marked_empty()) { -2441: assign_r(r, 0, ROUND_NOT_NEEDED); -2441: return true; -2441: } -2441: else { -2441: goto pinf; -2441: } -2441: } -2441: -2441: assign_r(tmp0, 0, ROUND_NOT_NEEDED); -2441: for (dimension_type i = x_space_dim; i-- > 0; ) { -2441: const ITV& x_i = x.seq[i]; -2441: const ITV& y_i = y.seq[i]; -2441: -2441: if (x_i.lower_is_boundary_infinity()) { -2441: if (!y_i.lower_is_boundary_infinity()) { -2441: goto pinf; -2441: } -2441: } -2441: else if (y_i.lower_is_boundary_infinity()) { -2441: goto pinf; -2441: } -2441: else { -2441: const Temp* tmp1p; -2441: const Temp* tmp2p; -2441: if (x_i.lower() > y_i.lower()) { -2441: maybe_assign(tmp1p, tmp1, x_i.lower(), dir); -2441: maybe_assign(tmp2p, tmp2, y_i.lower(), inverse(dir)); -2441: } -2441: else { -2441: maybe_assign(tmp1p, tmp1, y_i.lower(), dir); -2441: maybe_assign(tmp2p, tmp2, x_i.lower(), inverse(dir)); -2441: } -2441: sub_assign_r(tmp1, *tmp1p, *tmp2p, dir); -2441: ((void) 0); -2441: Specialization::combine(tmp0, tmp1, dir); -2441: } -2441: -2441: if (x_i.upper_is_boundary_infinity()) { -2441: if (y_i.upper_is_boundary_infinity()) { -2441: continue; -2441: } -2441: else { -2441: goto pinf; -2441: } -2441: } -2441: else if (y_i.upper_is_boundary_infinity()) { -2441: goto pinf; -2441: } -2441: else { -2441: const Temp* tmp1p; -2441: const Temp* tmp2p; -2441: if (x_i.upper() > y_i.upper()) { -2441: maybe_assign(tmp1p, tmp1, x_i.upper(), dir); -2441: maybe_assign(tmp2p, tmp2, y_i.upper(), inverse(dir)); -2441: } -2441: else { -2441: maybe_assign(tmp1p, tmp1, y_i.upper(), dir); -2441: maybe_assign(tmp2p, tmp2, x_i.upper(), inverse(dir)); -2441: } -2441: sub_assign_r(tmp1, *tmp1p, *tmp2p, dir); -2441: ((void) 0); -2441: Specialization::combine(tmp0, tmp1, dir); -2441: } -2441: } -2441: Specialization::finalize(tmp0, dir); -2441: assign_r(r, tmp0, dir); -2441: return true; -2441: -2441: pinf: -2441: assign_r(r, PLUS_INFINITY, ROUND_NOT_NEEDED); -2441: return true; -2441: } -2441: -2441: } -2441: # 2287 "../../src/Box_defs.hh" 2 -2441: # 30 "../../src/Linear_Form_templates.hh" 2 -2441: -2441: -2441: # 1 "/usr/include/c++/8/cmath" 1 3 -2441: # 39 "/usr/include/c++/8/cmath" 3 -2441: -2441: # 40 "/usr/include/c++/8/cmath" 3 -2441: # 33 "../../src/Linear_Form_templates.hh" 2 -2441: -2441: namespace Parma_Polyhedra_Library { -2441: -2441: template -2441: Linear_Form::Linear_Form(const Variable v) -2441: : vec() { -2441: const dimension_type space_dim = v.space_dimension(); -2441: if (space_dim > max_space_dimension()) { -2441: throw std::length_error("Linear_Form::" -2441: "Linear_Form(v):\n" -2441: "v exceeds the maximum allowed " -2441: "space dimension."); -2441: } -2441: vec.reserve(compute_capacity(space_dim+1, vec_type().max_size())); -2441: vec.resize(space_dim+1, zero); -2441: vec[v.space_dimension()] = C(typename C::boundary_type(1)); -2441: } -2441: -2441: template -2441: Linear_Form::Linear_Form(const Variable v, const Variable w) -2441: : vec() { -2441: const dimension_type v_space_dim = v.space_dimension(); -2441: const dimension_type w_space_dim = w.space_dimension(); -2441: const dimension_type space_dim = std::max(v_space_dim, w_space_dim); -2441: if (space_dim > max_space_dimension()) { -2441: throw std::length_error("Linear_Form::" -2441: "Linear_Form(v, w):\n" -2441: "v or w exceed the maximum allowed " -2441: "space dimension."); -2441: } -2441: vec.reserve(compute_capacity(space_dim+1, vec_type().max_size())); -2441: vec.resize(space_dim+1, zero); -2441: if (v_space_dim != w_space_dim) { -2441: vec[v_space_dim] = C(typename C::boundary_type(1)); -2441: vec[w_space_dim] = C(typename C::boundary_type(-1)); -2441: } -2441: } -2441: -2441: template -2441: Linear_Form::Linear_Form(const Linear_Expression& e) -2441: : vec() { -2441: const dimension_type space_dim = e.space_dimension(); -2441: if (space_dim > max_space_dimension()) { -2441: throw std::length_error("Linear_Form::" -2441: "Linear_Form(e):\n" -2441: "e exceeds the maximum allowed " -2441: "space dimension."); -2441: } -2441: vec.reserve(compute_capacity(space_dim+1, vec_type().max_size())); -2441: vec.resize(space_dim+1); -2441: for (dimension_type i = space_dim; i-- > 0; ) -2441: vec[i+1] = e.coefficient(Variable(i)); -2441: vec[0] = e.inhomogeneous_term(); -2441: } -2441: -2441: -2441: template -2441: Linear_Form -2441: operator+(const Linear_Form& f1, const Linear_Form& f2) { -2441: dimension_type f1_size = f1.size(); -2441: dimension_type f2_size = f2.size(); -2441: dimension_type min_size; -2441: dimension_type max_size; -2441: const Linear_Form* p_e_max; -2441: if (f1_size > f2_size) { -2441: min_size = f2_size; -2441: max_size = f1_size; -2441: p_e_max = &f1; -2441: } -2441: else { -2441: min_size = f1_size; -2441: max_size = f2_size; -2441: p_e_max = &f2; -2441: } -2441: -2441: Linear_Form r(max_size, false); -2441: dimension_type i = max_size; -2441: while (i > min_size) { -2441: --i; -2441: r[i] = p_e_max->vec[i]; -2441: } -2441: while (i > 0) { -2441: --i; -2441: r[i] = f1[i]; -2441: r[i] += f2[i]; -2441: } -2441: return r; -2441: } -2441: -2441: -2441: template -2441: Linear_Form -2441: operator+(const Variable v, const Linear_Form& f) { -2441: const dimension_type v_space_dim = v.space_dimension(); -2441: if (v_space_dim > Linear_Form::max_space_dimension()) { -2441: throw std::length_error("Linear_Form " -2441: "operator+(v, f):\n" -2441: "v exceeds the maximum allowed " -2441: "space dimension."); -2441: } -2441: Linear_Form r(f); -2441: if (v_space_dim > f.space_dimension()) { -2441: r.extend(v_space_dim+1); -2441: } -2441: r[v_space_dim] += C(typename C::boundary_type(1)); -2441: return r; -2441: } -2441: -2441: -2441: template -2441: Linear_Form -2441: operator+(const C& n, const Linear_Form& f) { -2441: Linear_Form r(f); -2441: r[0] += n; -2441: return r; -2441: } -2441: -2441: -2441: template -2441: Linear_Form -2441: operator-(const Linear_Form& f) { -2441: Linear_Form r(f); -2441: for (dimension_type i = f.size(); i-- > 0; ) { -2441: r[i].neg_assign(r[i]); -2441: } -2441: return r; -2441: } -2441: -2441: -2441: template -2441: Linear_Form -2441: operator-(const Linear_Form& f1, const Linear_Form& f2) { -2441: dimension_type f1_size = f1.size(); -2441: dimension_type f2_size = f2.size(); -2441: if (f1_size > f2_size) { -2441: Linear_Form r(f1_size, false); -2441: dimension_type i = f1_size; -2441: while (i > f2_size) { -2441: --i; -2441: r[i] = f1[i]; -2441: } -2441: while (i > 0) { -2441: --i; -2441: r[i] = f1[i]; -2441: r[i] -= f2[i]; -2441: } -2441: return r; -2441: } -2441: else { -2441: Linear_Form r(f2_size, false); -2441: dimension_type i = f2_size; -2441: while (i > f1_size) { -2441: --i; -2441: r[i].neg_assign(f2[i]); -2441: } -2441: while (i > 0) { -2441: --i; -2441: r[i] = f1[i]; -2441: r[i] -= f2[i]; -2441: } -2441: return r; -2441: } -2441: } -2441: -2441: -2441: template -2441: Linear_Form -2441: operator-(const Variable v, const Linear_Form& f) { -2441: const dimension_type v_space_dim = v.space_dimension(); -2441: if (v_space_dim > Linear_Form::max_space_dimension()) { -2441: throw std::length_error("Linear_Form " -2441: "operator-(v, e):\n" -2441: "v exceeds the maximum allowed " -2441: "space dimension."); -2441: } -2441: Linear_Form r(f); -2441: if (v_space_dim > f.space_dimension()) { -2441: r.extend(v_space_dim+1); -2441: } -2441: for (dimension_type i = f.size(); i-- > 0; ) { -2441: r[i].neg_assign(r[i]); -2441: } -2441: r[v_space_dim] += C(typename C::boundary_type(1)); -2441: return r; -2441: } -2441: -2441: -2441: template -2441: Linear_Form -2441: operator-(const Linear_Form& f, const Variable v) { -2441: const dimension_type v_space_dim = v.space_dimension(); -2441: if (v_space_dim > Linear_Form::max_space_dimension()) { -2441: throw std::length_error("Linear_Form " -2441: "operator-(e, v):\n" -2441: "v exceeds the maximum allowed " -2441: "space dimension."); -2441: } -2441: Linear_Form r(f); -2441: if (v_space_dim > f.space_dimension()) { -2441: r.extend(v_space_dim+1); -2441: } -2441: r[v_space_dim] -= C(typename C::boundary_type(1)); -2441: return r; -2441: } -2441: -2441: -2441: template -2441: Linear_Form -2441: operator-(const C& n, const Linear_Form& f) { -2441: Linear_Form r(f); -2441: for (dimension_type i = f.size(); i-- > 0; ) { -2441: r[i].neg_assign(r[i]); -2441: } -2441: r[0] += n; -2441: return r; -2441: } -2441: -2441: -2441: template -2441: Linear_Form -2441: operator*(const C& n, const Linear_Form& f) { -2441: Linear_Form r(f); -2441: for (dimension_type i = f.size(); i-- > 0; ) { -2441: r[i] *= n; -2441: } -2441: return r; -2441: } -2441: -2441: -2441: template -2441: Linear_Form& -2441: operator+=(Linear_Form& f1, const Linear_Form& f2) { -2441: dimension_type f1_size = f1.size(); -2441: dimension_type f2_size = f2.size(); -2441: if (f1_size < f2_size) { -2441: f1.extend(f2_size); -2441: } -2441: for (dimension_type i = f2_size; i-- > 0; ) { -2441: f1[i] += f2[i]; -2441: } -2441: return f1; -2441: } -2441: -2441: -2441: template -2441: Linear_Form& -2441: operator+=(Linear_Form& f, const Variable v) { -2441: const dimension_type v_space_dim = v.space_dimension(); -2441: if (v_space_dim > Linear_Form::max_space_dimension()) { -2441: throw std::length_error("Linear_Form& " -2441: "operator+=(e, v):\n" -2441: "v exceeds the maximum allowed space dimension."); -2441: } -2441: if (v_space_dim > f.space_dimension()) { -2441: f.extend(v_space_dim+1); -2441: } -2441: f[v_space_dim] += C(typename C::boundary_type(1)); -2441: return f; -2441: } -2441: -2441: -2441: template -2441: Linear_Form& -2441: operator-=(Linear_Form& f1, const Linear_Form& f2) { -2441: dimension_type f1_size = f1.size(); -2441: dimension_type f2_size = f2.size(); -2441: if (f1_size < f2_size) { -2441: f1.extend(f2_size); -2441: } -2441: for (dimension_type i = f2_size; i-- > 0; ) { -2441: f1[i] -= f2[i]; -2441: } -2441: return f1; -2441: } -2441: -2441: -2441: template -2441: Linear_Form& -2441: operator-=(Linear_Form& f, const Variable v) { -2441: const dimension_type v_space_dim = v.space_dimension(); -2441: if (v_space_dim > Linear_Form::max_space_dimension()) { -2441: throw std::length_error("Linear_Form& " -2441: "operator-=(e, v):\n" -2441: "v exceeds the maximum allowed space dimension."); -2441: } -2441: if (v_space_dim > f.space_dimension()) { -2441: f.extend(v_space_dim+1); -2441: } -2441: f[v_space_dim] -= C(typename C::boundary_type(1)); -2441: return f; -2441: } -2441: -2441: -2441: template -2441: Linear_Form& -2441: operator*=(Linear_Form& f, const C& n) { -2441: dimension_type f_size = f.size(); -2441: for (dimension_type i = f_size; i-- > 0; ) { -2441: f[i] *= n; -2441: } -2441: return f; -2441: } -2441: -2441: -2441: template -2441: Linear_Form& -2441: operator/=(Linear_Form& f, const C& n) { -2441: dimension_type f_size = f.size(); -2441: for (dimension_type i = f_size; i-- > 0; ) { -2441: f[i] /= n; -2441: } -2441: return f; -2441: } -2441: -2441: -2441: template -2441: inline bool -2441: operator==(const Linear_Form& x, const Linear_Form& y) { -2441: const dimension_type x_size = x.size(); -2441: const dimension_type y_size = y.size(); -2441: if (x_size >= y_size) { -2441: for (dimension_type i = y_size; i-- > 0; ) { -2441: if (x[i] != y[i]) { -2441: return false; -2441: } -2441: } -2441: for (dimension_type i = x_size; --i >= y_size; ) { -2441: if (x[i] != x.zero) { -2441: return false; -2441: } -2441: } -2441: } -2441: else { -2441: for (dimension_type i = x_size; i-- > 0; ) { -2441: if (x[i] != y[i]) { -2441: return false; -2441: } -2441: } -2441: for (dimension_type i = y_size; --i >= x_size; ) { -2441: if (y[i] != x.zero) { -2441: return false; -2441: } -2441: } -2441: -2441: } -2441: -2441: return true; -2441: } -2441: -2441: template -2441: void -2441: Linear_Form::negate() { -2441: for (dimension_type i = vec.size(); i-- > 0; ) { -2441: vec[i].neg_assign(vec[i]); -2441: } -2441: return; -2441: } -2441: -2441: template -2441: inline memory_size_type -2441: Linear_Form::external_memory_in_bytes() const { -2441: memory_size_type n = 0; -2441: for (dimension_type i = size(); i-- > 0; ) { -2441: n += vec[i].external_memory_in_bytes(); -2441: } -2441: n += vec.capacity()*sizeof(C); -2441: return n; -2441: } -2441: -2441: template -2441: bool -2441: Linear_Form::OK() const { -2441: for (dimension_type i = size(); i-- > 0; ) { -2441: if (!vec[i].OK()) { -2441: return false; -2441: } -2441: } -2441: return true; -2441: } -2441: -2441: -2441: template -2441: void -2441: Linear_Form::relative_error( -2441: const Floating_Point_Format analyzed_format, -2441: Linear_Form& result) const { -2441: typedef typename C::boundary_type analyzer_format; -2441: -2441: -2441: unsigned int f_base; -2441: unsigned int f_mantissa_bits; -2441: switch (analyzed_format) { -2441: case IEEE754_HALF: -2441: f_base = float_ieee754_half::BASE; -2441: f_mantissa_bits = float_ieee754_half::MANTISSA_BITS; -2441: break; -2441: case IEEE754_SINGLE: -2441: f_base = float_ieee754_single::BASE; -2441: f_mantissa_bits = float_ieee754_single::MANTISSA_BITS; -2441: break; -2441: case IEEE754_DOUBLE: -2441: f_base = float_ieee754_double::BASE; -2441: f_mantissa_bits = float_ieee754_double::MANTISSA_BITS; -2441: break; -2441: case IBM_SINGLE: -2441: f_base = float_ibm_single::BASE; -2441: f_mantissa_bits = float_ibm_single::MANTISSA_BITS; -2441: break; -2441: case IEEE754_QUAD: -2441: f_base = float_ieee754_quad::BASE; -2441: f_mantissa_bits = float_ieee754_quad::MANTISSA_BITS; -2441: break; -2441: case INTEL_DOUBLE_EXTENDED: -2441: f_base = float_intel_double_extended::BASE; -2441: f_mantissa_bits = float_intel_double_extended::MANTISSA_BITS; -2441: break; -2441: default: -2441: Parma_Polyhedra_Library::ppl_unreachable(); -2441: break; -2441: } -2441: -2441: C error_propagator; -2441: -2441: unsigned int u_power = msb_position(f_base) * f_mantissa_bits; -2441: int neg_power = -static_cast(u_power); -2441: analyzer_format lb = static_cast(ldexp(1.0, neg_power)); -2441: -2441: error_propagator.build(i_constraint(GREATER_OR_EQUAL, -lb), -2441: i_constraint(LESS_OR_EQUAL, lb)); -2441: -2441: -2441: const C* current_term = &inhomogeneous_term(); -2441: -2441: # 465 "../../src/Linear_Form_templates.hh" 3 4 -2441: (static_cast (0)) -2441: # 465 "../../src/Linear_Form_templates.hh" -2441: ; -2441: -2441: C current_multiplier(std::max(std::abs(current_term->lower()), -2441: std::abs(current_term->upper()))); -2441: Linear_Form current_result_term(current_multiplier); -2441: current_result_term *= error_propagator; -2441: result = Linear_Form(current_result_term); -2441: -2441: -2441: dimension_type dimension = space_dimension(); -2441: for (dimension_type i = 0; i < dimension; ++i) { -2441: current_term = &coefficient(Variable(i)); -2441: -2441: # 477 "../../src/Linear_Form_templates.hh" 3 4 -2441: (static_cast (0)) -2441: # 477 "../../src/Linear_Form_templates.hh" -2441: ; -2441: current_multiplier = C(std::max(std::abs(current_term->lower()), -2441: std::abs(current_term->upper()))); -2441: current_result_term = Linear_Form(Variable(i)); -2441: current_result_term *= current_multiplier; -2441: current_result_term *= error_propagator; -2441: result += current_result_term; -2441: } -2441: -2441: return; -2441: } -2441: -2441: template -2441: template -2441: bool -2441: Linear_Form::intervalize(const FP_Oracle& oracle, -2441: C& result) const { -2441: result = C(inhomogeneous_term()); -2441: dimension_type dimension = space_dimension(); -2441: for (dimension_type i = 0; i < dimension; ++i) { -2441: C current_addend = coefficient(Variable(i)); -2441: C curr_int; -2441: if (!oracle.get_interval(i, curr_int)) { -2441: return false; -2441: } -2441: current_addend *= curr_int; -2441: result += current_addend; -2441: } -2441: -2441: return true; -2441: } -2441: -2441: -2441: template -2441: std::ostream& -2441: IO_Operators::operator<<(std::ostream& s, const Linear_Form& f) { -2441: const dimension_type num_variables = f.space_dimension(); -2441: bool first = true; -2441: for (dimension_type v = 0; v < num_variables; ++v) { -2441: const C& fv = f[v+1]; -2441: if (fv != typename C::boundary_type(0)) { -2441: if (first) { -2441: if (fv == typename C::boundary_type(-1)) { -2441: s << "-"; -2441: } -2441: else if (fv != typename C::boundary_type(1)) { -2441: s << fv << "*"; -2441: } -2441: first = false; -2441: } -2441: else { -2441: if (fv == typename C::boundary_type(-1)) { -2441: s << " - "; -2441: } -2441: else { -2441: s << " + "; -2441: if (fv != typename C::boundary_type(1)) { -2441: s << fv << "*"; -2441: } -2441: } -2441: } -2441: s << Variable(v); -2441: } -2441: } -2441: -2441: const C& it = f[0]; -2441: if (it != 0) { -2441: if (!first) { -2441: s << " + "; -2441: } -2441: else { -2441: first = false; -2441: } -2441: s << it; -2441: } -2441: -2441: if (first) { -2441: -2441: s << Linear_Form::zero; -2441: } -2441: return s; -2441: } -2441: -2441: template void Linear_Form::ascii_dump() const { ascii_dump(std::cerr); } template void Linear_Form::print() const { using IO_Operators::operator<<; std::cerr << *this; } -2441: -2441: template -2441: C Linear_Form::zero(typename C::boundary_type(0)); -2441: -2441: } -2441: # 10 "../../src/ppl_include_files.hh" 2 -2441: # 1 "../../src/linearize.hh" 1 -2441: # 27 "../../src/linearize.hh" -2441: # 1 "../../src/Concrete_Expression_defs.hh" 1 -2441: # 31 "../../src/Concrete_Expression_defs.hh" -2441: namespace Parma_Polyhedra_Library { -2441: -2441: -2441: class Concrete_Expression_Type { -2441: public: -2441: -2441: -2441: -2441: -2441: static Concrete_Expression_Type -2441: bounded_integer(Bounded_Integer_Type_Width width, -2441: Bounded_Integer_Type_Representation representation, -2441: Bounded_Integer_Type_Overflow overflow); -2441: -2441: -2441: -2441: -2441: static Concrete_Expression_Type -2441: floating_point(Floating_Point_Format format); -2441: -2441: -2441: -2441: -2441: -2441: bool is_bounded_integer() const; -2441: -2441: -2441: -2441: -2441: -2441: bool is_floating_point() const; -2441: # 70 "../../src/Concrete_Expression_defs.hh" -2441: Bounded_Integer_Type_Width bounded_integer_type_width() const; -2441: # 79 "../../src/Concrete_Expression_defs.hh" -2441: Bounded_Integer_Type_Representation -2441: bounded_integer_type_representation() const; -2441: # 89 "../../src/Concrete_Expression_defs.hh" -2441: Bounded_Integer_Type_Overflow -2441: bounded_integer_type_overflow() const; -2441: -2441: -2441: -2441: -2441: -2441: -2441: -2441: Floating_Point_Format floating_point_format() const; -2441: -2441: -2441: bool OK() const; -2441: -2441: private: -2441: -2441: struct Implementation { -2441: bool bounded_integer:1; -2441: unsigned int bounded_integer_type_width:23; -2441: unsigned int bounded_integer_type_representation:2; -2441: unsigned int bounded_integer_type_overflow:2; -2441: unsigned int floating_point_format:4; -2441: }; -2441: -2441: -2441: Concrete_Expression_Type(Implementation implementation); -2441: -2441: -2441: Implementation impl; -2441: }; -2441: -2441: -2441: template -2441: class Concrete_Expression_Common { -2441: public: -2441: -2441: Concrete_Expression_Type type() const; -2441: -2441: -2441: Concrete_Expression_Kind kind() const; -2441: -2441: -2441: template