[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