[singular] 03/14: Replace the complete patch set by the set of Sage 7.1.
Tobias Hansen
thansen at moszumanska.debian.org
Fri Jul 8 00:45:41 UTC 2016
This is an automated email from the git hooks/post-receive script.
thansen pushed a commit to branch master3-sage
in repository singular.
commit 3f9a7a2ed0690af4c303c881bbf17226b2878c3a
Author: Tobias Hansen <thansen at debian.org>
Date: Thu Jul 7 21:49:53 2016 +0100
Replace the complete patch set by the set of Sage 7.1.
---
debian/patches/0001-tag-gfan-using-examples.patch | 513 --
...ESTDIR-as-a-pre-prefix-in-install-targets.patch | 348 -
...003-add-working-all-target-to-Makefile.in.patch | 58 -
.../0004-miscellaneous-Makefile.in-patches.patch | 289 -
...eeds-to-be-defined-after-include-assert.h.patch | 25 -
debian/patches/0006-keep-mod2.h-in-Singular.patch | 6983 --------------------
.../0007-move-libreadline-to-main-binary.patch | 219 -
debian/patches/0008-default-path-settings.patch | 60 -
...-disable-examples-for-divisors-and-gitfan.patch | 35 -
...x-warning-treated-as-error-in-pyobject.cc.patch | 23 -
debian/patches/0011-also-install-sing_dbm.h.patch | 23 -
...on-t-forget-LDFLAGS-in-module-compilation.patch | 23 -
debian/patches/0013-fix-mmInit-weirdness.patch | 81 -
.../0014-sanitize-cf_gmp.h-generation.patch | 46 -
.../0015-use-bin-sed-not-sed-in-build-system.patch | 93 -
.../0016-Use-full-path-for-a-few-coreutils.patch | 251 -
.../0017-make-interactive-docbuild-work.patch | 30 -
debian/patches/Minor.h.patch | 10 +
debian/patches/assert.patch | 17 +
debian/patches/currring.patch | 22 +
debian/patches/cygwin64.patch | 66 +
debian/patches/exeext.patch | 20 +
debian/patches/fix-for-new-perl.patch | 25 -
debian/patches/flint.patch | 22 +
debian/patches/remove_warning.patch | 18 +
debian/patches/sanitize_gmp_header_hack.patch | 59 +
debian/patches/series | 31 +-
debian/patches/sing_win.patch | 17 +
.../singular-3.1.7-use_cxx_for_linking.patch | 75 +
debian/patches/singular_ntl.patch | 6 +-
debian/patches/slibdir.patch | 24 +
debian/patches/stricmp.patch | 14 +
debian/patches/templates.patch | 60 +
33 files changed, 441 insertions(+), 9145 deletions(-)
diff --git a/debian/patches/0001-tag-gfan-using-examples.patch b/debian/patches/0001-tag-gfan-using-examples.patch
deleted file mode 100644
index 5d1b71d..0000000
--- a/debian/patches/0001-tag-gfan-using-examples.patch
+++ /dev/null
@@ -1,513 +0,0 @@
-From 6bf72e4723ccf1164988280237cef5ea7f8e5705 Mon Sep 17 00:00:00 2001
-From: "Bernhard R. Link" <brlink at debian.org>
-Date: Sat, 3 Mar 2012 10:17:51 +0100
-Subject: tag gfan using examples
-
-Tag all examples in cones.doc, so that the manual can be built even if
-compiled without gfan support. if the tag is not given to doc2tex.pl,
-it skips the tagged examples
-
-Forwarded: not-needed
----
- doc/cones.doc | 110 +++++++++++++++++++++++++++++-----------------------------
- 1 file changed, 55 insertions(+), 55 deletions(-)
-
-diff --git a/doc/cones.doc b/doc/cones.doc
-index da2a600..d03c68a 100644
---- a/doc/cones.doc
-+++ b/doc/cones.doc
-@@ -56,7 +56,7 @@ vectors of L is the lineality space of the cone,
- if either bit is 0, then program computes the information itself.
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- // Let's define a cone in R^3 generated by the following half lines:
- intmat HL[5][3]=
- 1,0, 0,
-@@ -121,7 +121,7 @@ if lower bit is 1, then program assumes the kernel of E is the span of the cone,
- if either bit is 0, then program computes the information itself.
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- // Let's define a cone in R^3 given by the following inequalities:
- intmat IE[6][3]=
- 1,3,5,
-@@ -217,7 +217,7 @@ int
- ambient dimension of the cone;
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M1[2][2]=
- 1,0,
- 0,1;
-@@ -245,7 +245,7 @@ cone
- canonicalized version of the cone, no more redundant inequalities and equations
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M[11][3]=
- 0,-1,1,
- -1,1,0,
-@@ -280,7 +280,7 @@ int
- codimension of the cone;
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M1[1][2]=
- 1,0;
- cone c1=coneViaPoints(M1);
-@@ -306,7 +306,7 @@ cone
- local version of the given cone around the given point of the cone
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M[3][3]=
- 1,0,0,
- 0,1,0,
-@@ -337,7 +337,7 @@ int
- 1 iff c1 contains c2 as a face; 0 otherwise
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M[2][2]=
- 1,0,
- 0,1;
-@@ -368,7 +368,7 @@ int
- 1 iff c1 entirely contains c2 resp. iff c contains the given point, possibly on one of its facets; 0 otherwise
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M[2][2]=
- 1,0,
- 0,1;
-@@ -405,7 +405,7 @@ int
- 1 iff the cone contains a point with positive coordinates in its relative interior; 0 otherwise
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M1[2][2]=
- 1,1,
- 1,-1;
-@@ -433,7 +433,7 @@ int
- 1 iff the given cone contains the given point in its relative interior; 0 otherwise
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M[2][2]=
- 1,0,
- 0,1;
-@@ -462,7 +462,7 @@ cone if both input arguments are cones, else polytope
- the hull of the two objects
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M1[2][2]=
- 1,0,
- 0,1;
-@@ -504,7 +504,7 @@ cone if both input arguments are cones, else polytope
- the intersection of the two objects
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M1[2][2]=
- 1,0,
- 0,1;
-@@ -545,7 +545,7 @@ int
- dimension of the cone
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M1[1][2]=
- 1,0;
- cone c1=coneViaPoints(M1);
-@@ -571,7 +571,7 @@ cone
- the dual of the cone
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M1[2][2]=
- 1,0,
- 0,1;
-@@ -604,7 +604,7 @@ bigintmat
- equations given by the cone
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M1[2][2]=
- 1,0,
- 0,1;
-@@ -634,7 +634,7 @@ bigintmat
- inner normal vectors of the facets of the cone
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M1[2][2]=
- 1,0,
- 0,1;
-@@ -664,7 +664,7 @@ bigintmat
- generating vectors of the lineality space of the cone
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M[5][3]=
- 1,0,0,
- 0,1,0,
-@@ -691,7 +691,7 @@ bigintmat
- generating vectors of the span of the cone
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M[3][5]=
- 1,0,0,0,0,
- 0,1,0,0,0,
-@@ -717,7 +717,7 @@ intvec
- linear forms of the cone (can be set by setLinearForms); returns empty intmat if not set
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M[2][3]=
- -1,0,0,
- 0,-1,0;
-@@ -744,7 +744,7 @@ int
- getMultiplicity of the cone (can be set by setMultiplicity); returns 1 if not set
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M[2][3]=
- -1,0,0,
- 0,-1,0;
-@@ -769,7 +769,7 @@ bigintmat
- inequalities given by the cone
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M1[2][2]=
- 1,0,
- 0,1;
-@@ -798,7 +798,7 @@ int
- 1 iff the cone is the entire ambient space; 0 otherwise
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- cone c1;
- isFullSpace(c1);
- intmat M2[2][2]=
-@@ -830,7 +830,7 @@ int
- 1 iff the cone is just the origin of the ambient space; 0 otherwise
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- cone c1; // full cone in zero-dimensional ambient space
- isOrigin(c1);
- intmat M2[2][2]=
-@@ -863,7 +863,7 @@ int
- 1 iff the cone resp. fan is simplicial; 0 otherwise
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M1[3][3]=
- 1,0,0,
- 0,1,0,
-@@ -913,7 +913,7 @@ int
- dimension of the lineality space of the cone
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M1[3][3]=
- 1,0,0,
- 0,1,0,
-@@ -944,7 +944,7 @@ cone
- the lineality space of the cone as a new cone
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M1[3][3]=
- 1,0,0,
- 0,1,0,
-@@ -977,7 +977,7 @@ cone
- the negated (or negative) of the cone
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M[2][2]=
- 1,0,
- 0,1;
-@@ -1002,7 +1002,7 @@ bigintmat
- quotient of Z^n intersected with the span of the cone with Z^n intersected with its lineality space
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M[3][2]=
- 1,0,
- 0,1,
-@@ -1027,7 +1027,7 @@ bigintmat
- random point in the relative interior in c
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M[3][2]=
- 1,0,
- 0,1,
-@@ -1052,7 +1052,7 @@ bigintmat
- rays of the cone outside the lineality space, rays inside the lineality space will be ignored
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M1[2][2]=
- 1,0,
- 0,1;
-@@ -1083,7 +1083,7 @@ intvec
- point in the relative interior of the cone
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M1[2][2]=
- 1,0,
- 0,1;
-@@ -1111,7 +1111,7 @@ intvec
- if dimension(c)=linealityDimension(c)+1, then the quotient lattice of Z^n intersected with the span and Z^n intersected with the lineality space is Z^1 and the class of the cone is a semigroup. returns a generator of that semigroup. (like quotientLatticeBasis(cone c), but as intvec)
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M[3][2]=
- 1,0,
- 0,1,
-@@ -1135,7 +1135,7 @@ semigroupGenerator(c);
- adds the information of a linear form to the cone
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M[2][3]=
- -1,0,0,
- 0,-1,0;
-@@ -1161,7 +1161,7 @@ getLinearForms(c);
- adds the information of a multiplicity to the cone
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M[2][3]=
- -1,0,0,
- 0,-1,0;
-@@ -1186,7 +1186,7 @@ bigintmat
- generating vectors of the orthogonal complement of the span of the cone
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M[3][5]=
- 1,0,0,0,0,
- 0,1,0,0,0,
-@@ -1211,7 +1211,7 @@ intvec
- special-purpose interior point which supports recognition of symmetries among non-intersecting cones (used in implementation of fans)
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M1[2][2]=
- 1,0,
- 0,1;
-@@ -1305,7 +1305,7 @@ cone
- 1 iff c is contained in the collection of cones that is f; 0 otherwise
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- fan f=emptyFan(2);
- intmat M[2][2]=
- 1,0,
-@@ -1331,7 +1331,7 @@ fan
- empty fan in ambient dimension d
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- fan f=emptyFan(2);
- f;
- @c example
-@@ -1352,7 +1352,7 @@ fan
- fan generated by the cones supplied, either via a list or via single arguments
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M[2][2]=1,0,0,1;
- cone c=coneViaPoints(M);
- intmat N[2][2]=1,0,0,-1;
-@@ -1379,7 +1379,7 @@ fan
- full fan in ambient dimension d
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- fan f=fullFan(2);
- f;
- @c example
-@@ -1399,7 +1399,7 @@ intvec
- F-Vector of the fan
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- fan f=emptyFan(2);
- fVector(f);
- intmat M[2][2]=1,0,0,1;
-@@ -1425,7 +1425,7 @@ cone
- cone (orbit=0) or orbit (orbit=1) of a certain index (ranges from 1 to numberOfConesOfDimension(f,*,*,*)) in a given dimension; if maximal=0, all cones and orbits are considered, if maximal=1, only maximal cones and orbits are considered; the default flags for orbit and maximal is 0.
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M[3][3]=
- 1,0,0,
- 0,1,0,
-@@ -1454,7 +1454,7 @@ none
- inserts the cone into the fan; checks for compatibility beforehand unless check is passed and equal 0
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- fan f=emptyFan(3);
- f;
- intmat M[3][3]=
-@@ -1482,7 +1482,7 @@ int
- 1 iff cone is compatible with the fan; 0 otherwise
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- fan f=emptyFan(3);
- intmat M1[3][3]=
- 1,0,0,
-@@ -1520,7 +1520,7 @@ isCompatible(f,c3);
- @c 1 iff the fan is complete; 0 otherwise
- @c @item @strong{Example:}
- @c @smallexample
-- at c @c example
-+ at c @c example tag:gfan
- @c fan f=fullFan(2);
- @c isComplete(f);
- @c fan g=emptyFan(2);
-@@ -1560,7 +1560,7 @@ int
- 1 iff the fan is pure; 0 otherwise
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- fan f=fullFan(2);
- isPure(f);
- fan g=emptyFan(2);
-@@ -1592,7 +1592,7 @@ int
- number of maximal cones in f
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- fan f=emptyFan(3);
- nmaxcones(f);
- intmat M1[3][3]=
-@@ -1625,7 +1625,7 @@ int
- number of cones in f
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- fan f=emptyFan(3);
- ncones(f);
- intmat M1[3][3]=
-@@ -1658,7 +1658,7 @@ int
- number of cones (orbit=0) or orbits (orbit=1) of a given dimension; if maximal=0, then all cones are considered, if maximal=1, only maximal cones are considered
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- fan f=emptyFan(3);
- ncones(f);
- intmat M[3][3]=
-@@ -1693,7 +1693,7 @@ none
- removes the cone from the fan; checks for compatibility beforehand unless check is passed and equal 0
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M[2][2]=1,0,0,1;
- intmat N[2][2]=1,0,1,-1;
- cone c=coneViaPoints(M);
-@@ -1744,7 +1744,7 @@ if flags is 1, then program assumes that each row vector of M generates a ray in
- if flags is 0, then program computes that information itself.
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- // This is a polytope in R^2 generated by (0,0), (1,0), (0,1), (0,0);
- intmat V[4][3]=
- 1,0,0,
-@@ -1792,7 +1792,7 @@ if lower bit is 1, then program assumes the kernel of E is the span of the cone,
- if either bit is 0, then program computes the information itself.
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat IE[2][3]=
- 1,0,0,
- 0,1,0;
-@@ -1839,7 +1839,7 @@ polytope
- Newton polytope of f
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M[4][2]=
- 0,0,
- 1,0,
-@@ -1864,7 +1864,7 @@ polytope
- Newton polytope of f
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- ring r;
- poly f=x+y+z;
- polytope p=newtonPolytope(f);
-@@ -1886,7 +1886,7 @@ intmat
- vertices of p
- @item @strong{Example:}
- @smallexample
-- at c example
-+ at c example tag:gfan
- intmat M[4][3]=
- 1,0,0,
- 1,2,0,
diff --git a/debian/patches/0002-use-DESTDIR-as-a-pre-prefix-in-install-targets.patch b/debian/patches/0002-use-DESTDIR-as-a-pre-prefix-in-install-targets.patch
deleted file mode 100644
index a02efd5..0000000
--- a/debian/patches/0002-use-DESTDIR-as-a-pre-prefix-in-install-targets.patch
+++ /dev/null
@@ -1,348 +0,0 @@
-From bd1bc12193ac989615a06c1371e0d2bdb77ec05d Mon Sep 17 00:00:00 2001
-From: Felix Salfelder <felix at salfelder.org>
-Date: Thu, 16 Feb 2012 08:45:58 +0100
-Subject: use $DESTDIR as a pre-prefix, in install* targets
-
-Forwarded: not-needed
----
- IntegerProgramming/Makefile.in | 12 +++---
- Singular/Makefile.in | 83 +++++++++++++++++++++---------------------
- factory/GNUmakefile.in | 21 ++++++-----
- kernel/Makefile.in | 20 +++++-----
- libfac/Makefile.in | 14 +++----
- omalloc/Makefile.in | 22 +++++------
- 6 files changed, 86 insertions(+), 86 deletions(-)
-
-diff --git a/IntegerProgramming/Makefile.in b/IntegerProgramming/Makefile.in
-index 50de520..05fccfe 100644
---- a/IntegerProgramming/Makefile.in
-+++ b/IntegerProgramming/Makefile.in
-@@ -63,12 +63,12 @@ install-nolns: install
- install_all: install
-
- install install-libsingular: $(MAIN1) $(MAIN2) $(MAIN3) $(MAIN4) $(LLL)
-- ${MKINSTALLDIRS} ${bindir}
-- ${INSTALL_PROGRAM} $(MAIN1) ${bindir}
-- ${INSTALL_PROGRAM} $(MAIN2) ${bindir}
-- ${INSTALL_PROGRAM} $(MAIN3) ${bindir}
-- ${INSTALL_PROGRAM} $(MAIN4) ${bindir}
-- ${INSTALL_PROGRAM} $(LLL) ${bindir}
-+ ${MKINSTALLDIRS} $(DESTDIR)${bindir}
-+ ${INSTALL_PROGRAM} $(MAIN1) $(DESTDIR)${bindir}
-+ ${INSTALL_PROGRAM} $(MAIN2) $(DESTDIR)${bindir}
-+ ${INSTALL_PROGRAM} $(MAIN3) $(DESTDIR)${bindir}
-+ ${INSTALL_PROGRAM} $(MAIN4) $(DESTDIR)${bindir}
-+ ${INSTALL_PROGRAM} $(LLL) $(DESTDIR)${bindir}
-
- install-bindist: $(MAIN1) $(MAIN2) $(MAIN3) $(MAIN4)
- ${MKINSTALLDIRS} ${install_bindir}
-diff --git a/Singular/Makefile.in b/Singular/Makefile.in
-index 0a2b7e2..807d786 100644
---- a/Singular/Makefile.in
-+++ b/Singular/Makefile.in
-@@ -562,20 +562,20 @@ install_all: install
- install-nolns: all installbin-nolns installslib-nolns
-
- installbin: ${SING_EXEC} libparse ESingular TSingular ${RUN_SINGULARS}
-- ${MKINSTALLDIRS} ${bindir} ${bindir_mod}
-- ${INSTALL_PROGRAM} ${SING_EXEC} ${SINGULAR}
-+ ${MKINSTALLDIRS} $(DESTDIR)${bindir} $(DESTDIR)${bindir_mod}
-+ ${INSTALL_PROGRAM} ${SING_EXEC} $(DESTDIR)${SINGULAR}
- -for file in *.so; do \
-- ${INSTALL_PROGRAM} $$file ${bindir}; \
-+ ${INSTALL_PROGRAM} $$file $(DESTDIR)${bindir}; \
- done
- -for file in MOD/*.so; do \
- ${INSTALL_PROGRAM} $$file ${bindir}/MOD; \
- done
-- ${INSTALL_PROGRAM} libparse ${RUN_SINGULARS} ${bindir}
-- ${INSTALL_PROGRAM} ESingular TSingular ${bindir}
-- ${INSTALL_PROGRAM} surfex ${bindir}
-- chmod a+x ${SINGULAR}
-- rm -f ${bindir}/${SING_EXEC}${EXEC_EXT}
-- cd ${bindir}; ${LN_S} ${SINGULAR} Singular${EXEC_EXT};
-+ ${INSTALL_PROGRAM} libparse ${RUN_SINGULARS} $(DESTDIR)${bindir}
-+ ${INSTALL_PROGRAM} ESingular TSingular $(DESTDIR)${bindir}
-+ ${INSTALL_PROGRAM} surfex $(DESTDIR)${bindir}
-+ chmod a+x $(DESTDIR)${SINGULAR}
-+ rm -f $(DESTDIR)${bindir}/${SING_EXEC}${EXEC_EXT}
-+ cd $(DESTDIR)${bindir}; ${LN_S} ${SINGULAR} Singular${EXEC_EXT};
-
- installbin-nolns: ${SING_EXEC} libparse ESingular TSingular ${RUN_SINGULARS}
- ${MKINSTALLDIRS} ${bindir} ${bindir_mod}
-@@ -586,33 +586,33 @@ installbin-nolns: ${SING_EXEC} libparse ESingular TSingular ${RUN_SINGULARS}
- -for file in MOD/*.so; do \
- ${INSTALL_PROGRAM} $$file ${bindir}/MOD; \
- done
-- ${INSTALL_PROGRAM} libparse ${RUN_SINGULARS} ${bindir}
-- ${INSTALL_PROGRAM} ESingular TSingular ${DL_LIBS} ${bindir}
-- chmod a+x ${SINGULAR}
-- rm -f ${bindir}/${SING_EXEC}${EXEC_EXT}
-- ${INSTALL_PROGRAM} ${SINGULAR} ${bindir}/Singular${EXEC_EXT};
-+ ${INSTALL_PROGRAM} libparse ${RUN_SINGULARS} $(DESTDIR)${bindir}
-+ ${INSTALL_PROGRAM} ESingular TSingular ${DL_LIBS} $(DESTDIR)${bindir}
-+ chmod a+x $(DESTDIR)${SINGULAR}
-+ rm -f $(DESTDIR)${bindir}/${SING_EXEC}${EXEC_EXT}
-+ ${INSTALL_PROGRAM} ${SINGULAR} $(DESTDIR)${bindir}/Singular${EXEC_EXT};
-
- installslib: LIB
- test -r ${slibdir} || ${LN_S} `pwd`/LIB ${slibdir}
-
- installslib-nolns: LIB
-- ${MKINSTALLDIRS} ${slibdir}
-+ ${MKINSTALLDIRS} $(DESTDIR)${slibdir}
- for file in `pwd`/LIB/*.lib; do \
-- ${INSTALL_DATA} $$file ${slibdir}; \
-+ ${INSTALL_DATA} $$file $(DESTDIR)${slibdir}; \
- done
-- ${MKINSTALLDIRS} ${slibdir}/gftables
-+ ${MKINSTALLDIRS} $(DESTDIR)${slibdir}/gftables
- for file in `pwd`/LIB/gftables/*; do \
-- ${INSTALL_DATA} $$file ${slibdir}/gftables/; \
-+ ${INSTALL_DATA} $$file $(DESTDIR)${slibdir}; \
- done
-
--install-libsingular: libsingular installslib-nolns
-- ${MKINSTALLDIRS} ${includedir}/singular
-+install-libsingular: libsingular
-+ ${MKINSTALLDIRS} $(DESTDIR)${includedir}/singular
- for file in *.$(SO_SUFFIX); do \
-- ${INSTALL_PROGRAM} $$file ${libdir}; \
-+ ${INSTALL_PROGRAM} $$file $(DESTDIR)${libdir}; \
- done
-- ${INSTALL_PROGRAM} libsingular.h ${includedir}
-+ ${INSTALL_PROGRAM} libsingular.h $(DESTDIR)${includedir}
- for file in subexpr.h tok.h grammar.h ipid.h lists.h ipshell.h attrib.h silink.h table.h; do \
-- sed -e "s:<kernel/:<singular/:" < $$file |sed -e "s:<Singular/:<singular/:"|sed -e "s:<omalloc/:<:"|sed -e "s:<factory/:<:" >${includedir}/singular/$$file ;\
-+ sed -e "s:<kernel/:<singular/:" < $$file |sed -e "s:<Singular/:<singular/:"|sed -e "s:<omalloc/:<:"|sed -e "s:<factory/:<:" >$(DESTDIR)${includedir}/singular/$$file ;\
- done
-
- uninstall: uninstallbin
-@@ -664,24 +664,23 @@ LIB/all.lib: LIB/all.lib.tmpl
-
- install-bindist: $(HEADERS) $(SOURCES) Makefile depend
- echo "#define MAKE_DISTRIBUTION " > distrib.h
-- sleep 1
-- ${MAKE} ${SING_EXEC} ESingular TSingular libparse ${RUN_SINGULARS}
-- ${MKINSTALLDIRS} ${install_bindir} ${install_bindir_mod}
-- ${INSTALL_PROGRAM} ${SING_EXEC} ${install_bindir}/Singular
-- -${INSTALL_PROGRAM} *.so ${install_bindir}
-- -${INSTALL_PROGRAM} MOD/*.so ${install_bindir}/MOD
-- ${INSTALL_PROGRAM} -s libparse ${RUN_SINGULARS} ESingular TSingular ${install_bindir}
-- ${INSTALL_PROGRAM} surfex ${install_bindir}
-+ # sleep 1
-+ ${MAKE} ${SING_EXEC} ESingular TSingular libparse $(DESTDIR)${RUN_SINGULARS}
-+ ${MKINSTALLDIRS} $(DESTDIR)${install_bindir} $(DESTDIR)${install_bindir_mod}
-+ ${INSTALL_PROGRAM} ${SING_EXEC} $(DESTDIR)${install_bindir}/Singular
-+ -${INSTALL_PROGRAM} *.so $(DESTDIR)${install_bindir}
-+ ${INSTALL_PROGRAM} -s libparse ${RUN_SINGULARS} ESingular TSingular $(DESTDIR)${install_bindir}
-+ ${INSTALL_PROGRAM} surfex $(DESTDIR)${install_bindir}
- echo "#undef MAKE_DISTRIBUTION " > distrib.h
-
- install-sharedist: ${SLIBS_FILES} LIB/gftables
-- ${MKINSTALLDIRS} ${install_slibdir}
-- cp ${SLIBS_FILES} ${install_slibdir}
-- ${MKINSTALLDIRS} ${install_slibdir}/gftables
-- cp ${GFTABLES} ${install_slibdir}/gftables
-- ${MKINSTALLDIRS} ${install_slibdir}/surfex
-- cp LIB/surfex/surfex.jar ${install_slibdir}/surfex
-- chmod -R +rX ${install_slibdir}/*
-+ ${MKINSTALLDIRS} $(DESTDIR)${install_slibdir}
-+ cp ${SLIBS_FILES} $(DESTDIR)${install_slibdir}
-+ ${MKINSTALLDIRS} $(DESTDIR)${install_slibdir}/gftables
-+ cp ${GFTABLES} $(DESTDIR)${install_slibdir}/gftables
-+ ${MKINSTALLDIRS} $(DESTDIR)${install_slibdir}/surfex
-+ cp LIB/surfex/surfex.jar $(DESTDIR)${install_slibdir}/surfex
-+ chmod -R +rX $(DESTDIR)${install_slibdir}/*
-
- tar:
- tar cf Singular-${SINGULAR_VERSION}-src.tar ${DISTFILES}
-@@ -779,8 +778,8 @@ mpsr_Tok.og: iparith.inc mpsr_Tok.cc
- $(CXXG) ${CXXFLAGSG} ${CPPFLAGS} ${CXXTEMPLFLAGSG} ${DEFSG} -c mpsr_Tok.cc -o mpsr_Tok.og
-
- installg: Singularg
-- ${MKINSTALLDIRS} ${bindir}
-- ${INSTALL_PROGRAM} Singularg ${bindir}
-+ ${MKINSTALLDIRS} $(DESTDIR)${bindir}
-+ ${INSTALL_PROGRAM} Singularg $(DESTDIR)${bindir}
-
- ESingularg: mod2.h feOpt.cc version.h emacs.cc \
- feOptES.inc
-@@ -859,8 +858,8 @@ mpsr_Tok.op: iparith.inc mpsr_Tok.cc
- $(CXXP) ${CXXFLAGSP} ${CPPFLAGS} ${CXXTEMPLFLAGSP} ${DEFSP} -c mpsr_Tok.cc -o mpsr_Tok.op
-
- installp: Singularp
-- ${MKINSTALLDIRS} ${bindir}
-- ${INSTALL_PROGRAM} Singularp ${bindir}
-+ ${MKINSTALLDIRS} $(DESTDIR)${bindir}
-+ ${INSTALL_PROGRAM} Singularp $(DESTDIR)${bindir}
-
- ##
- ## dependencies
-diff --git a/factory/GNUmakefile.in b/factory/GNUmakefile.in
-index d20b6a2..43f11e9 100644
---- a/factory/GNUmakefile.in
-+++ b/factory/GNUmakefile.in
-@@ -535,19 +535,20 @@ install_all: install libsingcf_p.a
- install-nolns: install
-
- installcf: cf
-- $(MKINSTALLDIRS) $(libdir)
-- $(MKINSTALLDIRS) $(includedir)
-- $(INSTALL_DATA) $(libfactory) $(libdir)/$(libfactory)
-- -$(INSTALL_DATA) libsingcf_g.a $(libdir)/libsingcf_g.a
-- -$(INSTALL_DATA) libsingcf_p.a $(libdir)/libsingcf_p.a
-- $(INSTALL_DATA) factory.h $(includedir)/factory.h
-- $(INSTALL_DATA) cf_gmp.h $(includedir)/cf_gmp.h
-- $(INSTALL_DATA) factoryconf.h $(includedir)/factoryconf.h
-+ $(MKINSTALLDIRS) $(DESTDIR)$(libdir)
-+ $(MKINSTALLDIRS) $(DESTDIR)$(includedir)
-+ $(MKINSTALLDIRS) $(DESTDIR)$(templatedir)
-+ $(INSTALL_DATA) $(libfactory) $(DESTDIR)$(libdir)/$(libfactory)
-+ -$(INSTALL_DATA) libsingcf_g.a $(DESTDIR)$(libdir)/libsingcf_g.a
-+ -$(INSTALL_DATA) libsingcf_p.a $(DESTDIR)$(libdir)/libsingcf_p.a
-+ $(INSTALL_DATA) factory.h $(DESTDIR)$(includedir)/factory.h
-+ $(INSTALL_DATA) cf_gmp.h $(DESTDIR)$(includedir)/cf_gmp.h
-+ $(INSTALL_DATA) factoryconf.h $(DESTDIR)$(includedir)/factoryconf.h
- for file in $(templateincl); do \
-- $(INSTALL_DATA) $(srcdir)/templates/$$file $(templatedir)/$$file; \
-+ $(INSTALL_DATA) $(srcdir)/templates/$$file $(DESTDIR)$(templatedir)/$$file; \
- done
- # we run `ranlib' another time for SUN machines
-- $(RANLIB) $(libdir)/$(libfactory)
-+ $(RANLIB) $(DESTDIR)$(libdir)/$(libfactory)
-
- installmem: mem
- $(MKINSTALLDIRS) $(libdir)
-diff --git a/kernel/Makefile.in b/kernel/Makefile.in
-index adc9cd9..6f58083 100644
---- a/kernel/Makefile.in
-+++ b/kernel/Makefile.in
-@@ -48,7 +48,7 @@ PIPE = @PIPE@
- CFLAGS = @CFLAGS@ ${PIPE}
- CXXFLAGS = @CXXFLAGS@ ${PIPE}
- CXXTEMPLFLAGS = @CXXTEMPLFLAGS@
--CPPFLAGS = -I${srcdir} -I.. -I at prefix@ @CPPFLAGS@
-+CPPFLAGS = -I${srcdir} -I.. -I at prefix@ @CPPFLAGS@
- DEFS = -DNDEBUG -DOM_NDEBUG -D at SING_UNAME@ @DEFS@
- LDFLAGS = @LDFLAGS@
- LD_DYN_FLAGS = @LD_DYN_FLAGS@
-@@ -236,7 +236,7 @@ libkernel.a: ${OBJS}
- -rm -f libkernel.a
- ar cr $@ $^
-
--p_Procs_Lib.o: p_Procs_Lib.inc
-+p_Procs_Lib.o: p_Procs_Dynamic.inc
-
- # Hmm compiling with -fomit-frame-pointer resulted in access violation
- # under cygwin
-@@ -253,12 +253,12 @@ p_Procs_Dynamic.o p_Procs_Lib.o p_Procs_Dynamic.og p_Procs_Lib.og\
- p_Procs_Dynamic.inc p_Procs_Lib.inc: p_Procs_Dynamic.h
-
- # here is how p_Procs_[Static|Dynamic].inc is generated
--p_Procs_Static.inc: p_Procs_Generate.cc p_Procs_Impl.h mod2.h
-+p_Procs_Static.inc: p_Procs_Generate.cc p_Procs_Impl.h |mod2.h
- $(CXX) $(CPPFLAGS) -g -Dp_Procs_Static p_Procs_Generate.cc -o p_Procs_Static
- ./p_Procs_Static > p_Procs_Static.xx && mv p_Procs_Static.xx p_Procs_Static.inc
- -rm -f p_Procs_Static p_Procs_Static.exe
-
--p_Procs_Dynamic.inc: p_Procs_Generate.cc p_Procs_Impl.h mod2.h
-+p_Procs_Dynamic.inc: p_Procs_Generate.cc p_Procs_Impl.h |mod2.h
- $(CXX) $(CPPFLAGS) -g -Dp_Procs_Dynamic p_Procs_Generate.cc -o p_Procs_Dynamic
- ./p_Procs_Dynamic > p_Procs_Dynamic.xx && mv p_Procs_Dynamic.xx p_Procs_Dynamic.inc
- -rm -f p_Procs_Dynamic p_Procs_Dynamic.exe
-@@ -272,9 +272,9 @@ p_Procs_%.so: p_Procs_Lib_%.dl_o
- install-nolns: install
-
- install-libsingular: install
-- -${MKINSTALLDIRS} ${includedir}
-- -${MKINSTALLDIRS} ${includedir}/singular
-- -for file in *.h kInline.cc; do sed -e "s:<kernel/:<singular/:"< $$file | sed -e "s:<Singular/:<singular/:"|sed -e "s:<omalloc/:<:"|sed -e "s:<factory/:<:" > ${includedir}/singular/$$file; done
-+ ${MKINSTALLDIRS} $(DESTDIR)${includedir}
-+ ${MKINSTALLDIRS} $(DESTDIR)${includedir}/singular
-+ for file in *.h kInline.cc; do sed -e "s:<kernel/:<singular/:"< $$file | sed -e "s:<Singular/:<singular/:"|sed -e "s:<omalloc/:<:"|sed -e "s:<factory/:<:" > $(DESTDIR)${includedir}/singular/$$file; done
-
- install: all installbin
-
-@@ -290,12 +290,12 @@ endif
-
-
- installbin: ${DL_LIBS} ${DL_LIBSG} libkernel.a libkernel_g.a
-- ${MKINSTALLDIRS} ${bindir}
-+ ${MKINSTALLDIRS} $(DESTDIR)${bindir}
- - ranlib libkernel.a
- - ranlib libkernel_g.a
- ifeq (,${DL_LIBS})
- else
-- -${INSTALL_PROGRAM} ${DL_LIBS} ${bindir}
-+ ${INSTALL_PROGRAM} ${DL_LIBS} $(DESTDIR)${bindir}
- ifeq (,${DL_LIBSG})
- else
- -for file in ${DL_LIBS} ${DL_LIBSG}; do ${INSTALL_PROGRAM} $$file ../Singular; done
-@@ -307,7 +307,7 @@ install-bindist: ${DL_LIBS} libkernel.a
- ${MKINSTALLDIRS} ${bindir}
- ifeq (,${DL_LIBS})
- else
-- -${INSTALL_PROGRAM} ${DL_LIBS} ${bindir}
-+ ${INSTALL_PROGRAM} ${DL_LIBS} $(DESTDIR)${bindir}
- endif
-
- ##
-diff --git a/libfac/Makefile.in b/libfac/Makefile.in
-index c2b38eb..1f2953f 100644
---- a/libfac/Makefile.in
-+++ b/libfac/Makefile.in
-@@ -146,13 +146,13 @@ libsingfac_p.a: $(PROFOBJ)
- install-nolns: install
-
- install install-libsingular: all
-- ${MKINSTALLDIRS} ${includedir}
-- ${MKINSTALLDIRS} ${libdir}
-- ${INSTALL_DATA} ${LIBFACINCLUDE} ${includedir}
-- ${INSTALL_DATA} ${TARGETNAME}.a ${libdir}
-- -${INSTALL_DATA} libsingfac_g.a ${libdir}
-- $(RANLIB) ${libdir}/${TARGETNAME}.a
-- -$(RANLIB) ${libdir}/libsingfac_g.a
-+ ${MKINSTALLDIRS} $(DESTDIR)${includedir}
-+ ${MKINSTALLDIRS} $(DESTDIR)${libdir}
-+ ${INSTALL_DATA} ${LIBFACINCLUDE} $(DESTDIR)${includedir}
-+ ${INSTALL_DATA} ${TARGETNAME}.a $(DESTDIR)${libdir}
-+ -${INSTALL_DATA} libsingfac_g.a $(DESTDIR)${libdir}
-+ $(RANLIB) $(DESTDIR)${libdir}/${TARGETNAME}.a
-+ -$(RANLIB) $(DESTDIR)${libdir}/libsingfac_g.a
-
- install_all: install libsingfac_p.a
- -${INSTALL_DATA} libsingfac_p.a ${libdir}
-diff --git a/omalloc/Makefile.in b/omalloc/Makefile.in
-index 98a7e95..8661ca2 100644
---- a/omalloc/Makefile.in
-+++ b/omalloc/Makefile.in
-@@ -185,17 +185,17 @@ install-libsingular:
- $(INSTALL) omalloc.h $(includedir)/singular
-
- install install-libsingular: all
-- $(MKINSTALLDIRS) $(libdir)
-- $(MKINSTALLDIRS) $(includedir)
-- $(INSTALL_DATA) libomalloc.a $(libdir)
-- $(RANLIB) $(libdir)/libomalloc.a
-- $(INSTALL_DATA) libomalloc_ndebug.a $(libdir)
-- $(RANLIB) $(libdir)/libomalloc_ndebug.a
-- $(INSTALL_DATA) omalloc.o $(libdir)
-- $(INSTALL_DATA) omalloc_debug.o $(libdir)
-- $(INSTALL_DATA) omalloc.h $(includedir)
-- $(INSTALL_DATA) omlimits.h $(includedir)
-- $(INSTALL_DATA) mylimits.h $(includedir)
-+ $(MKINSTALLDIRS) $(DESTDIR)$(libdir)
-+ $(MKINSTALLDIRS) $(DESTDIR)$(includedir)
-+ $(INSTALL_DATA) libomalloc.a $(DESTDIR)$(libdir)
-+ $(RANLIB) $(DESTDIR)$(libdir)/libomalloc.a
-+ $(INSTALL_DATA) libomalloc_ndebug.a $(DESTDIR)$(libdir)
-+ $(RANLIB) $(DESTDIR)$(libdir)/libomalloc_ndebug.a
-+ $(INSTALL_DATA) omalloc.o $(DESTDIR)$(libdir)
-+ $(INSTALL_DATA) omalloc_debug.o $(DESTDIR)$(libdir)
-+ $(INSTALL_DATA) omalloc.h $(DESTDIR)$(includedir)
-+ $(INSTALL_DATA) omlimits.h $(DESTDIR)$(includedir)
-+ $(INSTALL_DATA) mylimits.h $(DESTDIR)$(includedir)
-
- install_all: install libomalloc_p.a
- $(INSTALL_DATA) libomalloc_p.a $(libdir)
diff --git a/debian/patches/0003-add-working-all-target-to-Makefile.in.patch b/debian/patches/0003-add-working-all-target-to-Makefile.in.patch
deleted file mode 100644
index 6763c7b..0000000
--- a/debian/patches/0003-add-working-all-target-to-Makefile.in.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 3fb0860f213ea61eb9e6853cabb16d93a6d7296a Mon Sep 17 00:00:00 2001
-From: Felix Salfelder <felix at salfelder.org>
-Date: Thu, 16 Feb 2012 11:07:25 +0100
-Subject: add working 'all' target to Makefile.in
-
-now 'make\ {all,install}' works as usual and expected
-
-Forwarded: not-needed
----
- Makefile.in | 14 +++++++++-----
- 1 file changed, 9 insertions(+), 5 deletions(-)
-
-diff --git a/Makefile.in b/Makefile.in
-index 0d6db8f..f2eaa65 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -24,8 +24,12 @@ GUNZIP = @GUNZIP@
-
- ##############################################################
- # default target
--${SINGULAR}:
-- ${MAKE} install
-+all:
-+ @ for SUBDIR in ${BUILD1_SUBDIRS}; \
-+ do \
-+ echo ${MAKE} all in $${SUBDIR}; \
-+ ${MAKE} -C $$SUBDIR || exit 1; \
-+ done
-
- ##############################################################
- # general targets
-@@ -34,7 +38,7 @@ ${SINGULAR}:
-
- TEXINFO_TEX_FILES = epsf.tex texinfo.tex txi-cs.tex txi-de.tex txi-no.tex
- TEXINFO_TEX_DIR = Texinfo/doc
--all:
-+original_all:
- echo For everybody who did not read the README: use make install
- exit 1
-
-@@ -42,7 +46,7 @@ install install_all:
- @ for SUBDIR in ${BUILD1_SUBDIRS}; \
- do \
- echo ${MAKE} $@ in $${SUBDIR}; \
-- (cd $${SUBDIR} && ${MAKE} $@ ) || exit 1;\
-+ ${MAKE} -C $$SUBDIR $@ || exit 1 ;\
- (if test "$${SUBDIR}" = Texinfo && test -d doc; then \
- for FILE in ${TEXINFO_TEX_FILES}; \
- do \
-@@ -62,7 +66,7 @@ install-nolns:
- @ for SUBDIR in ${BUILD1_SUBDIRS}; \
- do \
- echo ${MAKE} $@ in $${SUBDIR}; \
-- (cd $${SUBDIR} && ${MAKE} $@ ) || exit 1;\
-+ ${MAKE} -C $$SUBDIR $@ ;\
- (if test "$${SUBDIR}" = Texinfo && test -d doc; then \
- for FILE in ${TEXINFO_TEX_FILES}; \
- do \
diff --git a/debian/patches/0004-miscellaneous-Makefile.in-patches.patch b/debian/patches/0004-miscellaneous-Makefile.in-patches.patch
deleted file mode 100644
index 652401f..0000000
--- a/debian/patches/0004-miscellaneous-Makefile.in-patches.patch
+++ /dev/null
@@ -1,289 +0,0 @@
-From d214a720c0d0bbc9f76cc34086f520a3c6434d6d Mon Sep 17 00:00:00 2001
-From: Felix Salfelder <felix at salfelder.org>
-Date: Thu, 16 Feb 2012 12:37:00 +0100
-Subject: miscellaneous Makefile.in patches
-
- - fix flags (mostly search paths)
- - repair default and install targets
- - remove dependency on mod2.h in kernel. "make depend" works fine
-
-Forwarded: not-needed
----
- Singular/Makefile.in | 44 +++++++++++++++++++++++++-------------------
- emacs/Makefile.in | 5 ++++-
- factory/GNUmakefile.in | 18 ++++++++++--------
- kernel/Makefile.in | 10 +++++-----
- omalloc/Makefile.in | 6 +++---
- 5 files changed, 47 insertions(+), 36 deletions(-)
-
-diff --git a/Singular/Makefile.in b/Singular/Makefile.in
-index 807d786..6b94ca2 100644
---- a/Singular/Makefile.in
-+++ b/Singular/Makefile.in
-@@ -93,7 +93,7 @@ endif
- DEFS = -DNDEBUG -DOM_NDEBUG -D at SING_UNAME@ @DEFS@
- LDFLAGS2 = @LDFLAGS@
- ifneq ($(SINGUNAME),ix86-Win)
--LDFLAGS = -L at prefix@/kernel -L../kernel -lkernel @LDFLAGS@
-+LDFLAGS = -L at prefix@/kernel -L../kernel -L../omalloc -L../libfac -L../factory -lkernel @LDFLAGS@
- LDFLAGSG = -L at prefix@/kernel -L../kernel -lkernel_g @LD_DYN_FLAGS1@ @LDFLAGS@
- LDFLAGSP = -L at prefix@/kernel -L../kernel -lkernel_p @LD_DYN_FLAGS1@ @LDFLAGS@
- else
-@@ -363,9 +363,9 @@ GFTABLES = $(wildcard LIB/gftables/[1-9]*)
- fi
-
- .cc.o:
-- ${CXX} ${CXXFLAGS} ${CXXTEMPLFLAGS} ${CPPFLAGS} ${DEFS} -c $<
-+ ${CXX} -fPIC ${CXXFLAGS} ${CXXTEMPLFLAGS} ${CPPFLAGS} ${DEFS} -c $<
- .c.o:
-- ${CC} ${CFLAGS} ${CPPFLAGS} ${DEFS} -c $<
-+ ${CC} -fPIC ${CFLAGS} ${CPPFLAGS} ${DEFS} -c $<
-
- %.dl_o : %.cc
- ${CXX} ${CXXFLAGS} ${CXXTEMPLFLAGS} ${CPPFLAGS} ${DEFS} ${SFLAGS} -c $< -o $@
-@@ -387,11 +387,13 @@ Singular${S_EXT}: mod2.h Makefile version.h $(WIN_LIBS) scanner.cc ${OBJS} \
- tesths.cc iparith.o mpsr_Tok.o claptmpl.o\
- ${OBJS} ${LDFLAGS} ${LIBS} ../kernel/mmalloc.o
-
--libsingular: mod2.h Makefile version.h $(WIN_LIBS) scanner.cc ${OBJS} \
-- iparith.o libparse.cc claptmpl.o mpsr_Tok.o $(DL_LIBS)
-+libsingular: libsingular.${SO_SUFFIX}
-+
-+libsingular.${SO_SUFFIX}: version.h $(WIN_LIBS) scanner.cc ${OBJS} \
-+ iparith.o libparse.cc claptmpl.o mpsr_Tok.o $(DL_LIBS) tesths.o
- $(LIBSINGULAR_LD) ${SLDFLAGS} ${LIBSINGULAR_FLAGS} -o libsingular.${SO_SUFFIX} \
-- iparith.o mpsr_Tok.o claptmpl.o \
-- ${OBJS} -lkernel -L../kernel -L../factory -L../libfac -L${libdir} ${LIBSINGULAR_LIBS}
-+ tesths.o iparith.o mpsr_Tok.o claptmpl.o \
-+ ${OBJS} -lkernel -L../kernel -L../factory -L../libfac -L../omalloc -L${libdir} ${LIBSINGULAR_LIBS}
-
- libsingular.a: mod2.h Makefile version.h $(WIN_LIBS) scanner.cc ${OBJS} \
- iparith.o libparse.cc claptmpl.o mpsr_Tok.o
-@@ -427,13 +429,16 @@ iparith.inc: gentable.cc grammar.h tok.h table.h mod2.h
- ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${CXXTEMPLFLAGS} ${DEFS} gentable.cc \
- -o gentable1
- ./gentable1
-- /bin/rm -f gentable1 gentable1.exe
-+ # /bin/rm -f gentable1 gentable1.exe
-
- mpsr_Tok.inc: gentable2.cc grammar.h tok.h table.h mod2.h
- ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${CXXTEMPLFLAGS} ${DEFS} gentable2.cc \
- -o gentable2
- ./gentable2
-- /bin/rm -f gentable2 gentable2.exe
-+ # /bin/rm -f gentable2 gentable2.exe
-+ #
-+ # FIXME: the above doesnt work.
-+ touch $@
-
-
- version.h: ${SOURCES} ${HEADERS} Makefile.in mod2.h.in \
-@@ -473,17 +478,17 @@ TSingular: mod2.h feOpt.cc version.h emacs.cc \
- feOpt.o: feOpt.inc feOptES.inc feOptTS.inc
- extra.o: feOpt.inc
-
--feOpt.inc: feOpt.cc mod2.h
-+feOpt.inc: feOpt.cc |mod2.h
- $(CXX) $(CXXFLAGS) -DGENERATE_OPTION_INDEX ${CPPFLAGS} feOpt.cc -o feOpt
- ./feOpt
- /bin/rm -f feOpt feOpt.exe
-
--feOptES.inc: feOpt.cc mod2.h
-+feOptES.inc: feOpt.cc |mod2.h
- $(CXX) $(CXXFLAGS) -DGENERATE_OPTION_INDEX -DESINGULAR -I../kernel feOpt.cc -o feOptES
- ./feOptES
- rm -f feOptES feOptES.exe
-
--feOptTS.inc: feOpt.cc mod2.h
-+feOptTS.inc: feOpt.cc |mod2.h
- $(CXX) $(CXXFLAGS) -DGENERATE_OPTION_INDEX -DTSINGULAR -I../kernel feOpt.cc -o feOptTS
- ./feOptTS
- rm -f feOptTS feOptTS.exe
-@@ -555,11 +560,11 @@ endif
- ##
- ## install targets
- ##
--install: all installbin installslib
-+install: all installbin installslib install-libsingular
-
- install_all: install
-
--install-nolns: all installbin-nolns installslib-nolns
-+install-ln: all installbin installslib-ln
-
- installbin: ${SING_EXEC} libparse ESingular TSingular ${RUN_SINGULARS}
- ${MKINSTALLDIRS} $(DESTDIR)${bindir} $(DESTDIR)${bindir_mod}
-@@ -568,7 +573,7 @@ installbin: ${SING_EXEC} libparse ESingular TSingular ${RUN_SINGULARS}
- ${INSTALL_PROGRAM} $$file $(DESTDIR)${bindir}; \
- done
- -for file in MOD/*.so; do \
-- ${INSTALL_PROGRAM} $$file ${bindir}/MOD; \
-+ ${INSTALL_PROGRAM} $$file $(DESTDIR)${bindir}/MOD; \
- done
- ${INSTALL_PROGRAM} libparse ${RUN_SINGULARS} $(DESTDIR)${bindir}
- ${INSTALL_PROGRAM} ESingular TSingular $(DESTDIR)${bindir}
-@@ -584,7 +589,7 @@ installbin-nolns: ${SING_EXEC} libparse ESingular TSingular ${RUN_SINGULARS}
- ${INSTALL_PROGRAM} $$file ${bindir}; \
- done
- -for file in MOD/*.so; do \
-- ${INSTALL_PROGRAM} $$file ${bindir}/MOD; \
-+ ${INSTALL_PROGRAM} $$file $(DESTDIR)${bindir}/MOD; \
- done
- ${INSTALL_PROGRAM} libparse ${RUN_SINGULARS} $(DESTDIR)${bindir}
- ${INSTALL_PROGRAM} ESingular TSingular ${DL_LIBS} $(DESTDIR)${bindir}
-@@ -592,10 +597,10 @@ installbin-nolns: ${SING_EXEC} libparse ESingular TSingular ${RUN_SINGULARS}
- rm -f $(DESTDIR)${bindir}/${SING_EXEC}${EXEC_EXT}
- ${INSTALL_PROGRAM} ${SINGULAR} $(DESTDIR)${bindir}/Singular${EXEC_EXT};
-
--installslib: LIB
-+installslib-ln: LIB
- test -r ${slibdir} || ${LN_S} `pwd`/LIB ${slibdir}
-
--installslib-nolns: LIB
-+installslib: LIB
- ${MKINSTALLDIRS} $(DESTDIR)${slibdir}
- for file in `pwd`/LIB/*.lib; do \
- ${INSTALL_DATA} $$file $(DESTDIR)${slibdir}; \
-@@ -630,11 +635,12 @@ mostlyclean:
- -rm -f Singular Singular-static Singularg Singularp libparse feOpt*.inc
- -rm -f *.o *.og core *.op *.so* *.dl_o*
- -rm -rf MOD
-- -rm -f ESingular* TSingular*
-+ -rm -f ESingular* TSingular* libsingular
-
- clean: mostlyclean
- -rm -f *.bak *.d *.dd depend
- -rm -f ${slibdir}
-+ -rm -f gentable1 gentable2
-
- distclean: clean
- -rm -f iparith.inc mpsr_Tok.inc stamp.h
-diff --git a/emacs/Makefile.in b/emacs/Makefile.in
-index 86ba445..47c57e1 100644
---- a/emacs/Makefile.in
-+++ b/emacs/Makefile.in
-@@ -42,9 +42,12 @@ lib-cmpl.el: ${prefix}/Singular/Makefile lib.pl
- (cd ${prefix}/Singular;${MAKE} --no-print-directory -s -f Makefile echoLIBS) > lib-temp
- ${PERL} lib.pl -s ${singulardir} `cat lib-temp` > lib-cmpl.el
-
--clean mostlyclean distclean:
-+clean mostlyclean:
- rm -f cmd-cmpl.el hlp-cmpl.el lib-cmpl.el ex-cmpl.el
-
-+distclean: mostlyclean
-+ rm -f Makefile
-+
- install-sharedist: all
- ${MKINSTALLDIRS} ${emacsdir}
- ${INSTALL_DATA} cmd-cmpl.el ${emacsdir}
-diff --git a/factory/GNUmakefile.in b/factory/GNUmakefile.in
-index 43f11e9..cb28207 100644
---- a/factory/GNUmakefile.in
-+++ b/factory/GNUmakefile.in
-@@ -386,24 +386,24 @@ distfiles := \
- #
-
- # how to create library objects
--%.o: %.cc config.h factoryconf.h
-+%.o: %.cc config.h |factoryconf.h
- $(CXX) -c $< $(LIBCXXFLAGS) -o $@
- %.o: %.c config.h
- $(CC) -c $< $(LIBCFLAGS) -o $@
- # the debug version:
--%.og: %.cc config.h factoryconf.h
-+%.og: %.cc config.h |factoryconf.h
- $(CXX) -g -c $< $(LIBCGGFLAGS) -o $@
- # the profiling version:
--%.op: %.cc config.h factoryconf.h
-+%.op: %.cc config.h |factoryconf.h
- $(CXX) -O -pg -c $< $(LIBCGGFLAGS) -o $@
-
- # how to create dependency files. To avoid broken dependency files
- # (which in turn break this GNUmakefile) we first generate them in
- # a temporary file which we then move to the destination file.
--%.dtmp: %.cc factoryconf.h config.h
-+%.dtmp: %.cc |factoryconf.h config.h
- echo $*.d "\\" > $@
- $(CXX) -MM $< $(DEPCXXFLAGS) >> $@
--%.dtmp: %.c factoryconf.h config.h
-+%.dtmp: %.c |factoryconf.h config.h
- echo $*.d "\\" > $@
- $(CXX) -MM $< $(DEPCXXFLAGS) >> $@
- %.dtmp: %.template
-@@ -669,8 +669,10 @@ $(srcdir)/configure: configure.in
- # seems gmake needs at least a trivial command. otherwise all
- # files which depend on config.h will be remade even if congig.h
- # did not change.
--config.h: stamp-h
-- @:
-+#
-+# WTF?
-+#config.h: stamp-h
-+# @:
-
- stamp-h: config.h.in config.status
- CONFIG_FILES= CONFIG_HEADERS=config.h ./config.status
-@@ -683,7 +685,7 @@ config.status: configure
- ./config.status --recheck
-
- # create cf_gmp.h
--cf_gmp.h: GNUmakefile gen_cf_gmp.template
-+cf_gmp.h: gen_cf_gmp.template
- echo "#!/bin/sh" >gen_cf_gmp.sh
- echo "GMP_H_T=\"`$(CXX) $(LIBCXXFLAGS) -M gen_cf_gmp.cc|grep gmp.h` \"" >>gen_cf_gmp.sh
- cat gen_cf_gmp.template >>gen_cf_gmp.sh
-diff --git a/kernel/Makefile.in b/kernel/Makefile.in
-index 6f58083..78d2b07 100644
---- a/kernel/Makefile.in
-+++ b/kernel/Makefile.in
-@@ -253,12 +253,12 @@ p_Procs_Dynamic.o p_Procs_Lib.o p_Procs_Dynamic.og p_Procs_Lib.og\
- p_Procs_Dynamic.inc p_Procs_Lib.inc: p_Procs_Dynamic.h
-
- # here is how p_Procs_[Static|Dynamic].inc is generated
--p_Procs_Static.inc: p_Procs_Generate.cc p_Procs_Impl.h |mod2.h
-+p_Procs_Static.inc: p_Procs_Generate.cc p_Procs_Impl.h
- $(CXX) $(CPPFLAGS) -g -Dp_Procs_Static p_Procs_Generate.cc -o p_Procs_Static
- ./p_Procs_Static > p_Procs_Static.xx && mv p_Procs_Static.xx p_Procs_Static.inc
- -rm -f p_Procs_Static p_Procs_Static.exe
-
--p_Procs_Dynamic.inc: p_Procs_Generate.cc p_Procs_Impl.h |mod2.h
-+p_Procs_Dynamic.inc: p_Procs_Generate.cc p_Procs_Impl.h
- $(CXX) $(CPPFLAGS) -g -Dp_Procs_Dynamic p_Procs_Generate.cc -o p_Procs_Dynamic
- ./p_Procs_Dynamic > p_Procs_Dynamic.xx && mv p_Procs_Dynamic.xx p_Procs_Dynamic.inc
- -rm -f p_Procs_Dynamic p_Procs_Dynamic.exe
-@@ -439,15 +439,15 @@ libkernel_p.a: ${OBJP} ${DL_LIBSP} ${OBJSP2}
- ## dependencies
- ##
-
--%.dd: %.cc mod2.h
-+%.dd: %.cc
- echo $(@:.dd=.og) $(@:.dd=.op) $(@:.dd=.dl_o) $(@:.dd=.dl_og) $(@:.dd=.dl_op)" " \\ > $@
- $(CXXM) -DGENTABLE ${CPPFLAGS} ${DEFSG} $< >> $@
-
--%.d: %.c mod2.h
-+%.d: %.c
- echo $(@:.d=.og) $(@:.d=.op) " " \\ > $@
- $(CCM) ${CPPFLAGS} ${DEFSG} $< >> $@
-
--depend: $(CXXSOURCES:.cc=.dd) $(ESOURCES:.cc=.dd) $(CSOURCES:.c=.d) mod2.h
-+depend: $(CXXSOURCES:.cc=.dd) $(ESOURCES:.cc=.dd) $(CSOURCES:.c=.d)
- cat *.d *.dd >depend
-
- ifeq (depend,$(wildcard depend))
-diff --git a/omalloc/Makefile.in b/omalloc/Makefile.in
-index 8661ca2..1dd2e36 100644
---- a/omalloc/Makefile.in
-+++ b/omalloc/Makefile.in
-@@ -180,9 +180,9 @@ configure: configure.in
- ##
- install-nolns: install
-
--install-libsingular:
-- $(MKINSTALLDIRS) $(includedir)/singular
-- $(INSTALL) omalloc.h $(includedir)/singular
-+#install-libsingular:
-+# $(MKINSTALLDIRS) $(includedir)/singular
-+# $(INSTALL) omalloc.h $(includedir)/singular
-
- install install-libsingular: all
- $(MKINSTALLDIRS) $(DESTDIR)$(libdir)
diff --git a/debian/patches/0005-assert-needs-to-be-defined-after-include-assert.h.patch b/debian/patches/0005-assert-needs-to-be-defined-after-include-assert.h.patch
deleted file mode 100644
index d5a21fc..0000000
--- a/debian/patches/0005-assert-needs-to-be-defined-after-include-assert.h.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 0fd6fa905ac8a1e261a5075ca785666746ae2067 Mon Sep 17 00:00:00 2001
-From: Felix Salfelder <felix at salfelder.org>
-Date: Thu, 16 Feb 2012 11:23:11 +0100
-Subject: =?UTF-8?q?assert=20needs=20to=20be=20defined=20after=20#include?=
- =?UTF-8?q?=20"assert.h",=0Aalso=20if=20-Ifactory=20is=20used.?=
-
-Forwarded: not-needed
----
- factory/assert.h | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/factory/assert.h b/factory/assert.h
-index 3dd036b..d2933a1 100644
---- a/factory/assert.h
-+++ b/factory/assert.h
-@@ -128,3 +128,9 @@ extern "C" {
- #define PVIRT_CHARCC(msg) = 0
- #endif /* NOASSERT */
- /* }}} */
-+
-+
-+//assert is expected to be available after '#include "assert.h"'
-+#ifndef assert
-+# define assert(a)
-+#endif
diff --git a/debian/patches/0006-keep-mod2.h-in-Singular.patch b/debian/patches/0006-keep-mod2.h-in-Singular.patch
deleted file mode 100644
index ca24646..0000000
--- a/debian/patches/0006-keep-mod2.h-in-Singular.patch
+++ /dev/null
@@ -1,6983 +0,0 @@
-From d4af17eb7020d07867906e431b348dca13c57c63 Mon Sep 17 00:00:00 2001
-From: Felix Salfelder <felix at salfelder.org>
-Date: Wed, 22 Feb 2012 11:18:38 +0100
-Subject: keep mod2.h in Singular/
-
-don't copy mod2.h generated in Singular/ to kernel/
-to avoid time stamp issues
-
-Forwarded: not-needed
----
- Singular/Minor.cc | 2 +-
- Singular/MinorInterface.cc | 2 +-
- Singular/MinorProcessor.cc | 2 +-
- Singular/attrib.cc | 2 +-
- Singular/calcSVD.cc | 2 +-
- Singular/claptmpl.cc | 2 +-
- Singular/cntrlc.cc | 2 +-
- Singular/configure | 1 -
- Singular/configure.in | 1 -
- Singular/eigenval_ip.cc | 2 +-
- Singular/emacs.cc | 2 +-
- Singular/extra.cc | 2 +-
- Singular/feOpt.cc | 2 +-
- Singular/fehelp.cc | 2 +-
- Singular/fglm.cc | 2 +-
- Singular/gms.cc | 2 +-
- Singular/grammar.cc | 2 +-
- Singular/grammar.y | 2 +-
- Singular/interpolation.cc | 2 +-
- Singular/iparith.cc | 2 +-
- Singular/ipassign.cc | 2 +-
- Singular/ipconv.cc | 2 +-
- Singular/ipid.cc | 2 +-
- Singular/iplib.cc | 2 +-
- Singular/ipprint.cc | 2 +-
- Singular/ipshell.cc | 2 +-
- Singular/janet.cc | 2 +-
- Singular/libparse.l | 2 +-
- Singular/lists.cc | 2 +-
- Singular/maps_ip.cc | 2 +-
- Singular/minpoly.cc | 2 +-
- Singular/misc_ip.cc | 2 +-
- Singular/mpsr_Error.cc | 2 +-
- Singular/mpsr_Get.cc | 2 +-
- Singular/mpsr_GetMisc.cc | 2 +-
- Singular/mpsr_GetPoly.cc | 2 +-
- Singular/mpsr_Put.cc | 2 +-
- Singular/mpsr_PutPoly.cc | 2 +-
- Singular/mpsr_Tok.cc | 2 +-
- Singular/mpsr_sl.cc | 2 +-
- Singular/ndbm.cc | 2 +-
- Singular/pcv.cc | 2 +-
- Singular/pipeLink.cc | 2 +-
- Singular/scanner.cc | 2 +-
- Singular/scanner.l | 2 +-
- Singular/sdb.cc | 2 +-
- Singular/silink.cc | 2 +-
- Singular/sing_dbm.cc | 2 +-
- Singular/sing_win.cc | 2 +-
- Singular/slInit_Dynamic.cc | 2 +-
- Singular/slInit_Static.cc | 2 +-
- Singular/ssiLink.cc | 2 +-
- Singular/subexpr.cc | 2 +-
- Singular/tesths.cc | 2 +-
- Singular/walk.cc | 2 +-
- Singular/walk_ip.cc | 2 +-
- Singular/wrapper.cc | 2 +-
- kernel/F4.cc | 2 +-
- kernel/F5cData.cc | 2 +-
- kernel/F5cLists.cc | 2 +-
- kernel/GMPrat.cc | 2 +-
- kernel/Number.h | 2 +-
- kernel/Poly.h | 2 +-
- kernel/PowerSeries.h | 2 +-
- kernel/clapconv.cc | 2 +-
- kernel/clapsing.cc | 2 +-
- kernel/dError.c | 2 +-
- kernel/digitech.cc | 2 +-
- kernel/digitech.h | 2 +-
- kernel/eigenval.cc | 2 +-
- kernel/f5c.cc | 2 +-
- kernel/f5data.cc | 2 +-
- kernel/f5gb.cc | 2 +-
- kernel/f5lists.cc | 2 +-
- kernel/fast_maps.cc | 2 +-
- kernel/fast_mult.cc | 2 +-
- kernel/fast_mult.h | 2 +-
- kernel/feResource.cc | 2 +-
- kernel/febase.cc | 2 +-
- kernel/fegetopt.c | 2 +-
- kernel/feread.cc | 2 +-
- kernel/fereadl.c | 2 +-
- kernel/ffields.cc | 2 +-
- kernel/fglmcomb.cc | 2 +-
- kernel/fglmgauss.cc | 2 +-
- kernel/fglmhom.cc | 2 +-
- kernel/fglmvec.cc | 2 +-
- kernel/fglmzero.cc | 2 +-
- kernel/gfan.cc | 4512 ++++++++++++++++++++++++++++++++++++++++++
- kernel/gnumpc.cc | 2 +-
- kernel/gnumpfl.cc | 2 +-
- kernel/gr_kstd2.cc | 2 +-
- kernel/gring.cc | 2 +-
- kernel/hdegree.cc | 2 +-
- kernel/hilb.cc | 2 +-
- kernel/hutil.cc | 2 +-
- kernel/ideals.cc | 2 +-
- kernel/int64vec.cc | 2 +-
- kernel/intvec.cc | 2 +-
- kernel/kbuckets.cc | 2 +-
- kernel/khstd.cc | 2 +-
- kernel/kspoly.cc | 2 +-
- kernel/kstd1.cc | 2 +-
- kernel/kstd2.cc | 2 +-
- kernel/kstdfac.cc | 2 +-
- kernel/kutil.cc | 2 +-
- kernel/linearAlgebra.cc | 2 +-
- kernel/longalg.cc | 2 +-
- kernel/longrat.cc | 2 +-
- kernel/longrat0.cc | 2 +-
- kernel/longtrans.cc | 2 +-
- kernel/lplist.cc | 2 +-
- kernel/maps.cc | 2 +-
- kernel/matpol.cc | 2 +-
- kernel/misc.cc | 2 +-
- kernel/mmalloc.cc | 2 +-
- kernel/mmstd.c | 2 +-
- kernel/mod_raw.cc | 2 +-
- kernel/modulop.cc | 2 +-
- kernel/mpr_base.cc | 2 +-
- kernel/mpr_complex.cc | 2 +-
- kernel/mpr_inout.cc | 2 +-
- kernel/mpr_numeric.cc | 2 +-
- kernel/multicnt.cc | 2 +-
- kernel/ncSACache.cc | 2 +-
- kernel/ncSAFormula.cc | 2 +-
- kernel/ncSAMult.cc | 2 +-
- kernel/npolygon.cc | 2 +-
- kernel/numbers.cc | 2 +-
- kernel/pDebug.cc | 2 +-
- kernel/pInline0.cc | 2 +-
- kernel/pInline1.cc | 2 +-
- kernel/pInline2.cc | 2 +-
- kernel/pShallowCopyDelete.cc | 2 +-
- kernel/p_Mult_q.cc | 2 +-
- kernel/p_Mult_q.h | 2 +-
- kernel/p_Procs_Dynamic.cc | 2 +-
- kernel/p_Procs_Generate.cc | 2 +-
- kernel/p_Procs_Lib.cc | 2 +-
- kernel/p_Procs_Static.cc | 2 +-
- kernel/p_polys.cc | 2 +-
- kernel/page.c | 2 +-
- kernel/polys-impl.cc | 2 +-
- kernel/polys.cc | 2 +-
- kernel/polys0.cc | 2 +-
- kernel/polys1.cc | 2 +-
- kernel/prCopy.cc | 2 +-
- kernel/ratgring.cc | 2 +-
- kernel/ring.cc | 2 +-
- kernel/ringgb.cc | 2 +-
- kernel/ringgb.h | 2 +-
- kernel/rintegers.cc | 2 +-
- kernel/rmodulo2m.cc | 2 +-
- kernel/rmodulon.cc | 2 +-
- kernel/sbuckets.cc | 2 +-
- kernel/sca.cc | 2 +-
- kernel/semic.cc | 2 +-
- kernel/shiftgb.cc | 2 +-
- kernel/shortfl.cc | 2 +-
- kernel/sparsmat.cc | 2 +-
- kernel/spectrum.cc | 2 +-
- kernel/splist.cc | 2 +-
- kernel/summator.cc | 2 +-
- kernel/syz.cc | 2 +-
- kernel/syz0.cc | 2 +-
- kernel/syz1.cc | 2 +-
- kernel/syz2.cc | 2 +-
- kernel/syz3.cc | 2 +-
- kernel/tgb.cc | 2 +-
- kernel/tgbgauss.cc | 2 +-
- kernel/tgbgauss.h | 2 +-
- kernel/timer.cc | 2 +-
- kernel/tmult.cc | 2 +-
- kernel/units.cc | 2 +-
- kernel/walkMain.cc | 2 +-
- kernel/walkProc.cc | 2 +-
- kernel/walkSupport.cc | 2 +-
- kernel/weight.cc | 2 +-
- kernel/weight0.c | 2 +-
- 179 files changed, 4688 insertions(+), 178 deletions(-)
- create mode 100644 kernel/gfan.cc
-
-diff --git a/Singular/Minor.cc b/Singular/Minor.cc
-index 402d7e6..4e358c5 100644
---- a/Singular/Minor.cc
-+++ b/Singular/Minor.cc
-@@ -1,4 +1,4 @@
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/structs.h>
- #include <kernel/polys.h>
- #include <Minor.h>
-diff --git a/Singular/MinorInterface.cc b/Singular/MinorInterface.cc
-index c79f694..508f979 100644
---- a/Singular/MinorInterface.cc
-+++ b/Singular/MinorInterface.cc
-@@ -1,4 +1,4 @@
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/structs.h>
- #include <kernel/polys.h>
- #include <kernel/ideals.h>
-diff --git a/Singular/MinorProcessor.cc b/Singular/MinorProcessor.cc
-index 1c08156..6ff81aa 100644
---- a/Singular/MinorProcessor.cc
-+++ b/Singular/MinorProcessor.cc
-@@ -1,4 +1,4 @@
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/structs.h>
- #include <kernel/polys.h>
- #include <MinorProcessor.h>
-diff --git a/Singular/attrib.cc b/Singular/attrib.cc
-index 1f016ef..bbef31e 100644
---- a/Singular/attrib.cc
-+++ b/Singular/attrib.cc
-@@ -12,7 +12,7 @@
- #include <ctype.h>
- #include <unistd.h>
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <omalloc/omalloc.h>
- #include <kernel/options.h>
- #include <Singular/tok.h>
-diff --git a/Singular/calcSVD.cc b/Singular/calcSVD.cc
-index bf80b3c..1e889dd 100644
---- a/Singular/calcSVD.cc
-+++ b/Singular/calcSVD.cc
-@@ -1,5 +1,5 @@
- #include <stdio.h>
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_SVD
-
-diff --git a/Singular/claptmpl.cc b/Singular/claptmpl.cc
-index 0fa6109..512b353 100644
---- a/Singular/claptmpl.cc
-+++ b/Singular/claptmpl.cc
-@@ -6,7 +6,7 @@
- * ABSTRACT - instantiation of all templates
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- //#include <vector>
- //using namespace std;
- #ifdef HAVE_FACTORY
-diff --git a/Singular/cntrlc.cc b/Singular/cntrlc.cc
-index 80552b5..4a37ef5 100644
---- a/Singular/cntrlc.cc
-+++ b/Singular/cntrlc.cc
-@@ -16,7 +16,7 @@
- #include <signal.h>
- #include <sys/types.h>
- #include <sys/wait.h>
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <omalloc/omalloc.h>
- #include <Singular/tok.h>
- #include <Singular/ipshell.h>
-diff --git a/Singular/configure b/Singular/configure
-index d72b6bd..7663e6c 100755
---- a/Singular/configure
-+++ b/Singular/configure
-@@ -10442,4 +10442,3 @@ if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
- $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
- fi
--
-diff --git a/Singular/configure.in b/Singular/configure.in
-index 9c62c22..418a334 100644
---- a/Singular/configure.in
-+++ b/Singular/configure.in
-@@ -1518,5 +1518,4 @@ if test "$ac_cv_singuname" = "ix86-Win"; then
- fi
-
- AC_OUTPUT(${OUTPUT_MAKEFILES}, \
-- cp mod2.h ../kernel/mod2.h; \
- if test "$CONFIG_HEADERS"; then echo timestamp > stamp-h; fi)
-diff --git a/Singular/eigenval_ip.cc b/Singular/eigenval_ip.cc
-index 5f53709..b9f6030 100644
---- a/Singular/eigenval_ip.cc
-+++ b/Singular/eigenval_ip.cc
-@@ -5,7 +5,7 @@
- * ABSTRACT: eigenvalues of constant square matrices
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_EIGENVAL
-
-diff --git a/Singular/emacs.cc b/Singular/emacs.cc
-index 4c800d0..7ef7227 100644
---- a/Singular/emacs.cc
-+++ b/Singular/emacs.cc
-@@ -17,7 +17,7 @@
- #ifdef ix86_Win
- #include <windows.h>
- #endif
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <Singular/version.h>
- #include <omalloc/omalloc.h>
-
-diff --git a/Singular/extra.cc b/Singular/extra.cc
-index 45ea3ba..139b9d2 100644
---- a/Singular/extra.cc
-+++ b/Singular/extra.cc
-@@ -12,7 +12,7 @@
- #include <string.h>
- #include <ctype.h>
- #include <signal.h>
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <misc_ip.h>
- #include <blackbox.h>
- #include <newstruct.h>
-diff --git a/Singular/feOpt.cc b/Singular/feOpt.cc
-index 81fca1c..166eb2a 100644
---- a/Singular/feOpt.cc
-+++ b/Singular/feOpt.cc
-@@ -7,7 +7,7 @@
-
- #include <string.h>
- #include <stdlib.h>
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <Singular/feOpt.h>
- #if !defined(GENERATE_OPTION_INDEX) && !defined(ESINGULAR) && !defined(TSINGULAR)
- #include <kernel/options.h>
-diff --git a/Singular/fehelp.cc b/Singular/fehelp.cc
-index ef96b44..5d4a51c 100644
---- a/Singular/fehelp.cc
-+++ b/Singular/fehelp.cc
-@@ -12,7 +12,7 @@
- #include <stdlib.h>
- #include <time.h>
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <omalloc/mylimits.h>
- #include <Singular/tok.h>
- #include <omalloc/omalloc.h>
-diff --git a/Singular/fglm.cc b/Singular/fglm.cc
-index a4c397c..f4a3de3 100644
---- a/Singular/fglm.cc
-+++ b/Singular/fglm.cc
-@@ -15,7 +15,7 @@
- * lying in a 0-dimensional ideal.
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_FACTORY
- #include <Singular/tok.h>
-diff --git a/Singular/gms.cc b/Singular/gms.cc
-index e204043..dc9060e 100644
---- a/Singular/gms.cc
-+++ b/Singular/gms.cc
-@@ -5,7 +5,7 @@
- * ABSTRACT: Gauss-Manin system normal form
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_GMS
-
-diff --git a/Singular/grammar.cc b/Singular/grammar.cc
-index d3327ab..e81c78f 100644
---- a/Singular/grammar.cc
-+++ b/Singular/grammar.cc
-@@ -76,7 +76,7 @@
- #include <stdarg.h>
- #include <string.h>
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <omalloc/mylimits.h>
- #include <omalloc/omalloc.h>
- #include <Singular/tok.h>
-diff --git a/Singular/grammar.y b/Singular/grammar.y
-index 39e2150..fcb71e2 100644
---- a/Singular/grammar.y
-+++ b/Singular/grammar.y
-@@ -12,7 +12,7 @@
- #include <stdarg.h>
- #include <string.h>
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <omalloc/mylimits.h>
- #include <omalloc/omalloc.h>
- #include <Singular/tok.h>
-diff --git a/Singular/interpolation.cc b/Singular/interpolation.cc
-index 4d87ddf..1bf10a8 100644
---- a/Singular/interpolation.cc
-+++ b/Singular/interpolation.cc
-@@ -2,7 +2,7 @@
- * Computer Algebra System SINGULAR *
- ****************************************/
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/options.h>
- #include <kernel/febase.h>
- #include <kernel/ideals.h>
-diff --git a/Singular/iparith.cc b/Singular/iparith.cc
-index 33a8c3d..52e2e75 100644
---- a/Singular/iparith.cc
-+++ b/Singular/iparith.cc
-@@ -12,7 +12,7 @@
- #include <time.h>
- #include <unistd.h>
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <Singular/tok.h>
- #include <kernel/options.h>
- #include <Singular/ipid.h>
-diff --git a/Singular/ipassign.cc b/Singular/ipassign.cc
-index e6947e4..01b6ef0 100644
---- a/Singular/ipassign.cc
-+++ b/Singular/ipassign.cc
-@@ -11,7 +11,7 @@
- #include <string.h>
- #include <ctype.h>
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <Singular/tok.h>
- #include <kernel/options.h>
- #include <Singular/ipid.h>
-diff --git a/Singular/ipconv.cc b/Singular/ipconv.cc
-index a9a7696..431141d 100644
---- a/Singular/ipconv.cc
-+++ b/Singular/ipconv.cc
-@@ -5,7 +5,7 @@
- * ABSTRACT: automatic type conversions
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <Singular/tok.h>
- #include <Singular/ipid.h>
- #include <kernel/bigintmat.h>
-diff --git a/Singular/ipid.cc b/Singular/ipid.cc
-index 872f6b6..36c8d7f 100644
---- a/Singular/ipid.cc
-+++ b/Singular/ipid.cc
-@@ -7,7 +7,7 @@
-
- #include <string.h>
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <Singular/static.h>
- #include <omalloc/omalloc.h>
- #include <Singular/tok.h>
-diff --git a/Singular/iplib.cc b/Singular/iplib.cc
-index a81bc6d..3142247 100644
---- a/Singular/iplib.cc
-+++ b/Singular/iplib.cc
-@@ -11,7 +11,7 @@
- #include <ctype.h>
- #include <sys/stat.h>
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <Singular/static.h>
- #include <Singular/tok.h>
- #include <kernel/options.h>
-diff --git a/Singular/ipprint.cc b/Singular/ipprint.cc
-index ede2210..d8f3916 100644
---- a/Singular/ipprint.cc
-+++ b/Singular/ipprint.cc
-@@ -5,7 +5,7 @@
- * ABSTRACT: interpreter: printing
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <Singular/tok.h>
- #include <Singular/ipid.h>
- #include <omalloc/omalloc.h>
-diff --git a/Singular/ipshell.cc b/Singular/ipshell.cc
-index a32c523..32934e7 100644
---- a/Singular/ipshell.cc
-+++ b/Singular/ipshell.cc
-@@ -11,7 +11,7 @@
- #include <ctype.h>
- #include <math.h>
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <Singular/tok.h>
- #include <kernel/options.h>
- #include <Singular/ipid.h>
-diff --git a/Singular/janet.cc b/Singular/janet.cc
-index 5633599..f5f7806 100755
---- a/Singular/janet.cc
-+++ b/Singular/janet.cc
-@@ -3,7 +3,7 @@
- #include <string.h>
- #include <time.h>
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <omalloc/omalloc.h>
- #include <kernel/polys.h>
- #include <kernel/numbers.h>
-diff --git a/Singular/libparse.l b/Singular/libparse.l
-index 87d7b4b..cfea410 100644
---- a/Singular/libparse.l
-+++ b/Singular/libparse.l
-@@ -6,7 +6,7 @@
- #include <string.h>
- #include <stdlib.h>
- #include <ctype.h>
--#include <kernel/mod2.h>
-+#include "mod2.h"
- #ifdef STANDALONE_PARSER
- #include <Singular/utils.h>
- #define HAVE_LIBPARSER
-diff --git a/Singular/lists.cc b/Singular/lists.cc
-index 1d851ed..c4875fc 100644
---- a/Singular/lists.cc
-+++ b/Singular/lists.cc
-@@ -7,7 +7,7 @@
- // to produce a non-inline version from lists.h
- #define LISTS_CC
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <Singular/tok.h>
- #include <kernel/febase.h>
- //#include "ipid.h"
-diff --git a/Singular/maps_ip.cc b/Singular/maps_ip.cc
-index 4756a1b..65ef0f4 100644
---- a/Singular/maps_ip.cc
-+++ b/Singular/maps_ip.cc
-@@ -5,7 +5,7 @@
- * ABSTRACT - the mapping of polynomials to other rings
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <Singular/tok.h>
- #include <kernel/febase.h>
- #include <kernel/polys.h>
-diff --git a/Singular/minpoly.cc b/Singular/minpoly.cc
-index c319099..87bb58e 100644
---- a/Singular/minpoly.cc
-+++ b/Singular/minpoly.cc
-@@ -6,7 +6,7 @@
-
-
- #include<cmath>
--#include<Singular/mod2.h>
-+#include <Singular/mod2.h>
- //#include<iomanip>
-
- #include "minpoly.h"
-diff --git a/Singular/misc_ip.cc b/Singular/misc_ip.cc
-index 47c592a..bd2c2b5 100644
---- a/Singular/misc_ip.cc
-+++ b/Singular/misc_ip.cc
-@@ -14,7 +14,7 @@
- /*****************************************************************************/
-
- // include header files
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <Singular/lists.h>
- #include <kernel/longrat.h>
- #include <Singular/misc_ip.h>
-diff --git a/Singular/mpsr_Error.cc b/Singular/mpsr_Error.cc
-index c189743..44a0b28 100644
---- a/Singular/mpsr_Error.cc
-+++ b/Singular/mpsr_Error.cc
-@@ -11,7 +11,7 @@
- * Change History (most recent first):
- *
- ***************************************************************/
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_MPSR
-
-diff --git a/Singular/mpsr_Get.cc b/Singular/mpsr_Get.cc
-index c681b03..3fac95a 100644
---- a/Singular/mpsr_Get.cc
-+++ b/Singular/mpsr_Get.cc
-@@ -12,7 +12,7 @@
- *
- ***************************************************************/
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_MPSR
-
-diff --git a/Singular/mpsr_GetMisc.cc b/Singular/mpsr_GetMisc.cc
-index 641b82f..58b536b 100644
---- a/Singular/mpsr_GetMisc.cc
-+++ b/Singular/mpsr_GetMisc.cc
-@@ -12,7 +12,7 @@
- *
- ***************************************************************/
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_MPSR
-
-diff --git a/Singular/mpsr_GetPoly.cc b/Singular/mpsr_GetPoly.cc
-index 24bd201..88eef83 100644
---- a/Singular/mpsr_GetPoly.cc
-+++ b/Singular/mpsr_GetPoly.cc
-@@ -10,7 +10,7 @@
- *
- *
- ***************************************************************/
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_MPSR
- #include "mylimits.h"
-diff --git a/Singular/mpsr_Put.cc b/Singular/mpsr_Put.cc
-index 539e408..449ff9e 100644
---- a/Singular/mpsr_Put.cc
-+++ b/Singular/mpsr_Put.cc
-@@ -13,7 +13,7 @@
- * Updated putting routines to MP and MPP v1.1
- *
- ***************************************************************/
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_MPSR
-
-diff --git a/Singular/mpsr_PutPoly.cc b/Singular/mpsr_PutPoly.cc
-index bcd93f4..bf57ac8 100644
---- a/Singular/mpsr_PutPoly.cc
-+++ b/Singular/mpsr_PutPoly.cc
-@@ -13,7 +13,7 @@
- * Updated routines to MP and MPP v1.1
- *
- ***************************************************************/
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_MPSR
-
-diff --git a/Singular/mpsr_Tok.cc b/Singular/mpsr_Tok.cc
-index a3801f5..a6818df 100644
---- a/Singular/mpsr_Tok.cc
-+++ b/Singular/mpsr_Tok.cc
-@@ -16,7 +16,7 @@
- #include <sys/types.h>
- #include <unistd.h>
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_MPSR
-
-diff --git a/Singular/mpsr_sl.cc b/Singular/mpsr_sl.cc
-index 1253e38..5e8f571 100644
---- a/Singular/mpsr_sl.cc
-+++ b/Singular/mpsr_sl.cc
-@@ -8,7 +8,7 @@
- * Created: 12/00
- *******************************************************************/
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_MPSR
-
-diff --git a/Singular/ndbm.cc b/Singular/ndbm.cc
-index c03cb68..2cb2986 100644
---- a/Singular/ndbm.cc
-+++ b/Singular/ndbm.cc
-@@ -10,7 +10,7 @@
- //
- //**************************************************************************/
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #ifdef HAVE_DBM
- #ifndef HPUX_9
- #include <strings.h>
-diff --git a/Singular/pcv.cc b/Singular/pcv.cc
-index 0f5091c..d9391f1 100644
---- a/Singular/pcv.cc
-+++ b/Singular/pcv.cc
-@@ -5,7 +5,7 @@
- * ABSTRACT: conversion between polys and coef vectors
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_PCV
- //#if !defined(HAVE_DYNAMIC_LOADING) || defined(BUILD_MODULE)
-diff --git a/Singular/pipeLink.cc b/Singular/pipeLink.cc
-index 913c88b..47e3b77 100644
---- a/Singular/pipeLink.cc
-+++ b/Singular/pipeLink.cc
-@@ -16,7 +16,7 @@
- #include <sys/socket.h>
-
-
--#include "mod2.h"
-+#include <Singular/mod2.h>
-
- #include "tok.h"
- #include "ipid.h"
-diff --git a/Singular/scanner.cc b/Singular/scanner.cc
-index aa186ce..9847fa1 100644
---- a/Singular/scanner.cc
-+++ b/Singular/scanner.cc
-@@ -560,7 +560,7 @@ char *yytext;
- #include <stdlib.h>
- #include <ctype.h>
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <omalloc/omalloc.h>
- #include <Singular/tok.h>
- #include <Singular/stype.h>
-diff --git a/Singular/scanner.l b/Singular/scanner.l
-index 8298e71..b78f242 100644
---- a/Singular/scanner.l
-+++ b/Singular/scanner.l
-@@ -7,7 +7,7 @@
- #include <stdlib.h>
- #include <ctype.h>
-
--#include <kernel/mod2.h>
-+#include "mod2.h"
- #include <omalloc/omalloc.h>
- #include <Singular/tok.h>
- #include <Singular/stype.h>
-diff --git a/Singular/sdb.cc b/Singular/sdb.cc
-index ea0011f..be15a91 100644
---- a/Singular/sdb.cc
-+++ b/Singular/sdb.cc
-@@ -7,7 +7,7 @@
-
- #include <unistd.h> // for unlink,fork,execlp,getpid
- #include <sys/wait.h> // for wait
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <Singular/tok.h>
- #include <kernel/options.h>
- #include <omalloc/omalloc.h>
-diff --git a/Singular/silink.cc b/Singular/silink.cc
-index b3af337..3d64a87 100644
---- a/Singular/silink.cc
-+++ b/Singular/silink.cc
-@@ -12,7 +12,7 @@
- #include <sys/stat.h>
- #include <unistd.h>
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <Singular/tok.h>
- #include <kernel/options.h>
- #include <omalloc/omalloc.h>
-diff --git a/Singular/sing_dbm.cc b/Singular/sing_dbm.cc
-index bcbd993..fe8990d 100644
---- a/Singular/sing_dbm.cc
-+++ b/Singular/sing_dbm.cc
-@@ -12,7 +12,7 @@
- # include <fcntl.h>
- # include <errno.h>
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_DBM
-
-diff --git a/Singular/sing_win.cc b/Singular/sing_win.cc
-index 00a7062..30dc60f 100644
---- a/Singular/sing_win.cc
-+++ b/Singular/sing_win.cc
-@@ -6,7 +6,7 @@
- * ABSTRACT: Windows specific routines
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #ifdef ix86_Win
- #include <windows.h>
- #include <winuser.h>
-diff --git a/Singular/slInit_Dynamic.cc b/Singular/slInit_Dynamic.cc
-index 3830612..0fa703c 100644
---- a/Singular/slInit_Dynamic.cc
-+++ b/Singular/slInit_Dynamic.cc
-@@ -13,7 +13,7 @@
- * MP link Extension inits
- *
- ***************************************************************/
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <Singular/silink.h>
- #include <Singular/slInit.h>
- #include <kernel/mod_raw.h>
-diff --git a/Singular/slInit_Static.cc b/Singular/slInit_Static.cc
-index a19a4f8..207dea0 100644
---- a/Singular/slInit_Static.cc
-+++ b/Singular/slInit_Static.cc
-@@ -13,7 +13,7 @@
- * MP link Extension inits
- *
- ***************************************************************/
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <Singular/silink.h>
- #include <Singular/slInit.h>
-
-diff --git a/Singular/ssiLink.cc b/Singular/ssiLink.cc
-index ff19a2a..938a60e 100644
---- a/Singular/ssiLink.cc
-+++ b/Singular/ssiLink.cc
-@@ -22,7 +22,7 @@
-
-
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- // #include "mod2.h"
-
- #include <Singular/tok.h>
-diff --git a/Singular/subexpr.cc b/Singular/subexpr.cc
-index 873c0a9..0415134 100644
---- a/Singular/subexpr.cc
-+++ b/Singular/subexpr.cc
-@@ -11,7 +11,7 @@
- #include <ctype.h>
- #include <unistd.h>
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/intvec.h>
- #include <kernel/bigintmat.h>
- #include <Singular/tok.h>
-diff --git a/Singular/tesths.cc b/Singular/tesths.cc
-index 6ecb9b1..3957c83 100644
---- a/Singular/tesths.cc
-+++ b/Singular/tesths.cc
-@@ -12,7 +12,7 @@
- #include <stdlib.h>
- #include <time.h>
- #include <errno.h>
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <Singular/tok.h>
- #include <kernel/options.h>
- #include <Singular/ipshell.h>
-diff --git a/Singular/walk.cc b/Singular/walk.cc
-index 49bd804..d5b61f2 100644
---- a/Singular/walk.cc
-+++ b/Singular/walk.cc
-@@ -45,7 +45,7 @@
- #include <sys/types.h>
-
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/intvec.h>
- #include <Singular/cntrlc.h>
- #include <kernel/options.h>
-diff --git a/Singular/walk_ip.cc b/Singular/walk_ip.cc
-index b1627f0..8afc077 100644
---- a/Singular/walk_ip.cc
-+++ b/Singular/walk_ip.cc
-@@ -11,7 +11,7 @@
- #include <ctype.h>
- #include <math.h>
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <Singular/tok.h>
- #include <kernel/options.h>
- #include <Singular/ipid.h>
-diff --git a/Singular/wrapper.cc b/Singular/wrapper.cc
-index 07a2e2f..7884e9f 100755
---- a/Singular/wrapper.cc
-+++ b/Singular/wrapper.cc
-@@ -1,5 +1,5 @@
- #include <string.h>
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/febase.h>
- #include <kernel/polys.h>
- #include <kernel/kstd1.h>
-diff --git a/kernel/F4.cc b/kernel/F4.cc
-index 93cfedb..d72939c 100644
---- a/kernel/F4.cc
-+++ b/kernel/F4.cc
-@@ -1,4 +1,4 @@
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/F4.h>
- #include <kernel/tgb_internal.h>
- #include <kernel/tgbgauss.h>
-diff --git a/kernel/F5cData.cc b/kernel/F5cData.cc
-index be2021a..384ebc9 100644
---- a/kernel/F5cData.cc
-+++ b/kernel/F5cData.cc
-@@ -9,7 +9,7 @@
- * these data types is defined.
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_F5C
- #include <kernel/kutil.h>
-diff --git a/kernel/F5cLists.cc b/kernel/F5cLists.cc
-index daab9db..8922036 100644
---- a/kernel/F5cLists.cc
-+++ b/kernel/F5cLists.cc
-@@ -1,4 +1,4 @@
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_F5C
- #include <kernel/kutil.h>
-diff --git a/kernel/GMPrat.cc b/kernel/GMPrat.cc
-index 8d73221..628d90d 100644
---- a/kernel/GMPrat.cc
-+++ b/kernel/GMPrat.cc
-@@ -8,7 +8,7 @@
-
- #define GMPRAT_CC
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_SPECTRUM
-
-diff --git a/kernel/Number.h b/kernel/Number.h
-index 4428d15..05f52b7 100644
---- a/kernel/Number.h
-+++ b/kernel/Number.h
-@@ -1,7 +1,7 @@
- #ifndef NUMBERCPP_HEADER
- #define NUMBERCPP_HEADER
- #include <boost/intrusive_ptr.hpp>
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/numbers.h>
- #include <kernel/febase.h>
- #include <kernel/ring.h>
-diff --git a/kernel/Poly.h b/kernel/Poly.h
-index d04b1cc..ab70d30 100644
---- a/kernel/Poly.h
-+++ b/kernel/Poly.h
-@@ -1,6 +1,6 @@
- #ifndef POLYCPP_HEADER
- #define POLYCPP_HEADER
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/IIntvec.h>
- #include <kernel/numbers.h>
- #include <kernel/Number.h>
-diff --git a/kernel/PowerSeries.h b/kernel/PowerSeries.h
-index 809d0b5..7c3f764 100644
---- a/kernel/PowerSeries.h
-+++ b/kernel/PowerSeries.h
-@@ -1,6 +1,6 @@
- #ifndef POWER_SERIES_HEADER
- #define POWER_SERIES_HEADER
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/Poly.h>
- template <class traits> class PowerSeriesInputIterator:
- public std::
-diff --git a/kernel/clapconv.cc b/kernel/clapconv.cc
-index b017e53..07f3c6f 100644
---- a/kernel/clapconv.cc
-+++ b/kernel/clapconv.cc
-@@ -7,7 +7,7 @@
- */
-
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #ifdef HAVE_FACTORY
- #include <omalloc/omalloc.h>
- #include <kernel/structs.h>
-diff --git a/kernel/clapsing.cc b/kernel/clapsing.cc
-index 606578b..0c327cf 100644
---- a/kernel/clapsing.cc
-+++ b/kernel/clapsing.cc
-@@ -7,7 +7,7 @@
- */
-
- //#define FACTORIZE2_DEBUG
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <omalloc/omalloc.h>
- #ifdef HAVE_FACTORY
- #define SI_DONT_HAVE_GLOBAL_VARS
-diff --git a/kernel/dError.c b/kernel/dError.c
-index 5ea1d19..6c229cb 100644
---- a/kernel/dError.c
-+++ b/kernel/dError.c
-@@ -11,7 +11,7 @@
- #define DERROR_C
- #include <stdarg.h>
- #include <stdio.h>
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <Singular/distrib.h>
- #ifdef HAVE_CONFIG_H
- #include <omalloc/omalloc.h>
-diff --git a/kernel/digitech.cc b/kernel/digitech.cc
-index 25df89f..6039e43 100644
---- a/kernel/digitech.cc
-+++ b/kernel/digitech.cc
-@@ -1,7 +1,7 @@
- /****************************************
- * Computer Algebra System SINGULAR *
- ****************************************/
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/ring.h>
-
- #include <kernel/digitech.h>
-diff --git a/kernel/digitech.h b/kernel/digitech.h
-index b8d0fd3..a1ceb37 100644
---- a/kernel/digitech.h
-+++ b/kernel/digitech.h
-@@ -1,6 +1,6 @@
- #ifndef DIGITECH_HEADER
- #define DIGITECH_HEADER
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/polys.h>
- void bit_reduce(poly & f,ring r);
- poly uni_subst_bits(poly outer_uni, poly inner_multi, ring r);
-diff --git a/kernel/eigenval.cc b/kernel/eigenval.cc
-index a0934a3..d2ce108 100644
---- a/kernel/eigenval.cc
-+++ b/kernel/eigenval.cc
-@@ -5,7 +5,7 @@
- * ABSTRACT: eigenvalues of constant square matrices
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_EIGENVAL
-
-diff --git a/kernel/f5c.cc b/kernel/f5c.cc
-index c1e3b33..caebac9 100644
---- a/kernel/f5c.cc
-+++ b/kernel/f5c.cc
-@@ -1,4 +1,4 @@
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #ifdef HAVE_F5C
- #include <unistd.h>
- #include <kernel/structs.h>
-diff --git a/kernel/f5data.cc b/kernel/f5data.cc
-index d872f61..d606a4e 100644
---- a/kernel/f5data.cc
-+++ b/kernel/f5data.cc
-@@ -5,7 +5,7 @@
- /*
- * ABSTRACT: lpolynomial definition
- */
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_F5
- #include <kernel/kutil.h>
-diff --git a/kernel/f5gb.cc b/kernel/f5gb.cc
-index d308517..72b20d0 100644
---- a/kernel/f5gb.cc
-+++ b/kernel/f5gb.cc
-@@ -5,7 +5,7 @@
- * ABSTRACT: f5gb interface
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #ifdef HAVE_F5
- #include <unistd.h>
- #include <omp.h>
-diff --git a/kernel/f5lists.cc b/kernel/f5lists.cc
-index ae0bcab..4546a17 100644
---- a/kernel/f5lists.cc
-+++ b/kernel/f5lists.cc
-@@ -1,4 +1,4 @@
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_F5
- #include <kernel/kutil.h>
-diff --git a/kernel/fast_maps.cc b/kernel/fast_maps.cc
-index 619c4fd..c38fd20 100644
---- a/kernel/fast_maps.cc
-+++ b/kernel/fast_maps.cc
-@@ -7,7 +7,7 @@
- * Author: obachman (Olaf Bachmann)
- * Created: 02/01
- *******************************************************************/
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <omalloc/omalloc.h>
- #include <kernel/options.h>
- #include <kernel/p_polys.h>
-diff --git a/kernel/fast_mult.cc b/kernel/fast_mult.cc
-index 120a29a..ae42b3b 100644
---- a/kernel/fast_mult.cc
-+++ b/kernel/fast_mult.cc
-@@ -1,7 +1,7 @@
- /****************************************
- * Computer Algebra System SINGULAR *
- ****************************************/
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/ring.h>
- #include <kernel/fast_mult.h>
- #include <kernel/kbuckets.h>
-diff --git a/kernel/fast_mult.h b/kernel/fast_mult.h
-index 43a4344..41e97e4 100644
---- a/kernel/fast_mult.h
-+++ b/kernel/fast_mult.h
-@@ -1,6 +1,6 @@
- #ifndef fast_mult_header
- #define fast_mult_header
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/polys.h>
- poly unifastmult(poly f,poly g, ring r);
- poly multifastmult(poly f, poly g, ring r);
-diff --git a/kernel/feResource.cc b/kernel/feResource.cc
-index 30ace22..01bb816 100644
---- a/kernel/feResource.cc
-+++ b/kernel/feResource.cc
-@@ -9,7 +9,7 @@
- #include <unistd.h>
- #include <string.h>
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #ifdef AIX_4
- #define HAVE_PUTENV 1
- #endif
-diff --git a/kernel/febase.cc b/kernel/febase.cc
-index 865c9d7..725eca2 100644
---- a/kernel/febase.cc
-+++ b/kernel/febase.cc
-@@ -7,7 +7,7 @@
-
- /* I need myfread in standalone_parser */
- #ifndef STANDALONE_PARSER
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #include <stdlib.h>
- #include <stdio.h>
-diff --git a/kernel/fegetopt.c b/kernel/fegetopt.c
-index 47fd931..3cf3db8 100644
---- a/kernel/fegetopt.c
-+++ b/kernel/fegetopt.c
-@@ -31,7 +31,7 @@
- */
-
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifndef __STDC__
- # ifndef const
-diff --git a/kernel/feread.cc b/kernel/feread.cc
-index d861fc6..8f67c5e 100644
---- a/kernel/feread.cc
-+++ b/kernel/feread.cc
-@@ -5,7 +5,7 @@
- * ABSTRACT: input from ttys, simulating fgets
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- // ----------------------------------------
- // system settings:
-diff --git a/kernel/fereadl.c b/kernel/fereadl.c
-index d2f6c1c..1c495be 100644
---- a/kernel/fereadl.c
-+++ b/kernel/fereadl.c
-@@ -6,7 +6,7 @@
- */
-
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/febase.h>
- #include <omalloc/omalloc.h>
- #include <kernel/structs.h>
-diff --git a/kernel/ffields.cc b/kernel/ffields.cc
-index be5aeb7..255e590 100644
---- a/kernel/ffields.cc
-+++ b/kernel/ffields.cc
-@@ -6,7 +6,7 @@
- */
-
- #include <string.h>
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <omalloc/mylimits.h>
- #include <kernel/febase.h>
- #include <omalloc/omalloc.h>
-diff --git a/kernel/fglmcomb.cc b/kernel/fglmcomb.cc
-index d8b42a2..4c11eab 100644
---- a/kernel/fglmcomb.cc
-+++ b/kernel/fglmcomb.cc
-@@ -7,7 +7,7 @@
- * ABSTRACT -
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_FACTORY
- #include <kernel/options.h>
-diff --git a/kernel/fglmgauss.cc b/kernel/fglmgauss.cc
-index 933e26c..b64613a 100644
---- a/kernel/fglmgauss.cc
-+++ b/kernel/fglmgauss.cc
-@@ -8,7 +8,7 @@
- * to find linear dependecies of fglmVectors.
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_FACTORY
- #include <kernel/structs.h>
-diff --git a/kernel/fglmhom.cc b/kernel/fglmhom.cc
-index 16ead96..4636bea 100644
---- a/kernel/fglmhom.cc
-+++ b/kernel/fglmhom.cc
-@@ -9,7 +9,7 @@
- */
-
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #if 0
- #include <factoryconf.h>
- #ifndef NOSTREAMIO
-diff --git a/kernel/fglmvec.cc b/kernel/fglmvec.cc
-index a0a4300..75abda1 100644
---- a/kernel/fglmvec.cc
-+++ b/kernel/fglmvec.cc
-@@ -11,7 +11,7 @@
- * specialized for this purpose.
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_FACTORY
- #include <omalloc/omalloc.h>
-diff --git a/kernel/fglmzero.cc b/kernel/fglmzero.cc
-index 5224374..4cac366 100644
---- a/kernel/fglmzero.cc
-+++ b/kernel/fglmzero.cc
-@@ -17,7 +17,7 @@
- * o FindUnivariatePolys added
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_FACTORY
- #include <kernel/options.h>
-diff --git a/kernel/gfan.cc b/kernel/gfan.cc
-new file mode 100644
-index 0000000..55c9431
---- /dev/null
-+++ b/kernel/gfan.cc
-@@ -0,0 +1,4512 @@
-+/*
-+Compute the Groebner fan of an ideal
-+$Author: monerjan $
-+$Date: 2009/11/03 06:57:32 $
-+$Header: /usr/local/Singular/cvsroot/kernel/gfan.cc,v 1.103 2009/11/03 06:57:32 monerjan Exp $
-+$Id: gfan.cc 14493 2012-01-16 11:00:07Z motsak $
-+*/
-+
-+#include <Singular/mod2.h>
-+
-+#ifdef HAVE_FANS
-+#include <kernel/options.h>
-+#include <kernel/kstd1.h>
-+#include <kernel/kutil.h>
-+#include <kernel/polys.h>
-+#include <kernel/ideals.h>
-+#include <kernel/kmatrix.h>
-+#include <kernel/GMPrat.h>
-+
-+#include "ring.h" //apparently not needed
-+#include <Singular/lists.h>
-+#include <kernel/prCopy.h>
-+#include <kernel/stairc.h>
-+#include <fstream> //read-write cones to files
-+#include <string>
-+#include <sstream>
-+#include <stdlib.h>
-+#include <assert.h>
-+#include <gfanlib/gfanlib.h>
-+
-+/*DO NOT REMOVE THIS*/
-+#ifndef GMPRATIONAL
-+#define GMPRATIONAL
-+#endif
-+
-+#include <setoper.h>
-+#include <cdd.h>
-+#include <cddmp.h>
-+
-+#ifndef gfan_DEBUG
-+// #define gfan_DEBUG
-+#ifndef gfan_DEBUGLEVEL
-+#define gfan_DEBUGLEVEL 1
-+#endif
-+#endif
-+
-+//NOTE Defining this will slow things down!
-+//Only good for very coarse profiling
-+// #define gfanp
-+#ifdef gfanp
-+ #include <sys/time.h>
-+ #include <iostream>
-+#endif
-+
-+//NOTE DO NOT REMOVE THIS
-+#ifndef SHALLOW
-+ #define SHALLOW
-+#endif
-+
-+#ifndef USE_ZFAN
-+ #define USE_ZFAN
-+#endif
-+
-+#include <gfan.h>
-+using namespace std;
-+
-+#define ivIsStrictlyPositive iv64isStrictlyPositive
-+
-+/**
-+*\brief Class facet
-+* Implements the facet structure as a linked list
-+*
-+*/
-+
-+/** \brief The default constructor for facets
-+*/
-+facet::facet()
-+{
-+ // Pointer to next facet. */
-+ /* Defaults to NULL. This way there is no need to check explicitly */
-+ this->fNormal=NULL;
-+ this->interiorPoint=NULL;
-+ this->UCN=0;
-+ this->codim2Ptr=NULL;
-+ this->codim=1; //default for (codim-1)-facets
-+ this->numCodim2Facets=0;
-+ this->numRays=0;
-+ this->flipGB=NULL;
-+ this->next=NULL;
-+ this->prev=NULL;
-+ this->flipRing=NULL; //the ring on the other side
-+ this->isFlippable=FALSE;
-+}
-+
-+/** \brief Constructor for facets of codim == 2
-+* Note that as of now the code of the constructors is only for facets and codim2-faces. One
-+* could easily change that by renaming numCodim2Facets to numCodimNminusOneFacets or similar
-+*/
-+facet::facet(const int &n)
-+{
-+ this->fNormal=NULL;
-+ this->interiorPoint=NULL;
-+ this->UCN=0;
-+ this->codim2Ptr=NULL;
-+ if(n==2)
-+ {
-+ this->codim=n;
-+ }//NOTE Handle exception here!
-+ this->numCodim2Facets=0;
-+ this->numRays=0;
-+ this->flipGB=NULL;
-+ this->next=NULL;
-+ this->prev=NULL;
-+ this->flipRing=NULL;
-+ this->isFlippable=FALSE;
-+}
-+
-+/** \brief The copy constructor
-+* By default only copies the fNormal, f2Normals and UCN
-+*/
-+facet::facet(const facet& f)
-+{
-+ this->fNormal=iv64Copy(f.fNormal);
-+ this->UCN=f.UCN;
-+ this->isFlippable=f.isFlippable;
-+ //Needed for flip2
-+ //NOTE ONLY REFERENCE
-+ this->interiorPoint=iv64Copy(f.interiorPoint);//only referencing is prolly not the best thing to do in a copy constructor
-+ facet* f2Copy;
-+ f2Copy=f.codim2Ptr;
-+ facet* f2Act;
-+ f2Act=this->codim2Ptr;
-+ while(f2Copy!=NULL)
-+ {
-+ if(f2Act==NULL
-+#ifndef NDEBUG
-+ #if SIZEOF_LONG==8
-+ || f2Act==(facet*)0xfefefefefefefefe
-+ #elif SIZEOF_LONG==4
-+ || f2Act==(facet*)0xfefefefe
-+ #endif
-+#endif
-+ )
-+ {
-+ f2Act=new facet(2);
-+ this->codim2Ptr=f2Act;
-+ }
-+ else
-+ {
-+ facet* marker;
-+ marker = f2Act;
-+ f2Act->next = new facet(2);
-+ f2Act = f2Act->next;
-+ f2Act->prev = marker;
-+ }
-+ int64vec *f2Normal;
-+ f2Normal = f2Copy->getFacetNormal();
-+// f2Act->setFacetNormal(f2Copy->getFacetNormal());
-+ f2Act->setFacetNormal(f2Normal);
-+ delete f2Normal;
-+ f2Act->setUCN(f2Copy->getUCN());
-+ f2Copy = f2Copy->next;
-+ }
-+}
-+
-+/** \brief Shallow copy constructor for facets
-+* We only need the interior point for equality testing
-+*/
-+facet* facet::shallowCopy(const facet& f)
-+{
-+ facet *res = new facet();
-+ res->fNormal=(int64vec * const)f.fNormal;
-+ res->UCN=f.UCN;
-+ res->isFlippable=f.isFlippable;
-+ res->interiorPoint=(int64vec * const)f.interiorPoint;
-+ res->codim2Ptr=(facet * const)f.codim2Ptr;
-+ res->prev=NULL;
-+ res->next=NULL;
-+ res->flipGB=NULL;
-+ res->flipRing=NULL;
-+ return res;
-+}
-+
-+void facet::shallowDelete()
-+{
-+#ifndef NDEBUG
-+// printf("shallowdel at UCN %i\n", this->getUCN());
-+#endif
-+ this->fNormal=NULL;
-+// this->UCN=0;
-+ this->interiorPoint=NULL;
-+ this->codim2Ptr=NULL;
-+ this->prev=NULL;
-+ this->next=NULL;
-+ this->flipGB=NULL;
-+ this->flipRing=NULL;
-+ assert(this->fNormal==NULL);
-+// delete(this);
-+}
-+
-+/** The default destructor */
-+facet::~facet()
-+{
-+#ifndef NDEBUG
-+// printf("~facet at UCN %i\n",this->getUCN());
-+#endif
-+ if(this->fNormal!=NULL)
-+ delete this->fNormal;
-+ if(this->interiorPoint!=NULL)
-+ delete this->interiorPoint;
-+ /* Cleanup the codim2-structure */
-+// if(this->codim==2)
-+// {
-+// facet *codim2Ptr;
-+// codim2Ptr = this->codim2Ptr;
-+// while(codim2Ptr!=NULL)
-+// {
-+// if(codim2Ptr->fNormal!=NULL)
-+// {
-+// delete codim2Ptr->fNormal;//NOTE Do not want this anymore since the rays are now in gcone!
-+// codim2Ptr = codim2Ptr->next;
-+// }
-+// }
-+// }
-+ //The rays are stored in the cone!
-+ if(this->flipGB!=NULL)
-+ idDelete((ideal *)&this->flipGB);
-+// if(this->flipRing!=NULL && this->flipRing->idroot!=(idhdl)0xfbfbfbfbfbfbfbfb)
-+// rDelete(this->flipRing); //See vol II/134
-+// this->flipRing=NULL;
-+ this->prev=NULL;
-+ this->next=NULL;
-+}
-+
-+inline const int64vec *facet::getRef2FacetNormal() const
-+{
-+ return(this->fNormal);
-+}
-+
-+/** Equality check for facets based on unique interior points*/
-+static bool areEqual2(facet* f, facet *g)
-+{
-+#ifdef gfanp
-+ gcone::numberOfFacetChecks++;
-+ timeval start, end;
-+ gettimeofday(&start, 0);
-+#endif
-+ bool res = TRUE;
-+ const int64vec *fIntP = f->getRef2InteriorPoint();
-+ const int64vec *gIntP = g->getRef2InteriorPoint();
-+ for(int ii=0;ii<pVariables;ii++)
-+ {
-+ if( (*fIntP)[ii] != (*gIntP)[ii] )
-+ {
-+ res=FALSE;
-+ break;
-+ }
-+ }
-+// if( fIntP->compare(gIntP)!=0) res=FALSE;
-+#ifdef gfanp
-+ gettimeofday(&end, 0);
-+ gcone::t_areEqual += (end.tv_sec - start.tv_sec + 1e-6*(end.tv_usec - start.tv_usec));
-+#endif
-+ return res;
-+}
-+
-+/** \brief Comparison of facets
-+ * called from enqueueNewFacets
-+* The facet normals are primitve vectors since we call gcone::normalize() on all cones.
-+* Hence it should suffice to check whether facet normal f equals minus facet normal s.
-+* If so we check the extremal rays
-+*
-+* BEWARE: It would be better to use const int64vec* but that will lead to call something like
-+* int foo=((int64vec*)f2Normal)->compare((int64vec*)s2Normal) resulting in much higher memory usage
-+*/
-+static bool areEqual(facet *f, facet *s)
-+{
-+#ifdef gfanp
-+ gcone::numberOfFacetChecks++;
-+ timeval start, end;
-+ gettimeofday(&start, 0);
-+#endif
-+ bool res = TRUE;
-+ int notParallelCtr=0;
-+ int ctr=0;
-+ const int64vec* fNormal; //No new since iv64Copy and therefore getFacetNormal return a new
-+ const int64vec* sNormal;
-+ fNormal = f->getRef2FacetNormal();
-+ sNormal = s->getRef2FacetNormal();
-+#include "intvec.h"
-+ //Do not need parallelity. Too time consuming
-+// if(!isParallel(*fNormal,*sNormal))
-+// if(fNormal->compare(ivNeg(sNormal))!=0)//This results in a Mandelbug
-+ // notParallelCtr++;
-+// else//parallelity, so we check the codim2-facets
-+ int64vec *fNRef=const_cast<int64vec*>(fNormal);
-+ int64vec *sNRef=const_cast<int64vec*>(sNormal);
-+ if(isParallel(*fNRef,*sNRef))
-+// if(fNormal->compare((sNormal))!=0)//Behold! Teh definitive Mandelbug
-+ {
-+ facet* f2Act;
-+ facet* s2Act;
-+ f2Act = f->codim2Ptr;
-+ ctr=0;
-+ while(f2Act!=NULL)
-+ {
-+ const int64vec* f2Normal;
-+ f2Normal = f2Act->getRef2FacetNormal();
-+// int64vec *f2Ref=const_cast<int64vec*>(f2Normal);
-+ s2Act = s->codim2Ptr;
-+ while(s2Act!=NULL)
-+ {
-+ const int64vec* s2Normal;
-+ s2Normal = s2Act->getRef2FacetNormal();
-+// bool foo=areEqual(f2Normal,s2Normal);
-+// int64vec *s2Ref=const_cast<int64vec*>(s2Normal);
-+ int foo=f2Normal->compare(s2Normal);
-+ if(foo==0)
-+ ctr++;
-+ s2Act = s2Act->next;
-+ }
-+ f2Act = f2Act->next;
-+ }
-+ }
-+ if(ctr==f->numCodim2Facets)
-+ res=TRUE;
-+ else
-+ {
-+#ifdef gfanp
-+ gcone::parallelButNotEqual++;
-+#endif
-+ res=FALSE;
-+ }
-+#ifdef gfanp
-+ gettimeofday(&end, 0);
-+ gcone::t_areEqual += (end.tv_sec - start.tv_sec + 1e-6*(end.tv_usec - start.tv_usec));
-+#endif
-+ return res;
-+}
-+
-+/** Stores the facet normal \param int64vec*/
-+inline void facet::setFacetNormal(int64vec *iv)
-+{
-+ if(this->fNormal!=NULL)
-+ delete this->fNormal;
-+ this->fNormal = iv64Copy(iv);
-+}
-+
-+/** Hopefully returns the facet normal
-+* Mind: iv64Copy returns a new int64vec, so use this in the following way:
-+* int64vec *iv;
-+* iv = this->getFacetNormal();
-+* [...]
-+* delete(iv);
-+*/
-+inline int64vec *facet::getFacetNormal() const
-+{
-+ return iv64Copy(this->fNormal);
-+}
-+
-+/** Method to print the facet normal*/
-+inline void facet::printNormal() const
-+{
-+ fNormal->show();
-+}
-+
-+/** Store the flipped GB*/
-+inline void facet::setFlipGB(ideal I)
-+{
-+ this->flipGB=idCopy(I);
-+}
-+
-+/** Returns a pointer to the flipped GB
-+Seems not be used
-+Anyhow idCopy would make sense here.
-+*/
-+inline ideal facet::getFlipGB()
-+{
-+ return this->flipGB;
-+}
-+
-+/** Print the flipped GB*/
-+inline void facet::printFlipGB()
-+{
-+#ifndef NDEBUG
-+ idShow(this->flipGB);
-+#endif
-+}
-+
-+/** Set the UCN */
-+inline void facet::setUCN(int n)
-+{
-+ this->UCN=n;
-+}
-+
-+/** \brief Get the UCN
-+* Returns the UCN iff this != NULL, else -1
-+*/
-+inline int facet::getUCN()
-+{
-+#ifndef NDEBUG
-+ #if SIZEOF_LONG==8
-+ if((this!=NULL && this!=(facet * const)0xfbfbfbfbfbfbfbfb))
-+ #elif SIZEOF_LONG==4
-+ if((this!=NULL && this!=(facet * const)0xfbfbfbfb))
-+ #endif
-+#endif
-+#ifdef NDEBUG
-+ if(this!=NULL)
-+#endif
-+ return this->UCN;
-+ else
-+ return -1;
-+}
-+
-+/** Store an interior point of the facet */
-+inline void facet::setInteriorPoint(int64vec *iv)
-+{
-+ if(this->interiorPoint!=NULL)
-+ delete this->interiorPoint;
-+ this->interiorPoint = iv64Copy(iv);
-+}
-+
-+/** Returns a pointer to this->interiorPoint
-+* MIND: iv64Copy returns a new int64vec
-+* @see facet::getFacetNormal
-+*/
-+inline int64vec *facet::getInteriorPoint()
-+{
-+ return iv64Copy(this->interiorPoint);
-+}
-+
-+inline const int64vec *facet::getRef2InteriorPoint()
-+{
-+ return (this->interiorPoint);
-+}
-+
-+/** \brief Debugging function
-+* prints the facet normal an all (codim-2)-facets that belong to it
-+*/
-+volatile void facet::fDebugPrint()
-+{
-+ #ifndef NDEBUG
-+ facet *codim2Act;
-+ codim2Act = this->codim2Ptr;
-+ int64vec *fNormal;
-+ fNormal = this->getFacetNormal();
-+ printf("=======================\n");
-+ printf("Facet normal = (");fNormal->show(1,1);printf(")\n");
-+ printf("-----------------------\n");
-+ printf("Codim2 facets:\n");
-+ while(codim2Act!=NULL)
-+ {
-+ int64vec *f2Normal;
-+ f2Normal = codim2Act->getFacetNormal();
-+ printf("(");f2Normal->show(1,0);printf(")\n");
-+ codim2Act = codim2Act->next;
-+ delete f2Normal;
-+ }
-+ printf("=======================\n");
-+ delete fNormal;
-+ #endif
-+}
-+
-+
-+/**
-+*\brief Implements the cone structure
-+*
-+* A cone is represented by a linked list of facet normals
-+* @see facet
-+*/
-+
-+
-+/** \brief Default constructor.
-+ *
-+ * Initialises this->next=NULL and this->facetPtr=NULL
-+ */
-+gcone::gcone()
-+{
-+ this->next=NULL;
-+ this->prev=NULL;
-+ this->facetPtr=NULL; //maybe this->facetPtr = new facet();
-+ this->baseRing=currRing;
-+ this->counter++;
-+ this->UCN=this->counter;
-+ this->numFacets=0;
-+ this->ivIntPt=NULL;
-+ this->gcRays=NULL;
-+}
-+
-+/** \brief Constructor with ring and ideal
-+ *
-+ * This constructor takes the root ring and the root ideal as parameters and stores
-+ * them in the private members gcone::rootRing and gcone::inputIdeal
-+ * This constructor is only called once in the computation of the Gröbner fan,
-+ * namely for the very first cone. Therefore pred is set to 1.
-+ * Might set it to this->UCN though...
-+ * Since knowledge of the root ring is only needed when using reverse search,
-+ * this constructor is not needed when using the "second" method
-+*/
-+gcone::gcone(ring r, ideal I)
-+{
-+ this->next=NULL;
-+ this->prev=NULL;
-+ this->facetPtr=NULL;
-+ this->inputIdeal=I;
-+ this->baseRing=currRing;
-+ this->counter++;
-+ this->UCN=this->counter;
-+ this->pred=1;
-+ this->numFacets=0;
-+ this->ivIntPt=NULL;
-+ this->gcRays=NULL;
-+}
-+
-+/** \brief Copy constructor
-+ *
-+ * Copies a cone, sets this->gcBasis to the flipped GB
-+ * Call this only after a successful call to gcone::flip which sets facet::flipGB
-+*/
-+gcone::gcone(const gcone& gc, const facet &f)
-+{
-+ this->next=NULL;
-+// this->prev=(gcone *)&gc; //comment in to get a tree
-+ this->prev=NULL;
-+ this->numVars=gc.numVars;
-+ this->counter++;
-+ this->UCN=this->counter;
-+ this->pred=gc.UCN;
-+ this->facetPtr=NULL;
-+ this->gcBasis=idrCopyR(f.flipGB, f.flipRing);
-+// this->inputIdeal=idCopy(this->gcBasis);
-+ this->baseRing=rCopy(f.flipRing);
-+ this->numFacets=0;
-+ this->ivIntPt=NULL;
-+ this->gcRays=NULL;
-+}
-+
-+/** \brief Default destructor
-+*/
-+gcone::~gcone()
-+{
-+#ifndef NDEBUG
-+ #if SIZEOF_LONG==8
-+ if( ( this->gcBasis!=(ideal)(0xfbfbfbfbfbfbfbfb) ) && (this->gcBasis!=NULL) )
-+ idDelete((ideal*)&this->gcBasis);
-+ #elif SIZEOF_LONG!=8
-+ if(this->gcBasis!=(ideal)0xfbfbfbfb)
-+ idDelete((ideal *)&this->gcBasis);
-+ #endif
-+#else
-+ if(this->gcBasis!=NULL)
-+ idDelete((ideal *)&this->gcBasis);
-+#endif
-+// idDelete((ideal *)&this->gcBasis);
-+// if(this->inputIdeal!=NULL)
-+// idDelete((ideal *)&this->inputIdeal);
-+// if (this->rootRing!=NULL && this->rootRing!=(ip_sring *)0xfefefefefefefefe)
-+// rDelete(this->rootRing);
-+ if(this->UCN!=1 && this->baseRing!=NULL)
-+ rDelete(this->baseRing);
-+ facet *fAct;
-+ facet *fDel;
-+ /*Delete the facet structure*/
-+ fAct=this->facetPtr;
-+ fDel=fAct;
-+ while(fAct!=NULL)
-+ {
-+ fDel=fAct;
-+ fAct=fAct->next;
-+ delete fDel;
-+ }
-+ this->counter--;
-+ //should be deleted in noRevS
-+// dd_FreeMatrix(this->ddFacets);
-+ //dd_FreeMatrix(this->ddFacets);
-+ for(int ii=0;ii<this->numRays;ii++)
-+ delete(gcRays[ii]);
-+ omFree(gcRays);
-+}
-+
-+/** Returns the number of cones existing at the time*/
-+inline int gcone::getCounter()
-+{
-+ return this->counter;
-+}
-+
-+/** \brief Set the interior point of a cone */
-+inline void gcone::setIntPoint(int64vec *iv)
-+{
-+ if(this->ivIntPt!=NULL)
-+ delete this->ivIntPt;
-+ this->ivIntPt=iv64Copy(iv);
-+}
-+
-+/** \brief Returns either a physical copy the interior point of a cone or just a reference to it.*/
-+inline int64vec *gcone::getIntPoint(bool shallow)
-+{
-+ if(shallow==TRUE)
-+ return this->ivIntPt;
-+ else
-+ return iv64Copy(this->ivIntPt);
-+}
-+
-+/** \brief Print the interior point */
-+inline void gcone::showIntPoint()
-+{
-+ ivIntPt->show();
-+}
-+
-+/** \brief Print facets
-+ * This is mainly for debugging purposes. Usually called from within gdb
-+ */
-+volatile void gcone::showFacets(const short codim)
-+{
-+ #ifndef NDEBUG
-+ facet *f=this->facetPtr;
-+ facet *f2=NULL;
-+ if(codim==2)
-+ f2=this->facetPtr->codim2Ptr;
-+ while(f!=NULL)
-+ {
-+ int64vec *iv;
-+ iv = f->getFacetNormal();
-+ printf("(");iv->show(1,0);
-+ if(f->isFlippable==FALSE)
-+ printf(")* ");
-+ else
-+ printf(") ");
-+ delete iv;
-+ if(codim==2)
-+ {
-+ f2=f->codim2Ptr;
-+ while(f2!=NULL)
-+ {
-+ printf("[");f2->getFacetNormal()->show(1,0);printf("]");
-+ f2 = f2->next;
-+ }
-+ printf("\n");
-+ }
-+ f=f->next;
-+ }
-+ printf("\n");
-+ #endif
-+}
-+
-+/** For debugging purposes only */
-+static volatile void showSLA(facet &f)
-+{
-+ #ifndef NDEBUG
-+ facet *fAct;
-+ fAct = &f;
-+ if(fAct!=NULL)
-+ {
-+ facet *codim2Act;
-+ codim2Act = fAct->codim2Ptr;
-+
-+ printf("\n");
-+ while(fAct!=NULL)
-+ {
-+ int64vec *fNormal;
-+ fNormal=fAct->getFacetNormal();
-+ printf("(");fNormal->show(1,0);
-+ if(fAct->isFlippable==TRUE)
-+ printf(") ");
-+ else
-+ printf(")* ");
-+ delete fNormal;
-+ codim2Act = fAct->codim2Ptr;
-+ printf(" Codim2: ");
-+ while(codim2Act!=NULL)
-+ {
-+ int64vec *f2Normal;
-+ f2Normal = codim2Act->getFacetNormal();
-+ printf("(");f2Normal->show(1,0);printf(") ");
-+ delete f2Normal;
-+ codim2Act = codim2Act->next;
-+ }
-+ printf("UCN = %i\n",fAct->getUCN());
-+ fAct = fAct->next;
-+ }
-+ }
-+ #endif
-+}
-+
-+static void idDebugPrint(const ideal &I)
-+{
-+ #ifndef NDEBUG
-+ int numElts=IDELEMS(I);
-+ printf("Ideal with %i generators\n", numElts);
-+ printf("Leading terms: ");
-+ for (int ii=0;ii<numElts;ii++)
-+ {
-+ pWrite0(pHead(I->m[ii]));
-+ printf(",");
-+ }
-+ printf("\n");
-+ #endif
-+}
-+
-+static void invPrint(const ideal &I)
-+{
-+// int numElts=IDELEMS(I);
-+// cout << "inv = ";
-+// for(int ii=0;ii<numElts;ii++);
-+// {
-+// pWrite0(pHead(I->m[ii]));
-+// cout << ",";
-+// }
-+// cout << endl;
-+}
-+
-+static bool isMonomial(const ideal &I)
-+{
-+ bool res = TRUE;
-+ for(int ii=0;ii<IDELEMS(I);ii++)
-+ {
-+ if(pLength((poly)I->m[ii])>1)
-+ {
-+ res = FALSE;
-+ break;
-+ }
-+ }
-+ return res;
-+}
-+
-+/** \brief Set gcone::numFacets */
-+inline void gcone::setNumFacets()
-+{
-+}
-+
-+/** \brief Get gcone::numFacets */
-+inline int gcone::getNumFacets()
-+{
-+ return this->numFacets;
-+}
-+
-+inline int gcone::getUCN()
-+{
-+ if( this!=NULL)// && ( this!=(gcone * const)0xfbfbfbfbfbfbfbfb && this!=(gcone * const)0xfbfbfbfb ) )
-+ return this->UCN;
-+ else
-+ return -1;
-+}
-+
-+inline int gcone::getPredUCN()
-+{
-+ return this->pred;
-+}
-+/** Returns a copy of the this->baseRing */
-+inline ring gcone::getBaseRing()
-+{
-+ return rCopy(this->baseRing);
-+}
-+
-+inline void gcone::setBaseRing(ring r)
-+{
-+ this->baseRing=rCopy(r);
-+}
-+
-+inline ring gcone::getRef2BaseRing()
-+{
-+ return this->baseRing;
-+}
-+
-+/** \brief Compute the normals of the cone
-+ *
-+ * This method computes a representation of the cone in terms of facet normals. It takes an ideal
-+ * as its input. Redundancies are automatically removed using cddlib's dd_MatrixCanonicalize.
-+ * Other methods for redundancy checkings might be implemented later. See Anders' diss p.44.
-+ * Note that in order to use cddlib a 0-th column has to be added to the matrix since cddlib expects
-+ * each row to represent an inequality of type const+x1+...+xn <= 0. While computing the normals we come across
-+ * the set \f$ \partial\mathcal{G} \f$ which we might store for later use. C.f p71 of journal
-+ * As a result of this procedure the pointer facetPtr points to the first facet of the cone.
-+ *
-+ * Optionally, if the parameter bool compIntPoint is set to TRUE the method will also compute
-+ * an interior point of the cone.
-+ */
-+void gcone::getConeNormals(const ideal &I, bool compIntPoint)
-+{
-+#ifdef gfanp
-+ timeval start, end;
-+ gettimeofday(&start, 0);
-+#endif
-+ poly aktpoly;
-+ int rows; // will contain the dimensions of the ineq matrix - deprecated by
-+ dd_rowrange ddrows;
-+ dd_colrange ddcols;
-+ dd_rowset ddredrows; // # of redundant rows in ddineq
-+ dd_rowset ddlinset; // the opposite
-+ dd_rowindex ddnewpos=NULL; // all to make dd_Canonicalize happy
-+ dd_NumberType ddnumb=dd_Integer; //Number type
-+ dd_ErrorType dderr=dd_NoError;
-+ //Compute the # inequalities i.e. rows of the matrix
-+ rows=0; //Initialization
-+ for (int ii=0;ii<IDELEMS(I);ii++)
-+ {
-+// aktpoly=(poly)I->m[ii];
-+// rows=rows+pLength(aktpoly)-1;
-+ rows=rows+pLength((poly)I->m[ii])-1;
-+ }
-+
-+ dd_rowrange aktmatrixrow=0; // needed to store the diffs of the expvects in the rows of ddineq
-+ ddrows=rows;
-+ ddcols=this->numVars;
-+ dd_MatrixPtr ddineq; //Matrix to store the inequalities
-+ ddineq=dd_CreateMatrix(ddrows,ddcols+1); //The first col has to be 0 since cddlib checks for additive consts there
-+
-+ // We loop through each g\in GB and compute the resulting inequalities
-+ for (int i=0; i<IDELEMS(I); i++)
-+ {
-+ aktpoly=(poly)I->m[i]; //get aktpoly as i-th component of I
-+ //simpler version of storing expvect diffs
-+ int *leadexpv=(int*)omAlloc(((this->numVars)+1)*sizeof(int));
-+ pGetExpV(aktpoly,leadexpv);
-+ poly pNextTerm=aktpoly;
-+ while(pNext(pNextTerm)/*pNext(aktpoly)*/!=NULL)
-+ {
-+ pNextTerm/*aktpoly*/=pNext(pNextTerm);
-+ int *tailexpv=(int*)omAlloc(((this->numVars)+1)*sizeof(int));
-+ pGetExpV(pNextTerm,tailexpv);
-+ for(int kk=1;kk<=this->numVars;kk++)
-+ {
-+ dd_set_si(ddineq->matrix[(dd_rowrange)aktmatrixrow][kk],leadexpv[kk]-tailexpv[kk]);
-+ }
-+ aktmatrixrow += 1;
-+ omFree(tailexpv);
-+ }
-+ omFree(leadexpv);
-+ } //for
-+#if true
-+ /*Let's make the preprocessing here. This could already be done in the above for-loop,
-+ * but for a start it is more convenient here.
-+ * We check the necessary condition of FJT p.18
-+ * Quote: [...] every non-zero spoly should have at least one of its terms in inv(G)
-+ */
-+// ideal initialForm=idInit(IDELEMS(I),1);
-+// int64vec *gamma=new int64vec(this->numVars);
-+ int falseGammaCounter=0;
-+ int *redRowsArray=NULL;
-+ int num_alloc=0;
-+ int num_elts=0;
-+ for(int ii=0;ii<ddineq->rowsize;ii++)
-+ {
-+ ideal initialForm=idInit(IDELEMS(I),I->rank);
-+ //read row ii into gamma
-+// int64 tmp;
-+ int64vec *gamma=new int64vec(this->numVars);
-+ for(int jj=1;jj<=this->numVars;jj++)
-+ {
-+ int64 tmp;
-+ tmp=(int64)mpq_get_d(ddineq->matrix[ii][jj]);
-+ (*gamma)[jj-1]=(int64)tmp;
-+ }
-+ computeInv((ideal&)I,initialForm,*gamma);
-+ delete gamma;
-+ //Create leading ideal
-+ ideal L=idInit(IDELEMS(initialForm),1);
-+ for(int jj=0;jj<IDELEMS(initialForm);jj++)
-+ {
-+ poly p=pHead(initialForm->m[jj]);
-+ L->m[jj]=pCopy(/*pHead(initialForm->m[jj]))*/p);
-+ pDelete(&p);
-+ }
-+
-+ LObject *P = new sLObject();//TODO What's the difference between sLObject and LObject?
-+ memset(P,0,sizeof(LObject));
-+
-+ for(int jj=0;jj<=IDELEMS(initialForm)-2;jj++)
-+ {
-+ bool isMaybeFacet=FALSE;
-+ P->p1=initialForm->m[jj]; //build spolys of initialForm in_v
-+
-+ for(int kk=jj+1;kk<=IDELEMS(initialForm)-1;kk++)
-+ {
-+ P->p2=initialForm->m[kk];
-+ ksCreateSpoly(P);
-+ if(P->p!=NULL) //spoly non zero=?
-+ {
-+ poly p;//NOTE Don't use pInit here. Evil memleak will follow
-+ poly q;
-+ poly pDel,qDel;
-+ p=pCopy(P->p);
-+ q=pHead(p); //Monomial q
-+ pDelete(&q);
-+ pDel=p; qDel=q;
-+ isMaybeFacet=FALSE;
-+ //TODO: Suffices to check LTs here
-+ while(p!=NULL)
-+ {
-+ q=pHead(p);
-+ for(int ll=0;ll<IDELEMS(L);ll++)
-+ {
-+ if(pLmEqual(L->m[ll],q) || pDivisibleBy(L->m[ll],q))
-+ {
-+ isMaybeFacet=TRUE;
-+ break;//for
-+ }
-+ }
-+ pDelete(&q);
-+ if(isMaybeFacet==TRUE)
-+ {
-+ break;//while(p!=NULL)
-+ }
-+ p=pNext(p);
-+ }//while
-+// pDelete(&p);//NOTE Better to use pDel and qDel. Commenting in this line will not work!
-+ if(q!=NULL) pDelete(&q);
-+ pDelete(&pDel);
-+ pDelete(&qDel);
-+ if(isMaybeFacet==FALSE)
-+ {
-+ dd_set_si(ddineq->matrix[ii][0],1);
-+// if(num_alloc==0)
-+// num_alloc += 1;
-+// else
-+// num_alloc += 1;
-+ if(num_alloc==num_elts) num_alloc==0 ? num_alloc=1 : num_alloc*=2;
-+
-+ void *tmp = realloc(redRowsArray,(num_alloc*sizeof(int)));
-+ if(!tmp)
-+ {
-+ WerrorS("Woah dude! Couldn't realloc memory\n");
-+ exit(-1);
-+ }
-+ redRowsArray = (int*)tmp;
-+ redRowsArray[num_elts]=ii;
-+ num_elts++;
-+ //break;//for(int kk, since we have found one that is not in L
-+ goto _start; //mea culpa, mea culpa, mea maxima culpa
-+ }
-+ }//if(P->p!=NULL)
-+ pDelete(&(P->p));
-+ }//for k
-+ }//for jj
-+ _start:;
-+ idDelete(&L);
-+ delete P;
-+ idDelete(&initialForm);
-+ }//for(ii<ddineq-rowsize
-+// delete gamma;
-+ int offset=0;//needed for correction of redRowsArray[ii]
-+#ifndef NDEBUG
-+ printf("Removed %i of %i in preprocessing step\n",num_elts,ddineq->rowsize);
-+#endif
-+ for( int ii=0;ii<num_elts;ii++ )
-+ {
-+ dd_MatrixRowRemove(&ddineq,redRowsArray[ii]+1-offset);//cddlib sucks at enumeration
-+ offset++;
-+ }
-+ free(redRowsArray);//NOTE May crash on some machines.
-+ /*And now for the strictly positive rows
-+ * Doesn't gain significant speedup
-+ */
-+ /*int *posRowsArray=NULL;
-+ num_alloc=0;
-+ num_elts=0;
-+ for(int ii=0;ii<ddineq->rowsize;ii++)
-+ {
-+ int64vec *ivPos = new int64vec(this->numVars);
-+ for(int jj=0;jj<this->numVars;jj++)
-+ (*ivPos)[jj]=(int)mpq_get_d(ddineq->matrix[ii][jj+1]);
-+ bool isStrictlyPos=FALSE;
-+ int posCtr=0;
-+ for(int jj=0;jj<this->numVars;jj++)
-+ {
-+ int64vec *ivCanonical = new int64vec(this->numVars);
-+ jj==0 ? (*ivCanonical)[ivPos->length()-1]=1 : (*ivCanonical)[jj-1]=1;
-+ if(dotProduct(*ivCanonical,*ivPos)!=0)
-+ {
-+ if ((*ivPos)[jj]>=0)
-+ {
-+ posCtr++;
-+ }
-+ }
-+ delete ivCanonical;
-+ }
-+ if(posCtr==ivPos->length())
-+ isStrictlyPos=TRUE;
-+ if(isStrictlyPos==TRUE)
-+ {
-+ if(num_alloc==0)
-+ num_alloc += 1;
-+ else
-+ num_alloc += 1;
-+ void *tmp = realloc(posRowsArray,(num_alloc*sizeof(int)));
-+ if(!tmp)
-+ {
-+ WerrorS("Woah dude! Couldn't realloc memory\n");
-+ exit(-1);
-+ }
-+ posRowsArray = (int*)tmp;
-+ posRowsArray[num_elts]=ii;
-+ num_elts++;
-+ }
-+ delete ivPos;
-+ }
-+ offset=0;
-+ for(int ii=0;ii<num_elts;ii++)
-+ {
-+ dd_MatrixRowRemove(&ddineq,posRowsArray[ii]+1-offset);
-+ offset++;
-+ }
-+ free(posRowsArray);*/
-+#endif
-+
-+ dd_MatrixCanonicalize(&ddineq, &ddlinset, &ddredrows, &ddnewpos, &dderr);
-+ ddrows = ddineq->rowsize; //Size of the matrix with redundancies removed
-+ ddcols = ddineq->colsize;
-+
-+ this->ddFacets = dd_CopyMatrix(ddineq);
-+
-+ /*Write the normals into class facet*/
-+ facet *fAct; //pointer to active facet
-+ int numNonFlip=0;
-+ for (int kk = 0; kk<ddrows; kk++)
-+ {
-+ int64 ggT=1;//NOTE Why does (int)mpq_get_d(ddineq->matrix[kk][1]) not work?
-+ int64vec *load = new int64vec(this->numVars);//int64vec to store a single facet normal that will then be stored via setFacetNormal
-+ for (int jj = 1; jj <ddcols; jj++)
-+ {
-+ int64 val;
-+ val = (int64)mpq_get_d(ddineq->matrix[kk][jj]);
-+ (*load)[jj-1] = val; //store typecasted entry at pos jj-1 of load
-+ ggT = int64gcd(ggT,/*(int64&)foo*/val);
-+ }//for (int jj = 1; jj <ddcols; jj++)
-+ if(ggT>1)
-+ {
-+ for(int ll=0;ll<this->numVars;ll++)
-+ (*load)[ll] /= ggT;//make primitive vector
-+ }
-+ /*Quick'n'dirty hack for flippability. Executed only if gcone::hasHomInput==FALSE
-+ * Otherwise every facet intersects the positive orthant
-+ */
-+ if(gcone::hasHomInput==FALSE)
-+ {
-+ //TODO: No dP needed
-+ bool isFlip=FALSE;
-+ for(int jj = 0; jj<load->length(); jj++)
-+ {
-+// int64vec *ivCanonical = new int64vec(load->length());
-+// (*ivCanonical)[jj]=1;
-+// if (dotProduct(*load,*ivCanonical)<0)
-+// {
-+// isFlip=TRUE;
-+// break; //URGHS
-+// }
-+// delete ivCanonical;
-+ if((*load)[jj]<0)
-+ {
-+ isFlip=TRUE;
-+ break;
-+ }
-+ }/*End of check for flippability*/
-+// if(iv64isStrictlyPositive(load))
-+// isFlip=TRUE;
-+ if(isFlip==FALSE)
-+ {
-+ this->numFacets++;
-+ numNonFlip++;
-+ if(this->numFacets==1)
-+ {
-+ facet *fRoot = new facet();
-+ this->facetPtr = fRoot;
-+ fAct = fRoot;
-+ }
-+ else
-+ {
-+ fAct->next = new facet();
-+ fAct = fAct->next;
-+ }
-+ fAct->isFlippable=FALSE;
-+ fAct->setFacetNormal(load);
-+ fAct->setUCN(this->getUCN());
-+#ifndef NDEBUG
-+ printf("Marking facet (");load->show(1,0);printf(") as non flippable\n");
-+#endif
-+ }
-+ else
-+ {
-+ this->numFacets++;
-+ if(this->numFacets==1)
-+ {
-+ facet *fRoot = new facet();
-+ this->facetPtr = fRoot;
-+ fAct = fRoot;
-+ }
-+ else
-+ {
-+ fAct->next = new facet();
-+ fAct = fAct->next;
-+ }
-+ fAct->isFlippable=TRUE;
-+ fAct->setFacetNormal(load);
-+ fAct->setUCN(this->getUCN());
-+ }
-+ }//hasHomInput==FALSE
-+ else //Every facet is flippable
-+ { /*Now load should be full and we can call setFacetNormal*/
-+ this->numFacets++;
-+ if(this->numFacets==1)
-+ {
-+ facet *fRoot = new facet();
-+ this->facetPtr = fRoot;
-+ fAct = fRoot;
-+ }
-+ else
-+ {
-+ fAct->next = new facet();
-+ fAct = fAct->next;
-+ }
-+ fAct->isFlippable=TRUE;
-+ fAct->setFacetNormal(load);
-+ fAct->setUCN(this->getUCN());
-+ }//if (isFlippable==FALSE)
-+ delete load;
-+ }//for (int kk = 0; kk<ddrows; kk++)
-+
-+ //In cases like I=<x-1,y-1> there are only non-flippable facets...
-+ if(numNonFlip==this->numFacets)
-+ {
-+ WerrorS ("Only non-flippable facets. Terminating...\n");
-+// exit(-1);//Bit harsh maybe...
-+ }
-+
-+ /*
-+ Now we should have a linked list containing the facet normals of those facets that are
-+ -irredundant
-+ -flipable
-+ Adressing is done via *facetPtr
-+ */
-+ if (compIntPoint==TRUE)
-+ {
-+ int64vec *iv = new int64vec(this->numVars);
-+ dd_MatrixPtr posRestr=dd_CreateMatrix(this->numVars,this->numVars+1);
-+ int jj=1;
-+ for (int ii=0;ii<=this->numVars;ii++)
-+ {
-+ dd_set_si(posRestr->matrix[ii][jj],1);
-+ jj++;
-+ }
-+ dd_MatrixAppendTo(&ddineq,posRestr);
-+ interiorPoint(ddineq, *iv); //NOTE ddineq contains non-flippable facets
-+ this->setIntPoint(iv); //stores the interior point in gcone::ivIntPt
-+ delete iv;
-+ dd_FreeMatrix(posRestr);
-+ }
-+ //Clean up but don't delete the return value!
-+ //dd_FreeMatrix(ddineq);
-+ set_free(ddredrows);//check
-+ set_free(ddlinset);//check
-+ //free(ddnewpos);//<-- NOTE Here the crash occurs omAlloc issue?
-+#ifdef gfanp
-+ gettimeofday(&end, 0);
-+ time_getConeNormals += (end.tv_sec - start.tv_sec + 1e-6*(end.tv_usec - start.tv_usec));
-+#endif
-+
-+}//gcone::getConeNormals(ideal I)
-+
-+/** \brief Compute the (codim-2)-facets of a given cone
-+ * This method is used during noRevS
-+ * Additionally we check whether the codim2-facet normal is strictly positive. Otherwise
-+ * the facet is marked as non-flippable.
-+ */
-+void gcone::getCodim2Normals(const gcone &gc)
-+{
-+#ifdef gfanp
-+ timeval start, end;
-+ gettimeofday(&start, 0);
-+#endif
-+ //this->facetPtr->codim2Ptr = new facet(2); //instantiate a (codim-2)-facet
-+ facet *fAct;
-+ fAct = this->facetPtr;
-+ facet *codim2Act;
-+ //codim2Act = this->facetPtr->codim2Ptr;
-+ dd_MatrixPtr ddineq;//,P,ddakt;
-+ dd_ErrorType err;
-+ //ddineq = facets2Matrix(gc); //get a matrix representation of the cone
-+ ddineq = dd_CopyMatrix(gc.ddFacets);
-+ /*Now set appropriate linearity*/
-+ for (int ii=0; ii<this->numFacets; ii++)
-+ {
-+ dd_rowset impl_linset, redset;
-+ dd_rowindex newpos;
-+ dd_MatrixPtr ddakt;
-+ ddakt = dd_CopyMatrix(ddineq);
-+// ddakt->representation=dd_Inequality; //Not using this makes it faster. But why does the quick check below still work?
-+// ddakt->representation=dd_Generator;
-+ set_addelem(ddakt->linset,ii+1);/*Now set appropriate linearity*/
-+#ifdef gfanp
-+ timeval t_ddMC_start, t_ddMC_end;
-+ gettimeofday(&t_ddMC_start,0);
-+#endif
-+ //dd_MatrixCanonicalize(&ddakt, &impl_linset, &redset, &newpos, &err);
-+ dd_PolyhedraPtr ddpolyh;
-+ ddpolyh=dd_DDMatrix2Poly(ddakt, &err);
-+// ddpolyh=dd_DDMatrix2Poly2(ddakt, dd_MaxCutoff, &err);
-+ dd_MatrixPtr P;
-+ P=dd_CopyGenerators(ddpolyh);
-+ dd_FreePolyhedra(ddpolyh);
-+ //TODO Call for one cone , normalize - check equalities - plus lineality -done
-+#ifdef gfanp
-+ gettimeofday(&t_ddMC_end,0);
-+ t_ddMC += (t_ddMC_end.tv_sec - t_ddMC_start.tv_sec + 1e-6*(t_ddMC_end.tv_usec - t_ddMC_start.tv_usec));
-+#endif
-+ /* We loop through each row of P normalize it by making all
-+ * entries integer ones and add the resulting vector to the
-+ * int matrix facet::codim2Facets */
-+ for (int jj=1;jj<=/*ddakt*/P->rowsize;jj++)
-+ {
-+ fAct->numCodim2Facets++;
-+ if(fAct->numCodim2Facets==1)
-+ {
-+ fAct->codim2Ptr = new facet(2);
-+ codim2Act = fAct->codim2Ptr;
-+ }
-+ else
-+ {
-+ codim2Act->next = new facet(2);
-+ codim2Act = codim2Act->next;
-+ }
-+ int64vec *n = new int64vec(this->numVars);
-+#ifdef gfanp
-+ timeval t_mI_start, t_mI_end;
-+ gettimeofday(&t_mI_start,0);
-+#endif
-+ makeInt(P,jj,*n);
-+ /*for(int kk=0;kk<this->numVars;kk++)
-+ {
-+ int foo;
-+ foo = (int)mpq_get_d(ddakt->matrix[ii][kk+1]);
-+ (*n)[kk]=foo;
-+ }*/
-+#ifdef gfanp
-+ gettimeofday(&t_mI_end,0);
-+ t_mI += (t_mI_end.tv_sec - t_mI_start.tv_sec + 1e-6*(t_mI_end.tv_usec - t_mI_start.tv_usec));
-+#endif
-+ codim2Act->setFacetNormal(n);
-+ delete n;
-+ }
-+ /*We check whether the facet spanned by the codim-2 facets
-+ * intersects with the positive orthant. Otherwise we define this
-+ * facet to be non-flippable. Works since we set the appropriate
-+ * linearity for ddakt above.
-+ */
-+ //TODO It might be faster to compute jus the implied equations instead of a relative interior point
-+// int64vec *iv_intPoint = new int64vec(this->numVars);
-+// dd_MatrixPtr shiftMatrix;
-+// dd_MatrixPtr intPointMatrix;
-+// shiftMatrix = dd_CreateMatrix(this->numVars,this->numVars+1);
-+// for(int kk=0;kk<this->numVars;kk++)
-+// {
-+// dd_set_si(shiftMatrix->matrix[kk][0],1);
-+// dd_set_si(shiftMatrix->matrix[kk][kk+1],1);
-+// }
-+// intPointMatrix=dd_MatrixAppend(ddakt,shiftMatrix);
-+// #ifdef gfanp
-+// timeval t_iP_start, t_iP_end;
-+// gettimeofday(&t_iP_start, 0);
-+// #endif
-+// interiorPoint(intPointMatrix,*iv_intPoint);
-+// // dd_rowset impl_linste,lbasis;
-+// // dd_LPSolutionPtr lps=NULL;
-+// // dd_ErrorType err;
-+// // dd_FindRelativeInterior(intPointMatrix, &impl_linset, &lbasis, &lps, &err);
-+// #ifdef gfanp
-+// gettimeofday(&t_iP_end, 0);
-+// t_iP += (t_iP_end.tv_sec - t_iP_start.tv_sec + 1e-6*(t_iP_end.tv_usec - t_iP_start.tv_usec));
-+// #endif
-+// for(int ll=0;ll<this->numVars;ll++)
-+// {
-+// if( (*iv_intPoint)[ll] < 0 )
-+// {
-+// fAct->isFlippable=FALSE;
-+// break;
-+// }
-+// }
-+ /*End of check*/
-+ /*This test should be way less time consuming*/
-+#ifdef gfanp
-+ timeval t_iP_start, t_iP_end;
-+ gettimeofday(&t_iP_start, 0);
-+#endif
-+ bool containsStrictlyPosRay=TRUE;
-+ for(int ii=0;ii<ddakt->rowsize;ii++)
-+ {
-+ containsStrictlyPosRay=TRUE;
-+ for(int jj=1;jj<this->numVars;jj++)
-+ {
-+ if(ddakt->matrix[ii][jj]<=0)
-+ {
-+ containsStrictlyPosRay=FALSE;
-+ break;
-+ }
-+ }
-+ if(containsStrictlyPosRay==TRUE)
-+ break;
-+ }
-+ if(containsStrictlyPosRay==FALSE)
-+ //TODO Not sufficient. Intersect with pos orthant for pos int
-+ fAct->isFlippable=FALSE;
-+#ifdef gfanp
-+ gettimeofday(&t_iP_end, 0);
-+ t_iP += (t_iP_end.tv_sec - t_iP_start.tv_sec + 1e-6*(t_iP_end.tv_usec - t_iP_start.tv_usec));
-+#endif
-+ /**/
-+ fAct = fAct->next;
-+ dd_FreeMatrix(ddakt);
-+ dd_FreeMatrix(P);
-+ }//for
-+ dd_FreeMatrix(ddineq);
-+#ifdef gfanp
-+ gettimeofday(&end, 0);
-+ time_getCodim2Normals += (end.tv_sec - start.tv_sec + 1e-6*(end.tv_usec - start.tv_usec));
-+#endif
-+}
-+
-+/** Really extremal rays this time ;)
-+* Extremal rays are unique modulo the homogeneity space.
-+* Therefore we dd_MatrixAppend gc->ddFacets and gcone::dd_LinealitySpace
-+* into ddineq. Next we compute the extremal rays of the so given subspace.
-+* Figuring out whether a ray belongs to a given facet(normal) is done by
-+* checking whether the inner product of the ray with the normal is zero.
-+* We use ivAdd here which returns a new int64vec. Therefore we need to avoid
-+* a memory leak which would be cause by the line
-+* iv=ivAdd(iv,b)
-+* So we keep pointer tmp to iv and delete(tmp), so there should not occur a
-+* memleak
-+* TODO normalization
-+*/
-+void gcone::getExtremalRays(const gcone &gc)
-+{
-+#ifdef gfanp
-+ timeval start, end;
-+ gettimeofday(&start, 0);
-+ timeval poly_start, poly_end;
-+ gettimeofday(&poly_start,0);
-+#endif
-+ //Add lineality space - dd_LinealitySpace
-+ dd_MatrixPtr ddineq;
-+ dd_ErrorType err;
-+ ddineq = (dd_LinealitySpace->rowsize>0) ? dd_AppendMatrix(gc.ddFacets,gcone::dd_LinealitySpace) : dd_CopyMatrix(gc.ddFacets);
-+ /* In case the input is non-homogeneous we add constrains for the positive orthant.
-+ * This is justified by the fact that for non-homog ideals we only consider the
-+ * restricted fan. This way we can be sure to find strictly positive interior points.
-+ * This in turn makes life easy when checking for flippability!
-+ * Drawback: Makes the LP larger so probably slows down computations a wee bit.
-+ */
-+ dd_MatrixPtr ddPosRestr;
-+ if(hasHomInput==FALSE)
-+ {
-+ dd_MatrixPtr tmp;
-+ ddPosRestr=dd_CreateMatrix(this->numVars,this->numVars+1);
-+ for(int ii=0;ii<this->numVars;ii++)
-+ dd_set_si(ddPosRestr->matrix[ii][ii+1],1);
-+ dd_MatrixAppendTo(&ddineq,ddPosRestr);
-+ assert(ddineq);
-+ dd_FreeMatrix(ddPosRestr);
-+ }
-+ dd_PolyhedraPtr ddPolyh;
-+ ddPolyh = dd_DDMatrix2Poly(ddineq, &err);
-+ dd_MatrixPtr P;
-+ P=dd_CopyGenerators(ddPolyh);//Here we actually compute the rays!
-+ dd_FreePolyhedra(ddPolyh);
-+ dd_FreeMatrix(ddineq);
-+#ifdef gfanp
-+ gettimeofday(&poly_end,0);
-+ t_ddPolyh += (poly_end.tv_sec - poly_start.tv_sec + 1e-6*(poly_end.tv_usec - poly_start.tv_usec));
-+#endif
-+ /* Compute interior point on the fly*/
-+ int64vec *ivIntPointOfCone = new int64vec(this->numVars);
-+ int64vec *foo = new int64vec(this->numVars);
-+ for(int ii=0;ii<P->rowsize;ii++)
-+ {
-+ int64vec *tmp = ivIntPointOfCone;
-+ makeInt(P,ii+1,*foo);
-+ ivIntPointOfCone = iv64Add(ivIntPointOfCone,foo);
-+ delete tmp;
-+ }
-+ delete foo;
-+ int64 ggT=(*ivIntPointOfCone)[0];
-+ for (int ii=0;ii<(this->numVars);ii++)
-+ {
-+ if( (*ivIntPointOfCone)[ii]>INT_MAX )
-+ WarnS("Interior point exceeds INT_MAX!\n");
-+ //Compute intgcd
-+ ggT=int64gcd(ggT,(*ivIntPointOfCone)[ii]);
-+ }
-+
-+ //Divide out a common gcd > 1
-+ if(ggT>1)
-+ {
-+ for(int ii=0;ii<this->numVars;ii++)
-+ {
-+ (*ivIntPointOfCone)[ii] /= ggT;
-+ if( (*ivIntPointOfCone)[ii]>INT_MAX ) WarnS("Interior point still exceeds INT_MAX after GCD!\n");
-+ }
-+ }
-+
-+ /*For homogeneous input (like Det3,3,5) the int points may be negative. So add a suitable multiple of (1,_,1)*/
-+ if(hasHomInput==TRUE && iv64isStrictlyPositive(ivIntPointOfCone)==FALSE)
-+ {
-+ int64vec *ivOne = new int64vec(this->numVars);
-+ int maxNegEntry=0;
-+ for(int ii=0;ii<this->numVars;ii++)
-+ {
-+// (*ivOne)[ii]=1;
-+ if ((*ivIntPointOfCone)[ii]<maxNegEntry) maxNegEntry=(*ivIntPointOfCone)[ii];
-+ }
-+ maxNegEntry *= -1;
-+ maxNegEntry++;//To be on the safe side
-+ for(int ii=0;ii<this->numVars;ii++)
-+ (*ivOne)[ii]=maxNegEntry;
-+ int64vec *tmp=ivIntPointOfCone;
-+ ivIntPointOfCone=iv64Add(ivIntPointOfCone,ivOne);
-+ delete(tmp);
-+// while( !iv64isStrictlyPositive(ivIntPointOfCone) )
-+// {
-+// int64vec *tmp = ivIntPointOfCone;
-+// for(int jj=0;jj<this->numVars;jj++)
-+// (*ivOne)[jj] = (*ivOne)[jj] << 1; //times 2
-+// ivIntPointOfCone = ivAdd(ivIntPointOfCone,ivOne);
-+// delete tmp;
-+// }
-+ delete ivOne;
-+ int64 ggT=(*ivIntPointOfCone)[0];
-+ for(int ii=0;ii<this->numVars;ii++)
-+ ggT=int64gcd( ggT, (*ivIntPointOfCone)[ii]);
-+ if(ggT>1)
-+ {
-+ for(int jj=0;jj<this->numVars;jj++)
-+ (*ivIntPointOfCone)[jj] /= ggT;
-+ }
-+ }
-+// assert(iv64isStrictlyPositive(ivIntPointOfCone));
-+
-+ this->setIntPoint(ivIntPointOfCone);
-+ delete(ivIntPointOfCone);
-+ /* end of interior point computation*/
-+
-+ //Loop through the rows of P and check whether fNormal*row[i]=0 => row[i] belongs to fNormal
-+ int rows=P->rowsize;
-+ facet *fAct=gc.facetPtr;
-+ //Construct an array to hold the extremal rays of the cone
-+ this->gcRays = (int64vec**)omAlloc0(sizeof(int64vec*)*P->rowsize);
-+ for(int ii=0;ii<P->rowsize;ii++)
-+ {
-+ int64vec *rowvec = new int64vec(this->numVars);
-+ makeInt(P,ii+1,*rowvec);//get an integer entry instead of rational, rowvec is primitve
-+ this->gcRays[ii] = iv64Copy(rowvec);
-+ delete rowvec;
-+ }
-+ this->numRays=P->rowsize;
-+ //Check which rays belong to which facet
-+ while(fAct!=NULL)
-+ {
-+ const int64vec *fNormal;// = new int64vec(this->numVars);
-+ fNormal = fAct->getRef2FacetNormal();//->getFacetNormal();
-+ int64vec *ivIntPointOfFacet = new int64vec(this->numVars);
-+ for(int ii=0;ii<rows;ii++)
-+ {
-+ if(dotProduct(*fNormal,this->gcRays[ii])==0)
-+ {
-+ int64vec *tmp = ivIntPointOfFacet;//Prevent memleak
-+ fAct->numCodim2Facets++;
-+ facet *codim2Act;
-+ if(fAct->numCodim2Facets==1)
-+ {
-+ fAct->codim2Ptr = new facet(2);
-+ codim2Act = fAct->codim2Ptr;
-+ }
-+ else
-+ {
-+ codim2Act->next = new facet(2);
-+ codim2Act = codim2Act->next;
-+ }
-+ //codim2Act->setFacetNormal(rowvec);
-+ //Rather just let codim2Act point to the corresponding int64vec of gcRays
-+ codim2Act->fNormal=this->gcRays[ii];
-+ fAct->numRays++;
-+ //Memleak avoided via tmp
-+ ivIntPointOfFacet=iv64Add(ivIntPointOfFacet,this->gcRays[ii]);
-+ //Now tmp still points to the OLD address of ivIntPointOfFacet
-+ delete(tmp);
-+
-+ }
-+ }//For non-homog input ivIntPointOfFacet should already be >0 here
-+// if(!hasHomInput) {assert(iv64isStrictlyPositive(ivIntPointOfFacet));}
-+ //if we have no strictly pos ray but the input is homogeneous
-+ //then add a suitable multiple of (1,...,1)
-+ if( !iv64isStrictlyPositive(ivIntPointOfFacet) && hasHomInput==TRUE)
-+ {
-+ int64vec *ivOne = new int64vec(this->numVars);
-+ for(int ii=0;ii<this->numVars;ii++)
-+ (*ivOne)[ii]=1;
-+ while( !iv64isStrictlyPositive(ivIntPointOfFacet) )
-+ {
-+ int64vec *tmp = ivIntPointOfFacet;
-+ for(int jj=0;jj<this->numVars;jj++)
-+ {
-+ (*ivOne)[jj] = (*ivOne)[jj] << 1; //times 2
-+ }
-+ ivIntPointOfFacet = iv64Add(ivIntPointOfFacet/*diff*/,ivOne);
-+ delete tmp;
-+ }
-+ delete ivOne;
-+ }
-+ int64 ggT=(*ivIntPointOfFacet)[0];
-+ for(int ii=0;ii<this->numVars;ii++)
-+ ggT=int64gcd(ggT,(*ivIntPointOfFacet)[ii]);
-+ if(ggT>1)
-+ {
-+ for(int ii=0;ii<this->numVars;ii++)
-+ (*ivIntPointOfFacet)[ii] /= ggT;
-+ }
-+ fAct->setInteriorPoint(ivIntPointOfFacet);
-+
-+ delete(ivIntPointOfFacet);
-+ //Now (if we have at least 3 variables) do a bubblesort on the rays
-+ /*if(this->numVars>2)
-+ {
-+ facet *A[fAct->numRays-1];
-+ facet *f2Act=fAct->codim2Ptr;
-+ for(unsigned ii=0;ii<fAct->numRays;ii++)
-+ {
-+ A[ii]=f2Act;
-+ f2Act=f2Act->next;
-+ }
-+ bool exchanged=FALSE;
-+ unsigned n=fAct->numRays-1;
-+ do
-+ {
-+ exchanged=FALSE;//n=fAct->numRays-1;
-+ for(unsigned ii=0;ii<=n-1;ii++)
-+ {
-+ if((A[ii]->fNormal)->compare((A[ii+1]->fNormal))==1)
-+ {
-+ //Swap rays
-+ cout << "Swapping ";
-+ A[ii]->fNormal->show(1,0); cout << " with "; A[ii+1]->fNormal->show(1,0); cout << endl;
-+ A[ii]->next=A[ii+1]->next;
-+ if(ii>0)
-+ A[ii-1]->next=A[ii+1];
-+ A[ii+1]->next=A[ii];
-+ if(ii==0)
-+ fAct->codim2Ptr=A[ii+1];
-+ //end swap
-+ facet *tmp=A[ii];//swap in list
-+ A[ii+1]=A[ii];
-+ A[ii]=tmp;
-+// tmp=NULL;
-+ }
-+ }
-+ n--;
-+ }while(exchanged==TRUE && n>=0);
-+ }*///if pVariables>2
-+// delete fNormal;
-+ fAct = fAct->next;
-+ }//end of facet checking
-+ dd_FreeMatrix(P);
-+ //Now all extremal rays should be set w.r.t their respective fNormal
-+ //TODO Not sufficient -> vol2 II/125&127
-+ //NOTE Sufficient according to cddlibs doc. These ARE rays
-+ //What the hell... let's just take interior points
-+ if(gcone::hasHomInput==FALSE)
-+ {
-+ fAct=gc.facetPtr;
-+ while(fAct!=NULL)
-+ {
-+// bool containsStrictlyPosRay=FALSE;
-+// facet *codim2Act;
-+// codim2Act = fAct->codim2Ptr;
-+// while(codim2Act!=NULL)
-+// {
-+// int64vec *rayvec;
-+// rayvec = codim2Act->getFacetNormal();//Mind this is no normal but a ray!
-+// //int negCtr=0;
-+// if(iv64isStrictlyPositive(rayvec))
-+// {
-+// containsStrictlyPosRay=TRUE;
-+// delete(rayvec);
-+// break;
-+// }
-+// delete(rayvec);
-+// codim2Act = codim2Act->next;
-+// }
-+// if(containsStrictlyPosRay==FALSE)
-+// fAct->isFlippable=FALSE;
-+ if(!iv64isStrictlyPositive(fAct->interiorPoint))
-+ fAct->isFlippable=FALSE;
-+ fAct = fAct->next;
-+ }
-+ }//hasHomInput?
-+#ifdef gfanp
-+ gettimeofday(&end, 0);
-+ t_getExtremalRays += (end.tv_sec - start.tv_sec + 1e-6*(end.tv_usec - start.tv_usec));
-+#endif
-+}
-+
-+/** Order the spanning rays in a lex way hopefully using qsort()*/
-+void gcone::orderRays()
-+{
-+// qsort(gcRays,sizeof(int64vec),int64vec::compare);
-+}
-+
-+inline bool gcone::iv64isStrictlyPositive(const int64vec * iv64)
-+{
-+ bool res=TRUE;
-+ for(int ii=0;ii<iv64->length();ii++)
-+ {
-+ if((*iv64)[ii]<=0)
-+ {
-+ res=FALSE;
-+ break;
-+ }
-+ }
-+ return res;
-+}
-+
-+/** \brief Compute the Groebner Basis on the other side of a shared facet
-+ *
-+ * Implements algorithm 4.3.2 from Anders' thesis.
-+ * As shown there it is not necessary to compute an interior point. The knowledge of the facet normal
-+ * suffices. A term \f$ x^\gamma \f$ of \f$ g \f$ is in \f$ in_\omega(g) \f$ iff \f$ \gamma - leadexp(g)\f$
-+ * is parallel to \f$ leadexp(g) \f$
-+ * Parallelity is checked using basic linear algebra. See gcone::isParallel.
-+ * Other possibilities include computing the rank of the matrix consisting of the vectors in question and
-+ * computing an interior point of the facet and taking all terms having the same weight with respect
-+ * to this interior point.
-+ *\param ideal, facet
-+ * Input: a marked,reduced Groebner basis and a facet
-+ */
-+inline void gcone::flip(ideal gb, facet *f) //Compute "the other side"
-+{
-+#ifdef gfanp
-+ timeval start, end;
-+ gettimeofday(&start, 0);
-+#endif
-+ int64vec *fNormal;// = new int64vec(this->numVars); //facet normal, check for parallelity
-+ fNormal = f->getFacetNormal(); //read this->fNormal;
-+#ifndef NDEBUG
-+// std::cout << "running gcone::flip" << std::endl;
-+ printf("flipping UCN %i over facet",this->getUCN());
-+ fNormal->show(1,0);
-+ printf(") with UCN %i\n",f->getUCN() );
-+#endif
-+ if(this->getUCN() != f->getUCN())
-+ {
-+ WerrorS("Uh oh... Trying to flip over facet with incompatible UCN");
-+ exit(-1);
-+ }
-+ /*1st step: Compute the initial ideal*/
-+ /*poly initialFormElement[IDELEMS(gb)];*/ //array of #polys in GB to store initial form
-+ ideal initialForm=idInit(IDELEMS(gb),this->gcBasis->rank);
-+
-+ computeInv(gb,initialForm,*fNormal);
-+
-+#ifndef NDEBUG
-+/* cout << "Initial ideal is: " << endl;
-+ idShow(initialForm);
-+ //f->printFlipGB();*/
-+// cout << "===" << endl;
-+#endif
-+ /*2nd step: lift initial ideal to a GB of the neighbouring cone using minus alpha as weight*/
-+ /*Substep 2.1
-+ compute $G_{-\alpha}(in_v(I))
-+ see journal p. 66
-+ NOTE Check for different rings. Prolly it will not always be necessary to add a weight, if the
-+ srcRing already has a weighted ordering
-+ */
-+ ring srcRing=currRing;
-+ ring tmpRing;
-+
-+ if( (srcRing->order[0]!=ringorder_a))
-+ {
-+ int64vec *iv;// = new int64vec(this->numVars);
-+ iv = ivNeg(fNormal);//ivNeg uses iv64Copy -> new
-+// tmpRing=rCopyAndAddWeight(srcRing,ivNeg(fNormal));
-+ tmpRing=rCopyAndAddWeight(srcRing,iv);
-+ delete iv;
-+ }
-+ else
-+ {
-+ tmpRing=rCopy0(srcRing);
-+ int length=fNormal->length();
-+ int *A=(int *)omAlloc0(length*sizeof(int));
-+ for(int jj=0;jj<length;jj++)
-+ {
-+ A[jj]=-(*fNormal)[jj];
-+ }
-+ omFree(tmpRing->wvhdl[0]);
-+ tmpRing->wvhdl[0]=(int*)A;
-+ tmpRing->block1[0]=length;
-+ rComplete(tmpRing);
-+ //omFree(A);
-+ }
-+ delete fNormal;
-+ rChangeCurrRing(tmpRing);
-+
-+ ideal ina;
-+ ina=idrCopyR(initialForm,srcRing);
-+ idDelete(&initialForm);
-+ ideal H;
-+// H=kStd(ina,NULL,isHomog,NULL); //we know it is homogeneous
-+#ifdef gfanp
-+ timeval t_kStd_start, t_kStd_end;
-+ gettimeofday(&t_kStd_start,0);
-+#endif
-+ if(gcone::hasHomInput==TRUE)
-+ H=kStd(ina,NULL,isHomog,NULL/*,gcone::hilbertFunction*/);
-+ else
-+ H=kStd(ina,NULL,isNotHomog,NULL); //This is \mathcal(G)_{>_-\alpha}(in_v(I))
-+#ifdef gfanp
-+ gettimeofday(&t_kStd_end, 0);
-+ t_kStd += (t_kStd_end.tv_sec - t_kStd_start.tv_sec + 1e-6*(t_kStd_end.tv_usec - t_kStd_start.tv_usec));
-+#endif
-+ idSkipZeroes(H);
-+ idDelete(&ina);
-+
-+ /*Substep 2.2
-+ do the lifting and mark according to H
-+ */
-+ rChangeCurrRing(srcRing);
-+ ideal srcRing_H;
-+ ideal srcRing_HH;
-+ srcRing_H=idrCopyR(H,tmpRing);
-+ //H is needed further below, so don't idDelete here
-+ srcRing_HH=ffG(srcRing_H,this->gcBasis);
-+ idDelete(&srcRing_H);
-+
-+ /*Substep 2.2.1
-+ * Mark according to G_-\alpha
-+ * Here we have a minimal basis srcRing_HH. In order to turn this basis into a reduced basis
-+ * we have to compute an interior point of C(srcRing_HH). For this we need to know the cone
-+ * represented by srcRing_HH MARKED ACCORDING TO G_{-\alpha}
-+ * Thus we check whether the leading monomials of srcRing_HH and srcRing_H coincide. If not we
-+ * compute the difference accordingly
-+ */
-+#ifdef gfanp
-+ timeval t_markings_start, t_markings_end;
-+ gettimeofday(&t_markings_start, 0);
-+#endif
-+ bool markingsAreCorrect=FALSE;
-+ dd_MatrixPtr intPointMatrix;
-+ int iPMatrixRows=0;
-+ dd_rowrange aktrow=0;
-+ for (int ii=0;ii<IDELEMS(srcRing_HH);ii++)
-+ {
-+ poly aktpoly=(poly)srcRing_HH->m[ii];//This is a pointer, so don't pDelete
-+ iPMatrixRows = iPMatrixRows+pLength(aktpoly);
-+ }
-+ /* additionally one row for the standard-simplex and another for a row that becomes 0 during
-+ * construction of the differences
-+ */
-+ intPointMatrix = dd_CreateMatrix(iPMatrixRows+2,this->numVars+1);
-+ intPointMatrix->numbtype=dd_Integer; //NOTE: DO NOT REMOVE OR CHANGE TO dd_Rational
-+
-+ for (int ii=0;ii<IDELEMS(srcRing_HH);ii++)
-+ {
-+ markingsAreCorrect=FALSE; //crucial to initialise here
-+ poly aktpoly=srcRing_HH->m[ii]; //Only a pointer, so don't pDelete
-+ /*Comparison of leading monomials is done via exponent vectors*/
-+ for (int jj=0;jj<IDELEMS(H);jj++)
-+ {
-+ int *src_ExpV = (int *)omAlloc((this->numVars+1)*sizeof(int));
-+ int *dst_ExpV = (int *)omAlloc((this->numVars+1)*sizeof(int));
-+ pGetExpV(aktpoly,src_ExpV);
-+ rChangeCurrRing(tmpRing); //this ring change is crucial!
-+ poly p=pCopy(H->m[ii]);
-+ pGetExpV(p/*pCopy(H->m[ii])*/,dst_ExpV);
-+ pDelete(&p);
-+ rChangeCurrRing(srcRing);
-+ bool expVAreEqual=TRUE;
-+ for (int kk=1;kk<=this->numVars;kk++)
-+ {
-+#ifndef NDEBUG
-+// cout << src_ExpV[kk] << "," << dst_ExpV[kk] << endl;
-+#endif
-+ if (src_ExpV[kk]!=dst_ExpV[kk])
-+ {
-+ expVAreEqual=FALSE;
-+ }
-+ }
-+ if (expVAreEqual==TRUE)
-+ {
-+ markingsAreCorrect=TRUE; //everything is fine
-+#ifndef NDEBUG
-+// cout << "correct markings" << endl;
-+#endif
-+ }//if (pHead(aktpoly)==pHead(H->m[jj])
-+ omFree(src_ExpV);
-+ omFree(dst_ExpV);
-+ }//for (int jj=0;jj<IDELEMS(H);jj++)
-+
-+ int *leadExpV=(int *)omAlloc((this->numVars+1)*sizeof(int));
-+ if (markingsAreCorrect==TRUE)
-+ {
-+ pGetExpV(aktpoly,leadExpV);
-+ }
-+ else
-+ {
-+ rChangeCurrRing(tmpRing);
-+ pGetExpV(pHead(H->m[ii]),leadExpV); //We use H->m[ii] as leading monomial
-+ rChangeCurrRing(srcRing);
-+ }
-+ /*compute differences of the expvects*/
-+ while (pNext(aktpoly)!=NULL)
-+ {
-+ int *v=(int *)omAlloc((this->numVars+1)*sizeof(int));
-+ /*The following if-else-block makes sure the first term (i.e. the wrongly marked term)
-+ is not omitted when computing the differences*/
-+ if(markingsAreCorrect==TRUE)
-+ {
-+ aktpoly=pNext(aktpoly);
-+ pGetExpV(aktpoly,v);
-+ }
-+ else
-+ {
-+ pGetExpV(pHead(aktpoly),v);
-+ markingsAreCorrect=TRUE;
-+ }
-+ int ctr=0;
-+ for (int jj=0;jj<this->numVars;jj++)
-+ {
-+ /*Store into ddMatrix*/
-+ if(leadExpV[jj+1]-v[jj+1])
-+ ctr++;
-+ dd_set_si(intPointMatrix->matrix[aktrow][jj+1],leadExpV[jj+1]-v[jj+1]);
-+ }
-+ /*It ought to be more sensible to avoid 0-rows in the first place*/
-+// if(ctr==this->numVars)//We have a 0-row
-+// dd_MatrixRowRemove(&intPointMatrix,aktrow);
-+// else
-+ aktrow +=1;
-+ omFree(v);
-+ }
-+ omFree(leadExpV);
-+ }//for (int ii=0;ii<IDELEMS(srcRing_HH);ii++)
-+#ifdef gfanp
-+ gettimeofday(&t_markings_end, 0);
-+ t_markings += (t_markings_end.tv_sec - t_markings_start.tv_sec + 1e-6*(t_markings_end.tv_usec - t_markings_start.tv_usec));
-+#endif
-+ /*Now it is safe to idDelete(H)*/
-+ idDelete(&H);
-+ /*Preprocessing goes here since otherwise we would delete the constraint
-+ * for the standard simplex.
-+ */
-+ preprocessInequalities(intPointMatrix);
-+ /*Now we add the constraint for the standard simplex*/
-+// dd_set_si(intPointMatrix->matrix[aktrow][0],-1);
-+// for (int jj=1;jj<=this->numVars;jj++)
-+// {
-+// dd_set_si(intPointMatrix->matrix[aktrow][jj],1);
-+// }
-+ //Let's make sure we compute interior points from the positive orthant
-+// dd_MatrixPtr posRestr=dd_CreateMatrix(this->numVars,this->numVars+1);
-+//
-+// int jj=1;
-+// for (int ii=0;ii<this->numVars;ii++)
-+// {
-+// dd_set_si(posRestr->matrix[ii][jj],1);
-+// jj++;
-+// }
-+ /*We create a matrix containing the standard simplex
-+ * and constraints to assure a strictly positive point
-+ * is computed */
-+ dd_MatrixPtr posRestr = dd_CreateMatrix(this->numVars+1, this->numVars+1);
-+ for(int ii=0;ii<posRestr->rowsize;ii++)
-+ {
-+ if(ii==0)
-+ {
-+ dd_set_si(posRestr->matrix[ii][0],-1);
-+ for(int jj=1;jj<=this->numVars;jj++)
-+ dd_set_si(posRestr->matrix[ii][jj],1);
-+ }
-+ else
-+ {
-+ /** Set all variables to \geq 1/10. YMMV but this choice is pretty equal*/
-+ dd_set_si2(posRestr->matrix[ii][0],-1,2);
-+ dd_set_si(posRestr->matrix[ii][ii],1);
-+ }
-+ }
-+ dd_MatrixAppendTo(&intPointMatrix,posRestr);
-+ dd_FreeMatrix(posRestr);
-+
-+ int64vec *iv_weight = new int64vec(this->numVars);
-+#ifdef gfanp
-+ timeval t_dd_start, t_dd_end;
-+ gettimeofday(&t_dd_start, 0);
-+#endif
-+ dd_ErrorType err;
-+ dd_rowset implLin, redrows;
-+ dd_rowindex newpos;
-+
-+ //NOTE Here we should remove interiorPoint and instead
-+ // create and ordering like (a(omega),a(fNormal),dp)
-+// if(this->ivIntPt==NULL)
-+ interiorPoint(intPointMatrix, *iv_weight); //iv_weight now contains the interior point
-+// else
-+// iv_weight=this->getIntPoint();
-+ dd_FreeMatrix(intPointMatrix);
-+ /*Crude attempt for interior point */
-+ /*dd_PolyhedraPtr ddpolyh;
-+ dd_ErrorType err;
-+ dd_rowset impl_linset,redset;
-+ dd_rowindex newpos;
-+ dd_MatrixCanonicalize(&intPointMatrix, &impl_linset, &redset, &newpos, &err);
-+ ddpolyh=dd_DDMatrix2Poly(intPointMatrix, &err);
-+ dd_MatrixPtr P;
-+ P=dd_CopyGenerators(ddpolyh);
-+ dd_FreePolyhedra(ddpolyh);
-+ for(int ii=0;ii<P->rowsize;ii++)
-+ {
-+ int64vec *iv_row=new int64vec(this->numVars);
-+ makeInt(P,ii+1,*iv_row);
-+ iv_weight =ivAdd(iv_weight, iv_row);
-+ delete iv_row;
-+ }
-+ dd_FreeMatrix(P);
-+ dd_FreeMatrix(intPointMatrix);*/
-+#ifdef gfanp
-+ gettimeofday(&t_dd_end, 0);
-+ t_dd += (t_dd_end.tv_sec - t_dd_start.tv_sec + 1e-6*(t_dd_end.tv_usec - t_dd_start.tv_usec));
-+#endif
-+
-+ /*Step 3
-+ * turn the minimal basis into a reduced one */
-+ // NOTE May assume that at this point srcRing already has 3 blocks of orderins, starting with a
-+ // Thus:
-+ //ring dstRing=rCopyAndChangeWeight(srcRing,iv_weight);
-+ ring dstRing=rCopy0(tmpRing);
-+ int length=iv_weight->length();
-+ int *A=(int *)omAlloc0(length*sizeof(int));
-+ for(int jj=0;jj<length;jj++)
-+ {
-+ A[jj]=(*iv_weight)[jj];
-+ }
-+ dstRing->wvhdl[0]=(int*)A;
-+ rComplete(dstRing);
-+ rChangeCurrRing(dstRing);
-+ rDelete(tmpRing);
-+ delete iv_weight;
-+
-+ ideal dstRing_I;
-+ dstRing_I=idrCopyR(srcRing_HH,srcRing);
-+ idDelete(&srcRing_HH); //Hmm.... causes trouble - no more
-+ //dstRing_I=idrCopyR(inputIdeal,srcRing);
-+ BITSET save=test;
-+ test|=Sy_bit(OPT_REDSB);
-+ test|=Sy_bit(OPT_REDTAIL);
-+#ifndef NDEBUG
-+// test|=Sy_bit(6); //OPT_DEBUG
-+#endif
-+ ideal tmpI;
-+ //NOTE Any of the two variants of tmpI={idrCopy(),dstRing_I} does the trick
-+ //tmpI = idrCopyR(this->inputIdeal,this->baseRing);
-+ tmpI = dstRing_I;
-+#ifdef gfanp
-+ gettimeofday(&t_kStd_start,0);
-+#endif
-+ if(gcone::hasHomInput==TRUE)
-+ dstRing_I=kStd(tmpI,NULL,isHomog,NULL/*,gcone::hilbertFunction*/);
-+ else
-+ dstRing_I=kStd(tmpI,NULL,isNotHomog,NULL);
-+#ifdef gfanp
-+ gettimeofday(&t_kStd_end, 0);
-+ t_kStd += (t_kStd_end.tv_sec - t_kStd_start.tv_sec + 1e-6*(t_kStd_end.tv_usec - t_kStd_start.tv_usec));
-+#endif
-+ idDelete(&tmpI);
-+ idNorm(dstRing_I);
-+// kInterRed(dstRing_I);
-+ idSkipZeroes(dstRing_I);
-+ test=save;
-+ /*End of step 3 - reduction*/
-+
-+ f->setFlipGB(dstRing_I);//store the flipped GB
-+// idDelete(&dstRing_I);
-+ f->flipRing=rCopy(dstRing); //store the ring on the other side
-+#ifndef NDEBUG
-+ printf("Flipped GB is UCN %i:\n",counter+1);
-+ idDebugPrint(dstRing_I);
-+ printf("\n");
-+#endif
-+ idDelete(&dstRing_I);
-+ rChangeCurrRing(srcRing); //return to the ring we started the computation of flipGB in
-+ rDelete(dstRing);
-+#ifdef gfanp
-+ gettimeofday(&end, 0);
-+ time_flip += (end.tv_sec - start.tv_sec + 1e-6*(end.tv_usec - start.tv_usec));
-+#endif
-+}//void flip(ideal gb, facet *f)
-+
-+/** \brief A slightly different approach to flipping
-+* Here we use the fact that in_v(in_u(I))=in_(u+eps*v)(I). Therefore, we do no longer
-+* need to compute an interior point and run BBA on the minimal basis but we can rather
-+* use the ordering (a(omega),a(fNormal),dp)
-+* The second parameter facet *f must not be const since we need to store f->flipGB
-+* Problem: Assume we start in a cone with ordering (dp,C). Then \f$ in_\omega(I) \f$
-+* will be from a ring with (a(),dp,C) and our resulting cone from (a(),a(),dp,C). Hence a way
-+* must be found to circumvent the sequence of a()'s growing to a ridiculous size.
-+* Therefore: We use (a(),a(),dp,C) for the computation of the reduced basis. But then we
-+* do have an interior point of the cone by adding the extremal rays. So we replace
-+* the latter cone by a cone with (a(sum_of_rays),dp,C).
-+* Con: It's incredibly ugly
-+* Pro: No messing around with readConeFromFile()
-+* Is there a way to construct a vector from \f$ \omega \f$ and the facet normal?
-+*/
-+inline void gcone::flip2(const ideal &gb, facet *f)
-+{
-+#ifdef gfanp
-+ timeval start, end;
-+ gettimeofday(&start, 0);
-+#endif
-+ const int64vec *fNormal;
-+ fNormal = f->getRef2FacetNormal();/*->getFacetNormal();*/ //read this->fNormal;
-+#ifndef NDEBUG
-+// printf("flipping UCN %i over facet(",this->getUCN());
-+// fNormal->show(1,0);
-+// printf(") with UCN %i\n",f->getUCN());
-+#endif
-+ if(this->getUCN() != f->getUCN())
-+ { printf("%i vs %i\n",this->getUCN(), f->getUCN() );
-+ WerrorS("Uh oh... Trying to flip over facet with incompatible UCN");
-+ exit(-1);
-+ }
-+ /*1st step: Compute the initial ideal*/
-+ ideal initialForm=idInit(IDELEMS(gb),this->gcBasis->rank);
-+ computeInv( gb, initialForm, *fNormal );
-+ ring srcRing=currRing;
-+ ring tmpRing;
-+
-+ const int64vec *intPointOfFacet;
-+ intPointOfFacet=f->getInteriorPoint();
-+ //Now we need two blocks of ringorder_a!
-+ //May assume the same situation as in flip() here
-+ if( (srcRing->order[0]!=ringorder_a/*64*/) && (srcRing->order[1]!=ringorder_a/*64*/) )
-+ {
-+ int64vec *iv = new int64vec(this->numVars);//init with 1s, since we do not need a 2nd block here but later
-+// int64vec *iv_foo = new int64vec(this->numVars,1);//placeholder
-+ int64vec *ivw = ivNeg(const_cast<int64vec*>(fNormal));
-+ tmpRing=rCopyAndAddWeight2(srcRing,ivw/*intPointOfFacet*/,iv);
-+ delete iv;delete ivw;
-+// delete iv_foo;
-+ }
-+ else
-+ {
-+ int64vec *iv=new int64vec(this->numVars);
-+ int64vec *ivw=ivNeg(const_cast<int64vec*>(fNormal));
-+ tmpRing=rCopyAndAddWeight2(srcRing,ivw,iv);
-+ delete iv; delete ivw;
-+ /*tmpRing=rCopy0(srcRing);
-+ int length=fNormal->length();
-+ int *A1=(int *)omAlloc0(length*sizeof(int));
-+ int *A2=(int *)omAlloc0(length*sizeof(int));
-+ for(int jj=0;jj<length;jj++)
-+ {
-+ A1[jj] = -(*fNormal)[jj];
-+ A2[jj] = 1;//-(*fNormal)[jj];//NOTE Do we need this here? This is only the facet ideal
-+ }
-+ omFree(tmpRing->wvhdl[0]);
-+ if(tmpRing->wvhdl[1]!=NULL)
-+ omFree(tmpRing->wvhdl[1]);
-+ tmpRing->wvhdl[0]=(int*)A1;
-+ tmpRing->block1[0]=length;
-+ tmpRing->wvhdl[1]=(int*)A2;
-+ tmpRing->block1[1]=length;
-+ rComplete(tmpRing);*/
-+ }
-+// delete fNormal; //NOTE Do not delete when using getRef2FacetNormal();
-+ rChangeCurrRing(tmpRing);
-+ //Now currRing should have (a(),a(),dp,C)
-+ ideal ina;
-+ ina=idrCopyR(initialForm,srcRing);
-+ idDelete(&initialForm);
-+ ideal H;
-+#ifdef gfanp
-+ timeval t_kStd_start, t_kStd_end;
-+ gettimeofday(&t_kStd_start,0);
-+#endif
-+ BITSET save=test;
-+ test|=Sy_bit(OPT_REDSB);
-+ test|=Sy_bit(OPT_REDTAIL);
-+// if(gcone::hasHomInput==TRUE)
-+ H=kStd(ina,NULL,testHomog/*isHomog*/,NULL/*,gcone::hilbertFunction*/);
-+// else
-+// H=kStd(ina,NULL,isNotHomog,NULL); //This is \mathcal(G)_{>_-\alpha}(in_v(I))
-+ test=save;
-+#ifdef gfanp
-+ gettimeofday(&t_kStd_end, 0);
-+ t_kStd += (t_kStd_end.tv_sec - t_kStd_start.tv_sec + 1e-6*(t_kStd_end.tv_usec - t_kStd_start.tv_usec));
-+#endif
-+ idSkipZeroes(H);
-+ idDelete(&ina);
-+
-+ rChangeCurrRing(srcRing);
-+ ideal srcRing_H;
-+ ideal srcRing_HH;
-+ srcRing_H=idrCopyR(H,tmpRing);
-+ //H is needed further below, so don't idDelete here
-+ srcRing_HH=ffG(srcRing_H,this->gcBasis);
-+ idDelete(&srcRing_H);
-+ //Now BBA(srcRing_HH) with (a(),a(),dp)
-+ /* Evil modification of currRing */
-+ ring dstRing=rCopy0(tmpRing);
-+ int length=this->numVars;
-+ int *A1=(int *)omAlloc0(length*sizeof(int));
-+ int *A2=(int *)omAlloc0(length*sizeof(int));
-+ const int64vec *ivw=f->getRef2FacetNormal();
-+ for(int jj=0;jj<length;jj++)
-+ {
-+ A1[jj] = (*intPointOfFacet)[jj];
-+ A2[jj] = -(*ivw)[jj];//TODO Or minus (*ivw)[ii] ??? NOTE minus
-+ }
-+ omFree(dstRing->wvhdl[0]);
-+ if(dstRing->wvhdl[1]!=NULL)
-+ omFree(dstRing->wvhdl[1]);
-+ dstRing->wvhdl[0]=(int*)A1;
-+ dstRing->block1[0]=length;
-+ dstRing->wvhdl[1]=(int*)A2;
-+ dstRing->block1[1]=length;
-+ rComplete(dstRing);
-+ rChangeCurrRing(dstRing);
-+ ideal dstRing_I;
-+ dstRing_I=idrCopyR(srcRing_HH,srcRing);
-+ idDelete(&srcRing_HH); //Hmm.... causes trouble - no more
-+ save=test;
-+ test|=Sy_bit(OPT_REDSB);
-+ test|=Sy_bit(OPT_REDTAIL);
-+ ideal tmpI;
-+ tmpI = dstRing_I;
-+#ifdef gfanp
-+// timeval t_kStd_start, t_kStd_end;
-+ gettimeofday(&t_kStd_start,0);
-+#endif
-+// if(gcone::hasHomInput==TRUE)
-+// dstRing_I=kStd(tmpI,NULL,isHomog,NULL/*,gcone::hilbertFunction*/);
-+// else
-+ dstRing_I=kStd(tmpI,NULL,testHomog,NULL);
-+#ifdef gfanp
-+ gettimeofday(&t_kStd_end, 0);
-+ t_kStd += (t_kStd_end.tv_sec - t_kStd_start.tv_sec + 1e-6*(t_kStd_end.tv_usec - t_kStd_start.tv_usec));
-+#endif
-+ idDelete(&tmpI);
-+ idNorm(dstRing_I);
-+ idSkipZeroes(dstRing_I);
-+ test=save;
-+ /*End of step 3 - reduction*/
-+
-+ f->setFlipGB(dstRing_I);
-+ f->flipRing=rCopy(dstRing);
-+ rDelete(tmpRing);
-+ rDelete(dstRing);
-+ //Now we should have dstRing with (a(),a(),dp,C)
-+ //This must be replaced with (a(),dp,C) BEFORE gcTmp is actually added to the list
-+ //of cones in noRevS
-+ rChangeCurrRing(srcRing);
-+#ifdef gfanp
-+ gettimeofday(&end, 0);
-+ time_flip2 += (end.tv_sec - start.tv_sec + 1e-6*(end.tv_usec - start.tv_usec));
-+#endif
-+}//flip2
-+
-+/** \brief Compute initial ideal
-+ * Compute the initial ideal in_v(G) wrt a (possible) facet normal
-+ * used in gcone::getFacetNormal in order to preprocess possible facet normals
-+ * and in gcone::flip for obvious reasons.
-+*/
-+/*inline*/ void gcone::computeInv(const ideal &gb, ideal &initialForm, const int64vec &fNormal)
-+{
-+#ifdef gfanp
-+ timeval start, end;
-+ gettimeofday(&start, 0);
-+#endif
-+ for (int ii=0;ii<IDELEMS(gb);ii++)
-+ {
-+ poly initialFormElement;
-+ poly aktpoly = (poly)gb->m[ii];//Ptr, so don't pDelete(aktpoly)
-+ int *leadExpV=(int *)omAlloc((this->numVars+1)*sizeof(int));
-+ pGetExpV(aktpoly,leadExpV); //find the leading exponent in leadExpV[1],...,leadExpV[n], use pNext(p)
-+ initialFormElement=pHead(aktpoly);
-+// int *v=(int *)omAlloc((this->numVars+1)*sizeof(int));
-+ while(pNext(aktpoly)!=NULL) /*loop trough terms and check for parallelity*/
-+ {
-+ int64vec *check = new int64vec(this->numVars);
-+ aktpoly=pNext(aktpoly); //next term
-+ int *v=(int *)omAlloc((this->numVars+1)*sizeof(int));
-+ pGetExpV(aktpoly,v);
-+ /* Convert (int)v into (int64vec)check */
-+// bool notPar=FALSE;
-+ for (int jj=0;jj<this->numVars;jj++)
-+ {
-+ (*check)[jj]=v[jj+1]-leadExpV[jj+1];
-+// register int64 foo=(fNormal)[jj];
-+// if( ( (*check)[jj] == /*fNormal[jj]*/foo )
-+// || ( (/*fNormal[jj]*/foo!=0) && ( ( (*check)[jj] % /*fNormal[jj]*/foo ) !=0 ) ) )
-+// {
-+// notPar=TRUE;
-+// break;
-+// }
-+ }
-+ omFree(v);
-+ if (isParallel(*check,fNormal))//Found a parallel vector. Add it
-+// if(notPar==FALSE)
-+ {
-+ initialFormElement = pAdd((initialFormElement),(poly)pHead(aktpoly));//pAdd = p_Add_q destroys args
-+ }
-+ delete check;
-+ }//while
-+// omFree(v);
-+#ifndef NDEBUG
-+// cout << "Initial Form=";
-+// pWrite(initialFormElement[ii]);
-+// cout << "---" << endl;
-+#endif
-+ /*Now initialFormElement must be added to (ideal)initialForm */
-+ initialForm->m[ii]=pCopy(initialFormElement);
-+ pDelete(&initialFormElement);
-+ omFree(leadExpV);
-+ }//for
-+#ifdef gfanp
-+ gettimeofday(&end, 0);
-+ time_computeInv += (end.tv_sec - start.tv_sec + 1e-6*(end.tv_usec - start.tv_usec));
-+#endif
-+}
-+
-+/** \brief Compute the remainder of a polynomial by a given ideal
-+ *
-+ * Compute \f$ f^{\mathcal{G}} \f$
-+ * Algorithm is taken from Cox, Little, O'Shea, IVA 2nd Ed. p 62
-+ * However, since we are only interested in the remainder, there is no need to
-+ * compute the factors \f$ a_i \f$
-+ */
-+//NOTE: Should be replaced by kNF or kNF2
-+//NOTE: Done
-+//NOTE: removed with r12286
-+
-+/** \brief Compute \f$ f-f^{\mathcal{G}} \f$
-+*/
-+//NOTE: use kNF or kNF2 instead of restOfDivision
-+inline ideal gcone::ffG(const ideal &H, const ideal &G)
-+{
-+ int size=IDELEMS(H);
-+ ideal res=idInit(size,1);
-+ for (int ii=0;ii<size;ii++)
-+ {
-+// poly temp1;//=pInit();
-+// poly temp2;//=pInit();
-+ poly temp3;//=pInit();//polys to temporarily store values for pSub
-+// res->m[ii]=pCopy(kNF(G, NULL,H->m[ii],0,0));
-+// temp1=pCopy(H->m[ii]);//TRY
-+// temp2=pCopy(res->m[ii]);
-+ //NOTE if gfanHeuristic=0 (sic!) this results in dPolyErrors - mon from wrong ring
-+// temp2=pCopy(kNF(G, NULL,H->m[ii],0,0));//TRY
-+// temp3=pSub(temp1, temp2);//TRY
-+ temp3=pSub(pCopy(H->m[ii]),pCopy(kNF(G,NULL,H->m[ii],0,0)));//NOTRY
-+ res->m[ii]=pCopy(temp3);
-+ //res->m[ii]=pSub(temp1,temp2); //buggy
-+ //cout << "res->m["<<ii<<"]=";pWrite(res->m[ii]);
-+// pDelete(&temp1);//TRY
-+// pDelete(&temp2);
-+ pDelete(&temp3);
-+ }
-+ return res;
-+}
-+
-+/** \brief Preprocessing of inequlities
-+* Do some preprocessing on the matrix of inequalities
-+* 1) Replace several constraints on the pos. orthants by just one for each orthant
-+* 2) Remove duplicates of inequalities
-+* 3) Remove inequalities that arise as sums of other inequalities
-+*/
-+void gcone::preprocessInequalities(dd_MatrixPtr &ddineq)
-+{
-+/* int *posRowsArray=NULL;
-+ int num_alloc=0;
-+ int num_elts=0;
-+ int offset=0;*/
-+ //Remove zeroes (and strictly pos rows?)
-+ for(int ii=0;ii<ddineq->rowsize;ii++)
-+ {
-+ int64vec *iv = new int64vec(this->numVars);
-+ int64vec *ivNull = new int64vec(this->numVars);//Needed for intvec64::compare(*int64vec)
-+ int posCtr=0;
-+ for(int jj=0;jj<this->numVars;jj++)
-+ {
-+ (*iv)[jj]=(int)mpq_get_d(ddineq->matrix[ii][jj+1]);
-+ if((*iv)[jj]>0)//check for strictly pos rows
-+ posCtr++;
-+ //Behold! This will delete the row for the standard simplex!
-+ }
-+// if( (iv->compare(0)==0) || (posCtr==iv->length()) )
-+ if( (posCtr==iv->length()) || (iv->compare(ivNull)==0) )
-+ {
-+ dd_MatrixRowRemove(&ddineq,ii+1);
-+ ii--;//Yes. This is on purpose
-+ }
-+ delete iv;
-+ delete ivNull;
-+ }
-+ //Remove duplicates of rows
-+// posRowsArray=NULL;
-+// num_alloc=0;
-+// num_elts=0;
-+// offset=0;
-+// int num_newRows = ddineq->rowsize;
-+// for(int ii=0;ii<ddineq->rowsize-1;ii++)
-+// for(int ii=0;ii<num_newRows-1;ii++)
-+// {
-+// int64vec *iv = new int64vec(this->numVars);//1st vector to check against
-+// for(int jj=0;jj<this->numVars;jj++)
-+// (*iv)[jj]=(int)mpq_get_d(ddineq->matrix[ii][jj+1]);
-+// for(int jj=ii+1;jj</*ddineq->rowsize*/num_newRows;jj++)
-+// {
-+// int64vec *ivCheck = new int64vec(this->numVars);//Checked against iv
-+// for(int kk=0;kk<this->numVars;kk++)
-+// (*ivCheck)[kk]=(int)mpq_get_d(ddineq->matrix[jj][kk+1]);
-+// if (iv->compare(ivCheck)==0)
-+// {
-+// // cout << "=" << endl;
-+// // num_alloc++;
-+// // void *tmp=realloc(posRowsArray,(num_alloc*sizeof(int)));
-+// // if(!tmp)
-+// // {
-+// // WerrorS("Woah dude! Couldn't realloc memory\n");
-+// // exit(-1);
-+// // }
-+// // posRowsArray = (int*)tmp;
-+// // posRowsArray[num_elts]=jj;
-+// // num_elts++;
-+// dd_MatrixRowRemove(&ddineq,jj+1);
-+// num_newRows = ddineq->rowsize;
-+// }
-+// delete ivCheck;
-+// }
-+// delete iv;
-+// }
-+// for(int ii=0;ii<num_elts;ii++)
-+// {
-+// dd_MatrixRowRemove(&ddineq,posRowsArray[ii]+1-offset);
-+// offset++;
-+// }
-+// free(posRowsArray);
-+ //Apply Thm 2.1 of JOTA Vol 53 No 1 April 1987*/
-+}//preprocessInequalities
-+
-+/** \brief Compute a Groebner Basis
-+ *
-+ * Computes the Groebner basis and stores the result in gcone::gcBasis
-+ *\param ideal
-+ *\return void
-+ */
-+inline void gcone::getGB(const ideal &inputIdeal)
-+{
-+ BITSET save=test;
-+ test|=Sy_bit(OPT_REDSB);
-+ test|=Sy_bit(OPT_REDTAIL);
-+ ideal gb;
-+ gb=kStd(inputIdeal,NULL,testHomog,NULL);
-+ idNorm(gb);
-+ idSkipZeroes(gb);
-+ this->gcBasis=gb; //write the GB into gcBasis
-+ test=save;
-+}//void getGB
-+
-+/** \brief Compute the negative of a given int64vec
-+ */
-+static int64vec* ivNeg(/*const*/int64vec *iv)
-+{ //Hm, switching to int64vec const int64vec does no longer work
-+ int64vec *res;// = new int64vec(iv->length());
-+ res=iv64Copy(iv);
-+ *res *= (int)-1;
-+ return res;
-+}
-+
-+
-+/** \brief Compute the dot product of two intvecs
-+*
-+*/
-+static int dotProduct(const int64vec &iva, const int64vec &ivb)
-+{
-+ int res=0;
-+ for (int i=0;i<pVariables;i++)
-+ {
-+// #ifndef NDEBUG
-+// (const_cast<int64vec*>(&iva))->show(1,0); (const_cast<int64vec*>(&ivb))->show(1,0);
-+// #endif
-+ res = res+(iva[i]*ivb[i]);
-+ }
-+ return res;
-+}
-+/** \brief Check whether two intvecs are parallel
-+ *
-+ * \f$ \alpha\parallel\beta\Leftrightarrow\langle\alpha,\beta\rangle^2=\langle\alpha,\alpha\rangle\langle\beta,\beta\rangle \f$
-+ */
-+static bool isParallel(const int64vec &a,const int64vec &b)
-+{
-+ bool res;
-+ int lhs=dotProduct(a,b)*dotProduct(a,b);
-+ int rhs=dotProduct(a,a)*dotProduct(b,b);
-+ return res = (lhs==rhs)?TRUE:FALSE;
-+}
-+
-+/** \brief Compute an interior point of a given cone
-+ * Result will be written into int64vec iv.
-+ * Any rational point is automatically converted into an integer.
-+ */
-+void gcone::interiorPoint( dd_MatrixPtr &M, int64vec &iv) //no const &M here since we want to remove redundant rows
-+{
-+ dd_LPPtr lp,lpInt;
-+ dd_ErrorType err=dd_NoError;
-+ dd_LPSolverType solver=dd_DualSimplex;
-+ dd_LPSolutionPtr lpSol=NULL;
-+// dd_rowset ddlinset,ddredrows; //needed for dd_FindRelativeInterior
-+// dd_rowindex ddnewpos;
-+ dd_NumberType numb;
-+ //M->representation=dd_Inequality;
-+
-+ //NOTE: Make this n-dimensional!
-+ //dd_set_si(M->rowvec[0],1);dd_set_si(M->rowvec[1],1);dd_set_si(M->rowvec[2],1);
-+
-+ /*NOTE: Leave the following line commented out!
-+ * Otherwise it will slow down computations a great deal
-+ * */
-+// dd_MatrixCanonicalizeLinearity(&M, &ddlinset, &ddnewpos, &err);
-+ //if (err!=dd_NoError){cout << "Error during dd_MatrixCanonicalize" << endl;}
-+ dd_MatrixPtr posRestr=dd_CreateMatrix(this->numVars,this->numVars+1);
-+ int jj=1;
-+ for (int ii=0;ii<this->numVars;ii++)
-+ {
-+ dd_set_si(posRestr->matrix[ii][jj],1);
-+ jj++;
-+ }
-+ dd_MatrixAppendTo(&M,posRestr);
-+ dd_FreeMatrix(posRestr);
-+ lp=dd_Matrix2LP(M, &err);
-+ if (err!=dd_NoError){WerrorS("Error during dd_Matrix2LP in gcone::interiorPoint");}
-+ if (lp==NULL){WerrorS("LP is NULL");}
-+#ifndef NDEBUG
-+// dd_WriteLP(stdout,lp);
-+#endif
-+
-+ lpInt=dd_MakeLPforInteriorFinding(lp);
-+ if (err!=dd_NoError){WerrorS("Error during dd_MakeLPForInteriorFinding in gcone::interiorPoint");}
-+#ifndef NDEBUG
-+// dd_WriteLP(stdout,lpInt);
-+#endif
-+// dd_FindRelativeInterior(M,&ddlinset,&ddredrows,&lpSol,&err);
-+ if (err!=dd_NoError)
-+ {
-+ WerrorS("Error during dd_FindRelativeInterior in gcone::interiorPoint");
-+ dd_WriteErrorMessages(stdout, err);
-+ }
-+ dd_LPSolve(lpInt,solver,&err); //This will not result in a point from the relative interior
-+// if (err!=dd_NoError){WerrorS("Error during dd_LPSolve");}
-+ lpSol=dd_CopyLPSolution(lpInt);
-+// if (err!=dd_NoError){WerrorS("Error during dd_CopyLPSolution");}
-+#ifndef NDEBUG
-+ printf("Interior point: ");
-+ for (int ii=1; ii<(lpSol->d)-1;ii++)
-+ {
-+ dd_WriteNumber(stdout,lpSol->sol[ii]);
-+ }
-+ printf("\n");
-+#endif
-+ //NOTE The following strongly resembles parts of makeInt.
-+ //Maybe merge sometimes
-+ mpz_t kgV; mpz_init(kgV);
-+ mpz_set_str(kgV,"1",10);
-+ mpz_t den; mpz_init(den);
-+ mpz_t tmp; mpz_init(tmp);
-+ mpq_get_den(tmp,lpSol->sol[1]);
-+ for (int ii=1;ii<(lpSol->d)-1;ii++)
-+ {
-+ mpq_get_den(den,lpSol->sol[ii+1]);
-+ mpz_lcm(kgV,tmp,den);
-+ mpz_set(tmp, kgV);
-+ }
-+ mpq_t qkgV;
-+ mpq_init(qkgV);
-+ mpq_set_z(qkgV,kgV);
-+ for (int ii=1;ii<(lpSol->d)-1;ii++)
-+ {
-+ mpq_t product;
-+ mpq_init(product);
-+ mpq_mul(product,qkgV,lpSol->sol[ii]);
-+ iv[ii-1]=(int)mpz_get_d(mpq_numref(product));
-+ mpq_clear(product);
-+ }
-+#ifndef NDEBUG
-+// iv.show();
-+// cout << endl;
-+#endif
-+ mpq_clear(qkgV);
-+ mpz_clear(tmp);
-+ mpz_clear(den);
-+ mpz_clear(kgV);
-+
-+ dd_FreeLPSolution(lpSol);
-+ dd_FreeLPData(lpInt);
-+ dd_FreeLPData(lp);
-+// set_free(ddlinset);
-+// set_free(ddredrows);
-+
-+}//void interiorPoint(dd_MatrixPtr const &M)
-+
-+/** Computes an interior point of a cone by taking two interior points a,b from two different facets
-+* and then computing b+(a-b)/2
-+* Of course this only works for flippable facets
-+* Two cases may occur:
-+* 1st: There are only two facets who share the only strictly positive ray
-+* 2nd: There are at least two facets which have a distinct positive ray
-+* In the former case we use linear algebra to determine an interior point,
-+* in the latter case we simply add up the two rays
-+*
-+* Way too bad! The case may occur that the cone is spanned by three rays, of which only two are strictly
-+* positive => these lie in a plane and thus their sum is not from relative interior.
-+* So let's just sum up all rays, find one strictly positive and shift the point along that ray
-+*
-+* Used by noRevS
-+*NOTE no longer used nor maintained. MM Mar 9, 2010
-+*/
-+// void gcone::interiorPoint2()
-+// {//idPrint(this->gcBasis);
-+// #ifndef NDEBUG
-+// if(this->ivIntPt!=NULL)
-+// WarnS("Interior point already exists - ovrewriting!");
-+// #endif
-+// facet *f1 = this->facetPtr;
-+// facet *f2 = NULL;
-+// int64vec *intF1=NULL;
-+// while(f1!=NULL)
-+// {
-+// if(f1->isFlippable)
-+// {
-+// facet *f1Ray = f1->codim2Ptr;
-+// while(f1Ray!=NULL)
-+// {
-+// const int64vec *check=f1Ray->getRef2FacetNormal();
-+// if(iv64isStrictlyPositive(check))
-+// {
-+// intF1=iv64Copy(check);
-+// break;
-+// }
-+// f1Ray=f1Ray->next;
-+// }
-+// }
-+// if(intF1!=NULL)
-+// break;
-+// f1=f1->next;
-+// }
-+// if(f1!=NULL && f1->next!=NULL)//Choose another facet, different from f1
-+// f2=f1->next;
-+// else
-+// f2=this->facetPtr;
-+// if(intF1==NULL && hasHomInput==TRUE)
-+// {
-+// intF1 = new int64vec(this->numVars);
-+// for(int ii=0;ii<this->numVars;ii++)
-+// (*intF1)[ii]=1;
-+// }
-+// assert(f1); assert(f2);
-+// int64vec *intF2=f2->getInteriorPoint();
-+// mpq_t *qPosRay = new mpq_t[this->numVars];//The positive ray from above
-+// mpq_t *qIntPt = new mpq_t[this->numVars];//starting vector a+((b-a)/2)
-+// mpq_t *qPosIntPt = new mpq_t[this->numVars];//This should be >0 eventually
-+// for(int ii=0;ii<this->numVars;ii++)
-+// {
-+// mpq_init(qPosRay[ii]);
-+// mpq_init(qIntPt[ii]);
-+// mpq_init(qPosIntPt[ii]);
-+// }
-+// //Compute a+((b-a)/2) && Convert intF1 to mpq
-+// for(int ii=0;ii<this->numVars;ii++)
-+// {
-+// mpq_t a,b;
-+// mpq_init(a); mpq_init(b);
-+// mpq_set_si(a,(*intF1)[ii],1);
-+// mpq_set_si(b,(*intF2)[ii],1);
-+// mpq_t diff;
-+// mpq_init(diff);
-+// mpq_sub(diff,b,a); //diff=b-a
-+// mpq_t quot;
-+// mpq_init(quot);
-+// mpq_div_2exp(quot,diff,1); //quot=diff/2=(b-a)/2
-+// mpq_clear(diff);
-+// //Don't be clever and reuse diff here
-+// mpq_t sum; mpq_init(sum);
-+// mpq_add(sum,b,quot); //sum=b+quot=a+(b-a)/2
-+// mpq_set(qIntPt[ii],sum);
-+// mpq_clear(sum);
-+// mpq_clear(quot);
-+// mpq_clear(a); mpq_clear(b);
-+// //Now for intF1
-+// mpq_set_si(qPosRay[ii],(*intF1)[ii],1);
-+// }
-+// //Now add: qPosIntPt=qPosRay+qIntPt until qPosIntPt >0
-+// while(TRUE)
-+// {
-+// bool success=FALSE;
-+// int posCtr=0;
-+// for(int ii=0;ii<this->numVars;ii++)
-+// {
-+// mpq_t sum; mpq_init(sum);
-+// mpq_add(sum,qPosRay[ii],qIntPt[ii]);
-+// mpq_set(qPosIntPt[ii],sum);
-+// mpq_clear(sum);
-+// if(mpq_sgn(qPosIntPt[ii])==1)
-+// posCtr++;
-+// }
-+// if(posCtr==this->numVars)//qPosIntPt > 0
-+// break;
-+// else
-+// {
-+// mpq_t qTwo; mpq_init(qTwo);
-+// mpq_set_ui(qTwo,2,1);
-+// for(int jj=0;jj<this->numVars;jj++)
-+// {
-+// mpq_t tmp; mpq_init(tmp);
-+// mpq_mul(tmp,qPosRay[jj],qTwo);
-+// mpq_set( qPosRay[jj], tmp);
-+// mpq_clear(tmp);
-+// }
-+// mpq_clear(qTwo);
-+// }
-+// }//while
-+// //Now qPosIntPt ought to be >0, so convert back to int :D
-+// /*Compute lcm of the denominators*/
-+// mpz_t *denom = new mpz_t[this->numVars];
-+// mpz_t tmp,kgV;
-+// mpz_init(tmp); mpz_init(kgV);
-+// for (int ii=0;ii<this->numVars;ii++)
-+// {
-+// mpz_t z;
-+// mpz_init(z);
-+// mpq_get_den(z,qPosIntPt[ii]);
-+// mpz_init(denom[ii]);
-+// mpz_set( denom[ii], z);
-+// mpz_clear(z);
-+// }
-+//
-+// mpz_set(tmp,denom[0]);
-+// for (int ii=0;ii<this->numVars;ii++)
-+// {
-+// mpz_lcm(kgV,tmp,denom[ii]);
-+// mpz_set(tmp,kgV);
-+// }
-+// mpz_clear(tmp);
-+// /*Multiply the nominators by kgV*/
-+// mpq_t qkgV,res;
-+// mpq_init(qkgV);
-+// mpq_canonicalize(qkgV);
-+// mpq_init(res);
-+// mpq_canonicalize(res);
-+//
-+// mpq_set_num(qkgV,kgV);
-+// int64vec *n=new int64vec(this->numVars);
-+// for (int ii=0;ii<this->numVars;ii++)
-+// {
-+// mpq_canonicalize(qPosIntPt[ii]);
-+// mpq_mul(res,qkgV,qPosIntPt[ii]);
-+// (*n)[ii]=(int)mpz_get_d(mpq_numref(res));
-+// }
-+// this->setIntPoint(n);
-+// delete n;
-+// delete [] qPosIntPt;
-+// delete [] denom;
-+// delete [] qPosRay;
-+// delete [] qIntPt;
-+// mpz_clear(kgV);
-+// mpq_clear(qkgV); mpq_clear(res);
-+// }
-+
-+/** \brief Copy a ring and add a weighted ordering in first place
-+ *
-+ */
-+ring gcone::rCopyAndAddWeight(const ring &r, int64vec *ivw)
-+{
-+ ring res=rCopy0(r);
-+ int jj;
-+
-+ omFree(res->order);
-+ res->order =(int *)omAlloc0(4*sizeof(int/*64*/));
-+ omFree(res->block0);
-+ res->block0=(int *)omAlloc0(4*sizeof(int/*64*/));
-+ omFree(res->block1);
-+ res->block1=(int *)omAlloc0(4*sizeof(int/*64*/));
-+ omfree(res->wvhdl);
-+ res->wvhdl =(int **)omAlloc0(4*sizeof(int/*64*/**));
-+
-+ res->order[0]=ringorder_a/*64*/;
-+ res->block0[0]=1;
-+ res->block1[0]=res->N;
-+ res->order[1]=ringorder_dp; //basically useless, since that should never be used
-+ res->block0[1]=1;
-+ res->block1[1]=res->N;
-+ res->order[2]=ringorder_C;
-+
-+ int length=ivw->length();
-+ int/*64*/ *A=(int/*64*/ *)omAlloc0(length*sizeof(int/*64*/));
-+ for (jj=0;jj<length;jj++)
-+ {
-+ A[jj]=(*ivw)[jj];
-+ if((*ivw)[jj]>=INT_MAX) WarnS("A[jj] exceeds INT_MAX in gcone::rCopyAndAddWeight!\n");
-+ }
-+ res->wvhdl[0]=(int *)A;
-+ res->block1[0]=length;
-+
-+ rComplete(res);
-+ return res;
-+}//rCopyAndAdd
-+
-+ring gcone::rCopyAndAddWeight2(const ring &r,const int64vec *ivw, const int64vec *fNormal)
-+{
-+ ring res=rCopy0(r);
-+
-+ omFree(res->order);
-+ res->order =(int *)omAlloc0(5*sizeof(int/*64*/));
-+ omFree(res->block0);
-+ res->block0=(int *)omAlloc0(5*sizeof(int/*64*/));
-+ omFree(res->block1);
-+ res->block1=(int *)omAlloc0(5*sizeof(int/*64*/));
-+ omfree(res->wvhdl);
-+ res->wvhdl =(int **)omAlloc0(5*sizeof(int/*64*/**));
-+
-+ res->order[0]=ringorder_a/*64*/;
-+ res->block0[0]=1;
-+ res->block1[0]=res->N;
-+ res->order[1]=ringorder_a/*64*/;
-+ res->block0[1]=1;
-+ res->block1[1]=res->N;
-+
-+ res->order[2]=ringorder_dp;
-+ res->block0[2]=1;
-+ res->block1[2]=res->N;
-+
-+ res->order[3]=ringorder_C;
-+
-+ int length=ivw->length();
-+ int/*64*/ *A1=(int/*64*/ *)omAlloc0(length*sizeof(int/*64*/));
-+ int/*64*/ *A2=(int/*64*/ *)omAlloc0(length*sizeof(int/*64*/));
-+ for (int jj=0;jj<length;jj++)
-+ {
-+ A1[jj]=(*ivw)[jj];
-+ A2[jj]=-(*fNormal)[jj];
-+ if((*ivw)[jj]>=INT_MAX || (*fNormal)[jj]>=INT_MAX) WarnS("A[jj] exceeds INT_MAX in gcone::rCopyAndAddWeight2!\n");
-+ }
-+ res->wvhdl[0]=(int *)A1;
-+ res->block1[0]=length;
-+ res->wvhdl[1]=(int *)A2;
-+ res->block1[1]=length;
-+ rComplete(res);
-+ return res;
-+}
-+
-+//NOTE not needed anywhere
-+// ring rCopyAndChangeWeight(ring const &r, int64vec *ivw)
-+// {
-+// ring res=rCopy0(currRing);
-+// rComplete(res);
-+// rSetWeightVec(res,(int64*)ivw);
-+// //rChangeCurrRing(rnew);
-+// return res;
-+// }
-+
-+/** \brief Checks whether a given facet is a search facet
-+ * Determines whether a given facet of a cone is the search facet of a neighbouring cone
-+ * This is done in the following way:
-+ * We loop through all facets of the cone and find the "smallest" facet, i.e. the unique facet
-+ * that is first crossed during the generic walk.
-+ * We then check whether the fNormal of this facet is parallel to the fNormal of our testfacet.
-+ * If this is the case, then our facet is indeed a search facet and TRUE is retuned.
-+*/
-+//removed with r12286
-+
-+/** \brief Check for equality of two intvecs
-+ */
-+static bool ivAreEqual(const int64vec &a, const int64vec &b)
-+{
-+ bool res=TRUE;
-+ for(int ii=0;ii<pVariables;ii++)
-+ {
-+ if(a[ii]!=b[ii])
-+ {
-+ res=FALSE;
-+ break;
-+ }
-+ }
-+ return res;
-+}
-+
-+/** \brief The reverse search algorithm
-+ */
-+//removed with r12286
-+/** \brief Compute the lineality/homogeneity space
-+* It is the kernel of the inequality matrix Ax=0
-+* As a result gcone::dd_LinealitySpace is set
-+*/
-+dd_MatrixPtr gcone::computeLinealitySpace()
-+{
-+ dd_MatrixPtr res;
-+ dd_MatrixPtr ddineq;
-+ ddineq=dd_CopyMatrix(this->ddFacets);
-+ //Add a row of 0s in 0th place
-+ dd_MatrixPtr ddAppendRowOfZeroes=dd_CreateMatrix(1,this->numVars+1);
-+ dd_MatrixPtr ddFoo=dd_AppendMatrix(ddAppendRowOfZeroes,ddineq);
-+ dd_FreeMatrix(ddAppendRowOfZeroes);
-+ dd_FreeMatrix(ddineq);
-+ ddineq=dd_CopyMatrix(ddFoo);
-+ dd_FreeMatrix(ddFoo);
-+ //Cohen starts here
-+ int dimKer=0;//Cohen calls this r
-+ int m=ddineq->rowsize;//Rows
-+ int n=ddineq->colsize;//Cols
-+ int c[m+1];
-+ int d[n+1];
-+ for(int ii=0;ii<m;ii++)
-+ c[ii]=0;
-+ for(int ii=0;ii<n;ii++)
-+ d[ii]=0;
-+
-+ for(int k=1;k<n;k++)
-+ {
-+ //Let's find a j s.t. m[j][k]!=0 && c[j]=0
-+ int condCtr=0;//Check each row for zeroness
-+ for(int j=1;j<m;j++)
-+ {
-+ if(mpq_sgn(ddineq->matrix[j][k])!=0 && c[j]==0)
-+ {
-+ mpq_t quot; mpq_init(quot);
-+ mpq_t one; mpq_init(one); mpq_set_str(one,"-1",10);
-+ mpq_t ratd; mpq_init(ratd);
-+ if((int)mpq_get_d(ddineq->matrix[j][k])!=0)
-+ mpq_div(quot,one,ddineq->matrix[j][k]);
-+ mpq_set(ratd,quot);
-+ mpq_canonicalize(ratd);
-+
-+ mpq_set_str(ddineq->matrix[j][k],"-1",10);
-+ for(int ss=k+1;ss<n;ss++)
-+ {
-+ mpq_t prod; mpq_init(prod);
-+ mpq_mul(prod, ratd, ddineq->matrix[j][ss]);
-+ mpq_set(ddineq->matrix[j][ss],prod);
-+ mpq_canonicalize(ddineq->matrix[j][ss]);
-+ mpq_clear(prod);
-+ }
-+ for(int ii=1;ii<m;ii++)
-+ {
-+ if(ii!=j)
-+ {
-+ mpq_set(ratd,ddineq->matrix[ii][k]);
-+ mpq_set_str(ddineq->matrix[ii][k],"0",10);
-+ for(int ss=k+1;ss<n;ss++)
-+ {
-+ mpq_t prod; mpq_init(prod);
-+ mpq_mul(prod, ratd, ddineq->matrix[j][ss]);
-+ mpq_t sum; mpq_init(sum);
-+ mpq_add(sum, ddineq->matrix[ii][ss], prod);
-+ mpq_set(ddineq->matrix[ii][ss], sum);
-+ mpq_canonicalize(ddineq->matrix[ii][ss]);
-+ mpq_clear(prod);
-+ mpq_clear(sum);
-+ }
-+ }
-+ }
-+ c[j]=k;
-+ d[k]=j;
-+ mpq_clear(quot); mpq_clear(ratd); mpq_clear(one);
-+ }
-+ else
-+ condCtr++;
-+ }
-+ if(condCtr==m-1) //Why -1 ???
-+ {
-+ dimKer++;
-+ d[k]=0;
-+// break;//goto _4;
-+ }//else{
-+ /*Eliminate*/
-+ }//for(k
-+ /*Output kernel, i.e. set gcone::dd_LinealitySpace here*/
-+// gcone::dd_LinealitySpace = dd_CreateMatrix(dimKer,this->numVars+1);
-+ res = dd_CreateMatrix(dimKer,this->numVars+1);
-+ int row=-1;
-+ for(int kk=1;kk<n;kk++)
-+ {
-+ if(d[kk]==0)
-+ {
-+ row++;
-+ for(int ii=1;ii<n;ii++)
-+ {
-+ if(d[ii]>0)
-+ mpq_set(res->matrix[row][ii],ddineq->matrix[d[ii]][kk]);
-+ else if(ii==kk)
-+ mpq_set_str(res->matrix[row][ii],"1",10);
-+ mpq_canonicalize(res->matrix[row][ii]);
-+ }
-+ }
-+ }
-+ dd_FreeMatrix(ddineq);
-+ return(res);
-+ //Better safe than sorry:
-+ //NOTE dd_LinealitySpace contains RATIONAL ENTRIES
-+ //Therefore if you need integer ones: CALL gcone::makeInt(...) method
-+}
-+
-+
-+/** \brief The new method of Markwig and Jensen
-+ * Compute gcBasis and facets for the arbitrary starting cone. Store \f$(codim-1)\f$-facets as normals.
-+ * In order to represent a facet uniquely compute also the \f$(codim-2)\f$-facets and norm by the gcd of the components.
-+ * Keep a list of facets as a linked list containing an int64vec and an integer matrix.
-+ * Since a \f$(codim-1)\f$-facet belongs to exactly two full dimensional cones, we remove a facet from the list as
-+ * soon as we compute this facet again. Comparison of facets is done by...
-+ */
-+void gcone::noRevS(gcone &gcRoot, bool usingIntPoint)
-+{
-+ facet *SearchListRoot = new facet(); //The list containing ALL facets we come across
-+ facet *SearchListAct;
-+ SearchListAct = NULL;
-+ //SearchListAct = SearchListRoot;
-+ gcone *gcAct;
-+ gcAct = &gcRoot;
-+ gcone *gcPtr; //Pointer to end of linked list of cones
-+ gcPtr = &gcRoot;
-+ gcone *gcNext; //Pointer to next cone to be visited
-+ gcNext = &gcRoot;
-+ gcone *gcHead;
-+ gcHead = &gcRoot;
-+ facet *fAct;
-+ fAct = gcAct->facetPtr;
-+ ring rAct;
-+ rAct = currRing;
-+ int UCNcounter=gcAct->getUCN();
-+#ifndef NDEBUG
-+ printf("NoRevs\n");
-+ printf("Facets are:\n");
-+ gcAct->showFacets();
-+#endif
-+ /*Compute lineality space here
-+ * Afterwards static dd_MatrixPtr gcone::dd_LinealitySpace is set*/
-+ if(dd_LinealitySpace==NULL)
-+ dd_LinealitySpace = gcAct->computeLinealitySpace();
-+ /*End of lineality space computation*/
-+ //gcAct->getCodim2Normals(*gcAct);
-+ if(fAct->codim2Ptr==NULL)
-+ gcAct->getExtremalRays(*gcAct);
-+ /* Make a copy of the facet list of first cone
-+ Since the operations getCodim2Normals and normalize affect the facets
-+ we must not memcpy them before these ops! */
-+ /*facet *codim2Act; codim2Act = NULL;
-+ facet *sl2Root;
-+ facet *sl2Act;*/
-+ for(int ii=0;ii<this->numFacets;ii++)
-+ {
-+ //only copy flippable facets! NOTE: We do not need flipRing or any such information.
-+ if(fAct->isFlippable==TRUE)
-+ {
-+ /*Using shallow copy here*/
-+#ifdef SHALLOW
-+ if( ii==0 || (ii>0 && SearchListAct==NULL) ) //1st facet may be non-flippable
-+ {
-+ if(SearchListRoot!=NULL) delete(SearchListRoot);
-+ SearchListRoot = fAct->shallowCopy(*fAct);
-+ SearchListAct = SearchListRoot; //SearchListRoot is already 'new'ed at beginning of method!
-+ }
-+ else
-+ {
-+ SearchListAct->next = fAct->shallowCopy(*fAct);
-+ SearchListAct = SearchListAct->next;
-+ }
-+ fAct=fAct->next;
-+#else
-+ /*End of shallow copy*/
-+ int64vec *fNormal;
-+ fNormal = fAct->getFacetNormal();
-+ if( ii==0 || (ii>0 && SearchListAct==NULL) ) //1st facet may be non-flippable
-+ {
-+ SearchListAct = SearchListRoot; //SearchListRoot is already 'new'ed at beginning of method!
-+ }
-+ else
-+ {
-+ SearchListAct->next = new facet();
-+ SearchListAct = SearchListAct->next;
-+ }
-+ SearchListAct->setFacetNormal(fNormal);
-+ SearchListAct->setUCN(this->getUCN());
-+ SearchListAct->numCodim2Facets=fAct->numCodim2Facets;
-+ SearchListAct->isFlippable=TRUE;
-+ //Copy int point as well
-+ int64vec *ivIntPt;
-+ ivIntPt = fAct->getInteriorPoint();
-+ SearchListAct->setInteriorPoint(ivIntPt);
-+ delete(ivIntPt);
-+ //Copy codim2-facets
-+ facet *codim2Act;
-+ codim2Act = NULL;
-+ facet *sl2Root;
-+ facet *sl2Act;
-+ codim2Act=fAct->codim2Ptr;
-+ SearchListAct->codim2Ptr = new facet(2);
-+ sl2Root = SearchListAct->codim2Ptr;
-+ sl2Act = sl2Root;
-+ for(int jj=0;jj<fAct->numCodim2Facets;jj++)
-+// for(int jj=0;jj<fAct->numRays-1;jj++)
-+ {
-+ int64vec *f2Normal;
-+ f2Normal = codim2Act->getFacetNormal();
-+ if(jj==0)
-+ {
-+ sl2Act = sl2Root;
-+ sl2Act->setFacetNormal(f2Normal);
-+ }
-+ else
-+ {
-+ sl2Act->next = new facet(2);
-+ sl2Act = sl2Act->next;
-+ sl2Act->setFacetNormal(f2Normal);
-+ }
-+ delete f2Normal;
-+ codim2Act = codim2Act->next;
-+ }
-+ fAct = fAct->next;
-+ delete fNormal;
-+#endif
-+ }//if(fAct->isFlippable==TRUE)
-+ else {fAct = fAct->next;}
-+ }//End of copying facets into SLA
-+
-+ SearchListAct = SearchListRoot; //Set to beginning of list
-+ /*Make SearchList doubly linked*/
-+#ifndef NDEBUG
-+ #if SIZEOF_LONG==8
-+ while(SearchListAct!=(facet*)0xfefefefefefefefe && SearchListAct!=NULL)
-+ {
-+ if(SearchListAct->next!=(facet*)0xfefefefefefefefe && SearchListAct->next!=NULL){
-+ #elif SIZEOF_LONG!=8
-+ while(SearchListAct!=(facet*)0xfefefefe)
-+ {
-+ if(SearchListAct->next!=(facet*)0xfefefefe){
-+ #endif
-+#else
-+ while(SearchListAct!=NULL)
-+ {
-+ if(SearchListAct->next!=NULL){
-+#endif
-+ SearchListAct->next->prev = SearchListAct;
-+ }
-+ SearchListAct = SearchListAct->next;
-+ }
-+ SearchListAct = SearchListRoot; //Set to beginning of List
-+
-+// fAct = gcAct->facetPtr;//???
-+ gcAct->writeConeToFile(*gcAct);
-+ /*End of initialisation*/
-+
-+ fAct = SearchListAct;
-+ /*2nd step
-+ Choose a facet from SearchList, flip it and forget the previous cone
-+ We always choose the first facet from SearchList as facet to be flipped
-+ */
-+ while( (SearchListAct!=NULL))//&& counter<490)
-+ {//NOTE See to it that the cone is only changed after ALL facets have been flipped!
-+ fAct = SearchListAct;
-+ while(fAct!=NULL)
-+// while( (fAct->getUCN() == fAct->next->getUCN()) )
-+ { //Since SLA should only contain flippables there should be no need to check for that
-+ gcAct->flip2(gcAct->gcBasis,fAct);
-+ //NOTE rCopy needed?
-+ ring rTmp=rCopy(fAct->flipRing);
-+ rComplete(rTmp);
-+ rChangeCurrRing(rTmp);
-+ gcone *gcTmp = new gcone(*gcAct,*fAct);//copy constructor!
-+ /* Now gcTmp->gcBasis and gcTmp->baseRing are set from fAct->flipGB and fAct->flipRing.
-+ * Since we come at most once across a given facet from gcAct->facetPtr we can delete them.
-+ * NOTE: Can this cause trouble with the destructor?
-+ * Answer: Yes it bloody well does!
-+ * However I'd like to delete this data here, since if we have a cone with many many facets it
-+ * should pay to get rid of the flipGB as soon as possible.
-+ * Destructor must be equipped with necessary checks.
-+ */
-+ idDelete((ideal *)&fAct->flipGB);
-+ rDelete(fAct->flipRing);
-+ gcTmp->getConeNormals(gcTmp->gcBasis/*, FALSE*/);
-+// gcTmp->getCodim2Normals(*gcTmp);
-+ gcTmp->getExtremalRays(*gcTmp);
-+ //NOTE Order rays lex here
-+ gcTmp->orderRays();
-+// //NOTE If flip2 is used we need to get an interior point of gcTmp
-+// // and replace gcTmp->baseRing with an appropriate ring with only
-+// // one weight
-+// gcTmp->interiorPoint2();
-+ gcTmp->replaceDouble_ringorder_a_ByASingleOne();
-+ //gcTmp->ddFacets should not be needed anymore, so
-+ dd_FreeMatrix(gcTmp->ddFacets);
-+#ifndef NDEBUG
-+// gcTmp->showFacets(1);
-+#endif
-+ /*add facets to SLA here*/
-+#ifdef SHALLOW
-+ #ifndef NDEBUG
-+ printf("fActUCN before enq2: %i\n",fAct->getUCN());
-+ #endif
-+ facet *tmp;
-+ tmp=gcTmp->enqueue2(SearchListRoot);
-+ #ifndef NDEBUG
-+ printf("\nheadUCN=%i\n",tmp->getUCN());
-+ printf("fActUCN after enq2: %i\n",fAct->getUCN());
-+ #endif
-+ SearchListRoot=tmp;
-+ //SearchListRoot=gcTmp->enqueue2/*NewFacets*/(SearchListRoot);
-+#else
-+ SearchListRoot=gcTmp->enqueueNewFacets(SearchListRoot);
-+#endif //ifdef SHALLOW
-+// gcTmp->writeConeToFile(*gcTmp);
-+ if(gfanHeuristic==1)
-+ {
-+ gcTmp->writeConeToFile(*gcTmp);
-+ idDelete((ideal*)&gcTmp->gcBasis);//Whonder why?
-+ rDelete(gcTmp->baseRing);
-+ }
-+#ifndef NDEBUG
-+ if(SearchListRoot!=NULL)
-+ showSLA(*SearchListRoot);
-+#endif
-+ rChangeCurrRing(gcAct->baseRing);
-+ rDelete(rTmp);
-+ //doubly linked for easier removal
-+ gcTmp->prev = gcPtr;
-+ gcPtr->next=gcTmp;
-+ gcPtr=gcPtr->next;
-+ //Cleverly disguised exit condition follows
-+ if(fAct->getUCN() == fAct->next->getUCN())
-+ {
-+ printf("Switching UCN from %i to %i\n",fAct->getUCN(),fAct->next->getUCN());
-+ fAct=fAct->next;
-+ }
-+ else
-+ {
-+ //rDelete(gcAct->baseRing);
-+// printf("break\n");
-+ break;
-+ }
-+// fAct=fAct->next;
-+ }//while( ( (fAct->next!=NULL) && (fAct->getUCN()==fAct->next->getUCN() ) ) );
-+ //Search for cone with smallest UCN
-+#ifndef NDEBUG
-+ #if SIZEOF_LONG==8 //64 bit
-+ while(gcNext!=(gcone * const)0xfbfbfbfbfbfbfbfb && SearchListRoot!=NULL)
-+ #elif SIZEOF_LONG == 4
-+ while(gcNext!=(gcone * const)0xfbfbfbfb && SearchListRoot!=NULL)
-+ #endif
-+#endif
-+#ifdef NDEBUG
-+ while(gcNext!=NULL && SearchListRoot!=NULL)
-+#endif
-+ {
-+ if( gcNext->getUCN() == SearchListRoot->getUCN() )
-+ {
-+ if(gfanHeuristic==0)
-+ {
-+ gcAct = gcNext;
-+ //Seems better to not to use rCopy here
-+// rAct=rCopy(gcAct->baseRing);
-+ rAct=gcAct->baseRing;
-+ rComplete(rAct);
-+ rChangeCurrRing(rAct);
-+ break;
-+ }
-+ else if(gfanHeuristic==1)
-+ {
-+ gcone *gcDel;
-+ gcDel = gcAct;
-+ gcAct = gcNext;
-+ //Read st00f from file &
-+ //implant the GB into gcAct
-+ readConeFromFile(gcAct->getUCN(), gcAct);
-+ //Kill the baseRing but ONLY if it is not the ring the computation started in!
-+// if(gcDel->getUCN()!=1)//WTF!? This causes the Mandelbug in gcone::areEqual(facet, facet)
-+// rDelete(gcDel->baseRing);
-+// rAct=rCopy(gcAct->baseRing);
-+ /*The ring change occurs in readConeFromFile, so as to
-+ assure that gcAct->gcBasis belongs to the right ring*/
-+ rAct=gcAct->baseRing;
-+ rComplete(rAct);
-+ rChangeCurrRing(rAct);
-+ break;
-+ }
-+ }
-+ else if(gcNext->getUCN() < SearchListRoot->getUCN() )
-+ {
-+ idDelete( (ideal*)&gcNext->gcBasis );
-+// rDelete(gcNext->baseRing);//TODO Why does this crash?
-+ }
-+ /*else
-+ {
-+ if(gfanHeuristic==1)
-+ {
-+ gcone *gcDel;
-+ gcDel = gcNext;
-+ if(gcDel->getUCN()!=1)
-+ rDelete(gcDel->baseRing);
-+ }
-+ }*/
-+ gcNext = gcNext->next;
-+ }
-+ UCNcounter++;
-+ SearchListAct = SearchListRoot;
-+ }
-+ printf("\nFound %i cones - terminating\n", counter);
-+}//void noRevS(gcone &gc)
-+
-+
-+/** \brief Make a set of rational vectors into integers
-+ *
-+ * We compute the lcm of the denominators and multiply with this to get integer values.
-+ * If the gcd of the nominators > 1 we divide by the gcd => primitive vector.
-+ * Expects a new int64vec as 3rd parameter
-+ * \param dd_MatrixPtr,int64vec
-+ */
-+void gcone::makeInt(const dd_MatrixPtr &M, const int line, int64vec &n)
-+{
-+ mpz_t *denom = new mpz_t[this->numVars];
-+ for(int ii=0;ii<this->numVars;ii++)
-+ {
-+ mpz_init_set_str(denom[ii],"0",10);
-+ }
-+
-+ mpz_t kgV,tmp;
-+ mpz_init(kgV);
-+ mpz_init(tmp);
-+
-+ for (int ii=0;ii<(M->colsize)-1;ii++)
-+ {
-+ mpz_t z;
-+ mpz_init(z);
-+ mpq_get_den(z,M->matrix[line-1][ii+1]);
-+ mpz_set( denom[ii], z);
-+ mpz_clear(z);
-+ }
-+
-+ /*Compute lcm of the denominators*/
-+ mpz_set(tmp,denom[0]);
-+ for (int ii=0;ii<(M->colsize)-1;ii++)
-+ {
-+ mpz_lcm(kgV,tmp,denom[ii]);
-+ mpz_set(tmp,kgV);
-+ }
-+ mpz_clear(tmp);
-+ /*Multiply the nominators by kgV*/
-+ mpq_t qkgV,res;
-+ mpq_init(qkgV);
-+ mpq_set_str(qkgV,"1",10);
-+ mpq_canonicalize(qkgV);
-+
-+ mpq_init(res);
-+ mpq_set_str(res,"1",10);
-+ mpq_canonicalize(res);
-+
-+ mpq_set_num(qkgV,kgV);
-+
-+// mpq_canonicalize(qkgV);
-+// int ggT=1;
-+ for (int ii=0;ii<(M->colsize)-1;ii++)
-+ {
-+ mpq_mul(res,qkgV,M->matrix[line-1][ii+1]);
-+ n[ii]=(int64)mpz_get_d(mpq_numref(res));
-+// ggT=int64gcd(ggT,n[ii]);
-+ }
-+ int64 ggT=n[0];
-+ for(int ii=0;ii<this->numVars;ii++)
-+ ggT=int64gcd(ggT,n[ii]);
-+ //Normalisation
-+ if(ggT>1)
-+ {
-+ for(int ii=0;ii<this->numVars;ii++)
-+ n[ii] /= ggT;
-+ }
-+ delete [] denom;
-+ mpz_clear(kgV);
-+ mpq_clear(qkgV); mpq_clear(res);
-+
-+}
-+/**
-+ * For all codim-2-facets we compute the gcd of the components of the facet normal and
-+ * divide it out. Thus we get a normalized representation of each
-+ * (codim-2)-facet normal, i.e. a primitive vector
-+ * Actually we now also normalize the facet normals.
-+ */
-+// void gcone::normalize()
-+// {
-+// int *ggT = new int;
-+// *ggT=1;
-+// facet *fAct;
-+// facet *codim2Act;
-+// fAct = this->facetPtr;
-+// codim2Act = fAct->codim2Ptr;
-+// while(fAct!=NULL)
-+// {
-+// int64vec *fNormal;
-+// fNormal = fAct->getFacetNormal();
-+// int *ggT = new int;
-+// *ggT=1;
-+// for(int ii=0;ii<this->numVars;ii++)
-+// {
-+// *ggT=intgcd((*ggT),(*fNormal)[ii]);
-+// }
-+// if(*ggT>1)//We only need to do this if the ggT is non-trivial
-+// {
-+// // int64vec *fCopy = fAct->getFacetNormal();
-+// for(int ii=0;ii<this->numVars;ii++)
-+// (*fNormal)[ii] = ((*fNormal)[ii])/(*ggT);
-+// fAct->setFacetNormal(fNormal);
-+// }
-+// delete fNormal;
-+// delete ggT;
-+// /*And now for the codim2*/
-+// while(codim2Act!=NULL)
-+// {
-+// int64vec *n;
-+// n=codim2Act->getFacetNormal();
-+// int *ggT=new int;
-+// *ggT=1;
-+// for(int ii=0;ii<this->numVars;ii++)
-+// {
-+// *ggT = intgcd((*ggT),(*n)[ii]);
-+// }
-+// if(*ggT>1)
-+// {
-+// for(int ii=0;ii<this->numVars;ii++)
-+// {
-+// (*n)[ii] = ((*n)[ii])/(*ggT);
-+// }
-+// codim2Act->setFacetNormal(n);
-+// }
-+// codim2Act = codim2Act->next;
-+// delete n;
-+// delete ggT;
-+// }
-+// fAct = fAct->next;
-+// }
-+// }
-+
-+/** \brief Enqueue new facets into the searchlist
-+ * The searchlist (SLA for short) is implemented as a FIFO
-+ * Checks are done as follows:
-+ * 1) Check facet fAct against all facets in SLA for parallelity. If it is not parallel to any one add it.
-+ * 2) If it is parallel compare the codim2 facets. If they coincide the facets are equal and we delete the
-+ * facet from SLA and do not add fAct.
-+ * It may very well happen, that SLA=\f$ \emptyset \f$ but we do not have checked all fActs yet. In this case we
-+ * can be sure, that none of the facets that are still there already were in SLA once, so we just dump them into SLA.
-+ * Takes ptr to search list root
-+ * Returns a pointer to new first element of Searchlist
-+ */
-+facet * gcone::enqueueNewFacets(facet *f)
-+{
-+#ifdef gfanp
-+ timeval start, end;
-+ gettimeofday(&start, 0);
-+#endif
-+ facet *slHead;
-+ slHead = f;
-+ facet *slAct; //called with f=SearchListRoot
-+ slAct = f;
-+ facet *slEnd; //Pointer to end of SLA
-+ slEnd = f;
-+// facet *slEndStatic; //marks the end before a new facet is added
-+ facet *fAct;
-+ fAct = this->facetPtr;
-+ facet *codim2Act;
-+ codim2Act = this->facetPtr->codim2Ptr;
-+ facet *sl2Act;
-+ sl2Act = f->codim2Ptr;
-+ /** Pointer to a facet that will be deleted */
-+ volatile facet *deleteMarker;
-+ deleteMarker = NULL;
-+
-+ /** \brief Flag to mark a facet that might be added
-+ * The following case may occur:
-+ * A facet fAct is found to be parallel but not equal to the current facet slAct from SLA.
-+ * This does however not mean that there does not exist a facet behind the current slAct that is actually equal
-+ * to fAct. In this case we set the boolean flag maybe to TRUE. If we encounter an equality lateron, it is reset to
-+ * FALSE and the according slAct is deleted.
-+ * If slAct->next==NULL AND maybe==TRUE we know, that fAct must be added
-+ */
-+
-+ /**A facet was removed, lengthOfSearchlist-- thus we must not rely on
-+ * if(notParallelCtr==lengthOfSearchList) but rather
-+ * if( (notParallelCtr==lengthOfSearchList && removalOccured==FALSE)
-+ */
-+ volatile bool removalOccured=FALSE;
-+ while(slEnd->next!=NULL)
-+ {
-+ slEnd=slEnd->next;
-+ }
-+ /*1st step: compare facetNormals*/
-+ while(fAct!=NULL)
-+ {
-+ if(fAct->isFlippable==TRUE)
-+ {
-+ int64vec *fNormal=NULL;
-+ fNormal=fAct->getFacetNormal();
-+ slAct = slHead;
-+ /*If slAct==NULL and fAct!=NULL
-+ we just copy all remaining facets into SLA*/
-+ if(slAct==NULL)
-+ {
-+ facet *fCopy;
-+ fCopy = fAct;
-+ while(fCopy!=NULL)
-+ {
-+ if(fCopy->isFlippable==TRUE)//We must assure fCopy is also flippable
-+ {
-+ if(slAct==NULL)
-+ {
-+ slAct = new facet(*fCopy/*,TRUE*/);//copy constructor
-+ slHead = slAct;
-+ }
-+ else
-+ {
-+ slAct->next = new facet(*fCopy/*,TRUE*/);
-+ slAct = slAct->next;
-+ }
-+ }
-+ fCopy = fCopy->next;
-+ }
-+ break;//Where does this lead to?
-+ }
-+ /*End of dumping into SLA*/
-+ while(slAct!=NULL)
-+ {
-+ int64vec *slNormal=NULL;
-+ removalOccured=FALSE;
-+ slNormal = slAct->getFacetNormal();
-+#ifndef NDEBUG
-+ printf("Checking facet (");fNormal->show(1,1);printf(") against (");slNormal->show(1,1);printf(")\n");
-+#endif
-+// if( (areEqual(fAct,slAct) && (!areEqual2(fAct,slAct)) ))
-+// exit(-1);
-+ if(areEqual2(fAct,slAct))
-+ {
-+ deleteMarker = slAct;
-+ if(slAct==slHead)
-+ {
-+ slHead = slAct->next;
-+ if(slHead!=NULL)
-+ slHead->prev = NULL;
-+ }
-+ else if (slAct==slEnd)
-+ {
-+ slEnd=slEnd->prev;
-+ slEnd->next = NULL;
-+ }
-+ else
-+ {
-+ slAct->prev->next = slAct->next;
-+ slAct->next->prev = slAct->prev;
-+ }
-+ removalOccured=TRUE;
-+ gcone::lengthOfSearchList--;
-+ if(deleteMarker!=NULL)
-+ {
-+// delete deleteMarker;
-+// deleteMarker=NULL;
-+ }
-+#ifndef NDEBUG
-+ printf("Removing (");fNormal->show(1,1);printf(") from list\n");
-+#endif
-+ delete slNormal;
-+ break;//leave the while loop, since we found fAct=slAct thus delete slAct and do not add fAct
-+ }
-+ slAct = slAct->next;
-+ /* NOTE The following lines must not be here but rather called inside the if-block above.
-+ Otherwise results get crappy. Unfortunately there are two slAct=slAct->next calls now,
-+ (not nice!) but since they are in seperate branches of the if-statement there should not
-+ be a way it gets called twice thus ommiting one facet:
-+ slAct = slAct->next;*/
-+ if(deleteMarker!=NULL)
-+ {
-+// delete deleteMarker;
-+// deleteMarker=NULL;
-+ }
-+ delete slNormal;
-+ //if slAct was marked as to be deleted, delete it here!
-+ }//while(slAct!=NULL)
-+ if(removalOccured==FALSE)
-+ {
-+#ifndef NDEBUG
-+// cout << "Adding facet (";fNormal->show(1,0);cout << ") to SLA " << endl;
-+#endif
-+ //Add fAct to SLA
-+ facet *marker;
-+ marker = slEnd;
-+ facet *f2Act;
-+ f2Act = fAct->codim2Ptr;
-+
-+ slEnd->next = new facet();
-+ slEnd = slEnd->next;//Update slEnd
-+ facet *slEndCodim2Root;
-+ facet *slEndCodim2Act;
-+ slEndCodim2Root = slEnd->codim2Ptr;
-+ slEndCodim2Act = slEndCodim2Root;
-+
-+ slEnd->setUCN(this->getUCN());
-+ slEnd->isFlippable = TRUE;
-+ slEnd->setFacetNormal(fNormal);
-+ //NOTE Add interior point here
-+ //This is ugly but needed for flip2
-+ //Better: have slEnd->interiorPoint point to fAct->interiorPoint
-+ //NOTE Only reference -> c.f. copy constructor
-+ //slEnd->setInteriorPoint(fAct->getInteriorPoint());
-+ slEnd->interiorPoint = fAct->interiorPoint;
-+ slEnd->prev = marker;
-+ //Copy codim2-facets
-+ //int64vec *f2Normal=new int64vec(this->numVars);
-+ while(f2Act!=NULL)
-+ {
-+ int64vec *f2Normal;
-+ f2Normal=f2Act->getFacetNormal();
-+ if(slEndCodim2Root==NULL)
-+ {
-+ slEndCodim2Root = new facet(2);
-+ slEnd->codim2Ptr = slEndCodim2Root;
-+ slEndCodim2Root->setFacetNormal(f2Normal);
-+ slEndCodim2Act = slEndCodim2Root;
-+ }
-+ else
-+ {
-+ slEndCodim2Act->next = new facet(2);
-+ slEndCodim2Act = slEndCodim2Act->next;
-+ slEndCodim2Act->setFacetNormal(f2Normal);
-+ }
-+ f2Act = f2Act->next;
-+ delete f2Normal;
-+ }
-+ gcone::lengthOfSearchList++;
-+ }//if( (notParallelCtr==lengthOfSearchList && removalOccured==FALSE) ||
-+ fAct = fAct->next;
-+ delete fNormal;
-+// delete slNormal;
-+ }//if(fAct->isFlippable==TRUE)
-+ else
-+ {
-+ fAct = fAct->next;
-+ }
-+ if(gcone::maxSize<gcone::lengthOfSearchList)
-+ gcone::maxSize= gcone::lengthOfSearchList;
-+ }//while(fAct!=NULL)
-+#ifdef gfanp
-+ gettimeofday(&end, 0);
-+ time_enqueue += (end.tv_sec - start.tv_sec + 1e-6*(end.tv_usec - start.tv_usec));
-+#endif
-+ return slHead;
-+}//addC2N
-+
-+/** Enqueuing using shallow copies*/
-+facet * gcone::enqueue2(facet *f)
-+{
-+ assert(f!=NULL);
-+#ifdef gfanp
-+ timeval start, end;
-+ gettimeofday(&start, 0);
-+#endif
-+ facet *slHead;
-+ slHead = f;
-+ facet *slAct; //called with f=SearchListRoot
-+ slAct = f;
-+ static facet *slEnd; //Pointer to end of SLA
-+ if(slEnd==NULL)
-+ slEnd = f;
-+
-+ facet *fAct;
-+ fAct = this->facetPtr;//New facets to compare
-+ facet *codim2Act;
-+ codim2Act = this->facetPtr->codim2Ptr;
-+ volatile bool removalOccured=FALSE;
-+ while(slEnd->next!=NULL)
-+ {
-+ slEnd=slEnd->next;
-+ }
-+ while(fAct!=NULL)
-+ {
-+ if(fAct->isFlippable)
-+ {
-+ facet *fDeleteMarker=NULL;
-+ slAct = slHead;
-+ if(slAct==NULL)
-+ {
-+ printf("Zero length SLA\n");
-+ facet *fCopy;
-+ fCopy = fAct;
-+ while(fCopy!=NULL)
-+ {
-+ if(fCopy->isFlippable==TRUE)//We must assure fCopy is also flippable
-+ {
-+ if(slAct==NULL)
-+ {
-+ slAct = slAct->shallowCopy(*fCopy);//shallow copy constructor
-+ slHead = slAct;
-+ }
-+ else
-+ {
-+ slAct->next = slAct->shallowCopy(*fCopy);
-+ slAct = slAct->next;
-+ }
-+ }
-+ fCopy = fCopy->next;
-+ }
-+ break; //WTF?
-+ }
-+ /*Comparison starts here*/
-+ while(slAct!=NULL)
-+ {
-+ removalOccured=FALSE;
-+#ifndef NDEBUG
-+ printf("Checking facet (");fAct->fNormal->show(1,1);printf(") against (");slAct->fNormal->show(1,1);printf(")\n");
-+#endif
-+ if(areEqual2(fAct,slAct))
-+ {
-+ fDeleteMarker=slAct;
-+ if(slAct==slHead)
-+ {
-+// fDeleteMarker=slHead;
-+// printf("headUCN at enq=%i\n",slHead->getUCN());
-+ slHead = slAct->next;
-+// printf("headUCN at enq=%i\n",slHead->getUCN());
-+ if(slHead!=NULL)
-+ {
-+ slHead->prev = NULL;
-+ }
-+ fDeleteMarker->shallowDelete();
-+ //delete fDeleteMarker;//NOTE this messes up fAct in noRevS!
-+// printf("headUCN at enq=%i\n",slHead->getUCN());
-+ }
-+ else if (slAct==slEnd)
-+ {
-+ slEnd=slEnd->prev;
-+ slEnd->next = NULL;
-+ fDeleteMarker->shallowDelete();
-+ delete(fDeleteMarker);
-+ }
-+ else
-+ {
-+ slAct->prev->next = slAct->next;
-+ slAct->next->prev = slAct->prev;
-+ fDeleteMarker->shallowDelete();
-+ delete(fDeleteMarker);
-+ }
-+ removalOccured=TRUE;
-+ gcone::lengthOfSearchList--;
-+#ifndef NDEBUG
-+printf("Removing (");fAct->fNormal->show(1,1);printf(") from list\n");
-+#endif
-+ break;//leave the while loop, since we found fAct=slAct thus delete slAct and do not add fAct
-+ }
-+ slAct = slAct->next;
-+ }//while(slAct!=NULL)
-+ if(removalOccured==FALSE)
-+ {
-+ facet *marker=slEnd;
-+ slEnd->next = fAct->shallowCopy(*fAct);
-+ slEnd = slEnd->next;
-+ slEnd->prev=marker;
-+ gcone::lengthOfSearchList++;
-+ }
-+ fAct = fAct->next;
-+// if(fDeleteMarker!=NULL)
-+// {
-+// fDeleteMarker->shallowDelete();
-+// delete(fDeleteMarker);
-+// fDeleteMarker=NULL;
-+// }
-+ }
-+ else
-+ fAct = fAct->next;
-+ }//while(fAct!=NULL)
-+
-+#ifdef gfanp
-+ gettimeofday(&end, 0);
-+ time_enqueue += (end.tv_sec - start.tv_sec + 1e-6*(end.tv_usec - start.tv_usec));
-+#endif
-+// printf("headUCN at enq=%i\n",slHead->getUCN());
-+ return slHead;
-+}
-+
-+/**
-+* During flip2 every gc->baseRing gets two ringorder_a
-+* To avoid having an awful lot of those in the end we endow
-+* gc->baseRing by a suitable ring with (a,dp,C) and copy all
-+* necessary stuff over
-+* But first we will try to just do an inplace exchange and copying only the
-+* gc->gcBasis
-+*/
-+void gcone::replaceDouble_ringorder_a_ByASingleOne()
-+{
-+ ring srcRing=currRing;
-+ ring replacementRing=rCopy0((ring)this->baseRing);
-+ /*We assume we have (a(),a(),dp) here*/
-+ omFree(replacementRing->order);
-+ replacementRing->order =(int *)omAlloc0(4*sizeof(int/*64*/));
-+ omFree(replacementRing->block0);
-+ replacementRing->block0=(int *)omAlloc0(4*sizeof(int/*64*/));
-+ omFree(replacementRing->block1);
-+ replacementRing->block1=(int *)omAlloc0(4*sizeof(int/*64*/));
-+ omfree(replacementRing->wvhdl);
-+ replacementRing->wvhdl =(int **)omAlloc0(4*sizeof(int/*64*/**));
-+
-+ replacementRing->order[0]=ringorder_a/*64*/;
-+ replacementRing->block0[0]=1;
-+ replacementRing->block1[0]=replacementRing->N;
-+
-+ replacementRing->order[1]=ringorder_dp;
-+ replacementRing->block0[1]=1;
-+ replacementRing->block1[1]=replacementRing->N;
-+
-+ replacementRing->order[2]=ringorder_C;
-+
-+ int64vec *ivw = this->getIntPoint(TRUE);//returns a reference
-+// assert(this->ivIntPt);
-+ int length=ivw->length();
-+ int/*64*/ *A=(int/*64*/ *)omAlloc0(length*sizeof(int/*64*/));
-+ for (int jj=0;jj<length;jj++)
-+ {
-+ A[jj]=(*ivw)[jj];
-+ if((*ivw)[jj]>=INT_MAX) WarnS("A[jj] exceeds INT_MAX in gcone::replaceDouble_ringorder_a_ByASingleOne!\n");
-+ }
-+ //delete ivw; //Not needed if this->getIntPoint(TRUE)
-+ replacementRing->wvhdl[0]=(int *)A;
-+ replacementRing->block1[0]=length;
-+ /*Finish*/
-+ rComplete(replacementRing);
-+ rChangeCurrRing(replacementRing);
-+ ideal temporaryGroebnerBasis=idrCopyR(this->gcBasis,this->baseRing);
-+ rDelete(this->baseRing);
-+ this->baseRing=rCopy(replacementRing);
-+ this->gcBasis=idCopy(temporaryGroebnerBasis);
-+ /*And back to where we came from*/
-+ rChangeCurrRing(srcRing);
-+ idDelete( (ideal*)&temporaryGroebnerBasis );
-+ rDelete(replacementRing);
-+}
-+
-+/** \brief Compute the gcd of two ints
-+ */
-+static int64 int64gcd(const int64 &a, const int64 &b)
-+{
-+ int64 r, p=a, q=b;
-+ if(p < 0)
-+ p = -p;
-+ if(q < 0)
-+ q = -q;
-+ while(q != 0)
-+ {
-+ r = p % q;
-+ p = q;
-+ q = r;
-+ }
-+ return p;
-+}
-+
-+static int intgcd(const int &a, const int &b)
-+{
-+ int r, p=a, q=b;
-+ if(p < 0)
-+ p = -p;
-+ if(q < 0)
-+ q = -q;
-+ while(q != 0)
-+ {
-+ r = p % q;
-+ p = q;
-+ q = r;
-+ }
-+ return p;
-+}
-+
-+/** \brief Construct a dd_MatrixPtr from a cone's list of facets
-+ * NO LONGER USED
-+ */
-+// inline dd_MatrixPtr gcone::facets2Matrix(const gcone &gc)
-+// {
-+// facet *fAct;
-+// fAct = gc.facetPtr;
-+//
-+// dd_MatrixPtr M;
-+// dd_rowrange ddrows;
-+// dd_colrange ddcols;
-+// ddcols=(this->numVars)+1;
-+// ddrows=this->numFacets;
-+// dd_NumberType numb = dd_Integer;
-+// M=dd_CreateMatrix(ddrows,ddcols);
-+//
-+// int jj=0;
-+//
-+// while(fAct!=NULL)
-+// {
-+// int64vec *comp;
-+// comp = fAct->getFacetNormal();
-+// for(int ii=0;ii<this->numVars;ii++)
-+// {
-+// dd_set_si(M->matrix[jj][ii+1],(*comp)[ii]);
-+// }
-+// jj++;
-+// delete comp;
-+// fAct=fAct->next;
-+// }
-+// return M;
-+// }
-+
-+/** \brief Write information about a cone into a file on disk
-+ *
-+ * This methods writes the information needed for the "second" method into a file.
-+ * The file's is divided in sections containing information on
-+ * 1) the ring
-+ * 2) the cone's Groebner Basis
-+ * 3) the cone's facets
-+ * Each line contains exactly one date
-+ * Each section starts with its name in CAPITALS
-+ */
-+void gcone::writeConeToFile(const gcone &gc, bool usingIntPoints)
-+{
-+ int UCN=gc.UCN;
-+ stringstream ss;
-+ ss << UCN;
-+ string UCNstr = ss.str();
-+
-+ string prefix="/tmp/Singular/cone";
-+// string prefix="./"; //crude hack -> run tests in separate directories
-+ string suffix=".sg";
-+ string filename;
-+ filename.append(prefix);
-+ filename.append(UCNstr);
-+ filename.append(suffix);
-+
-+// int thisPID = getpid();
-+// ss << thisPID;
-+// string strPID = ss.str();
-+// string prefix="./";
-+
-+ ofstream gcOutputFile(filename.c_str());
-+ assert(gcOutputFile);
-+ facet *fAct;
-+ fAct = gc.facetPtr;
-+ facet *f2Act;
-+ f2Act=fAct->codim2Ptr;
-+
-+ char *ringString = rString(gc.baseRing);
-+
-+ if (!gcOutputFile)
-+ {
-+ WerrorS("Error opening file for writing in writeConeToFile\n");
-+ }
-+ else
-+ {
-+ gcOutputFile << "UCN" << endl;
-+ gcOutputFile << this->UCN << endl;
-+ gcOutputFile << "RING" << endl;
-+ gcOutputFile << ringString << endl;
-+ gcOutputFile << "GCBASISLENGTH" << endl;
-+ gcOutputFile << IDELEMS(gc.gcBasis) << endl;
-+ //Write this->gcBasis into file
-+ gcOutputFile << "GCBASIS" << endl;
-+ for (int ii=0;ii<IDELEMS(gc.gcBasis);ii++)
-+ {
-+ gcOutputFile << p_String((poly)gc.gcBasis->m[ii],gc.baseRing) << endl;
-+ }
-+
-+ gcOutputFile << "FACETS" << endl;
-+
-+ while(fAct!=NULL)
-+ {
-+ const int64vec *iv=fAct->getRef2FacetNormal();
-+// iv=fAct->getRef2FacetNormal();//->getFacetNormal();
-+ f2Act=fAct->codim2Ptr;
-+ for (int ii=0;ii<iv->length();ii++)
-+ {
-+// if (ii<iv->length()-1)
-+// gcOutputFile << (*iv)[ii] << ",";
-+// else
-+// gcOutputFile << (*iv)[ii] << " ";
-+ gcOutputFile << (*iv)[ii];
-+ (ii<iv->length()-1) ? gcOutputFile << "," : gcOutputFile << " ";
-+ }
-+ //delete iv;
-+ while(f2Act!=NULL)
-+ {
-+ const int64vec *iv2;
-+ iv2=f2Act->getRef2FacetNormal();
-+ for(int jj=0;jj<iv2->length();jj++)
-+ {
-+// if (jj<iv2->length()-1)
-+// gcOutputFile << (*iv2)[jj] << ",";
-+// else
-+// gcOutputFile << (*iv2)[jj] << " ";
-+ gcOutputFile << (*iv2)[jj];
-+ (jj<iv2->length()-1) ? gcOutputFile << "," : gcOutputFile << " ";
-+ }
-+ f2Act = f2Act->next;
-+ }
-+ gcOutputFile << endl;
-+ fAct=fAct->next;
-+ }
-+ gcOutputFile.close();
-+ }
-+ delete [] ringString;
-+
-+}//writeConeToFile(gcone const &gc)
-+
-+/** \brief Reads a cone from a file identified by its number
-+* ||depending on whether flip or flip2 is used, switch the flag flipFlag
-+* ||defaults to 0 => flip
-+* ||1 => flip2
-+*/
-+void gcone::readConeFromFile(int UCN, gcone *gc)
-+{
-+ //int UCN=gc.UCN;
-+ stringstream ss;
-+ ss << UCN;
-+ string UCNstr = ss.str();
-+ int gcBasisLength=0;
-+ size_t found; //used for find_first_(not)_of
-+
-+ string prefix="/tmp/Singular/cone";
-+ string suffix=".sg";
-+ string filename;
-+ filename.append(prefix);
-+ filename.append(UCNstr);
-+ filename.append(suffix);
-+
-+ ifstream gcInputFile(filename.c_str(), ifstream::in);
-+
-+ ring saveRing=currRing;
-+ //Comment the following if you uncomment the if(line=="RING") part below
-+// rChangeCurrRing(gc->baseRing);
-+
-+ while( !gcInputFile.eof() )
-+ {
-+ string line;
-+ getline(gcInputFile,line);
-+ if(line=="RING")
-+ {
-+ getline(gcInputFile,line);
-+ found = line.find("a(");
-+ line.erase(0,found+2);
-+ string strweight;
-+ strweight=line.substr(0,line.find_first_of(")"));
-+
-+ int64vec *iv=new int64vec(this->numVars);//
-+ for(int ii=0;ii<this->numVars;ii++)
-+ {
-+ string weight;
-+ weight=line.substr(0,line.find_first_of(",)"));
-+ char *w=new char[weight.size()+1];
-+ strcpy(w,weight.c_str());
-+ (*iv)[ii]=atol(w/*weight.c_str()*/);//Better to long. Weight bound in Singular:2147483647
-+ delete[] w;
-+ line.erase(0,line.find_first_of(",)")+1);
-+ }
-+ found = line.find("a(");
-+
-+ ring newRing;
-+ if(currRing->order[0]!=ringorder_a/*64*/)
-+ {
-+ newRing=rCopyAndAddWeight(currRing,iv);
-+ }
-+ else
-+ {
-+ newRing=rCopy0(currRing);
-+ int length=this->numVars;
-+ int *A=(int *)omAlloc0(length*sizeof(int));
-+ for(int jj=0;jj<length;jj++)
-+ {
-+ A[jj]=(*iv)[jj];
-+ }
-+ omFree(newRing->wvhdl[0]);
-+ newRing->wvhdl[0]=(int*)A;
-+ newRing->block1[0]=length;
-+ }
-+ delete iv;
-+ rComplete(newRing);
-+ gc->baseRing=rCopy(newRing);
-+ rDelete(newRing);
-+ rComplete(gc->baseRing);
-+ if(currRing!=gc->baseRing)
-+ rChangeCurrRing(gc->baseRing);
-+ }
-+
-+ if(line=="GCBASISLENGTH")
-+ {
-+ string strGcBasisLength;
-+ getline(gcInputFile, line);
-+ strGcBasisLength = line;
-+ char *s=new char[strGcBasisLength.size()+1];
-+ strcpy(s,strGcBasisLength.c_str());
-+ int size=atoi(s/*strGcBasisLength.c_str()*/);
-+ delete[] s;
-+ gcBasisLength=size;
-+ gc->gcBasis=idInit(size,1);
-+ }
-+ if(line=="GCBASIS")
-+ {
-+ for(int jj=0;jj<gcBasisLength;jj++)
-+ {
-+ getline(gcInputFile,line);
-+ //magically convert strings into polynomials
-+ //polys.cc:p_Read
-+ //check until first occurance of + or -
-+ //data or c_str
-+// poly strPoly;//=pInit();//Ought to be inside the while loop, but that will eat your memory
-+ poly resPoly=pInit(); //The poly to be read in
-+ while(!line.empty())
-+ {
-+ poly strPoly;//=pInit();
-+
-+ string strMonom, strCoeff, strCoeffNom, strCoeffDenom;
-+ bool hasCoeffInQ = FALSE; //does the polynomial have rational coeff?
-+ bool hasNegCoeff = FALSE; //or a negative one?
-+ found = line.find_first_of("+-"); //get the first monomial
-+ string tmp;
-+ tmp=line[found];
-+// if(found!=0 && (tmp.compare("-")==0) )
-+// hasNegCoeff = TRUE; //We have a coeff < 0
-+ if(found==0)
-+ {
-+ if(tmp.compare("-")==0)
-+ hasNegCoeff = TRUE;
-+ line.erase(0,1); //remove leading + or -
-+ found = line.find_first_of("+-"); //adjust found
-+ }
-+ strMonom = line.substr(0,found);
-+ line.erase(0,found);
-+ number nCoeff=nInit(1);
-+ number nCoeffNom=nInit(1);
-+ number nCoeffDenom=nInit(1);
-+ found = strMonom.find_first_of("/");
-+ if(found!=string::npos) //i.e. "/" exists in strMonom
-+ {
-+ hasCoeffInQ = TRUE;
-+ strCoeffNom=strMonom.substr(0,found);
-+ strCoeffDenom=strMonom.substr(found+1,strMonom.find_first_not_of("1234567890",found+1));
-+ strMonom.erase(0,found);
-+ strMonom.erase(0,strMonom.find_first_not_of("1234567890/"));
-+ char *Nom=new char[strCoeffNom.size()+1];
-+ char *Denom=new char[strCoeffDenom.size()+1];
-+ strcpy(Nom,strCoeffNom.c_str());
-+ strcpy(Denom,strCoeffDenom.c_str());
-+ nRead(Nom/*strCoeffNom.c_str()*/, &nCoeffNom);
-+ nRead(Denom/*strCoeffDenom.c_str()*/, &nCoeffDenom);
-+ delete[] Nom;
-+ delete[] Denom;
-+ }
-+ else
-+ {
-+ found = strMonom.find_first_not_of("1234567890");
-+ strCoeff = strMonom.substr(0,found);
-+ if(!strCoeff.empty())
-+ {
-+ char *coeff = new char[strCoeff.size()+1];
-+ strcpy(coeff, strCoeff.c_str());
-+ nRead(coeff/*strCoeff.c_str()*/,&nCoeff);
-+ delete[] coeff;
-+ }
-+ }
-+ char* monom = new char[strMonom.size()+1];
-+ strcpy(monom, strMonom.c_str());
-+ p_Read(monom,strPoly,currRing); //strPoly:=monom
-+ delete[] monom;
-+ switch (hasCoeffInQ)
-+ {
-+ case TRUE:
-+ if(hasNegCoeff)
-+ nCoeffNom=nNeg(nCoeffNom);
-+ pSetCoeff(strPoly, nDiv(nCoeffNom, nCoeffDenom));
-+ break;
-+ case FALSE:
-+ if(hasNegCoeff)
-+ nCoeff=nNeg(nCoeff);
-+ if(!nIsOne(nCoeff))
-+ {
-+ pSetCoeff(strPoly, nCoeff );
-+ }
-+ break;
-+ }
-+ //pSetCoeff(strPoly, (number) intCoeff);//Why is this set to zero instead of 1???
-+ if(pIsConstantComp(resPoly))
-+ {
-+ resPoly=pCopy(strPoly);
-+ pDelete(&strPoly);
-+ }
-+ else
-+ {
-+// poly tmp=pAdd(pCopy(resPoly),strPoly);//foo is destroyed
-+// pDelete(&resPoly);
-+// resPoly=tmp;
-+// pDelete(&tmp);
-+ resPoly=pAdd(resPoly,strPoly);//pAdd = p_Add_q, destroys args
-+ }
-+ /*if(nCoeff!=NULL)
-+ nDelete(&nCoeff);*/ //NOTE This may cause a crash on certain examples...
-+ nDelete(&nCoeffNom);
-+ nDelete(&nCoeffDenom);
-+ }//while(!line.empty())
-+ gc->gcBasis->m[jj]=pCopy(resPoly);
-+ pDelete(&resPoly); //reset
-+ }
-+// break;
-+ }//if(line=="GCBASIS")
-+ if(line=="FACETS")
-+ {
-+ facet *fAct=gc->facetPtr;
-+ while(fAct!=NULL)
-+ {
-+ getline(gcInputFile,line);
-+ found = line.find("\t");
-+ string normalString=line.substr(0,found);
-+ int64vec *fN = new int64vec(this->numVars);
-+ for(int ii=0;ii<this->numVars;ii++)
-+ {
-+ string component;
-+ found = normalString.find(",");
-+ component=normalString.substr(0,found);
-+ char *sComp = new char[component.size()+1];
-+ strcpy(sComp,component.c_str());
-+ (*fN)[ii]=atol(sComp/*component.c_str()*/);
-+ delete[] sComp;
-+ normalString.erase(0,found+1);
-+ }
-+ /*Only the following line needs to be commented out if you decide not to delete fNormals*/
-+// fAct->setFacetNormal(fN);
-+ delete(fN);
-+ fAct = fAct->next; //Booh, this is ugly
-+ }
-+ break; //NOTE Must always be in the last if-block!
-+ }
-+ }//while(!gcInputFile.eof())
-+ gcInputFile.close();
-+ rChangeCurrRing(saveRing);
-+}
-+
-+
-+/** \brief Sort the rays of a facet lexicographically
-+*/
-+// void gcone::sortRays(gcone *gc)
-+// {
-+// facet *fAct;
-+// fAct = this->facetPtr->codim2Ptr;
-+// while(fAct->next!=NULL)
-+// {
-+// if(fAct->fNormal->compare(fAct->fNormal->next)==-1
-+// }
-+// }
-+
-+/** \brief Gather the output
-+* List of lists
-+* If heuristic==1 readConeFromFile() is called once more on every cone. This may slow down the computation but it also
-+* allows us to rDelete(gcDel->baseRing) and the such in gcone::noRevS.
-+*\param *gc Pointer to gcone, preferably gcRoot ;-)
-+*\param n the number of cones as determined by gcRoot->getCounter()
-+*
-+*/
-+lists lprepareResult(gcone *gc, const int n)
-+{
-+ gcone *gcAct;
-+ gcAct = gc;
-+ facet *fAct;
-+ fAct = gc->facetPtr;
-+
-+ lists res=(lists)omAllocBin(slists_bin);
-+ res->Init(n); //initialize to store n cones
-+ for(int ii=0;ii<n;ii++)
-+ {
-+ if(gfanHeuristic==1)// && gcAct->getUCN()>1)
-+ {
-+ gcAct->readConeFromFile(gcAct->getUCN(),gcAct);
-+// rChangeCurrRing(gcAct->getBaseRing());//NOTE memleak?
-+ }
-+ rChangeCurrRing(gcAct->getRef2BaseRing());
-+ res->m[ii].rtyp=LIST_CMD;
-+ lists l=(lists)omAllocBin(slists_bin);
-+ l->Init(6);
-+ l->m[0].rtyp=INT_CMD;
-+ l->m[0].data=(void*)gcAct->getUCN();
-+ l->m[1].rtyp=IDEAL_CMD;
-+ /*The following is necessary for leaves in the tree of cones
-+ * Since we don't use them in the computation and gcBasis is
-+ * set to (poly)NULL in noRevS we need to get this back here.
-+ */
-+// if(gcAct->gcBasis->m[0]==(poly)NULL)
-+// if(gfanHeuristic==1 && gcAct->getUCN()>1)
-+// gcAct->readConeFromFile(gcAct->getUCN(),gcAct);
-+// ring saveRing=currRing;
-+// ring tmpRing=gcAct->getBaseRing;
-+// rChangeCurrRing(tmpRing);
-+// l->m[1].data=(void*)idrCopyR_NoSort(gcAct->gcBasis,gcAct->getBaseRing());
-+// l->m[1].data=(void*)idrCopyR(gcAct->gcBasis,gcAct->getBaseRing());//NOTE memleak?
-+ l->m[1].data=(void*)idrCopyR(gcAct->gcBasis,gcAct->getRef2BaseRing());
-+// rChangeCurrRing(saveRing);
-+
-+ l->m[2].rtyp=INTVEC_CMD;
-+ int64vec iv=(gcAct->f2M(gcAct,gcAct->facetPtr));//NOTE memleak?
-+ l->m[2].data=(void*)iv64Copy(&iv);
-+
-+ l->m[3].rtyp=LIST_CMD;
-+ lists lCodim2List = (lists)omAllocBin(slists_bin);
-+ lCodim2List->Init(gcAct->numFacets);
-+ fAct = gcAct->facetPtr;//fAct->codim2Ptr;
-+ int jj=0;
-+ while(fAct!=NULL && jj<gcAct->numFacets)
-+ {
-+ lCodim2List->m[jj].rtyp=INTVEC_CMD;
-+ int64vec ivC2=(gcAct->f2M(gcAct,fAct,2));
-+ lCodim2List->m[jj].data=(void*)iv64Copy(&ivC2);
-+ jj++;
-+ fAct = fAct->next;
-+ }
-+ l->m[3].data=(void*)lCodim2List;
-+ l->m[4].rtyp=INTVEC_CMD/*RING_CMD*/;
-+ l->m[4].data=(void*)(gcAct->getIntPoint/*BaseRing*/());
-+ l->m[5].rtyp=INT_CMD;
-+ l->m[5].data=(void*)gcAct->getPredUCN();
-+ res->m[ii].data=(void*)l;
-+ gcAct = gcAct->next;
-+ }
-+ return res;
-+}
-+
-+/** Convert gc->gcRays into an intvec in order to be used with bbcone stuff*/
-+intvec *gcRays2Intmat(gcone *gc)
-+{
-+ int r = gc->numRays;
-+ int c = gc->numVars; //Spalten
-+ intvec *res = new intvec(r,c,(int)0);
-+
-+ int offset=0;
-+ for(int ii=0;ii<gc->numRays;ii++)
-+ {
-+ int64vec *ivTmp=iv64Copy(gc->gcRays[ii]);
-+ for(int jj=0;jj<pVariables;jj++)
-+ (*res)[offset+jj]=(int)(*ivTmp)[jj];
-+ offset += pVariables;
-+ delete ivTmp;
-+ }
-+ return res;
-+}
-+
-+/** \brief Put stuff in gfanlib's datatype gfan::ZFan
-+*/
-+void prepareGfanLib(gcone *gc, gfan::ZFan *fan)
-+{
-+ using namespace gfan;
-+ int ambientDimension = gc->numVars;
-+ gcone *gcAct;
-+ gcAct = gc;
-+
-+ //Iterate over all cones and adjoin to PolyhedralFan
-+ while(gcAct!=NULL)
-+ {
-+ intvec *rays=gcRays2Intmat(gcAct);
-+ ZMatrix zm = intmat2ZMatrix(rays);
-+ delete rays;
-+ ZCone *zc = new ZCone();
-+ *zc = ZCone::givenByRays(zm, gfan::ZMatrix(0, zm.getWidth()));
-+// delete &zm;
-+ zc->canonicalize();//As per Anders' hint
-+ fan->insert(*zc);
-+// delete zc;
-+ gcAct=gcAct->next;
-+ }
-+}
-+
-+/** \brief Write facets of a cone into a matrix
-+* Takes a pointer to a facet as 2nd arg
-+* f should always point to gc->facetPtr
-+* param n is used to determine whether it operates in codim 1 or 2
-+* We have to cast the int64vecs to int64vec due to issues with list structure
-+*/
-+inline int64vec gcone::f2M(gcone *gc, facet *f, int n)
-+{
-+ facet *fAct;
-+ int64vec *res;//=new int64vec(this->numVars);
-+// int codim=n;
-+// int bound;
-+// if(f==gc->facetPtr)
-+ if(n==1)
-+ {
-+ int64vec *m1Res=new int64vec(gc->numFacets,gc->numVars,0);
-+ res = iv64Copy(m1Res);
-+ fAct = gc->facetPtr;
-+ delete m1Res;
-+// bound = gc->numFacets*(this->numVars);
-+ }
-+ else
-+ {
-+ fAct = f->codim2Ptr;
-+ int64vec *m2Res = new int64vec(f->numCodim2Facets,gc->numVars,0);
-+ res = iv64Copy(m2Res);
-+ delete m2Res;
-+// bound = fAct->numCodim2Facets*(this->numVars);
-+
-+ }
-+ int ii=0;
-+ while(fAct!=NULL )//&& ii < bound )
-+ {
-+ const int64vec *fNormal;
-+ fNormal = fAct->getRef2FacetNormal();//->getFacetNormal();
-+ for(int jj=0;jj<this->numVars;jj++)
-+ {
-+ (*res)[ii]=(int)(*fNormal)[jj];//This is ugly and prone to overflow
-+ ii++;
-+ }
-+ fAct = fAct->next;
-+ }
-+ return *res;
-+}
-+
-+int gcone::counter=0;
-+int gfanHeuristic;
-+int gcone::lengthOfSearchList;
-+int gcone::maxSize;
-+dd_MatrixPtr gcone::dd_LinealitySpace;
-+int64vec *gcone::hilbertFunction;
-+#ifdef gfanp
-+// int gcone::lengthOfSearchList=0;
-+float gcone::time_getConeNormals;
-+float gcone::time_getCodim2Normals;
-+float gcone::t_getExtremalRays;
-+float gcone::t_ddPolyh;
-+float gcone::time_flip;
-+float gcone::time_flip2;
-+float gcone::t_areEqual;
-+float gcone::t_markings;
-+float gcone::t_dd;
-+float gcone::t_kStd=0;
-+float gcone::time_enqueue;
-+float gcone::time_computeInv;
-+float gcone::t_ddMC;
-+float gcone::t_mI;
-+float gcone::t_iP;
-+float gcone::t_isParallel;
-+unsigned gcone::parallelButNotEqual=0;
-+unsigned gcone::numberOfFacetChecks=0;
-+#endif
-+int gcone::numVars;
-+bool gcone::hasHomInput=FALSE;
-+int64vec *gcone::ivZeroVector;
-+// ideal gfan(ideal inputIdeal, int h)
-+/** Main routine
-+ * The first and second parameter are mandatory. The third (and maybe fourth) parameter is for Janko :)
-+ */
-+#ifndef USE_ZFAN
-+lists grfan(ideal inputIdeal, int h, bool singleCone=FALSE)
-+#else
-+gfan::ZFan* grfan(ideal inputIdeal, int h, bool singleCone=FALSE)
-+#endif
-+{
-+ lists lResList; //this is the object we return
-+ gfan::ZFan *zResFan = new gfan::ZFan(pVariables);
-+
-+ if(rHasGlobalOrdering(currRing))
-+ {
-+// int numvar = pVariables;
-+ gfanHeuristic = h;
-+
-+ enum searchMethod {
-+ reverseSearch,
-+ noRevS
-+ };
-+
-+ searchMethod method;
-+ method = noRevS;
-+
-+ ring inputRing=currRing; // The ring the user entered
-+// ring rootRing; // The ring associated to the target ordering
-+
-+ dd_set_global_constants();
-+ if(method==noRevS)
-+ {
-+ gcone *gcRoot = new gcone(currRing,inputIdeal);
-+ gcone *gcAct;
-+ gcAct = gcRoot;
-+ gcone::numVars=pVariables;
-+ //gcAct->numVars=pVariables;//NOTE is now static
-+ gcAct->getGB(inputIdeal);
-+ /*Check whether input is homogeneous
-+ if TRUE each facet intersects the positive orthant, so we don't need the
-+ flippability test in getConeNormals & getExtremalRays
-+ */
-+ if(idHomIdeal(gcAct->gcBasis,NULL))//disabled for tests
-+ {
-+ gcone::hasHomInput=TRUE;
-+// gcone::hilbertFunction=hHstdSeries(inputIdeal,NULL,NULL,NULL,currRing);
-+ }
-+ else
-+ {
-+ gcone::ivZeroVector = new int64vec(pVariables);
-+ for(int ii=0;ii<pVariables;ii++)
-+ (*gcone::ivZeroVector)[ii]=0;
-+ }
-+
-+ if(isMonomial(gcAct->gcBasis))
-+ {//FIXME
-+ WerrorS("Monomial input - terminating");
-+ dd_free_global_constants();
-+ //This is filthy
-+ goto pointOfNoReturn;
-+ }
-+ gcAct->getConeNormals(gcAct->gcBasis);
-+ gcone::dd_LinealitySpace = gcAct->computeLinealitySpace();
-+ gcAct->getExtremalRays(*gcAct);
-+ if(singleCone==FALSE)//Is Janko here?
-+ {//Compute the whole fan
-+ gcAct->noRevS(*gcAct); //Here we go!
-+ }
-+ //Switch back to the ring the computation was started in
-+ rChangeCurrRing(inputRing);
-+ //res=gcAct->gcBasis;
-+ //Below is a workaround, since gcAct->gcBasis gets deleted in noRevS
-+#ifndef USE_ZFAN
-+ lResList=lprepareResult(gcRoot,gcRoot->getCounter());
-+#else
-+ prepareGfanLib(gcRoot,zResFan);
-+#endif
-+ /*Cleanup*/
-+ gcone *gcDel;
-+ gcDel = gcRoot;
-+ gcAct = gcRoot;
-+ while(gcAct!=NULL)
-+ {
-+ gcDel = gcAct;
-+ gcAct = gcAct->next;
-+// delete gcDel;
-+ }
-+ }//method==noRevS
-+ dd_FreeMatrix(gcone::dd_LinealitySpace);
-+ dd_free_global_constants();
-+ }//rHasGlobalOrdering
-+ else
-+ {
-+ //Simply return an empty list
-+ WerrorS("Ring has non-global ordering.\nThis function requires your current ring to be endowed with a global ordering.\n Now terminating!");
-+// gcone *gcRoot=new gcone();
-+// gcone *gcPtr = gcRoot;
-+// for(int ii=0;ii<10000;ii++)
-+// {
-+// gcPtr->setBaseRing(currRing);
-+// facet *fPtr=gcPtr->facetPtr=new facet();
-+// for(int jj=0;jj<5;jj++)
-+// {
-+// int64vec *iv=new int64vec(pVariables);
-+// fPtr->setFacetNormal(iv);
-+// delete(iv);
-+// fPtr->next=new facet();
-+// fPtr=fPtr->next;
-+// }
-+// gcPtr->next=new gcone();
-+// gcPtr->next->prev=gcPtr;
-+// gcPtr=gcPtr->next;
-+// }
-+// gcPtr=gcRoot;
-+// while(gcPtr!=NULL)
-+// {
-+// gcPtr=gcPtr->next;
-+// // delete(gcPtr->prev);
-+// }
-+ goto pointOfNoReturn;
-+ }
-+ /*Return result*/
-+#ifdef gfanp
-+ cout << endl << "t_getConeNormals:" << gcone::time_getConeNormals << endl;
-+ /*cout << "t_getCodim2Normals:" << gcone::time_getCodim2Normals << endl;
-+ cout << " t_ddMC:" << gcone::t_ddMC << endl;
-+ cout << " t_mI:" << gcone::t_mI << endl;
-+ cout << " t_iP:" << gcone::t_iP << endl;*/
-+ cout << "t_getExtremalRays:" << gcone::t_getExtremalRays << endl;
-+ cout << " t_ddPolyh:" << gcone::t_ddPolyh << endl;
-+ cout << "t_Flip:" << gcone::time_flip << endl;
-+ cout << " t_markings:" << gcone::t_markings << endl;
-+ cout << " t_dd:" << gcone::t_dd << endl;
-+ cout << " t_kStd:" << gcone::t_kStd << endl;
-+ cout << "t_Flip2:" << gcone::time_flip2 << endl;
-+ cout << " t_dd:" << gcone::t_dd << endl;
-+ cout << " t_kStd:" << gcone::t_kStd << endl;
-+ cout << "t_computeInv:" << gcone::time_computeInv << endl;
-+ cout << "t_enqueue:" << gcone::time_enqueue << endl;
-+ cout << " t_areEqual:" <<gcone::t_areEqual << endl;
-+ cout << "t_isParallel:" <<gcone::t_isParallel << endl;
-+ cout << endl;
-+ cout << "Checked " << gcone::numberOfFacetChecks << " Facets" << endl;
-+ cout << " out of which there were " << gcone::parallelButNotEqual << " parallel but not equal." << endl;
-+#endif
-+ printf("Maximum lenght of list of facets: %i", gcone::maxSize);
-+pointOfNoReturn:
-+#ifndef USE_ZFAN
-+ return lResList;
-+#else
-+ return zResFan;
-+#endif
-+}
-+
-+/** Compute a single Gröbner cone by specifying an ideal and a weight vector.
-+ * NOTE: We do NOT check whether the vector is from the relative interior of the cone.
-+ * That is upon the user to assure.
-+ */
-+// lists grcone_by_intvec(ideal inputIdeal)
-+// {
-+// if( (rRingOrder_t)currRing->order[0] == ringorder_wp)
-+// {
-+// lists lResList;
-+// lResList=grfan(inputIdeal, 0, TRUE);
-+// }
-+// else
-+// WerrorS("Need wp ordering");
-+// }
-+#endif
-diff --git a/kernel/gnumpc.cc b/kernel/gnumpc.cc
-index 62ea1f0..e3a28a8 100644
---- a/kernel/gnumpc.cc
-+++ b/kernel/gnumpc.cc
-@@ -7,7 +7,7 @@
- * ngc == number gnu complex
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/structs.h>
- #include <kernel/febase.h>
- #include <omalloc/omalloc.h>
-diff --git a/kernel/gnumpfl.cc b/kernel/gnumpfl.cc
-index 8438dd5..eb7294b 100644
---- a/kernel/gnumpfl.cc
-+++ b/kernel/gnumpfl.cc
-@@ -7,7 +7,7 @@
- * ngf == number gnu floats
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/structs.h>
- #include <kernel/febase.h>
- #include <omalloc/omalloc.h>
-diff --git a/kernel/gr_kstd2.cc b/kernel/gr_kstd2.cc
-index 27e0152..c311b81 100644
---- a/kernel/gr_kstd2.cc
-+++ b/kernel/gr_kstd2.cc
-@@ -5,7 +5,7 @@
- * ABSTRACT - Kernel: noncomm. alg. of Buchberger
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_PLURAL
-
-diff --git a/kernel/gring.cc b/kernel/gring.cc
-index ec02714..27e8a5a 100644
---- a/kernel/gring.cc
-+++ b/kernel/gring.cc
-@@ -16,7 +16,7 @@
- #define OM_TRACK 5
- #endif
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_PLURAL
- #define PLURAL_INTERNAL_DECLARATIONS
-diff --git a/kernel/hdegree.cc b/kernel/hdegree.cc
-index 2e3053e..6d4cecd 100644
---- a/kernel/hdegree.cc
-+++ b/kernel/hdegree.cc
-@@ -5,7 +5,7 @@
- * ABSTRACT - dimension, multiplicity, HC, kbase
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
-
- #include <kernel/structs.h>
-diff --git a/kernel/hilb.cc b/kernel/hilb.cc
-index e629397..f687164 100644
---- a/kernel/hilb.cc
-+++ b/kernel/hilb.cc
-@@ -5,7 +5,7 @@
- * ABSTRACT - Hilbert series
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/structs.h>
- #include <kernel/febase.h>
- #include <omalloc/omalloc.h>
-diff --git a/kernel/hutil.cc b/kernel/hutil.cc
-index 3521746..07214b3 100644
---- a/kernel/hutil.cc
-+++ b/kernel/hutil.cc
-@@ -5,7 +5,7 @@
- * ABSTRACT: Utilities for staircase operations
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/structs.h>
- #include <kernel/febase.h>
- #include <omalloc/omalloc.h>
-diff --git a/kernel/ideals.cc b/kernel/ideals.cc
-index d1701b9..5c63cc8 100644
---- a/kernel/ideals.cc
-+++ b/kernel/ideals.cc
-@@ -6,7 +6,7 @@
- */
-
- /* includes */
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifndef NDEBUG
- # define MYTEST 0
-diff --git a/kernel/int64vec.cc b/kernel/int64vec.cc
-index ef39725..31a6323 100644
---- a/kernel/int64vec.cc
-+++ b/kernel/int64vec.cc
-@@ -4,7 +4,7 @@
- /*
- * ABSTRACT: class int64vec: lists/vectors of int64
- */
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/structs.h>
- #include <kernel/febase.h>
- #include <kernel/int64vec.h>
-diff --git a/kernel/intvec.cc b/kernel/intvec.cc
-index 075d1ea..7688255 100644
---- a/kernel/intvec.cc
-+++ b/kernel/intvec.cc
-@@ -6,7 +6,7 @@
- */
- #ifndef INTVEC_CC
- #define INTVEC_CC
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/febase.h>
- #include <kernel/options.h>
- #include <kernel/intvec.h>
-diff --git a/kernel/kbuckets.cc b/kernel/kbuckets.cc
-index fe6b32c..eb90b87 100644
---- a/kernel/kbuckets.cc
-+++ b/kernel/kbuckets.cc
-@@ -2,7 +2,7 @@
- * Computer Algebra System SINGULAR *
- ****************************************/
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/structs.h>
- #include <omalloc/omalloc.h>
- #include <kernel/p_polys.h>
-diff --git a/kernel/khstd.cc b/kernel/khstd.cc
-index 51039c4..23c863d 100644
---- a/kernel/khstd.cc
-+++ b/kernel/khstd.cc
-@@ -5,7 +5,7 @@
- * ABSTRACT:utils for hilbert driven kStd
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/febase.h>
- #include <kernel/options.h>
- #include <kernel/polys.h>
-diff --git a/kernel/kspoly.cc b/kernel/kspoly.cc
-index 78b5c02..756a256 100644
---- a/kernel/kspoly.cc
-+++ b/kernel/kspoly.cc
-@@ -6,7 +6,7 @@
- */
-
- // #define PDEBUG 2
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/options.h>
- #include <kernel/kutil.h>
- #include <kernel/numbers.h>
-diff --git a/kernel/kstd1.cc b/kernel/kstd1.cc
-index 07175cb..4c9c978 100644
---- a/kernel/kstd1.cc
-+++ b/kernel/kstd1.cc
-@@ -13,7 +13,7 @@
- // define if buckets should be used
- #define MORA_USE_BUCKETS
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <omalloc/omalloc.h>
-
- #ifndef NDEBUG
-diff --git a/kernel/kstd2.cc b/kernel/kstd2.cc
-index e853df2..38ea53d 100644
---- a/kernel/kstd2.cc
-+++ b/kernel/kstd2.cc
-@@ -12,7 +12,7 @@
- // define to enable tailRings
- #define HAVE_TAIL_RING
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifndef NDEBUG
- # define MYTEST 0
-diff --git a/kernel/kstdfac.cc b/kernel/kstdfac.cc
-index 437a9d5..3c6b003 100644
---- a/kernel/kstdfac.cc
-+++ b/kernel/kstdfac.cc
-@@ -5,7 +5,7 @@
- * ABSTRACT - Kernel: factorizing alg. of Buchberger
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <omalloc/omalloc.h>
- #include <kernel/options.h>
- #include <kernel/polys.h>
-diff --git a/kernel/kutil.cc b/kernel/kutil.cc
-index 0b2103b..68d2cf9 100644
---- a/kernel/kutil.cc
-+++ b/kernel/kutil.cc
-@@ -10,7 +10,7 @@
- #define KUTIL_CC
- #include <stdlib.h>
- #include <string.h>
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifndef NDEBUG
- # define MYTEST 0
-diff --git a/kernel/linearAlgebra.cc b/kernel/linearAlgebra.cc
-index 74842dc..015cac2 100644
---- a/kernel/linearAlgebra.cc
-+++ b/kernel/linearAlgebra.cc
-@@ -14,7 +14,7 @@
- /*****************************************************************************/
-
- // include header files
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/structs.h>
- #include <kernel/polys.h>
- #include <kernel/ideals.h>
-diff --git a/kernel/longalg.cc b/kernel/longalg.cc
-index 5b26264..b86431f 100644
---- a/kernel/longalg.cc
-+++ b/kernel/longalg.cc
-@@ -7,7 +7,7 @@
-
- #include <stdio.h>
- #include <string.h>
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/structs.h>
- #include <omalloc/omalloc.h>
- #include <kernel/febase.h>
-diff --git a/kernel/longrat.cc b/kernel/longrat.cc
-index 1938a45..c2cc177 100644
---- a/kernel/longrat.cc
-+++ b/kernel/longrat.cc
-@@ -5,7 +5,7 @@
- * ABSTRACT: computation with long rational numbers (Hubert Grassmann)
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/structs.h>
- #include <kernel/longrat.h>
-
-diff --git a/kernel/longrat0.cc b/kernel/longrat0.cc
-index f4d1e32..7ecaabe 100644
---- a/kernel/longrat0.cc
-+++ b/kernel/longrat0.cc
-@@ -8,7 +8,7 @@
-
- #include <stdio.h>
- #include <string.h>
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/structs.h>
- #include <omalloc/omalloc.h>
- #include <kernel/febase.h>
-diff --git a/kernel/longtrans.cc b/kernel/longtrans.cc
-index cf2ebef..88d48ab 100644
---- a/kernel/longtrans.cc
-+++ b/kernel/longtrans.cc
-@@ -9,7 +9,7 @@
- #if 0
- #include <stdio.h>
- #include <string.h>
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/structs.h>
- #include <omalloc/omalloc.h>
- #include <kernel/febase.h>
-diff --git a/kernel/lplist.cc b/kernel/lplist.cc
-index 0f5fdc3..35bacb9 100644
---- a/kernel/lplist.cc
-+++ b/kernel/lplist.cc
-@@ -4,7 +4,7 @@
- /*
- * ABSTRACT: list interface
- */
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_F5
-
-diff --git a/kernel/maps.cc b/kernel/maps.cc
-index d323ca8..951c2c9 100644
---- a/kernel/maps.cc
-+++ b/kernel/maps.cc
-@@ -5,7 +5,7 @@
- * ABSTRACT - the mapping of polynomials to other rings
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/options.h>
- #include <kernel/febase.h>
- #include <kernel/polys.h>
-diff --git a/kernel/matpol.cc b/kernel/matpol.cc
-index 304c249..16b0ea7 100644
---- a/kernel/matpol.cc
-+++ b/kernel/matpol.cc
-@@ -9,7 +9,7 @@
- #include <stdio.h>
- #include <math.h>
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <omalloc/mylimits.h>
- #include <kernel/structs.h>
- #include <kernel/kstd1.h>
-diff --git a/kernel/misc.cc b/kernel/misc.cc
-index 4ba410c..21ecce5 100644
---- a/kernel/misc.cc
-+++ b/kernel/misc.cc
-@@ -12,7 +12,7 @@
- #include <stdlib.h>
- #include <time.h>
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <omalloc/mylimits.h>
- #include <omalloc/omalloc.h>
- #include <kernel/structs.h>
-diff --git a/kernel/mmalloc.cc b/kernel/mmalloc.cc
-index 2050e59..0a3b6d4 100644
---- a/kernel/mmalloc.cc
-+++ b/kernel/mmalloc.cc
-@@ -6,7 +6,7 @@
- */
- #include <stdlib.h>
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #include <omalloc/omalloc.h>
- #include <new>
-diff --git a/kernel/mmstd.c b/kernel/mmstd.c
-index 6ccb824..f2fd277 100644
---- a/kernel/mmstd.c
-+++ b/kernel/mmstd.c
-@@ -6,7 +6,7 @@
- * i.e. (malloc/realloc/free)
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #include <omalloc/omalloc.h>
- #include <Singular/static.h>
-diff --git a/kernel/mod_raw.cc b/kernel/mod_raw.cc
-index 025bbb2..8cb85c7 100644
---- a/kernel/mod_raw.cc
-+++ b/kernel/mod_raw.cc
-@@ -17,7 +17,7 @@
- #include <sys/stat.h>
-
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <Singular/static.h>
-
- #include <kernel/mod_raw.h>
-diff --git a/kernel/modulop.cc b/kernel/modulop.cc
-index 35e1c37..70ee176 100644
---- a/kernel/modulop.cc
-+++ b/kernel/modulop.cc
-@@ -6,7 +6,7 @@
- */
-
- #include <string.h>
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <omalloc/mylimits.h>
- #include <kernel/structs.h>
- #include <kernel/febase.h>
-diff --git a/kernel/mpr_base.cc b/kernel/mpr_base.cc
-index a784bab..95947df 100644
---- a/kernel/mpr_base.cc
-+++ b/kernel/mpr_base.cc
-@@ -8,7 +8,7 @@
-
- #include <math.h>
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #include <omalloc/mylimits.h>
- #include <omalloc/omalloc.h>
-diff --git a/kernel/mpr_complex.cc b/kernel/mpr_complex.cc
-index 9fb1056..255e14f 100644
---- a/kernel/mpr_complex.cc
-+++ b/kernel/mpr_complex.cc
-@@ -10,7 +10,7 @@
-
- // WARNING! ALWAYS use omAlloc and FreeL when alloc. memory for some char* !!
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- //#ifdef HAVE_MPR
- #include <kernel/structs.h>
- #include <kernel/febase.h>
-diff --git a/kernel/mpr_inout.cc b/kernel/mpr_inout.cc
-index f8c9b7e..3e13e7e 100644
---- a/kernel/mpr_inout.cc
-+++ b/kernel/mpr_inout.cc
-@@ -6,7 +6,7 @@
- * ABSTRACT - multipolynomial resultant
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- //#ifdef HAVE_MPR
-
- //-> includes
-diff --git a/kernel/mpr_numeric.cc b/kernel/mpr_numeric.cc
-index 79c741b..55bb031 100644
---- a/kernel/mpr_numeric.cc
-+++ b/kernel/mpr_numeric.cc
-@@ -8,7 +8,7 @@
- * ( root finder, vandermonde system solver, simplex )
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- //#ifdef HAVE_MPR
-
- //#define mprDEBUG_ALL
-diff --git a/kernel/multicnt.cc b/kernel/multicnt.cc
-index 9f11b1d..de21ed3 100644
---- a/kernel/multicnt.cc
-+++ b/kernel/multicnt.cc
-@@ -7,7 +7,7 @@
-
- #define MULTICNT_CC
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_SPECTRUM
-
-diff --git a/kernel/ncSACache.cc b/kernel/ncSACache.cc
-index 742ebba..86b86e5 100644
---- a/kernel/ncSACache.cc
-+++ b/kernel/ncSACache.cc
-@@ -17,7 +17,7 @@
- #endif
-
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifndef NDEBUG
- #define OUTPUT 1
-diff --git a/kernel/ncSAFormula.cc b/kernel/ncSAFormula.cc
-index b4fefe0..c985bda 100644
---- a/kernel/ncSAFormula.cc
-+++ b/kernel/ncSAFormula.cc
-@@ -17,7 +17,7 @@
- #endif
-
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_PLURAL
-
-diff --git a/kernel/ncSAMult.cc b/kernel/ncSAMult.cc
-index fcf767a..ecdcaed 100644
---- a/kernel/ncSAMult.cc
-+++ b/kernel/ncSAMult.cc
-@@ -17,7 +17,7 @@
- #endif
-
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_PLURAL
-
-diff --git a/kernel/npolygon.cc b/kernel/npolygon.cc
-index afb939b..b54d941 100644
---- a/kernel/npolygon.cc
-+++ b/kernel/npolygon.cc
-@@ -7,7 +7,7 @@
-
- #define NPOLYGON_CC
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_SPECTRUM
-
-diff --git a/kernel/numbers.cc b/kernel/numbers.cc
-index 61b68a7..35c08b2 100644
---- a/kernel/numbers.cc
-+++ b/kernel/numbers.cc
-@@ -8,7 +8,7 @@
-
- #include <string.h>
- #include <stdlib.h>
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/structs.h>
- #include <kernel/febase.h>
- #include <kernel/kstd1.h>
-diff --git a/kernel/pDebug.cc b/kernel/pDebug.cc
-index b658d92..5b2e82a 100644
---- a/kernel/pDebug.cc
-+++ b/kernel/pDebug.cc
-@@ -14,7 +14,7 @@
- #include <stdio.h>
-
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #ifdef PDEBUG
-
- // do the following to always enforce checking of pSetm
-diff --git a/kernel/pInline0.cc b/kernel/pInline0.cc
-index f851034..7eb90cb 100644
---- a/kernel/pInline0.cc
-+++ b/kernel/pInline0.cc
-@@ -9,7 +9,7 @@
- *******************************************************************/
- #ifndef PINLINE0_CC
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #define PINLINE0_CC
- #undef DO_PINLINE0
-diff --git a/kernel/pInline1.cc b/kernel/pInline1.cc
-index 40563b6..e30321d 100644
---- a/kernel/pInline1.cc
-+++ b/kernel/pInline1.cc
-@@ -10,7 +10,7 @@
- #ifndef PINLINE1_CC
- #define PINLINE1_CC
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef PDEBUG
-
-diff --git a/kernel/pInline2.cc b/kernel/pInline2.cc
-index 5b4ede8..b71b8ad 100644
---- a/kernel/pInline2.cc
-+++ b/kernel/pInline2.cc
-@@ -9,7 +9,7 @@
- *******************************************************************/
- #ifndef PINLINE2_CC
- #define PINLINE2_CC
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef PDEBUG
-
-diff --git a/kernel/pShallowCopyDelete.cc b/kernel/pShallowCopyDelete.cc
-index 25fe533..f5d6daa 100644
---- a/kernel/pShallowCopyDelete.cc
-+++ b/kernel/pShallowCopyDelete.cc
-@@ -7,7 +7,7 @@
- * Author: obachman (Olaf Bachmann)
- * Created: 8/00
- *******************************************************************/
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/p_polys.h>
- #include <kernel/ring.h>
- #include <kernel/pShallowCopyDelete.h>
-diff --git a/kernel/p_Mult_q.cc b/kernel/p_Mult_q.cc
-index bbb07ef..cbec90e 100644
---- a/kernel/p_Mult_q.cc
-+++ b/kernel/p_Mult_q.cc
-@@ -7,7 +7,7 @@
- * Author: obachman (Olaf Bachmann)
- * Created: 8/00
- *******************************************************************/
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- /***************************************************************
- *
-diff --git a/kernel/p_Mult_q.h b/kernel/p_Mult_q.h
-index 4da031f..8ec326f 100644
---- a/kernel/p_Mult_q.h
-+++ b/kernel/p_Mult_q.h
-@@ -8,7 +8,7 @@
- * Author: obachman (Olaf Bachmann)
- * Created: 8/00
- *******************************************************************/
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/structs.h>
-
- // Use buckets if min(pLength(p), pLength(q)) >= MIN_LENGTH_BUCKET
-diff --git a/kernel/p_Procs_Dynamic.cc b/kernel/p_Procs_Dynamic.cc
-index 8f30e78..58f1249 100644
---- a/kernel/p_Procs_Dynamic.cc
-+++ b/kernel/p_Procs_Dynamic.cc
-@@ -7,7 +7,7 @@
- * Author: obachman (Olaf Bachmann)
- * Created: 12/00
- *******************************************************************/
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/structs.h>
- #include <kernel/p_polys.h>
- #include <kernel/ring.h>
-diff --git a/kernel/p_Procs_Generate.cc b/kernel/p_Procs_Generate.cc
-index af1003d..5ed8398 100644
---- a/kernel/p_Procs_Generate.cc
-+++ b/kernel/p_Procs_Generate.cc
-@@ -14,7 +14,7 @@
- #include <stdlib.h>
- #include <string.h>
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/dError.c>
-
- #ifdef p_Procs_Static
-diff --git a/kernel/p_Procs_Lib.cc b/kernel/p_Procs_Lib.cc
-index 5ff7c37..4014665 100644
---- a/kernel/p_Procs_Lib.cc
-+++ b/kernel/p_Procs_Lib.cc
-@@ -7,7 +7,7 @@
- * Author: obachman (Olaf Bachmann)
- * Created: 12/00
- *******************************************************************/
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/structs.h>
- #include <kernel/p_polys.h>
- #include <kernel/ring.h>
-diff --git a/kernel/p_Procs_Static.cc b/kernel/p_Procs_Static.cc
-index a3aa326..a93f493 100644
---- a/kernel/p_Procs_Static.cc
-+++ b/kernel/p_Procs_Static.cc
-@@ -7,7 +7,7 @@
- * Author: obachman (Olaf Bachmann)
- * Created: 12/00
- *******************************************************************/
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/structs.h>
- #include <kernel/p_polys.h>
- #include <kernel/ring.h>
-diff --git a/kernel/p_polys.cc b/kernel/p_polys.cc
-index 01c15c6..4e90501 100644
---- a/kernel/p_polys.cc
-+++ b/kernel/p_polys.cc
-@@ -9,7 +9,7 @@
- *******************************************************************/
-
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #include <kernel/structs.h>
- #include <kernel/p_polys.h>
-diff --git a/kernel/page.c b/kernel/page.c
-index 19681d5..4011a14 100644
---- a/kernel/page.c
-+++ b/kernel/page.c
-@@ -1,4 +1,4 @@
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #ifdef PAGE_TEST
- #include <stdlib.h>
- #include <unistd.h>
-diff --git a/kernel/polys-impl.cc b/kernel/polys-impl.cc
-index d247b65..a1b751d 100644
---- a/kernel/polys-impl.cc
-+++ b/kernel/polys-impl.cc
-@@ -17,7 +17,7 @@
-
- #include <stdio.h>
- #include <string.h>
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #include <omalloc/omalloc.h>
- #ifdef PDEBUG
-diff --git a/kernel/polys.cc b/kernel/polys.cc
-index 53ba7b9..b89a9a0 100644
---- a/kernel/polys.cc
-+++ b/kernel/polys.cc
-@@ -10,7 +10,7 @@
- #include <stdio.h>
- #include <string.h>
- #include <ctype.h>
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/options.h>
- #include <omalloc/omalloc.h>
- #include <kernel/febase.h>
-diff --git a/kernel/polys0.cc b/kernel/polys0.cc
-index 87aea68..d5ec8fd 100644
---- a/kernel/polys0.cc
-+++ b/kernel/polys0.cc
-@@ -7,7 +7,7 @@
- */
-
- /* includes */
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/structs.h>
- #include <kernel/numbers.h>
- #include <kernel/ring.h>
-diff --git a/kernel/polys1.cc b/kernel/polys1.cc
-index fa797fe..36d25d6 100644
---- a/kernel/polys1.cc
-+++ b/kernel/polys1.cc
-@@ -8,7 +8,7 @@
-
- /* includes */
- #include <string.h>
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/options.h>
- #include <kernel/numbers.h>
- #include <kernel/ffields.h>
-diff --git a/kernel/prCopy.cc b/kernel/prCopy.cc
-index d335eda..7273cff 100644
---- a/kernel/prCopy.cc
-+++ b/kernel/prCopy.cc
-@@ -5,7 +5,7 @@
- * ABSTRACT - implementation of functions for Copy/Move/Delete for Polys
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <omalloc/omalloc.h>
- #include <kernel/p_polys.h>
- #include <kernel/numbers.h>
-diff --git a/kernel/ratgring.cc b/kernel/ratgring.cc
-index 48d7a6f..6dc7a5c 100644
---- a/kernel/ratgring.cc
-+++ b/kernel/ratgring.cc
-@@ -7,7 +7,7 @@
- * Author: levandov (Viktor Levandovsky)
- * Created: 8/00 - 11/00
- *******************************************************************/
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/ratgring.h>
- #ifdef HAVE_RATGRING
- #include <kernel/gring.h>
-diff --git a/kernel/ring.cc b/kernel/ring.cc
-index ac14c23..f2f9a6b 100644
---- a/kernel/ring.cc
-+++ b/kernel/ring.cc
-@@ -7,7 +7,7 @@
-
- /* includes */
- #include <math.h>
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #include <kernel/options.h>
- #include <omalloc/omalloc.h>
-diff --git a/kernel/ringgb.cc b/kernel/ringgb.cc
-index c1d510f..60e33c9 100644
---- a/kernel/ringgb.cc
-+++ b/kernel/ringgb.cc
-@@ -7,7 +7,7 @@
- //#define HAVE_TAIL_RING
- #define NO_BUCKETS
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/kutil.h>
- #include <kernel/structs.h>
- #include <omalloc/omalloc.h>
-diff --git a/kernel/ringgb.h b/kernel/ringgb.h
-index dd05f96..10f15c8 100644
---- a/kernel/ringgb.h
-+++ b/kernel/ringgb.h
-@@ -6,7 +6,7 @@
- */
- #ifndef RINGGB_HEADER
- #define RINGGB_HEADER
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_RINGS
- #include <kernel/polys.h>
-diff --git a/kernel/rintegers.cc b/kernel/rintegers.cc
-index 199315a..5b3af34 100644
---- a/kernel/rintegers.cc
-+++ b/kernel/rintegers.cc
-@@ -6,7 +6,7 @@
- */
-
- #include <string.h>
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <omalloc/mylimits.h>
- #include <kernel/structs.h>
- #include <kernel/febase.h>
-diff --git a/kernel/rmodulo2m.cc b/kernel/rmodulo2m.cc
-index 23e8635..13efb52 100644
---- a/kernel/rmodulo2m.cc
-+++ b/kernel/rmodulo2m.cc
-@@ -6,7 +6,7 @@
- */
-
- #include <string.h>
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_RINGS
- #include <omalloc/mylimits.h>
-diff --git a/kernel/rmodulon.cc b/kernel/rmodulon.cc
-index e90aab7..17b2720 100644
---- a/kernel/rmodulon.cc
-+++ b/kernel/rmodulon.cc
-@@ -6,7 +6,7 @@
- */
-
- #include <string.h>
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <omalloc/mylimits.h>
- #include <kernel/structs.h>
- #include <kernel/febase.h>
-diff --git a/kernel/sbuckets.cc b/kernel/sbuckets.cc
-index a99f0c5..2293b27 100644
---- a/kernel/sbuckets.cc
-+++ b/kernel/sbuckets.cc
-@@ -8,7 +8,7 @@
- * Author: obachman (Olaf Bachmann)
- * Created: 9/00
- *******************************************************************/
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #include <kernel/sbuckets.h>
- #include <omalloc/omalloc.h>
-diff --git a/kernel/sca.cc b/kernel/sca.cc
-index 41bda73..a4aeea7 100644
---- a/kernel/sca.cc
-+++ b/kernel/sca.cc
-@@ -18,7 +18,7 @@
- #endif
-
- // #define PDEBUG 2
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_PLURAL
- // for
-diff --git a/kernel/semic.cc b/kernel/semic.cc
-index fed3484..dced520 100644
---- a/kernel/semic.cc
-+++ b/kernel/semic.cc
-@@ -7,7 +7,7 @@
-
- #define SEMIC_CC
-
--#include"mod2.h"
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_SPECTRUM
-
-diff --git a/kernel/shiftgb.cc b/kernel/shiftgb.cc
-index 04a73f6..fc09395 100644
---- a/kernel/shiftgb.cc
-+++ b/kernel/shiftgb.cc
-@@ -5,7 +5,7 @@
- * ABSTRACT: kernel: utils for shift GB and free GB
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_SHIFTBBA
- #include <kernel/febase.h>
-diff --git a/kernel/shortfl.cc b/kernel/shortfl.cc
-index fa1646a..31c3f66 100644
---- a/kernel/shortfl.cc
-+++ b/kernel/shortfl.cc
-@@ -7,7 +7,7 @@
- */
-
- #include <string.h>
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <omalloc/mylimits.h>
- #include <kernel/structs.h>
- #include <kernel/febase.h>
-diff --git a/kernel/sparsmat.cc b/kernel/sparsmat.cc
-index d3d1bed..ad245a6 100644
---- a/kernel/sparsmat.cc
-+++ b/kernel/sparsmat.cc
-@@ -6,7 +6,7 @@
- * ABSTRACT: operations with sparse matrices (bareiss, ...)
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/options.h>
- #include <kernel/febase.h>
- #include <kernel/intvec.h>
-diff --git a/kernel/spectrum.cc b/kernel/spectrum.cc
-index 1671a6e..98a8f4f 100644
---- a/kernel/spectrum.cc
-+++ b/kernel/spectrum.cc
-@@ -7,7 +7,7 @@
-
- #define SPECTRUM_CC
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_SPECTRUM
-
-diff --git a/kernel/splist.cc b/kernel/splist.cc
-index c1db0ae..7a4b65a 100644
---- a/kernel/splist.cc
-+++ b/kernel/splist.cc
-@@ -7,7 +7,7 @@
-
- #define SPLIST_CC
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- #ifdef HAVE_SPECTRUM
-
-diff --git a/kernel/summator.cc b/kernel/summator.cc
-index 5351586..ce70f0b 100644
---- a/kernel/summator.cc
-+++ b/kernel/summator.cc
-@@ -17,7 +17,7 @@
- #define OM_TRACK 5
- #endif
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #ifdef HAVE_PLURAL
- #include <kernel/summator.h>
- #include <kernel/options.h>
-diff --git a/kernel/syz.cc b/kernel/syz.cc
-index 2283bf0..bcca57f 100644
---- a/kernel/syz.cc
-+++ b/kernel/syz.cc
-@@ -7,7 +7,7 @@
- */
-
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/options.h>
- #include <omalloc/omalloc.h>
- #include <kernel/polys.h>
-diff --git a/kernel/syz0.cc b/kernel/syz0.cc
-index e5e4d2b..2d92449 100644
---- a/kernel/syz0.cc
-+++ b/kernel/syz0.cc
-@@ -6,7 +6,7 @@
- */
-
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/options.h>
- #include <omalloc/omalloc.h>
- #include <kernel/polys.h>
-diff --git a/kernel/syz1.cc b/kernel/syz1.cc
-index c8537c4..f815067 100644
---- a/kernel/syz1.cc
-+++ b/kernel/syz1.cc
-@@ -5,7 +5,7 @@
- * ABSTRACT: resolutions
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <omalloc/mylimits.h>
- #include <kernel/options.h>
- #include <omalloc/omalloc.h>
-diff --git a/kernel/syz2.cc b/kernel/syz2.cc
-index 83acf72..5014240 100644
---- a/kernel/syz2.cc
-+++ b/kernel/syz2.cc
-@@ -5,7 +5,7 @@
- * ABSTRACT: resolutions
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <omalloc/mylimits.h>
- #include <kernel/options.h>
- #include <omalloc/omalloc.h>
-diff --git a/kernel/syz3.cc b/kernel/syz3.cc
-index b4edc9b..175258f 100644
---- a/kernel/syz3.cc
-+++ b/kernel/syz3.cc
-@@ -5,7 +5,7 @@
- * ABSTRACT: resolutions
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <omalloc/mylimits.h>
- #include <kernel/options.h>
- #include <omalloc/omalloc.h>
-diff --git a/kernel/tgb.cc b/kernel/tgb.cc
-index 3ee6393..f4c1a0f 100644
---- a/kernel/tgb.cc
-+++ b/kernel/tgb.cc
-@@ -13,7 +13,7 @@
- ///@TODO: delay nur auf Sugarvergr?erung
- ///@TODO: grade aus ecartS, setze dazu strat->honey; und nutze p.ecart
- ///@TODO: no tail reductions in syz comp
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/options.h>
- #include <kernel/tgb.h>
- #include <kernel/tgb_internal.h>
-diff --git a/kernel/tgbgauss.cc b/kernel/tgbgauss.cc
-index 7d6db60..a99a0ad 100644
---- a/kernel/tgbgauss.cc
-+++ b/kernel/tgbgauss.cc
-@@ -4,7 +4,7 @@
- /*
- * ABSTRACT: gauss implementation for F4
- */
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/options.h>
- #include <kernel/tgbgauss.h>
- #include <omalloc/omalloc.h>
-diff --git a/kernel/tgbgauss.h b/kernel/tgbgauss.h
-index 994a208..8ab56fc 100644
---- a/kernel/tgbgauss.h
-+++ b/kernel/tgbgauss.h
-@@ -6,7 +6,7 @@
- /*
- * ABSTRACT: gauss implementation for F4 header
- */
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/numbers.h>
- //#include "tgb_internal.h"
-
-diff --git a/kernel/timer.cc b/kernel/timer.cc
-index 4a382bf..7623fa8 100644
---- a/kernel/timer.cc
-+++ b/kernel/timer.cc
-@@ -8,7 +8,7 @@
- #include <sys/resource.h>
- #include <unistd.h>
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
-
- int timerv = 0;
- static double timer_resolution = TIMER_RESOLUTION;
-diff --git a/kernel/tmult.cc b/kernel/tmult.cc
-index c26c61e..647e6e3 100644
---- a/kernel/tmult.cc
-+++ b/kernel/tmult.cc
-@@ -4,7 +4,7 @@
- * tmult.cc: p_Mult_nn with pthreads - experimental
- *
- *******************************************************************/
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/structs.h>
- #include <kernel/numbers.h>
- #include <kernel/polys.h>
-diff --git a/kernel/units.cc b/kernel/units.cc
-index 37f7416..3c40728 100644
---- a/kernel/units.cc
-+++ b/kernel/units.cc
-@@ -5,7 +5,7 @@
- * ABSTRACT: procedures to compute with units
- */
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/structs.h>
- #include <kernel/febase.h>
- #include <kernel/numbers.h>
-diff --git a/kernel/walkMain.cc b/kernel/walkMain.cc
-index c0ac32a..1f5b530 100644
---- a/kernel/walkMain.cc
-+++ b/kernel/walkMain.cc
-@@ -6,7 +6,7 @@
- *
- */
- #include <string.h>
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/options.h>
- #include <kernel/intvec.h>
- #include <kernel/int64vec.h>
-diff --git a/kernel/walkProc.cc b/kernel/walkProc.cc
-index 18945b7..8e39c5a 100644
---- a/kernel/walkProc.cc
-+++ b/kernel/walkProc.cc
-@@ -2,7 +2,7 @@
- * Computer Algebra System SINGULAR *
- ****************************************/
-
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/structs.h>
- #include <kernel/structs.h>
- #include <kernel/polys.h>
-diff --git a/kernel/walkSupport.cc b/kernel/walkSupport.cc
-index ea9c1fa..ada42f7 100644
---- a/kernel/walkSupport.cc
-+++ b/kernel/walkSupport.cc
-@@ -1,5 +1,5 @@
- #include <string.h>
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/intvec.h>
- #include <kernel/int64vec.h>
- #include <kernel/polys.h>
-diff --git a/kernel/weight.cc b/kernel/weight.cc
-index 23a8779..936187b 100644
---- a/kernel/weight.cc
-+++ b/kernel/weight.cc
-@@ -7,7 +7,7 @@
- */
-
- #include <math.h>
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <kernel/options.h>
- #include <omalloc/omalloc.h>
- #include <kernel/polys.h>
-diff --git a/kernel/weight0.c b/kernel/weight0.c
-index 80454d9..04746d5 100644
---- a/kernel/weight0.c
-+++ b/kernel/weight0.c
-@@ -8,7 +8,7 @@
-
- #include <math.h>
- #include <string.h>
--#include <kernel/mod2.h>
-+#include <Singular/mod2.h>
- #include <omalloc/omalloc.h>
- #include <kernel/structs.h>
-
diff --git a/debian/patches/0007-move-libreadline-to-main-binary.patch b/debian/patches/0007-move-libreadline-to-main-binary.patch
deleted file mode 100644
index a8b6d96..0000000
--- a/debian/patches/0007-move-libreadline-to-main-binary.patch
+++ /dev/null
@@ -1,219 +0,0 @@
-From 846b23172d3c400611e0736b87009c9e2c4f7568 Mon Sep 17 00:00:00 2001
-From: "Bernhard R. Link" <brlink at debian.org>
-Date: Sun, 26 Feb 2012 13:38:14 +0100
-Subject: move libreadline to main binary
-
-and link Singular binary against libsingular instead of carrying a copy
-of everything.
-
-Forwarded: not-needed
----
- Singular/Makefile.in | 8 +++++---
- kernel/Makefile.in | 17 +++++++++--------
- kernel/febase.cc | 41 +++++++++++++++++++++++++++++++++++++++++
- kernel/feread.cc | 27 +--------------------------
- 4 files changed, 56 insertions(+), 37 deletions(-)
-
-diff --git a/Singular/Makefile.in b/Singular/Makefile.in
-index 6b94ca2..61bc6f7 100644
---- a/Singular/Makefile.in
-+++ b/Singular/Makefile.in
-@@ -137,7 +137,7 @@ HAVE_MPSR = @HAVE_MPSR@
- #
- # Handle libSINGULAR stuff
- #
--LIBSINGULAR_LIBS =-lsingfac -lsingcf -lntl -lreadline -lgmp -lomalloc
-+LIBSINGULAR_LIBS =-lsingfac -lsingcf -lntl -lgmp -lomalloc -ldl
-
- SO_SUFFIX = so
-
-@@ -380,12 +380,14 @@ Singular-static: version.h
- ${MAKE} LD_STATIC=1 S_EXT="-static" Singular-static
- echo "#undef HAVE_STATIC" > static.h
-
-+SINGULAR_DYNAMIC = libsingular.$(SO_SUFFIX) ../kernel/feread.o ../kernel/fereadl.o
-+
- Singular${S_EXT}: mod2.h Makefile version.h $(WIN_LIBS) scanner.cc ${OBJS} \
-- iparith.o tesths.cc libparse.cc claptmpl.o mpsr_Tok.o $(DL_LIBS)
-+ iparith.o tesths.cc libparse.cc claptmpl.o mpsr_Tok.o $(DL_LIBS) $(SINGULAR_DYNAMIC)
- ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${CXXTEMPLFLAGS} ${DEFS} \
- -o Singular${S_EXT} \
- tesths.cc iparith.o mpsr_Tok.o claptmpl.o\
-- ${OBJS} ${LDFLAGS} ${LIBS} ../kernel/mmalloc.o
-+ ${OBJS} $(SINGULAR_DYNAMIC) ${LDFLAGS} ${LIBS} ../kernel/mmalloc.o
-
- libsingular: libsingular.${SO_SUFFIX}
-
-diff --git a/kernel/Makefile.in b/kernel/Makefile.in
-index 78d2b07..727364e 100644
---- a/kernel/Makefile.in
-+++ b/kernel/Makefile.in
-@@ -91,7 +91,7 @@ endif
- # normal C++ source files
- CXXSOURCES=bigintmat.cc clapconv.cc \
- clapsing.cc \
-- febase.cc feread.cc feResource.cc \
-+ febase.cc feResource.cc \
- ffields.cc hdegree.cc hilb.cc hutil.cc \
- sca.cc gring.cc gr_kstd2.cc summator.cc ncSAMult.cc ncSAFormula.cc \
- ideals.cc intvec.cc int64vec.cc \
-@@ -119,7 +119,7 @@ CXXSOURCES=bigintmat.cc clapconv.cc \
- CXXSOURCES2 = SingularBuilder.cpp
-
- # normal C source files
--CSOURCES=weight0.c fegetopt.c fereadl.c dError.c mmstd.c
-+CSOURCES=weight0.c fegetopt.c dError.c mmstd.c
-
- # C++ sources which are used if part of the kernel are dynamically linked
- ifeq ($(DL_KERNEL),1)
-@@ -137,7 +137,8 @@ STATIC_SOURCES=p_Procs_Static.cc
-
- # special C++ source files (need extra compiling and/or linking), for which
- # dependencies should be generated
--ESOURCES=mmalloc.cc $(DL_KERNEL_SOURCES) $(DL_LIB_SOURCES) $(STATIC_SOURCES)
-+ESOURCES=mmalloc.cc $(DL_KERNEL_SOURCES) $(DL_LIB_SOURCES) $(STATIC_SOURCES) feread.cc
-+ECSOURCES=fereadl.c
-
- SOURCES=${CSOURCES} ${CXXSOURCES} \
- prCopyTemplate.cc \
-@@ -177,13 +178,13 @@ HEADERS=bigintmat.h hutil.h idrec.h stairc.h ideals.h \
- p_Procs_Dynamic.h p_Procs_Impl.h p_Procs_Set.h \
- p_Procs.h p_Procs_Static.h p_Mult_q.h
-
--DISTFILES=${SOURCES} ${HEADERS} ${ESOURCES} \
-+DISTFILES=${SOURCES} ${HEADERS} ${ESOURCES} ${ECSOURCES} \
- Makefile.in \
- mkinstalldirs \
- prCopy.pl
-
- OBJS := $(CXXSOURCES:.cc=.o) $(CSOURCES:.c=.o) #$(CXXSOURCES2:.cpp=.o)
--OBJS2 := $(ESOURCES:.cc=.o)
-+OBJS2 := $(ESOURCES:.cc=.o) $(ECSOURCES:.c=.o)
- OBJSG2 := $(ESOURCES:.cc=.og)
- OBJSP2 := $(ESOURCES:.cc=.op)
-
-@@ -338,8 +339,8 @@ maintainer-clean: distclean srcclean
- ## miscellanous targets
- ##
-
--TAGS: ${SOURCES} ${ESOURCES} ${HEADERS}
-- etags ${SOURCES} ${ESOURCES} ${HEADERS}
-+TAGS: ${SOURCES} ${ESOURCES} ${ECSOURCES} ${HEADERS}
-+ etags ${SOURCES} ${ESOURCES} ${ECSOURCES} ${HEADERS}
-
- tags:
- ctags *.c *.h *.cc *.inc
-@@ -447,7 +448,7 @@ libkernel_p.a: ${OBJP} ${DL_LIBSP} ${OBJSP2}
- echo $(@:.d=.og) $(@:.d=.op) " " \\ > $@
- $(CCM) ${CPPFLAGS} ${DEFSG} $< >> $@
-
--depend: $(CXXSOURCES:.cc=.dd) $(ESOURCES:.cc=.dd) $(CSOURCES:.c=.d)
-+depend: $(CXXSOURCES:.cc=.dd) $(ESOURCES:.cc=.dd) $(ECSOURCES:.c=.d) $(CSOURCES:.c=.d)
- cat *.d *.dd >depend
-
- ifeq (depend,$(wildcard depend))
-diff --git a/kernel/febase.cc b/kernel/febase.cc
-index 725eca2..971f7fd 100644
---- a/kernel/febase.cc
-+++ b/kernel/febase.cc
-@@ -26,6 +26,47 @@
- #include <kernel/dError.h>
- #include <kernel/options.h>
-
-+/* some stuff move here from feread.cc: */
-+
-+/* ===================================================================*/
-+/* = batch mode = */
-+/* ===================================================================*/
-+/* dummy (for batch mode): */
-+char * fe_fgets_dummy(const char *pr,char *s, int size)
-+{
-+ return NULL;
-+}
-+
-+/* ===================================================================*/
-+/* = fgets = */
-+/* ===================================================================*/
-+char * fe_fgets(const char *pr,char *s, int size)
-+{
-+ if (BVERBOSE(V_PROMPT))
-+ {
-+ fprintf(stdout,"%s",pr);
-+ }
-+ mflush();
-+ return fgets(s,size,stdin);
-+}
-+
-+char * fe_fgets_stdin_init(const char *pr,char *s, int size) __attribute__((weak));
-+char * fe_fgets_stdin_init(const char *pr,char *s, int size) {
-+ Werror("No method to read from stdin loaded!\n");
-+ return NULL;
-+}
-+extern "C" {
-+void fe_reset_input_mode (void) __attribute__((weak));
-+void fe_reset_input_mode (void)
-+{
-+}
-+}
-+
-+char * (*fe_fgets_stdin)(const char *pr,char *s, int size)
-+ = fe_fgets_stdin_init;
-+
-+/* end of some stuff move here from feread.cc */
-+
- #define fePutChar(c) fputc((unsigned char)(c),stdout)
- /*0 implementation */
-
-diff --git a/kernel/feread.cc b/kernel/feread.cc
-index 8f67c5e..522ed9c 100644
---- a/kernel/feread.cc
-+++ b/kernel/feread.cc
-@@ -30,10 +30,6 @@
- #include <unistd.h>
- #endif
-
--static char * fe_fgets_stdin_init(const char *pr,char *s, int size);
--char * (*fe_fgets_stdin)(const char *pr,char *s, int size)
-- = fe_fgets_stdin_init;
--
- extern char *iiArithGetCmd(int);
-
- /* ===================================================================*/
-@@ -289,23 +285,11 @@ char * fe_fgets_stdin_drl(const char *pr,char *s, int size)
- }
- #endif
-
--/* ===================================================================*/
--/* = fgets = */
--/* ===================================================================*/
--char * fe_fgets(const char *pr,char *s, int size)
--{
-- if (BVERBOSE(V_PROMPT))
-- {
-- fprintf(stdout,"%s",pr);
-- }
-- mflush();
-- return fgets(s,size,stdin);
--}
-
- /* ===================================================================*/
- /* = init for static rl, dyn. rl, emu. rl = */
- /* ===================================================================*/
--static char * fe_fgets_stdin_init(const char *pr,char *s, int size)
-+char * fe_fgets_stdin_init(const char *pr,char *s, int size)
- {
- #if (defined(HAVE_READLINE) || defined(HAVE_LIBREADLINE)) && !defined(HAVE_DYN_RL) && !defined(HAVE_FEREAD)
- /* Allow conditional parsing of the ~/.inputrc file. */
-@@ -393,12 +377,3 @@ static char * fe_fgets_stdin_init(const char *pr,char *s, int size)
- #endif
- }
-
--/* ===================================================================*/
--/* = batch mode = */
--/* ===================================================================*/
--/* dummy (for batch mode): */
--char * fe_fgets_dummy(const char *pr,char *s, int size)
--{
-- return NULL;
--}
--
diff --git a/debian/patches/0008-default-path-settings.patch b/debian/patches/0008-default-path-settings.patch
deleted file mode 100644
index 14fcc73..0000000
--- a/debian/patches/0008-default-path-settings.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 9498be97aa05974cb61cb293a273d381c69f6c62 Mon Sep 17 00:00:00 2001
-From: "Bernhard R. Link" <brlink at debian.org>
-Date: Sat, 25 Feb 2012 13:47:46 +0100
-Subject: default path settings
-
-- Hardcode "Singular" pathname, so we can install the library to a
- different location than the binaries.
-- as S_BIN_DIR and S_ROOT_DIR are the same in the Debian package,
- don't default ROOT_DIR to BIN_DIR/..
-- xterm set as x-terminal-emulator alternative.
-- emacs binary located in /usr/bin
-- remove %b/.. and %r/.. from default search path in order to
- not look into /usr/lib/LIB for libraries.
-
-Forwarded: not-needed
----
- kernel/feResource.cc | 14 ++++++--------
- 1 file changed, 6 insertions(+), 8 deletions(-)
-
-diff --git a/kernel/feResource.cc b/kernel/feResource.cc
-index 01bb816..950929a 100644
---- a/kernel/feResource.cc
-+++ b/kernel/feResource.cc
-@@ -75,13 +75,11 @@ static feResourceConfig_s feResourceConfigs[] =
- "%b/LIB;"
- "%b/MOD;"
- "%r/LIB;"
-- "%r/../LIB;"
- "%d/LIB;"
-- "%d/../LIB"
- ""},
-- {"Singular", 'S', feResBinary,"SINGULAR_EXECUTABLE", "%d/"S_UNAME"/Singular",(char *)""},
-- {"BinDir", 'b', feResDir, "SINGULAR_BIN_DIR", "%d/"S_UNAME, (char *)""},
-- {"RootDir", 'r', feResDir, "SINGULAR_ROOT_DIR", "%b/..", (char *)""},
-+ {"Singular", 'S', feResBinary,"SINGULAR_EXECUTABLE", "%b/Singular",(char *)S_ROOT_DIR "/Singular"},
-+ {"BinDir", 'b', feResDir, "SINGULAR_BIN_DIR", "%r", (char *)""},
-+ {"RootDir", 'r', feResDir, "SINGULAR_ROOT_DIR", S_ROOT_DIR, (char *)""},
- {"DefaultDir",'d', feResDir, "SINGULAR_DEFAULT_DIR", SINGULAR_DEFAULT_DIR, (char *)""},
- {"InfoFile", 'i', feResFile, "SINGULAR_INFO_FILE", "%r/info/singular.hlp", (char *)""},
- {"IdxFile", 'x', feResFile, "SINGULAR_IDX_FILE", "%r/doc/singular.idx", (char *)""},
-@@ -94,8 +92,8 @@ static feResourceConfig_s feResourceConfigs[] =
- {"Path", 'p', feResPath, NULL, "%b;$PATH", (char *)""},
-
- #ifdef ESINGULAR
-- {"emacs", 'E', feResBinary,"ESINGULAR_EMACS", "%b/emacs", (char *)""},
-- {"xemacs", 'A', feResBinary,"ESINGULAR_EMACS", "%b/xemacs", (char *)""},
-+ {"emacs", 'E', feResBinary,"ESINGULAR_EMACS", "/usr/bin/emacs", (char *)""},
-+ {"xemacs", 'A', feResBinary,"ESINGULAR_EMACS", "/usr/bin/xemacs", (char *)""},
- {"SingularEmacs",'M', feResBinary,"ESINGULAR_SINGULAR", "%b/Singular", (char *)""},
- {"EmacsLoad", 'l', feResFile, "ESINGULAR_EMACS_LOAD", "%e/.emacs-singular", (char *)""},
- {"EmacsDir", 'e', feResDir, "ESINGULAR_EMACS_DIR", "%r/emacs", (char *)""},
-@@ -104,7 +102,7 @@ static feResourceConfig_s feResourceConfigs[] =
- #ifdef ix86_Win
- {"rxvt", 'X', feResBinary,"RXVT", "%b/rxvt", (char *)""},
- #else
-- {"xterm", 'X', feResBinary,"XTERM", "%b/xterm", (char *)""},
-+ {"xterm", 'X', feResBinary,"XTERM", "/usr/bin/x-terminal-emulator", (char *)""},
- #endif
- #else
- {"EmacsDir", 'e', feResDir, "SINGULAR_EMACS_DIR", "%r/emacs", (char *)""},
diff --git a/debian/patches/0009-disable-examples-for-divisors-and-gitfan.patch b/debian/patches/0009-disable-examples-for-divisors-and-gitfan.patch
deleted file mode 100644
index 2ec8ef8..0000000
--- a/debian/patches/0009-disable-examples-for-divisors-and-gitfan.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From e941222fa54ee5e161e6786c6ead0483bfd391ca Mon Sep 17 00:00:00 2001
-From: Felix Salfelder <felix at salfelder.org>
-Date: Tue, 19 Mar 2013 17:30:10 +0100
-Subject: disable examples for divisors and gitfan
-
-this is too much. there are only 3 examples in divisors that need to be
-disabled...
-
-Forwarded: not-needed
----
- doc/singular.doc | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/doc/singular.doc b/doc/singular.doc
-index 602ab1c..c7dad7e 100644
---- a/doc/singular.doc
-+++ b/doc/singular.doc
-@@ -960,7 +960,7 @@ Comments should be send to the author of the library directly.
- @node divisors_lib,ffsolve_lib,classifyceq_lib, Experimental libraries
- @subsection divisors_lib
-
-- at c lib divisors.lib
-+ at c lib divisors.lib no_ex
- @c ----------------------------------------------------------
- @node ffsolve_lib, findifs_lib, divisors_lib, Experimental libraries
- @subsection ffsolve_lib
-@@ -992,7 +992,7 @@ Issues:
- @node gitfan_lib,lll_lib, finitediff_lib, Experimental libraries
- @subsection gitfan_lib
-
-- at c lib gitfan.lib
-+ at c lib gitfan.lib no_ex
-
- @c ----------------------------------------------------------
- @node lll_lib, locnormal_lib, gitfan_lib, Experimental libraries
diff --git a/debian/patches/0010-fix-warning-treated-as-error-in-pyobject.cc.patch b/debian/patches/0010-fix-warning-treated-as-error-in-pyobject.cc.patch
deleted file mode 100644
index 788b775..0000000
--- a/debian/patches/0010-fix-warning-treated-as-error-in-pyobject.cc.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 38b6d0f27fa31f7878d3b2ba546bc8e4f44dde75 Mon Sep 17 00:00:00 2001
-From: Felix Salfelder <felix at salfelder.org>
-Date: Tue, 19 Mar 2013 08:27:10 +0100
-Subject: fix warning treated as error in pyobject.cc
-
-Forwarded: not-needed
----
- Singular/pyobject.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Singular/pyobject.cc b/Singular/pyobject.cc
-index 354b5b6..51a8882 100644
---- a/Singular/pyobject.cc
-+++ b/Singular/pyobject.cc
-@@ -240,7 +240,7 @@ protected:
- PyErr_Fetch(&pType, &pMessage, &pTraceback);
-
- Werror("pyobject error occured");
-- Werror(PyString_AsString(pMessage));
-+ Werror("%s", PyString_AsString(pMessage));
-
- Py_XDECREF(pType);
- Py_XDECREF(pMessage);
diff --git a/debian/patches/0011-also-install-sing_dbm.h.patch b/debian/patches/0011-also-install-sing_dbm.h.patch
deleted file mode 100644
index 385c753..0000000
--- a/debian/patches/0011-also-install-sing_dbm.h.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 9a818c9c4186e3c84a6bbcbde26b331dbaf9739b Mon Sep 17 00:00:00 2001
-From: Felix Salfelder <felix at salfelder.org>
-Date: Wed, 20 Mar 2013 22:07:13 +0100
-Subject: also install sing_dbm.h
-
-Forwarded: not-needed
----
- Singular/Makefile.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Singular/Makefile.in b/Singular/Makefile.in
-index 61bc6f7..960dcc0 100644
---- a/Singular/Makefile.in
-+++ b/Singular/Makefile.in
-@@ -618,7 +618,7 @@ install-libsingular: libsingular
- ${INSTALL_PROGRAM} $$file $(DESTDIR)${libdir}; \
- done
- ${INSTALL_PROGRAM} libsingular.h $(DESTDIR)${includedir}
-- for file in subexpr.h tok.h grammar.h ipid.h lists.h ipshell.h attrib.h silink.h table.h; do \
-+ for file in subexpr.h tok.h grammar.h ipid.h lists.h ipshell.h attrib.h silink.h table.h sing_dbm.h; do \
- sed -e "s:<kernel/:<singular/:" < $$file |sed -e "s:<Singular/:<singular/:"|sed -e "s:<omalloc/:<:"|sed -e "s:<factory/:<:" >$(DESTDIR)${includedir}/singular/$$file ;\
- done
-
diff --git a/debian/patches/0012-don-t-forget-LDFLAGS-in-module-compilation.patch b/debian/patches/0012-don-t-forget-LDFLAGS-in-module-compilation.patch
deleted file mode 100644
index 1c88cfe..0000000
--- a/debian/patches/0012-don-t-forget-LDFLAGS-in-module-compilation.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 96d569ae2c6f5dc66bbce1ef513d379c19bb7ea8 Mon Sep 17 00:00:00 2001
-From: Felix Salfelder <felix at salfelder.org>
-Date: Mon, 25 Mar 2013 10:32:45 +0100
-Subject: don't forget LDFLAGS in module compilation
-
-Forwarded: not-needed
----
- Singular/Makefile.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Singular/Makefile.in b/Singular/Makefile.in
-index 960dcc0..c1e69bd 100644
---- a/Singular/Makefile.in
-+++ b/Singular/Makefile.in
-@@ -505,7 +505,7 @@ dbmsr.so: $(DBMSR_SOURCES:.cc=.dl_o)
- MOD/pyobject.${MODULE_SUFFIX}: pyobject.dl_o
- @echo "build dynamic module pyobject..."
- $(MKINSTALLDIRS) $(srcdir)/MOD
-- $(CXX) $^ ${PYTHON_MODULE_LDFLAGS} ${SLDFLAGS} ${PYTHON_MODULE_LIBS} ${LD_LIBC} -o $@
-+ $(CXX) $^ ${PYTHON_MODULE_LDFLAGS} $(LDFLAGS) ${SLDFLAGS} ${PYTHON_MODULE_LIBS} ${LD_LIBC} -o $@
-
- src: scanner.cc grammar.h grammar.cc libparse.cc
-
diff --git a/debian/patches/0013-fix-mmInit-weirdness.patch b/debian/patches/0013-fix-mmInit-weirdness.patch
deleted file mode 100644
index e357283..0000000
--- a/debian/patches/0013-fix-mmInit-weirdness.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From 0d086256d04a861ca04d99d8c7a467efdf84bbd4 Mon Sep 17 00:00:00 2001
-From: Felix Salfelder <felix at salfelder.org>
-Date: Sat, 14 Sep 2013 18:11:32 +0200
-Subject: fix mmInit weirdness.
-
-Forwarded: not-needed
----
- Singular/Makefile.in | 12 ++++++++----
- Singular/misc_ip.cc | 7 -------
- Singular/mmInit.cc | 8 ++++++++
- 3 files changed, 16 insertions(+), 11 deletions(-)
- create mode 100644 Singular/mmInit.cc
-
-diff --git a/Singular/Makefile.in b/Singular/Makefile.in
-index c1e69bd..23beba4 100644
---- a/Singular/Makefile.in
-+++ b/Singular/Makefile.in
-@@ -216,7 +216,7 @@ endif
- CXXSOURCES=grammar.cc scanner.cc attrib.cc \
- blackbox.cc eigenval_ip.cc\
- extra.cc fehelp.cc feOpt.cc \
-- ipassign.cc ipconv.cc ipid.cc iplib.cc \
-+ ipassign.cc ipconv.cc ipid.cc \
- ipprint.cc ipshell.cc \
- newstruct.cc lists.cc \
- sdb.cc \
-@@ -364,6 +364,10 @@ GFTABLES = $(wildcard LIB/gftables/[1-9]*)
-
- .cc.o:
- ${CXX} -fPIC ${CXXFLAGS} ${CXXTEMPLFLAGS} ${CPPFLAGS} ${DEFS} -c $<
-+
-+iplib_lib.o: iplib.cc
-+ ${CXX} ${CXXFLAGS} ${CXXTEMPLFLAGS} -DLIBSINGULAR ${CPPFLAGS} ${DEFS} -c $< -o $@
-+
- .c.o:
- ${CC} -fPIC ${CFLAGS} ${CPPFLAGS} ${DEFS} -c $<
-
-@@ -392,10 +396,10 @@ Singular${S_EXT}: mod2.h Makefile version.h $(WIN_LIBS) scanner.cc ${OBJS} \
- libsingular: libsingular.${SO_SUFFIX}
-
- libsingular.${SO_SUFFIX}: version.h $(WIN_LIBS) scanner.cc ${OBJS} \
-- iparith.o libparse.cc claptmpl.o mpsr_Tok.o $(DL_LIBS) tesths.o
-+ iparith.o libparse.cc claptmpl.o mpsr_Tok.o $(DL_LIBS) mmInit.o iplib_lib.o
- $(LIBSINGULAR_LD) ${SLDFLAGS} ${LIBSINGULAR_FLAGS} -o libsingular.${SO_SUFFIX} \
-- tesths.o iparith.o mpsr_Tok.o claptmpl.o \
-- ${OBJS} -lkernel -L../kernel -L../factory -L../libfac -L../omalloc -L${libdir} ${LIBSINGULAR_LIBS}
-+ iparith.o mpsr_Tok.o claptmpl.o mmInit.o iplib_lib.o \
-+ ${OBJS} -lkernel -L../kernel -L../factory -L../libfac -L../omalloc -L${libdir} ${LIBSINGULAR_LIBS}
-
- libsingular.a: mod2.h Makefile version.h $(WIN_LIBS) scanner.cc ${OBJS} \
- iparith.o libparse.cc claptmpl.o mpsr_Tok.o
-diff --git a/Singular/misc_ip.cc b/Singular/misc_ip.cc
-index bd2c2b5..a00659d 100644
---- a/Singular/misc_ip.cc
-+++ b/Singular/misc_ip.cc
-@@ -1220,11 +1220,4 @@ void siInit(char *name)
- }
-
- #ifdef LIBSINGULAR
--#ifdef HAVE_FACTORY
--// the init routines of factory need mmInit
--int mmInit( void )
--{
-- return 1;
--}
--#endif
- #endif
-diff --git a/Singular/mmInit.cc b/Singular/mmInit.cc
-new file mode 100644
-index 0000000..aa49bae
---- /dev/null
-+++ b/Singular/mmInit.cc
-@@ -0,0 +1,8 @@
-+#include <kernel/mod2.h>
-+#ifdef HAVE_FACTORY
-+// the init routines of factory need mmInit
-+int mmInit( void )
-+{
-+ return 1;
-+}
-+#endif
diff --git a/debian/patches/0014-sanitize-cf_gmp.h-generation.patch b/debian/patches/0014-sanitize-cf_gmp.h-generation.patch
deleted file mode 100644
index ea49004..0000000
--- a/debian/patches/0014-sanitize-cf_gmp.h-generation.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 481d2189dc80cb08d4e3b34205afdb7f3ee01074 Mon Sep 17 00:00:00 2001
-From: Felix Salfelder <felix at salfelder.org>
-Date: Tue, 20 Aug 2013 13:52:48 +0200
-Subject: sanitize cf_gmp.h generation
-
-this is similar to
-http://trac.sagemath.org/attachment/ticket/14737/sanitize_gmp_header_hack.patch
-
-Forwarded: not-needed
----
- factory/GNUmakefile.in | 14 ++++++++------
- factory/gen_cf_gmp.template | 3 ---
- 2 files changed, 8 insertions(+), 9 deletions(-)
- delete mode 100644 factory/gen_cf_gmp.template
-
-diff --git a/factory/GNUmakefile.in b/factory/GNUmakefile.in
-index cb28207..45836f9 100644
---- a/factory/GNUmakefile.in
-+++ b/factory/GNUmakefile.in
-@@ -684,9 +684,11 @@ GNUmakefile: GNUmakefile.in config.status
- config.status: configure
- ./config.status --recheck
-
--# create cf_gmp.h
--cf_gmp.h: gen_cf_gmp.template
-- echo "#!/bin/sh" >gen_cf_gmp.sh
-- echo "GMP_H_T=\"`$(CXX) $(LIBCXXFLAGS) -M gen_cf_gmp.cc|grep gmp.h` \"" >>gen_cf_gmp.sh
-- cat gen_cf_gmp.template >>gen_cf_gmp.sh
-- $(SHELL) gen_cf_gmp.sh
-+GMP_H_ = $(shell echo '\#include <gmp.h>' | $(CXX) $(LIBCXXFLAGS) -E - -M -MP | grep 'gmp\.h:$$' )
-+GMP_H__ = $(GMP_H_:.h:=.h)
-+
-+cf_gmp.h: GNUmakefile $(GMP_H__)
-+ @echo "Generating $@ from $(GMP_H__)...";
-+ test -f "$(GMP_H__)"
-+ grep -v '__GMP_DECLSPEC_XX|std::FILE' $(GMP_H__) > $@T
-+ diff $@T $@ >/dev/null 2>/dev/null && rm $@T || mv $@T $@
-diff --git a/factory/gen_cf_gmp.template b/factory/gen_cf_gmp.template
-deleted file mode 100644
-index 90389ac..0000000
---- a/factory/gen_cf_gmp.template
-+++ /dev/null
-@@ -1,3 +0,0 @@
--GMP_H=`echo $GMP_H_T| sed -e 's/^.*gmp.cc//' -e 's/ .$//'`
--echo generating cf_gmp.h from $GMP_H
--cat $GMP_H | grep -v __GMP_DECLSPEC_XX |grep -v std::FILE > cf_gmp.h
diff --git a/debian/patches/0015-use-bin-sed-not-sed-in-build-system.patch b/debian/patches/0015-use-bin-sed-not-sed-in-build-system.patch
deleted file mode 100644
index b5d6896..0000000
--- a/debian/patches/0015-use-bin-sed-not-sed-in-build-system.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From 9979b15239cbbd95b0858fff7254c9eda80783d9 Mon Sep 17 00:00:00 2001
-From: Julien Puydt <julien.puydt at laposte.net>
-Date: Sun, 25 May 2014 13:02:55 +0200
-Subject: use /bin/sed, not sed, in build system
-
-Forwarded: not-needed
----
- Singular/Makefile.in | 3 ++-
- doc/Makefile.in | 5 +++--
- kernel/Makefile.in | 3 ++-
- mkinstalldirs | 2 +-
- 4 files changed, 8 insertions(+), 5 deletions(-)
-
-diff --git a/Singular/Makefile.in b/Singular/Makefile.in
-index 23beba4..52de247 100644
---- a/Singular/Makefile.in
-+++ b/Singular/Makefile.in
-@@ -67,6 +67,7 @@ CC = @CC@
- LD = @LD@
- CXX = @CXX@
- LEX = sh flexer.sh
-+SED = /bin/sed
-
- PERL = @PERL@
- BISON = bison
-@@ -623,7 +624,7 @@ install-libsingular: libsingular
- done
- ${INSTALL_PROGRAM} libsingular.h $(DESTDIR)${includedir}
- for file in subexpr.h tok.h grammar.h ipid.h lists.h ipshell.h attrib.h silink.h table.h sing_dbm.h; do \
-- sed -e "s:<kernel/:<singular/:" < $$file |sed -e "s:<Singular/:<singular/:"|sed -e "s:<omalloc/:<:"|sed -e "s:<factory/:<:" >$(DESTDIR)${includedir}/singular/$$file ;\
-+ $(SED) -e "s:<kernel/:<singular/:" < $$file |$(SED) -e "s:<Singular/:<singular/:"|$(SED) -e "s:<omalloc/:<:"|$(SED) -e "s:<factory/:<:" >$(DESTDIR)${includedir}/singular/$$file ;\
- done
-
- uninstall: uninstallbin
-diff --git a/doc/Makefile.in b/doc/Makefile.in
-index f3ea4cf..2da78d0 100644
---- a/doc/Makefile.in
-+++ b/doc/Makefile.in
-@@ -45,6 +45,7 @@ GZIP = @MYGZIP@
- UUDECODE = @UUDECODE@
-
- PERL = @PERL@
-+SED = /bin/sed
- TEX = tex
- MAKEINFO = @MAKEINFO@ --force
- TEXI2PDF = @TEXI2PDF@
-@@ -168,10 +169,10 @@ usercard.dvi: usercard.tex singcard.tex
- ${TEX} $<
-
- s-plural.tex: plural.tex
-- sed -e "s/BR_PLURAL_BR/(plural)/g" <plural.tex >s-plural.tex
-+ $(SED) -e "s/BR_PLURAL_BR/(plural)/g" <plural.tex >s-plural.tex
-
- s-plulibs.tex: plulibs.tex
-- sed -e "s/BR_PLURAL_BR/(plural)/g" <plulibs.tex >s-plulibs.tex
-+ $(SED) -e "s/BR_PLURAL_BR/(plural)/g" <plulibs.tex >s-plulibs.tex
-
- # postscript stuff
- ps: dvi manual.ps usercard.ps
-diff --git a/kernel/Makefile.in b/kernel/Makefile.in
-index 727364e..4540b31 100644
---- a/kernel/Makefile.in
-+++ b/kernel/Makefile.in
-@@ -40,6 +40,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
- INSTALL_DATA = @INSTALL_DATA@
- MKINSTALLDIRS = ./mkinstalldirs
- LN_S = @LN_S@
-+SED = /bin/sed
-
- ##
- ## compiler and linker options
-@@ -275,7 +276,7 @@ install-nolns: install
- install-libsingular: install
- ${MKINSTALLDIRS} $(DESTDIR)${includedir}
- ${MKINSTALLDIRS} $(DESTDIR)${includedir}/singular
-- for file in *.h kInline.cc; do sed -e "s:<kernel/:<singular/:"< $$file | sed -e "s:<Singular/:<singular/:"|sed -e "s:<omalloc/:<:"|sed -e "s:<factory/:<:" > $(DESTDIR)${includedir}/singular/$$file; done
-+ for file in *.h kInline.cc; do $(SED) -e "s:<kernel/:<singular/:"< $$file | $(SED) -e "s:<Singular/:<singular/:"|$(SED) -e "s:<omalloc/:<:"|$(SED) -e "s:<factory/:<:" > $(DESTDIR)${includedir}/singular/$$file; done
-
- install: all installbin
-
-diff --git a/mkinstalldirs b/mkinstalldirs
-index 91f6d04..80780d0 100755
---- a/mkinstalldirs
-+++ b/mkinstalldirs
-@@ -8,7 +8,7 @@
- errstatus=0
-
- for file in ${1+"$@"} ; do
-- set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
-+ set fnord `echo ":$file" | /bin/sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
- shift
-
- pathcomp=
diff --git a/debian/patches/0016-Use-full-path-for-a-few-coreutils.patch b/debian/patches/0016-Use-full-path-for-a-few-coreutils.patch
deleted file mode 100644
index 21cc2e4..0000000
--- a/debian/patches/0016-Use-full-path-for-a-few-coreutils.patch
+++ /dev/null
@@ -1,251 +0,0 @@
-From f399e8337d7cc7fb0c248bdab8b3a36023516a37 Mon Sep 17 00:00:00 2001
-From: Julien Puydt <julien.puydt at laposte.net>
-Date: Mon, 26 May 2014 09:43:52 +0200
-Subject: Use full path for a few coreutils
-
-For some reason quite a few places need /bin/something...
-
-Forwarded: not-needed
----
- Makefile.in | 15 +++++++--------
- doc/Makefile.in | 48 +++++++++++++++++++++++++-----------------------
- install-sh | 12 ++++++------
- mkinstalldirs | 2 +-
- 4 files changed, 39 insertions(+), 38 deletions(-)
-
-diff --git a/Makefile.in b/Makefile.in
-index f2eaa65..bd1718d 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -21,6 +21,7 @@ PERL = @PERL@
- TMP_DIR = @TMP_DIR@
- MYGZIP = @MYGZIP@ -9
- GUNZIP = @GUNZIP@
-+CHMOD = /bin/chmod
-
- ##############################################################
- # default target
-@@ -53,8 +54,6 @@ install install_all:
- if test "$@" = uninstall; then\
- echo rm -f doc/$${FILE};\
- rm -f doc/$${FILE}; \
-- else \
-- echo cp ${TEXINFO_TEX_DIR}/$${FILE} doc; \
- cp ${TEXINFO_TEX_DIR}/$${FILE} doc; \
- fi; \
- done;\
-@@ -258,7 +257,7 @@ dist: ${SHAREDIST_NAME}.tar.gz ${BINDIST_NAME}.tar.gz
- sharedist ${SHAREDIST_NAME}.tar.gz:
- if test -d ${SI_TMPDIR}; then rm -rf ${SI_TMPDIR}; fi
- ${MAKE} install-sharedist localdir=${SI_TMPDIR}
-- chmod -R a+rX ${SI_TMPDIR}
-+ $(CHMOD) -R a+rX ${SI_TMPDIR}
- cd ${SI_TMPDIR}; tar cf - Singular| ${MYGZIP} > ${SHAREDIST_NAME}.tar.gz
- mv ${SI_TMPDIR}/${SHAREDIST_NAME}.tar.gz .
- rm -rf ${SI_TMPDIR}
-@@ -266,7 +265,7 @@ sharedist ${SHAREDIST_NAME}.tar.gz:
- bindist ${BINDIST_NAME}.tar.gz:
- if test -d ${SI_TMPDIR}; then rm -fr ${SI_TMPDIR}; fi
- ${MAKE} install-bindist localdir=${SI_TMPDIR}
-- chmod -R a+rX ${SI_TMPDIR}
-+ $(CHMOD) -R a+rX ${SI_TMPDIR}
- cd ${SI_TMPDIR}; tar cf - Singular| ${MYGZIP} > ${BINDIST_NAME}.tar.gz
- mv ${SI_TMPDIR}/${BINDIST_NAME}.tar.gz .
- rm -rf ${SI_TMPDIR}
-@@ -274,7 +273,7 @@ bindist ${BINDIST_NAME}.tar.gz:
- static-bindist ${BINDIST_NAME}-static.tar.gz:
- if test -d ${SI_TMPDIR}; then rm -fr ${SI_TMPDIR}; fi
- ${MAKE} install-bindist localdir=${SI_TMPDIR} LD_STATIC=1
-- chmod -R a+rX ${SI_TMPDIR}
-+ $(CHMOD) -R a+rX ${SI_TMPDIR}
- -rm -f ${SI_TMPDIR}/Singular/*/*/*.so
- -rm -f ${SI_TMPDIR}/Singular/*/*/modgen*
- cd ${SI_TMPDIR}; tar cf - Singular| ${MYGZIP} > ${BINDIST_NAME}-static.tar.gz
-@@ -651,7 +650,7 @@ _static-bindist: ${SINGULAR}
- -strip ${SI_TMPDIR}/${BINDIR_NAME}/*
- cat INSTALL.unix | sed -e "s/<x-y-z>/${S_VERSION}/g" > \
- ${SI_TMPDIR}/Singular/INSTALL
-- cd ${SI_TMPDIR}; chmod -R a+rX *;\
-+ cd ${SI_TMPDIR}; $(CHMOD) -R a+rX *;\
- tar cf - Singular | ${MYGZIP} > ${BINDIST_NAME}-static.tar.gz
- mv ${SI_TMPDIR}/${BINDIST_NAME}-static.tar.gz .
- rm -rf ${SI_TMPDIR}
-@@ -682,7 +681,7 @@ windist: ${SINGULAR}
- ${INSTALL} ${CYGWIN_DLL} ${SI_TMPDIR}/${BINDIR_NAME}
- cat INSTALL.win | sed -e "s/<x-y-z>/${S_VERSION}/g" > \
- ${SI_TMPDIR}/Singular/INSTALL
-- cd ${SI_TMPDIR}; chmod -R a+rX *;\
-+ cd ${SI_TMPDIR}; $(CHMOD) -R a+rX *;\
- ${ZIP} -r sing Singular
- mv ${SI_TMPDIR}/sing.zip Singular-${S_VERSION}-${SINGUNAME}.zip
- rm -rf ${SI_TMPDIR}
-@@ -695,7 +694,7 @@ srcdist:
- touch grammar.cc;\
- touch scanner.cc;\
- cd ../..;\
-- chmod -R a+rX .;\
-+ $(CHMOD) -R a+rX .;\
- tar cf - Singular-${S_VERSION}| ${MYGZIP} > Singular-${S_VERSION}.tar.gz
- mv ${SI_TMPDIR}/Singular-${S_VERSION}.tar.gz .
- rm -rf ${SI_TMPDIR}
-diff --git a/doc/Makefile.in b/doc/Makefile.in
-index 2da78d0..4598a5e 100644
---- a/doc/Makefile.in
-+++ b/doc/Makefile.in
-@@ -44,6 +44,8 @@ MKINSTALLDIRS = ../mkinstalldirs
- GZIP = @MYGZIP@
- UUDECODE = @UUDECODE@
-
-+CP = /bin/cp
-+CHMOD = /bin/chmod
- PERL = @PERL@
- SED = /bin/sed
- TEX = tex
-@@ -243,7 +245,7 @@ endif
- ${PERL} ${TEXI2HTML} -init_file t2h_standalone.init -split none -out_file $@ $<
-
- % : %.txt
-- cp $< $@
-+ $(CP) $< $@
-
- standalone: standalone-txt standalone-html ${STANDALONE_FILES}
-
-@@ -254,15 +256,15 @@ WWW_DIR = /singular/www/2-0/
- FTP_DIR = /ftp/pub/Math/Singular/Development
-
- install-standalone: standalone
-- cp INSTALL_unix.html COPYING.html INSTALL_win.html ${WWW_DIR}
-- cp COPYING COPYING.html ${FTP_DIR}
-- cp INSTALL_unix INSTALL_unix.html ${FTP_DIR}
-- cp INSTALL_win INSTALL_win.html ${FTP_DIR}
-- cp README_ftp.html ${FTP_DIR}/README.html
-- cp README_ftp ${FTP_DIR}/README
-- cp NEWS.html NEWS ${FTP_DIR}
-- cp NEWS.html ${WWW_DIR}
-- - chmod g+w ${FTP_DIR}/*
-+ $(CP) INSTALL_unix.html COPYING.html INSTALL_win.html ${WWW_DIR}
-+ $(CP) COPYING COPYING.html ${FTP_DIR}
-+ $(CP) INSTALL_unix INSTALL_unix.html ${FTP_DIR}
-+ $(CP) INSTALL_win INSTALL_win.html ${FTP_DIR}
-+ $(CP) README_ftp.html ${FTP_DIR}/README.html
-+ $(CP) README_ftp ${FTP_DIR}/README
-+ $(CP) NEWS.html NEWS ${FTP_DIR}
-+ $(CP) NEWS.html ${WWW_DIR}
-+ - $(CHMOD) g+w ${FTP_DIR}/*
-
-
-
-@@ -297,7 +299,7 @@ images/%.xbm : images/%.xbm.uu
-
- ${IMAGES_HTML} : ${IMAGES_SRC}
- test -d ${HTML_SUBDIR} || mkdir ${HTML_SUBDIR}
-- cp ${IMAGES_SRC} ${HTML_SUBDIR}
-+ $(CP) ${IMAGES_SRC} ${HTML_SUBDIR}
-
- ###########################################################
- # misc targets
-@@ -320,13 +322,13 @@ install-sharedist: singular.hlp html singular.idx \
- ${MKINSTALLDIRS} ${install_prefix}
- ${MKINSTALLDIRS} ${install_infodir}
- ${INSTALL_DATA} singular.hlp ${install_infodir}
-- chmod -R +rX ${install_infodir}
-+ $(CHMOD) -R +rX ${install_infodir}
- ${MKINSTALLDIRS} ${install_htmldir}
-- cp ${HTML_SUBDIR}/*.htm ${install_htmldir}
-- cp ${HTML_SUBDIR}/*.gif ${install_htmldir}
-- -cp ${HTML_SUBDIR}/*.png ${install_htmldir}
-- cp ${HTML_SUBDIR}/*.jpg ${install_htmldir}
-- chmod -R +rX ${install_htmldir}
-+ $(CP) ${HTML_SUBDIR}/*.htm ${install_htmldir}
-+ $(CP) ${HTML_SUBDIR}/*.gif ${install_htmldir}
-+ -$(CP) ${HTML_SUBDIR}/*.png ${install_htmldir}
-+ $(CP) ${HTML_SUBDIR}/*.jpg ${install_htmldir}
-+ $(CHMOD) -R +rX ${install_htmldir}
- ${MKINSTALLDIRS} ${install_docdir}
- ${INSTALL_DATA} singular.idx ${install_docdir}
- ${INSTALL_DATA} ../GPL2 ${install_prefix}/GPL2
-@@ -337,15 +339,15 @@ install-sharedist: singular.hlp html singular.idx \
- ${INSTALL_DATA} NEWS.html ${install_prefix}
- ${INSTALL_DATA} README_distribution.txt ${install_prefix}/README
- ${INSTALL_DATA} README_distribution.html ${install_prefix}/README.html
-- chmod -R +rX ${install_docdir}
-- chmod -R +rX ${install_prefix}
-+ $(CHMOD) -R +rX ${install_docdir}
-+ $(CHMOD) -R +rX ${install_prefix}
- ${MKINSTALLDIRS} ${install_exdir}
-- cp -R examples ${install_prefix}
-+ $(CP) -R examples ${install_prefix}
- /bin/rm -f ${install_prefix}/examples/[A-Z]*.res
- /bin/rm -f ${install_prefix}/examples/*.res
- /bin/rm -f ${install_prefix}/examples/[A-Z]*.inc
- /bin/rm -f ${install_prefix}/examples/*.inc
-- chmod -R +rX ${install_prefix}/
-+ $(CHMOD) -R +rX ${install_prefix}/
-
- # use 'make INSTALL_unix.olaf.txt INSTALL_unix.olaf.html SINGUNAME=olaf'
- # to generate these files for uname 'olaf'
-@@ -369,9 +371,9 @@ texi2html = $(TEXI2HTML:%.pl=%)
- lib2doc.tar.gz:
- rm -rf lib2doc lib2doc.tar.gz
- mkdir lib2doc
-- cp Makefile.lib2doc lib2doc/Makefile
-+ $(CP) Makefile.lib2doc lib2doc/Makefile
- ${MAKEINFO} --no-header --paragraph-indent none -o lib2doc/README lib2doc.texi
-- cp pl2doc.pl doc2tex.pl ${texi2html} lib2doc
-+ $(CP) pl2doc.pl doc2tex.pl ${texi2html} lib2doc
- tar cf lib2doc.tar lib2doc
- ${GZIP} lib2doc.tar
-
-diff --git a/install-sh b/install-sh
-index 6781b98..9d00788 100755
---- a/install-sh
-+++ b/install-sh
-@@ -59,13 +59,13 @@ fi
- # or use environment vars.
-
- chgrpprog=${CHGRPPROG-chgrp}
--chmodprog=${CHMODPROG-chmod}
-+chmodprog=${CHMODPROG-/bin/chmod}
- chownprog=${CHOWNPROG-chown}
- cmpprog=${CMPPROG-cmp}
--cpprog=${CPPROG-cp}
-+cpprog=${CPPROG-/bin/cp}
- mkdirprog=${MKDIRPROG-mkdir}
--mvprog=${MVPROG-mv}
--rmprog=${RMPROG-rm}
-+mvprog=${MVPROG-/bin/mv}
-+rmprog=${RMPROG-/bin/rm}
- stripprog=${STRIPPROG-strip}
-
- posix_glob='?'
-@@ -447,7 +447,7 @@ do
- rmtmp=$dstdir/_rm.$$_
-
- # Trap to clean up those temp files at exit.
-- trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
-+ trap 'ret=$?; $(rmprog) -f "$dsttmp" "$rmtmp" && exit $ret' 0
-
- # Copy the file name to the temp name.
- (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
-@@ -477,7 +477,7 @@ do
- test "$old" = "$new" &&
- $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
- then
-- rm -f "$dsttmp"
-+ $(rmprog) -f "$dsttmp"
- else
- # Rename the file to the real destination.
- $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
-diff --git a/mkinstalldirs b/mkinstalldirs
-index 80780d0..bd690e1 100755
---- a/mkinstalldirs
-+++ b/mkinstalldirs
-@@ -20,7 +20,7 @@ for file in ${1+"$@"} ; do
-
- if test ! -d "$pathcomp"; then
- echo "mkdir $pathcomp" 1>&2
-- mkdir "$pathcomp" || errstatus=$?
-+ /bin/mkdir "$pathcomp" || errstatus=$?
- fi
-
- pathcomp="$pathcomp/"
diff --git a/debian/patches/0017-make-interactive-docbuild-work.patch b/debian/patches/0017-make-interactive-docbuild-work.patch
deleted file mode 100644
index c7a7b2b..0000000
--- a/debian/patches/0017-make-interactive-docbuild-work.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From fbb53c6000d119fba6816a9d81655f494eb2982f Mon Sep 17 00:00:00 2001
-From: Julien Puydt <julien.puydt at laposte.net>
-Date: Mon, 26 May 2014 09:45:31 +0200
-Subject: make interactive docbuild work.
-
-Makes non-interactive build work The build is failing in non-interactive
-mode because it tries to launch singular, which does things which work
-only in a tty.
-
-extracted from
-http://pkg.fedoraproject.org/cgit/Singular.git/tree/Singular-doc.patch
-
-Forwarded: not-needed
----
- doc/Makefile.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/doc/Makefile.in b/doc/Makefile.in
-index 4598a5e..a92a7d7 100644
---- a/doc/Makefile.in
-+++ b/doc/Makefile.in
-@@ -71,7 +71,7 @@ EX_SUBDIR = ./examples
- CHKSUM_DB = ${DOC_SUBDIR}/chksum
- DOC2TEX_EXAMPLE_EXCLUSIONS = @DOC2TEX_EXAMPLE_EXCLUSIONS@
- DOC2TEX = ${PERL} ./doc2tex.pl -docdir ${DOC_SUBDIR} \
-- -Singular ${SINGULAR} -verbose ${VERBOSE} -make ${MAKE} \
-+ -Singular /bin/true -verbose ${VERBOSE} -make ${MAKE} \
- -exdir ${EX_SUBDIR} ${DOC2TEX_EXAMPLE_EXCLUSIONS}
- TAG =
- PL2DOC = ${PERL} ./pl2doc.pl ${TAG} -db ${CHKSUM_DB}
diff --git a/debian/patches/Minor.h.patch b/debian/patches/Minor.h.patch
new file mode 100644
index 0000000..1d03e61
--- /dev/null
+++ b/debian/patches/Minor.h.patch
@@ -0,0 +1,10 @@
+--- src/Singular/Minor.h 2010-02-02 08:22:24.000000000 -0500
++++ patches/Minor.h 2011-06-28 13:26:01.000000000 -0400
+@@ -2,6 +2,7 @@
+ #define MINOR_H
+
+ #include <assert.h>
++#include <time.h>
+ #include <iostream>
+ #include <string>
+
diff --git a/debian/patches/assert.patch b/debian/patches/assert.patch
new file mode 100644
index 0000000..3290a94
--- /dev/null
+++ b/debian/patches/assert.patch
@@ -0,0 +1,17 @@
+diff -ru src/factory/assert.h b/factory/assert.h
+--- src/factory/assert.h 2012-02-21 20:00:09.000000000 +0100
++++ b/factory/assert.h 2012-08-01 12:31:09.343379875 +0200
+@@ -128,3 +128,13 @@
+ #define PVIRT_CHARCC(msg) = 0
+ #endif /* NOASSERT */
+ /* }}} */
++
++
++
++/* SAGE hack: This is *critically* needed to compile on some systems
++ for which the logic above is broken. Obviously it defeates the
++ purpose of assert here, but at least it means that the code compiles.
++*/
++#ifndef assert
++#define assert
++#endif
diff --git a/debian/patches/currring.patch b/debian/patches/currring.patch
new file mode 100644
index 0000000..9ae716f
--- /dev/null
+++ b/debian/patches/currring.patch
@@ -0,0 +1,22 @@
+Revert part of commit a53ae5000c439608b9dcf884b63d62b219e8fcc0.
+
+It makes Singular segfault at least when calling pOne() and currRing is NULL.
+diff -druN latest.orig/Singular/iparith.cc latest.new/Singular/iparith.cc
+--- latest.orig/Singular/iparith.cc 2014-11-19 05:06:05.000000000 -0800
++++ latest.new/Singular/iparith.cc 2014-11-20 08:30:25.068389635 -0800
+@@ -8477,7 +8477,6 @@
+ sArithBase.sCmds[i].name);
+ sArithBase.sCmds[i].alias=1;
+ }
+- #if 0
+ if (currRingHdl==NULL)
+ {
+ #ifdef SIQ
+@@ -8493,7 +8492,6 @@
+ }
+ #endif
+ }
+- #endif
+ if (!expected_parms)
+ {
+ switch (tok)
diff --git a/debian/patches/cygwin64.patch b/debian/patches/cygwin64.patch
new file mode 100644
index 0000000..9fe1135
--- /dev/null
+++ b/debian/patches/cygwin64.patch
@@ -0,0 +1,66 @@
+diff -druN latest.new/omalloc/configure latest/omalloc/configure
+--- latest.new/omalloc/configure 2014-08-06 08:59:15.000000000 -0700
++++ latest/omalloc/configure 2014-10-21 05:56:10.267081469 -0700
+@@ -2330,8 +2330,12 @@
+ int main()
+ {
+ int i;
++#if defined(__CYGWIN__) && defined(__x86_64__)
++ i = 0;
++#else
+ omInitGetBackTrace();
+ i = test_backtrace();
++#endif
+ if (i == 1) exit(0);
+ else exit(i+1);
+ }
+diff -druN latest.new/omalloc/configure.in latest/omalloc/configure.in
+--- latest.new/omalloc/configure.in 2014-08-06 08:59:15.000000000 -0700
++++ latest/omalloc/configure.in 2014-10-21 05:56:10.267081469 -0700
+@@ -487,8 +487,12 @@
+ int main()
+ {
+ int i;
++#if defined(__CYGWIN__) && defined(__x86_64__)
++ i = 0;
++#else
+ omInitGetBackTrace();
+ i = test_backtrace();
++#endif
+ if (i == 1) exit(0);
+ else exit(i+1);
+ }
+diff -druN latest.new/Singular/Makefile.in latest/Singular/Makefile.in
+--- latest.new/Singular/Makefile.in 2014-08-06 08:59:15.000000000 -0700
++++ latest/Singular/Makefile.in 2014-10-21 05:56:10.277081490 -0700
+@@ -176,6 +176,13 @@
+ LIBSINGULAR_LIBS = -lsingfac -lsingcf -lntl -lreadline @FLINT_LIBS@ -lgmp -lomalloc -lhtmlhelp
+ endif
+
++ifeq ($(SINGUNAME),x86_64-Win)
++SO_SUFFIX = dll
++MODULE_SUFFIX = dll
++LIBSINGULAR_FLAGS = -shared
++LIBSINGULAR_LIBS = -lsingfac -lsingcf -lntl -lreadline @FLINT_LIBS@ -lgmp -lomalloc
++endif
++
+ ifeq ($(SINGUNAME),ix86-SunOS)
+ SO_SUFFIX = so
+ MODULE_SUFFIX = so
+diff -druN latest.new/singuname.sh latest/singuname.sh
+--- latest.new/singuname.sh 2014-08-06 08:59:15.000000000 -0700
++++ latest/singuname.sh 2014-10-21 05:56:10.277081490 -0700
+@@ -96,7 +96,12 @@
+ elif (echo $uname_m | $egrep "x86_64" > $devnull)
+ then
+ prefix=x86_64
+- if (echo $uname_a | $egrep "Linux" > $devnull)
++ # Win ################
++ if (echo $uname_a | $egrep "CYGWIN" > $devnull)
++ then
++ echo ${prefix}-Win
++ exit 0
++ elif (echo $uname_a | $egrep "Linux" > $devnull)
+ then
+ echo ${prefix}-Linux
+ exit 0
diff --git a/debian/patches/exeext.patch b/debian/patches/exeext.patch
new file mode 100644
index 0000000..cae6e81
--- /dev/null
+++ b/debian/patches/exeext.patch
@@ -0,0 +1,20 @@
+diff -ru src/IntegerProgramming/Makefile.in b/IntegerProgramming/Makefile.in
+--- src/IntegerProgramming/Makefile.in 2012-06-19 11:00:05.000000000 +0200
++++ b/IntegerProgramming/Makefile.in 2012-07-12 17:00:42.253780191 +0200
+@@ -64,11 +64,11 @@
+
+ install install-libsingular: $(MAIN1) $(MAIN2) $(MAIN3) $(MAIN4) $(LLL)
+ ${MKINSTALLDIRS} ${bindir}
+- ${INSTALL_PROGRAM} $(MAIN1) ${bindir}
+- ${INSTALL_PROGRAM} $(MAIN2) ${bindir}
+- ${INSTALL_PROGRAM} $(MAIN3) ${bindir}
+- ${INSTALL_PROGRAM} $(MAIN4) ${bindir}
+- ${INSTALL_PROGRAM} $(LLL) ${bindir}
++ ${INSTALL_PROGRAM} $(MAIN1)$(EXEEXT) ${bindir}
++ ${INSTALL_PROGRAM} $(MAIN2)$(EXEEXT) ${bindir}
++ ${INSTALL_PROGRAM} $(MAIN3)$(EXEEXT) ${bindir}
++ ${INSTALL_PROGRAM} $(MAIN4)$(EXEEXT) ${bindir}
++ ${INSTALL_PROGRAM} $(LLL)$(EXEEXT) ${bindir}
+
+ install-bindist: $(MAIN1) $(MAIN2) $(MAIN3) $(MAIN4)
+ ${MKINSTALLDIRS} ${install_bindir}
diff --git a/debian/patches/fix-for-new-perl.patch b/debian/patches/fix-for-new-perl.patch
deleted file mode 100644
index 60d4a44..0000000
--- a/debian/patches/fix-for-new-perl.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-diff --git a/doc/texi2html b/doc/texi2html
-index 8b87b9e..a204b41 100644
---- a/doc/texi2html
-+++ b/doc/texi2html
-@@ -4898,9 +4898,9 @@ sub update_sec_num {
- my $ret;
-
- $level--; # here we start at 0
-- if ($name =~ /^appendix/ || defined(@appendix_sec_num)) {
-+ if ($name =~ /^appendix/ || @appendix_sec_num) {
- # appendix style
-- if (defined(@appendix_sec_num)) {
-+ if (@appendix_sec_num) {
- &incr_sec_num($level, @appendix_sec_num);
- } else {
- @appendix_sec_num = ('A', 0, 0, 0);
-@@ -4908,7 +4908,7 @@ sub update_sec_num {
- $ret = join('.', @appendix_sec_num[0..$level]);
- } else {
- # normal style
-- if (defined(@normal_sec_num))
-+ if (@normal_sec_num)
- {
- &incr_sec_num($level, @normal_sec_num);
- }
diff --git a/debian/patches/flint.patch b/debian/patches/flint.patch
new file mode 100644
index 0000000..911e2c8
--- /dev/null
+++ b/debian/patches/flint.patch
@@ -0,0 +1,22 @@
+diff -druN latest.tmp/Singular/configure latest/Singular/configure
+--- latest.tmp/Singular/configure 2014-08-06 08:59:15.000000000 -0700
++++ latest/Singular/configure 2014-10-21 02:26:41.030021194 -0700
+@@ -9939,6 +9939,7 @@
+
+ if test "x$flint_found" = "xyes"; then
+ LDFLAGS="${LDFLAGS} ${FLINT_LIBS}"
++ SLDFLAGS="${SLDFLAGS} ${FLINT_LIBS}"
+ NEED_LIBS="-lflint -lmpfr ${NEED_LIBS}"
+ fi
+
+diff -druN latest.tmp/Singular/configure.in latest/Singular/configure.in
+--- latest.tmp/Singular/configure.in 2014-08-06 08:59:15.000000000 -0700
++++ latest/Singular/configure.in 2014-10-21 02:26:41.030021194 -0700
+@@ -1431,6 +1431,7 @@
+
+ if test "x$flint_found" = "xyes"; then
+ LDFLAGS="${LDFLAGS} ${FLINT_LIBS}"
++ SLDFLAGS="${SLDFLAGS} ${FLINT_LIBS}"
+ NEED_LIBS="-lflint -lmpfr ${NEED_LIBS}"
+ fi
+
diff --git a/debian/patches/remove_warning.patch b/debian/patches/remove_warning.patch
new file mode 100644
index 0000000..23053e4
--- /dev/null
+++ b/debian/patches/remove_warning.patch
@@ -0,0 +1,18 @@
+diff -uri latest/kernel/mod_raw.cc latest.tmp/kernel/mod_raw.cc
+--- latest/kernel/mod_raw.cc 2014-11-19 14:06:05.000000000 +0100
++++ latest.tmp/kernel/mod_raw.cc 2015-03-08 00:32:55.489679509 +0100
+@@ -150,10 +150,10 @@
+ handle = dynl_open(path_name);
+ if (handle == NULL && ! warn_handle)
+ {
+- Warn("Could not open dynamic library: %s", path_name);
+- Warn("Error message from system: %s", dynl_error());
+- if (msg != NULL) Warn("%s", msg);
+- Warn("See the INSTALL section in the Singular manual for details.");
++ //Warn("Could not open dynamic library: %s", path_name);
++ //Warn("Error message from system: %s", dynl_error());
++ //if (msg != NULL) Warn("%s", msg);
++ //Warn("See the INSTALL section in the Singular manual for details.");
+ warn_handle = TRUE;
+ }
+ }
diff --git a/debian/patches/sanitize_gmp_header_hack.patch b/debian/patches/sanitize_gmp_header_hack.patch
new file mode 100644
index 0000000..46e5de2
--- /dev/null
+++ b/debian/patches/sanitize_gmp_header_hack.patch
@@ -0,0 +1,59 @@
+diff -Naur Singular-3-1-5.orig/factory/gen_cf_gmp.cc Singular-3-1-5/factory/gen_cf_gmp.cc
+--- Singular-3-1-5.orig/factory/gen_cf_gmp.cc 2009-11-02 11:12:22.000000000 +0100
++++ Singular-3-1-5/factory/gen_cf_gmp.cc 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-#include <gmp.h>
+diff -Naur Singular-3-1-5.orig/factory/gen_cf_gmp.template Singular-3-1-5/factory/gen_cf_gmp.template
+--- Singular-3-1-5.orig/factory/gen_cf_gmp.template 2009-11-02 11:12:22.000000000 +0100
++++ Singular-3-1-5/factory/gen_cf_gmp.template 1970-01-01 01:00:00.000000000 +0100
+@@ -1,3 +0,0 @@
+-GMP_H=`echo $GMP_H_T| sed -e 's/^.*gmp.cc//' -e 's/ .$//'`
+-echo generating cf_gmp.h from $GMP_H
+-cat $GMP_H | grep -v __GMP_DECLSPEC_XX |grep -v std::FILE > cf_gmp.h
+diff -Naur Singular-3-1-5.orig/factory/GNUmakefile.in Singular-3-1-5/factory/GNUmakefile.in
+--- Singular-3-1-5.orig/factory/GNUmakefile.in 2012-05-11 16:00:15.000000000 +0200
++++ Singular-3-1-5/factory/GNUmakefile.in 2013-06-24 23:08:48.317324421 +0200
+@@ -61,6 +61,9 @@
+ MKINSTALLDIRS = @FACTORY_MKINSTALLDIRS@
+ MAKEHEADER = @FACTORY_MAKEHEADER@
+
++GREP = @GREP@
++EGREP = @EGREP@
++
+ #
+ # - flags.
+ #
+@@ -363,7 +366,7 @@
+ $(distsrc) $(distincl) $(hdrtemplsrc) \
+ GNUmakefile.in configure.in config.h.in configure \
+ ChangeLog README NEWS INSTALL \
+- factory.cfg gen_cf_gmp.template \
++ factory.cfg \
+ examples/GNUmakefile examples/application.cc \
+ examples/factorize.cc examples/gcd.cc \
+ bin/folding.el bin/fold-docu.el \
+@@ -693,9 +696,18 @@
+ config.status: configure
+ ./config.status --recheck
+
+-# create cf_gmp.h
+-cf_gmp.h: GNUmakefile gen_cf_gmp.template
+- echo "#!/bin/sh" >gen_cf_gmp.sh
+- echo "GMP_H_T=\"`$(CXX) $(LIBCXXFLAGS) -M gen_cf_gmp.cc|grep gmp.h` \"" >>gen_cf_gmp.sh
+- cat gen_cf_gmp.template >>gen_cf_gmp.sh
+- $(SHELL) gen_cf_gmp.sh
++
++# Doesn't need to be shipped:
++gen_cf_gmp.cc:
++ echo '#include <gmp.h>' > $@
++
++# Create cf_gmp.h:
++# cf_gmp.cc just contains "#include <gmp.h>"; we use '-M' just to get the path
++# to gmp.h in order to create a modified copy of it (i.e., cf_gmp.h) below.
++# (If '--with-gmp=...' was given to 'configure', one could also just use the
++# path determined by that.)
++cf_gmp.h: GNUmakefile gen_cf_gmp.cc
++ GMP_H=`$(CXX) $(LIBCXXFLAGS) -M gen_cf_gmp.cc|tr ' ' '\n'|$(GREP) 'gmp\.h$$'`; \
++ echo "Generating $@ from $${GMP_H}..."; \
++ test -f "$${GMP_H}" || { echo >&2 "Error determining location of gmp.h"; exit 1; }; \
++ $(EGREP) -v '__GMP_DECLSPEC_XX|std::FILE' $${GMP_H} > $@
diff --git a/debian/patches/series b/debian/patches/series
index 4b69aaf..5161be1 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,19 +1,14 @@
-0001-tag-gfan-using-examples.patch
-0002-use-DESTDIR-as-a-pre-prefix-in-install-targets.patch
-0003-add-working-all-target-to-Makefile.in.patch
-0004-miscellaneous-Makefile.in-patches.patch
-0005-assert-needs-to-be-defined-after-include-assert.h.patch
-0006-keep-mod2.h-in-Singular.patch
-0007-move-libreadline-to-main-binary.patch
-0008-default-path-settings.patch
-0009-disable-examples-for-divisors-and-gitfan.patch
-0010-fix-warning-treated-as-error-in-pyobject.cc.patch
-0011-also-install-sing_dbm.h.patch
-0012-don-t-forget-LDFLAGS-in-module-compilation.patch
-0013-fix-mmInit-weirdness.patch
-0014-sanitize-cf_gmp.h-generation.patch
-0015-use-bin-sed-not-sed-in-build-system.patch
-0016-Use-full-path-for-a-few-coreutils.patch
-0017-make-interactive-docbuild-work.patch
-fix-for-new-perl.patch
+assert.patch
+currring.patch
+cygwin64.patch
+exeext.patch
+flint.patch
+Minor.h.patch
+remove_warning.patch
+sanitize_gmp_header_hack.patch
+singular-3.1.7-use_cxx_for_linking.patch
singular_ntl.patch
+sing_win.patch
+slibdir.patch
+stricmp.patch
+templates.patch
diff --git a/debian/patches/sing_win.patch b/debian/patches/sing_win.patch
new file mode 100644
index 0000000..82aecc8
--- /dev/null
+++ b/debian/patches/sing_win.patch
@@ -0,0 +1,17 @@
+diff -ru src/Singular/sing_win.cc c/Singular/sing_win.cc
+--- src/Singular/sing_win.cc 2012-07-10 12:00:15.000000000 +0200
++++ c/Singular/sing_win.cc 2012-08-01 12:31:32.753384989 +0200
+@@ -37,7 +37,12 @@
+ link.pszMsgTitle = NULL ;
+ link.pszWindow = NULL ;
+ link.fIndexOnFail = TRUE ;
+- HtmlHelpA(NULL, path, HH_KEYWORD_LOOKUP, (DWORD)&link);
++
++ /* Commented out, since this breaks building on *Cygwin* for SAGE,
++ which evidently isn't setup to open the standard Windows help
++ system. Since we use Singular as a library anyways, this is
++ reasonable to comment out for now. */
++ /* HtmlHelpA(NULL, path, HH_KEYWORD_LOOKUP, (DWORD)&link); */
+ }
+
+ void heOpenWinntHlp(const char* keyw, char* helppath )
diff --git a/debian/patches/singular-3.1.7-use_cxx_for_linking.patch b/debian/patches/singular-3.1.7-use_cxx_for_linking.patch
new file mode 100644
index 0000000..ec1591d
--- /dev/null
+++ b/debian/patches/singular-3.1.7-use_cxx_for_linking.patch
@@ -0,0 +1,75 @@
+Trac #18892: Singular fails to build on Ubuntu 15.04 32-bit
+
+Singular fails to build on Ubuntu 15.04 32-bit due to a missing symbol related to the stack protector
+
+Patch taken from https://raw.githubusercontent.com/cschwan/sage-on-gentoo/master/sci-mathematics/singular/files/singular-3.1.7-use_cxx_for_linking.patch
+
+Added LIBSINGULAR_LDFLAGS in Trac #19698
+
+
+diff -Naur Singular-3-1-7.orig/Singular/Makefile.in Singular-3-1-7/Singular/Makefile.in
+--- Singular-3-1-7.orig/Singular/Makefile.in 2014-11-20 02:06:05.000000000 +1300
++++ Singular-3-1-7/Singular/Makefile.in 2015-04-30 11:55:25.285611669 +1200
+@@ -67,7 +67,7 @@
+ ##
+ @SET_MAKE@
+ CC = @CC@
+-LD = @LD@
++LD = @CXX@
+ CXX = @CXX@
+ LEX = sh flexer.sh
+
+diff -Naur Singular-3-1-7.orig/dyn_modules/modgen/Makefile.in Singular-3-1-7/dyn_modules/modgen/Makefile.in
+--- Singular-3-1-7.orig/dyn_modules/modgen/Makefile.in 2014-11-20 02:06:05.000000000 +1300
++++ Singular-3-1-7/dyn_modules/modgen/Makefile.in 2015-04-30 11:55:25.285611669 +1200
+@@ -20,7 +20,7 @@
+ ##
+ @SET_MAKE@
+ CC = @CC@
+-LD = @LD@
++LD = @CXX@
+ CXX = @CXX@
+ LEX = sh ../../Singular/flexer.sh
+ PERL = @PERL@
+diff -Naur Singular-3-1-7.orig/kernel/Makefile.in Singular-3-1-7/kernel/Makefile.in
+--- Singular-3-1-7.orig/kernel/Makefile.in 2014-11-20 02:06:05.000000000 +1300
++++ Singular-3-1-7/kernel/Makefile.in 2015-04-30 11:55:25.285611669 +1200
+@@ -30,7 +30,7 @@
+ ##
+ @SET_MAKE@
+ CC = @CC@
+-LD = @LD@
++LD = @CXX@
+ CXX = @CXX@
+ LEX = @LEX@
+ PERL = @PERL@
+diff -Naur Singular-3-1-7.orig/Singular/configure Singular-3-1-7/Singular/configure
+--- Singular-3-1-7.orig/Singular/configure 2015-07-15 10:18:31.000000000 +1200
++++ Singular-3-1-7/Singular/configure 2015-07-15 10:41:16.000000000 +1200
+@@ -6876,7 +6876,7 @@
+ LD_DYN_FLAGS1="-dynamic"
+ LD_DYN_FLAGS2="-ldl"
+ SFLAGS="-fpic -DPIC"
+- SLDFLAGS="-dynamic -twolevel_namespace -weak_reference_mismatches weak -undefined dynamic_lookup"
++ SLDFLAGS="-dynamiclib -twolevel_namespace -weak_reference_mismatches weak -undefined dynamic_lookup ${LIBSINGULAR_LDFLAGS}"
+ if test "${LD+set}" != set; then
+ LD=libtool
+ fi
+@@ -6933,7 +6933,7 @@
+ LD_DYN_FLAGS1="-dynamic"
+ LD_DYN_FLAGS2="-ldl"
+ SFLAGS="-fpic -DPIC"
+- SLDFLAGS="-dynamic -twolevel_namespace -weak_reference_mismatches weak -undefined dynamic_lookup"
++ SLDFLAGS="-dynamiclib -twolevel_namespace -weak_reference_mismatches weak -undefined dynamic_lookup ${LIBSINGULAR_LDFLAGS}"
+ if test "${LD+set}" != set; then
+ LD=libtool
+ fi
+@@ -6990,7 +6990,7 @@
+ LD_DYN_FLAGS1="-dynamic"
+ LD_DYN_FLAGS2="-ldl"
+ SFLAGS="-fpic -DPIC"
+- SLDFLAGS="-dynamic -twolevel_namespace -weak_reference_mismatches weak -undefined dynamic_lookup"
++ SLDFLAGS="-dynamiclib -twolevel_namespace -weak_reference_mismatches weak -undefined dynamic_lookup ${LIBSINGULAR_LDFLAGS}"
+ if test "${LD+set}" != set; then
+ LD=libtool
+ fi
diff --git a/debian/patches/singular_ntl.patch b/debian/patches/singular_ntl.patch
index 0fdf87b..d4305c1 100644
--- a/debian/patches/singular_ntl.patch
+++ b/debian/patches/singular_ntl.patch
@@ -7,6 +7,8 @@ Subject: [PATCH] Fixing incompatibility with NTL8
factory/NTLconvert.cc | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
+diff --git a/factory/NTLconvert.cc b/factory/NTLconvert.cc
+index 41ce9b2..e32093d 100644
--- a/factory/NTLconvert.cc
+++ b/factory/NTLconvert.cc
@@ -30,6 +30,7 @@
@@ -17,7 +19,7 @@ Subject: [PATCH] Fixing incompatibility with NTL8
#include "int_int.h"
#include <limits.h>
#include "NTLconvert.h"
-@@ -510,8 +511,14 @@
+@@ -500,8 +501,14 @@ convertZZ2CF (const ZZ & a)
return CanonicalForm(coeff_long);
}
else
@@ -34,7 +36,7 @@ Subject: [PATCH] Fixing incompatibility with NTL8
bool lessZero= false;
if (sizeofrep < 0)
{
-@@ -529,7 +536,7 @@
+@@ -519,7 +526,7 @@ convertZZ2CF (const ZZ & a)
cf_stringtemp_l= sizeofrep*sizeof(mp_limb_t)*2;
cf_stringtemp= (unsigned char*) Alloc (cf_stringtemp_l);
}
diff --git a/debian/patches/slibdir.patch b/debian/patches/slibdir.patch
new file mode 100644
index 0000000..9009c5f
--- /dev/null
+++ b/debian/patches/slibdir.patch
@@ -0,0 +1,24 @@
+diff -druN latest.new/IntegerProgramming/Makefile.in latest/IntegerProgramming/Makefile.in
+--- latest.new/IntegerProgramming/Makefile.in 2014-10-21 05:59:54.327560770 -0700
++++ latest/IntegerProgramming/Makefile.in 2014-10-21 05:59:36.327521758 -0700
+@@ -5,7 +5,7 @@
+ ##
+ bindir = @bindir@
+ prefix = @prefix@
+-slibdir = ${prefix}/LIB
++slibdir = @datarootdir@/singular
+ install_bindir = ${install_prefix}/${SINGUNAME}
+ libdir = @libdir@
+
+diff -druN latest.new/Singular/Makefile.in latest/Singular/Makefile.in
+--- latest.new/Singular/Makefile.in 2014-10-21 05:58:50.087421525 -0700
++++ latest/Singular/Makefile.in 2014-10-21 05:59:36.327521758 -0700
+@@ -48,7 +48,7 @@
+ bindir = @bindir@
+ # includes are taken from here
+ includedir = @includedir@
+-slibdir = ${prefix}/LIB
++slibdir = @datarootdir@/singular
+ install_bindir = ${install_prefix}/${SINGUNAME}
+ install_slibdir = ${install_prefix}/LIB
+ dir_mod = MOD
diff --git a/debian/patches/stricmp.patch b/debian/patches/stricmp.patch
new file mode 100644
index 0000000..f6d1354
--- /dev/null
+++ b/debian/patches/stricmp.patch
@@ -0,0 +1,14 @@
+stricmp is being deprecated in Cygwin.
+One should use strcasecmp.
+See https://cygwin.com/ml/cygwin/2014-10/msg00359.html
+diff -druN src/latest/Singular/run.c src/latest/Singular/run.c
+--- latest/Singular/run.c 2014-11-19 14:06:05.000000000 +0100
++++ latest/Singular/run.c 2015-01-16 09:32:45.771298300 +0100
+@@ -45,6 +45,7 @@
+ #include <sys/stat.h>
+ #include <sys/cygwin.h>
+ #include <sys/unistd.h>
++ #define stricmp strcasecmp
+ //WinMainCRTStartup() { mainCRTStartup(); }
+ #else
+ #include <direct.h>
diff --git a/debian/patches/templates.patch b/debian/patches/templates.patch
new file mode 100644
index 0000000..e8702ef
--- /dev/null
+++ b/debian/patches/templates.patch
@@ -0,0 +1,60 @@
+diff -druN latest.orig/factory/GNUmakefile.in latest/factory/GNUmakefile.in
+--- latest.orig/factory/GNUmakefile.in 2014-08-06 08:59:15.000000000 -0700
++++ latest/factory/GNUmakefile.in 2014-10-20 04:21:24.914606325 -0700
+@@ -98,11 +98,13 @@
+ @FLINT_CFLAGS@ $(DEFS) $(CPPFLAGS) $(CFLAGS)
+
+ # flags to translate library c++ files
+-LIBCXXFLAGS = $(WARNFLAGS) -fno-implicit-templates \
++#LIBCXXFLAGS = $(WARNFLAGS) -fno-implicit-templates
++LIBCXXFLAGS = $(WARNFLAGS) \
+ -I. -I.. -I$(srcdir) -I${prefix} -I$(includedir) \
+ @FLINT_CFLAGS@ $(DEFS) $(CPPFLAGS) $(CXXFLAGS)
+
+-LIBCGGFLAGS = $(WARNFLAGS) -fno-implicit-templates \
++#LIBCGGFLAGS = $(WARNFLAGS) -fno-implicit-templates
++LIBCGGFLAGS = $(WARNFLAGS) \
+ -I. -I.. -I$(srcdir) -I${prefix} -I$(includedir) \
+ @FLINT_CFLAGS@ $(DEFS) $(CPPFLAGS)
+
+diff -druN latest.orig/Singular/claptmpl.cc latest.new/Singular/claptmpl.cc
+--- latest.orig/Singular/claptmpl.cc 2014-11-19 05:06:05.000000000 -0800
++++ latest.new/Singular/claptmpl.cc 2014-11-21 08:58:02.514808678 -0800
+@@ -122,37 +122,3 @@
+ template class std::list<PolyMinorValue>;
+ template class Cache<MinorKey, IntMinorValue>;
+ template class Cache<MinorKey, PolyMinorValue>;
+-
+-#ifdef HAVE_NTL
+-#include<NTL/version.h>
+-#if NTL_MAJOR_VERSION == 6
+-
+-#include<NTL/tools.h>
+-#include<NTL/lzz_pE.h>
+-#include<NTL/lzz_pEX.h>
+-#include<NTL/lzz_p.h>
+-#include<NTL/vector.h>
+-#include<NTL/pair.h>
+-#include<NTL/GF2X.h>
+-#include<NTL/GF2EX.h>
+-#include<NTL/ZZ.h>
+-#include<NTL/ZZX.h>
+-#include<NTL/ZZ_pX.h>
+-#ifdef NTL_CLIENT // in <NTL/tools.h>: using of name space NTL
+-NTL_CLIENT
+-#endif
+-//template class Vec<zz_p>;
+-//template class Vec<zz_pE>;
+-template class Mat<zz_p>;
+-template class Mat<zz_pE>;
+-template class Mat<ZZ>;
+-template class Vec<Pair<zz_pEX, long> >;
+-template class Vec<Pair<GF2EX, long> >;
+-//template class Vec<Pair<ZZX, long> >;
+-//template class Vec<Pair<ZZ_pX, long> >;
+-//template class Vec<Pair<GF2X, long> >;
+-//template void swap<zz_pE>(Vec<zz_pE>&, Vec<zz_pE>&);
+-//template long operator==<zz_p>(Vec<zz_p> const&, Vec<zz_p> const&);
+-#endif
+-
+-#endif
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/singular.git
More information about the debian-science-commits
mailing list