[arch-commits] Commit in cddlib/repos (8 files)

Antonio Rojas arojas at archlinux.org
Sat Jan 3 11:48:44 UTC 2015


    Date: Saturday, January 3, 2015 @ 12:48:44
  Author: arojas
Revision: 125209

archrelease: copy trunk to community-i686, community-x86_64

Added:
  cddlib/repos/community-i686/PKGBUILD
    (from rev 125208, cddlib/trunk/PKGBUILD)
  cddlib/repos/community-i686/cdd_both_reps.c
    (from rev 125208, cddlib/trunk/cdd_both_reps.c)
  cddlib/repos/community-i686/cdd_both_reps.patch
    (from rev 125208, cddlib/trunk/cdd_both_reps.patch)
  cddlib/repos/community-x86_64/PKGBUILD
    (from rev 125208, cddlib/trunk/PKGBUILD)
  cddlib/repos/community-x86_64/cdd_both_reps.c
    (from rev 125208, cddlib/trunk/cdd_both_reps.c)
  cddlib/repos/community-x86_64/cdd_both_reps.patch
    (from rev 125208, cddlib/trunk/cdd_both_reps.patch)
Deleted:
  cddlib/repos/community-i686/PKGBUILD
  cddlib/repos/community-x86_64/PKGBUILD

--------------------------------------+
 /PKGBUILD                            |   70 +++++++++
 community-i686/PKGBUILD              |   27 ---
 community-i686/cdd_both_reps.c       |  254 +++++++++++++++++++++++++++++++++
 community-i686/cdd_both_reps.patch   |   43 +++++
 community-x86_64/PKGBUILD            |   27 ---
 community-x86_64/cdd_both_reps.c     |  254 +++++++++++++++++++++++++++++++++
 community-x86_64/cdd_both_reps.patch |   43 +++++
 7 files changed, 664 insertions(+), 54 deletions(-)

Deleted: community-i686/PKGBUILD
===================================================================
--- community-i686/PKGBUILD	2015-01-03 11:47:59 UTC (rev 125208)
+++ community-i686/PKGBUILD	2015-01-03 11:48:44 UTC (rev 125209)
@@ -1,27 +0,0 @@
-# Maintainer: Antonio Rojas <arojas at archlinux.org>
-# Contributor: Rémy Oudompheng <remy at archlinux.org>
-
-pkgname=cddlib
-pkgver=094g
-pkgrel=1
-pkgdesc="C library implementing Doudble Description Method for convex polyhedra"
-arch=('i686' 'x86_64')
-url="http://www.ifor.math.ethz.ch/~fukuda/cdd_home/cdd.html"
-license=('GPL')
-depends=('gmp')
-source=(ftp://ftp.ifor.math.ethz.ch/pub/fukuda/cdd/$pkgname-$pkgver.tar.gz)
-md5sums=('b5b1a6cc5a82beac814418907602bfeb')
-
-build() {
-  cd $pkgname-$pkgver
-  ./configure --prefix=/usr
-  make
-}
-
-package() {
-  cd $pkgname-$pkgver
-  make DESTDIR="$pkgdir" install
-
-  # Remove example programs
-  rm -rf "$pkgdir/usr/bin"
-}

Copied: cddlib/repos/community-i686/PKGBUILD (from rev 125208, cddlib/trunk/PKGBUILD)
===================================================================
--- community-i686/PKGBUILD	                        (rev 0)
+++ community-i686/PKGBUILD	2015-01-03 11:48:44 UTC (rev 125209)
@@ -0,0 +1,35 @@
+# Maintainer: Antonio Rojas <arojas at archlinux.org>
+# Contributor: Rémy Oudompheng <remy at archlinux.org>
+
+pkgname=cddlib
+pkgver=094g
+pkgrel=2
+pkgdesc="C library implementing Doudble Description Method for convex polyhedra"
+arch=('i686' 'x86_64')
+url="http://www.ifor.math.ethz.ch/~fukuda/cdd_home/cdd.html"
+license=('GPL')
+depends=('gmp')
+source=("ftp://ftp.ifor.math.ethz.ch/pub/fukuda/cdd/$pkgname-$pkgver.tar.gz" 'cdd_both_reps.c' 'cdd_both_reps.patch')
+md5sums=('b5b1a6cc5a82beac814418907602bfeb'
+         'c80ebe354f615144de14c826cadc3bf6'
+         '84c7d505ffd46524ffc8ab2de1c5713d')
+
+prepare() {
+  cd $pkgname-$pkgver
+  patch -p1 -i "$srcdir"/cdd_both_reps.patch
+  ln -s "$srcdir"/cdd_both_reps.c src
+  ln -s "$srcdir"/cdd_both_reps.c src-gmp
+}
+
+build() {
+  cd $pkgname-$pkgver
+
+  autoreconf -ifs
+  ./configure --prefix=/usr
+  make
+}
+
+package() {
+  cd $pkgname-$pkgver
+  make DESTDIR="$pkgdir" install
+}

Copied: cddlib/repos/community-i686/cdd_both_reps.c (from rev 125208, cddlib/trunk/cdd_both_reps.c)
===================================================================
--- community-i686/cdd_both_reps.c	                        (rev 0)
+++ community-i686/cdd_both_reps.c	2015-01-03 11:48:44 UTC (rev 125209)
@@ -0,0 +1,254 @@
+/* cdd_both_reps.c: compute reduced H and V representation of polytope
+   by Volker Braun <vbraun at stp.dias.ie>
+   
+   The input is taken from stdin and can be either a 
+   H or V representation, not necessarily reduced.
+
+   based on testcdd1.c, redcheck.c, and of course the cdd library
+   written by Komei Fukuda, fukuda at ifor.math.ethz.ch
+   Standard ftp site: ftp.ifor.math.ethz.ch, Directory: pub/fukuda/cdd
+*/
+
+/*  This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#include "setoper.h"
+#include "cdd.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include <math.h>
+#include <string.h>
+
+
+
+
+
+void compute_adjacency(dd_MatrixPtr Rep, dd_ErrorType* err_ptr)
+{
+  dd_SetFamilyPtr AdjacencyGraph;
+  if (*err_ptr != dd_NoError) return;
+
+  switch (Rep->representation) {
+  case dd_Inequality: 
+    printf("Facet graph\n");
+    break;
+  case dd_Generator: 
+    printf("Vertex graph\n");
+    break;
+  case dd_Unspecified:
+    printf("unknown representation type!\n");
+  default:
+    printf("This should be unreachable!\n");
+    exit(2);
+  }
+
+  /* Output adjacency of vertices/rays/lines */
+  if (Rep->rowsize > 0) {  /* workaround for bug with empty polyhedron */
+    /* compute adjacent vertices/rays/lines */
+    AdjacencyGraph = dd_Matrix2Adjacency(Rep, err_ptr);
+    if (*err_ptr == dd_NoError) {
+      dd_WriteSetFamily(stdout,AdjacencyGraph);
+      dd_FreeSetFamily(AdjacencyGraph);
+    }
+  } else {
+    printf("begin\n");
+    printf("  0    0\n");
+    printf("end\n");
+  }
+
+  printf("\n");
+}
+
+
+void minimal_Vrep_Hrep(dd_MatrixPtr M, 
+		       dd_MatrixPtr* Vrep_ptr, dd_MatrixPtr* Hrep_ptr, 
+		       dd_ErrorType* err_ptr)
+{
+  dd_PolyhedraPtr poly;
+  dd_rowindex newpos;
+  dd_rowset impl_linset,redset;
+  dd_MatrixPtr Vrep, Hrep;
+
+  if (*err_ptr != dd_NoError) return;
+
+   /* compute the second representation */
+  poly = dd_DDMatrix2Poly(M, err_ptr);
+  if (*err_ptr != dd_NoError) return;
+
+  if (*err_ptr == dd_NoError) {
+    /* compute canonical H-representation */
+    Hrep = dd_CopyInequalities(poly);
+    if (Hrep->rowsize > 0) {  /* workaround for bug with empty matrix */
+      dd_MatrixCanonicalize(&Hrep, &impl_linset, &redset, &newpos, err_ptr);
+      if (*err_ptr == dd_NoError) {
+	set_free(redset);
+	set_free(impl_linset);
+	free(newpos);
+      }
+    }
+    if (*err_ptr == dd_NoError) (*Hrep_ptr) = Hrep;
+  }
+
+  if (*err_ptr == dd_NoError) {
+    /* compute canonical V-representation */
+    Vrep = dd_CopyGenerators(poly);
+    if (Vrep->rowsize > 0) {  /* workaround for bug with empty matrix */
+      dd_MatrixCanonicalize(&Vrep, &impl_linset, &redset, &newpos, err_ptr);
+      if (*err_ptr == dd_NoError) {
+	set_free(redset);
+	set_free(impl_linset);
+	free(newpos);
+      }
+    }
+    if (*err_ptr == dd_NoError) (*Vrep_ptr) = Vrep;
+  }
+
+  dd_FreePolyhedra(poly);
+}
+
+
+void print_both_reps(dd_MatrixPtr Vrep, dd_MatrixPtr Hrep)
+{
+  /* Output V-representation */
+  dd_WriteMatrix(stdout,Vrep);
+  printf("\n");
+
+  /* Output H-representation */
+  dd_WriteMatrix(stdout,Hrep);
+  printf("\n");
+}
+
+
+void compute_both_reps(dd_MatrixPtr M, dd_ErrorType* err_ptr)
+{
+  dd_MatrixPtr Vrep, Hrep;
+  minimal_Vrep_Hrep(M, &Vrep, &Hrep, err_ptr);
+  if (*err_ptr != dd_NoError) return;
+
+  print_both_reps(Vrep, Hrep);
+  dd_FreeMatrix(Hrep);
+  dd_FreeMatrix(Vrep);
+}
+
+
+void compute_all(dd_MatrixPtr M, dd_ErrorType* err_ptr)
+{
+  dd_MatrixPtr Vrep, Hrep;
+  minimal_Vrep_Hrep(M, &Vrep, &Hrep, err_ptr);
+  if (*err_ptr != dd_NoError) return;
+
+  print_both_reps(Vrep, Hrep);
+  compute_adjacency(Vrep, err_ptr);
+  compute_adjacency(Hrep, err_ptr);
+  dd_FreeMatrix(Hrep);
+  dd_FreeMatrix(Vrep);
+}
+
+
+
+void usage(char *name)
+{
+  printf("No known option specified, I don't know what to do!\n"
+	 "Usage:\n"
+	 "%s --option\n"
+	 "where --option is precisely one of the following:\n\n"
+	 "  --all: Compute everything.\n"
+	 "    This will compute minimal H-,V-representation and vertex and facet graph.\n"
+	 "\n"
+	 "  --reps: Compute both a minimal H- and minimal V-representation.\n"
+	 "\n"
+	 "  --adjacency: Compute adjacency information only.\n"
+	 "    The input is assumed to be a minimal representation, as, for example, computed\n"
+	 "    by --reps. Warning, you will not get the correct answer if the input\n"
+	 "    representation is not minimal! The output is the vertex or facet graph,\n"
+	 "    depending on the input.\n"
+	 "\n"
+	 "The input data is a H- or V-representation in cdd's ine/ext format and\n"
+	 "is in each case read from stdin.\n", 
+	 name);
+}
+
+
+enum command_line_arguments { ALL, REPS, ADJACENCY };
+
+
+int parse_arguments(char* arg, enum command_line_arguments* option)
+{
+  if (strcmp(arg,"--all")==0) {
+    *option = ALL;
+    return 0;
+  }
+  if (strcmp(arg,"--reps")==0) {
+    *option = REPS;
+    return 0;
+  }
+  if (strcmp(arg,"--adjacency")==0) {
+    *option = ADJACENCY;
+    return 0;
+  }
+  printf("Unknown option: %s\n", arg);
+  return 1;
+}
+
+
+int main(int argc, char *argv[])
+{
+  dd_ErrorType err=dd_NoError;
+  dd_MatrixPtr M;
+  enum command_line_arguments option;
+
+  if (argc!=2 || parse_arguments(argv[1],&option)) {
+    usage(argv[0]);
+    return 0;
+  } 
+
+  dd_set_global_constants(); 
+
+  /* Read data from stdin */
+  M = dd_PolyFile2Matrix(stdin, &err);
+  if (err != dd_NoError) {
+    printf("I was unable to parse the input data!\n");
+    dd_WriteErrorMessages(stdout,err);
+    dd_free_global_constants();
+    return 1;
+  }
+
+  switch (option) {
+  case ALL:
+    compute_all(M,&err);
+    break;
+  case REPS:
+    compute_both_reps(M,&err);
+    break;
+  case ADJACENCY:
+    compute_adjacency(M,&err);
+    break;
+  default:
+    printf("unreachable option %d\n", option);
+    exit(3); /* unreachable */
+  }
+  
+  /* cleanup */
+  dd_FreeMatrix(M);
+  if (err != dd_NoError) {
+    dd_WriteErrorMessages(stdout,err);
+  }
+
+  dd_free_global_constants();
+  return 0;
+}
+
+

Copied: cddlib/repos/community-i686/cdd_both_reps.patch (from rev 125208, cddlib/trunk/cdd_both_reps.patch)
===================================================================
--- community-i686/cdd_both_reps.patch	                        (rev 0)
+++ community-i686/cdd_both_reps.patch	2015-01-03 11:48:44 UTC (rev 125209)
@@ -0,0 +1,43 @@
+diff -up cddlib-094g/src-gmp/Makefile.am.orig cddlib-094g/src-gmp/Makefile.am
+--- cddlib-094g/src-gmp/Makefile.am.orig	2012-07-05 13:30:30.982562213 -0400
++++ cddlib-094g/src-gmp/Makefile.am	2012-07-05 13:31:14.576563881 -0400
+@@ -11,7 +11,8 @@ testcdd1_gmp \
+ testcdd2_gmp \
+ testlp1_gmp \
+ testlp2_gmp \
+-testlp3_gmp
++testlp3_gmp \
++cdd_both_reps_gmp 
+ #cddmathlink
+ 
+ scdd_gmp_SOURCES                   = simplecdd.c
+@@ -27,6 +28,7 @@ testcdd2_gmp_SOURCES               = tes
+ testlp1_gmp_SOURCES                = testlp1.c
+ testlp2_gmp_SOURCES                = testlp2.c
+ testlp3_gmp_SOURCES                = testlp3.c
++cdd_both_reps_gmp_SOURCES          = cdd_both_reps.c
+ # cddmathlink_SOURCES                = cddmathlink.c cddmlio.h cddmlio.c
+ 
+ LDADD        = ../lib-src-gmp/libcddgmp.la
+diff -up cddlib-094g/src-gmp/Makefile.in.orig cddlib-094g/src-gmp/Makefile.in
+diff -up cddlib-094g/src/Makefile.am.orig cddlib-094g/src/Makefile.am
+--- cddlib-094g/src/Makefile.am.orig	2012-07-05 13:34:07.449570501 -0400
++++ cddlib-094g/src/Makefile.am	2012-07-05 13:34:32.128571446 -0400
+@@ -11,7 +11,8 @@ testshoot \
+ testcdd2 \
+ testlp1 \
+ testlp2 \
+-testlp3
++testlp3 \
++cdd_both_reps
+ #cddmathlink
+ 
+ scdd_SOURCES                   = simplecdd.c
+@@ -27,6 +28,7 @@ testcdd2_SOURCES               = testcdd
+ testlp1_SOURCES                = testlp1.c
+ testlp2_SOURCES                = testlp2.c
+ testlp3_SOURCES                = testlp3.c
++cdd_both_reps_SOURCES          = cdd_both_reps.c
+ # cddmathlink_SOURCES                = cddmathlink.c cddmlio.h cddmlio.c
+ 
+ LDADD        = ../lib-src/libcdd.la

Deleted: community-x86_64/PKGBUILD
===================================================================
--- community-x86_64/PKGBUILD	2015-01-03 11:47:59 UTC (rev 125208)
+++ community-x86_64/PKGBUILD	2015-01-03 11:48:44 UTC (rev 125209)
@@ -1,27 +0,0 @@
-# Maintainer: Antonio Rojas <arojas at archlinux.org>
-# Contributor: Rémy Oudompheng <remy at archlinux.org>
-
-pkgname=cddlib
-pkgver=094g
-pkgrel=1
-pkgdesc="C library implementing Doudble Description Method for convex polyhedra"
-arch=('i686' 'x86_64')
-url="http://www.ifor.math.ethz.ch/~fukuda/cdd_home/cdd.html"
-license=('GPL')
-depends=('gmp')
-source=(ftp://ftp.ifor.math.ethz.ch/pub/fukuda/cdd/$pkgname-$pkgver.tar.gz)
-md5sums=('b5b1a6cc5a82beac814418907602bfeb')
-
-build() {
-  cd $pkgname-$pkgver
-  ./configure --prefix=/usr
-  make
-}
-
-package() {
-  cd $pkgname-$pkgver
-  make DESTDIR="$pkgdir" install
-
-  # Remove example programs
-  rm -rf "$pkgdir/usr/bin"
-}

Copied: cddlib/repos/community-x86_64/PKGBUILD (from rev 125208, cddlib/trunk/PKGBUILD)
===================================================================
--- community-x86_64/PKGBUILD	                        (rev 0)
+++ community-x86_64/PKGBUILD	2015-01-03 11:48:44 UTC (rev 125209)
@@ -0,0 +1,35 @@
+# Maintainer: Antonio Rojas <arojas at archlinux.org>
+# Contributor: Rémy Oudompheng <remy at archlinux.org>
+
+pkgname=cddlib
+pkgver=094g
+pkgrel=2
+pkgdesc="C library implementing Doudble Description Method for convex polyhedra"
+arch=('i686' 'x86_64')
+url="http://www.ifor.math.ethz.ch/~fukuda/cdd_home/cdd.html"
+license=('GPL')
+depends=('gmp')
+source=("ftp://ftp.ifor.math.ethz.ch/pub/fukuda/cdd/$pkgname-$pkgver.tar.gz" 'cdd_both_reps.c' 'cdd_both_reps.patch')
+md5sums=('b5b1a6cc5a82beac814418907602bfeb'
+         'c80ebe354f615144de14c826cadc3bf6'
+         '84c7d505ffd46524ffc8ab2de1c5713d')
+
+prepare() {
+  cd $pkgname-$pkgver
+  patch -p1 -i "$srcdir"/cdd_both_reps.patch
+  ln -s "$srcdir"/cdd_both_reps.c src
+  ln -s "$srcdir"/cdd_both_reps.c src-gmp
+}
+
+build() {
+  cd $pkgname-$pkgver
+
+  autoreconf -ifs
+  ./configure --prefix=/usr
+  make
+}
+
+package() {
+  cd $pkgname-$pkgver
+  make DESTDIR="$pkgdir" install
+}

Copied: cddlib/repos/community-x86_64/cdd_both_reps.c (from rev 125208, cddlib/trunk/cdd_both_reps.c)
===================================================================
--- community-x86_64/cdd_both_reps.c	                        (rev 0)
+++ community-x86_64/cdd_both_reps.c	2015-01-03 11:48:44 UTC (rev 125209)
@@ -0,0 +1,254 @@
+/* cdd_both_reps.c: compute reduced H and V representation of polytope
+   by Volker Braun <vbraun at stp.dias.ie>
+   
+   The input is taken from stdin and can be either a 
+   H or V representation, not necessarily reduced.
+
+   based on testcdd1.c, redcheck.c, and of course the cdd library
+   written by Komei Fukuda, fukuda at ifor.math.ethz.ch
+   Standard ftp site: ftp.ifor.math.ethz.ch, Directory: pub/fukuda/cdd
+*/
+
+/*  This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#include "setoper.h"
+#include "cdd.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include <math.h>
+#include <string.h>
+
+
+
+
+
+void compute_adjacency(dd_MatrixPtr Rep, dd_ErrorType* err_ptr)
+{
+  dd_SetFamilyPtr AdjacencyGraph;
+  if (*err_ptr != dd_NoError) return;
+
+  switch (Rep->representation) {
+  case dd_Inequality: 
+    printf("Facet graph\n");
+    break;
+  case dd_Generator: 
+    printf("Vertex graph\n");
+    break;
+  case dd_Unspecified:
+    printf("unknown representation type!\n");
+  default:
+    printf("This should be unreachable!\n");
+    exit(2);
+  }
+
+  /* Output adjacency of vertices/rays/lines */
+  if (Rep->rowsize > 0) {  /* workaround for bug with empty polyhedron */
+    /* compute adjacent vertices/rays/lines */
+    AdjacencyGraph = dd_Matrix2Adjacency(Rep, err_ptr);
+    if (*err_ptr == dd_NoError) {
+      dd_WriteSetFamily(stdout,AdjacencyGraph);
+      dd_FreeSetFamily(AdjacencyGraph);
+    }
+  } else {
+    printf("begin\n");
+    printf("  0    0\n");
+    printf("end\n");
+  }
+
+  printf("\n");
+}
+
+
+void minimal_Vrep_Hrep(dd_MatrixPtr M, 
+		       dd_MatrixPtr* Vrep_ptr, dd_MatrixPtr* Hrep_ptr, 
+		       dd_ErrorType* err_ptr)
+{
+  dd_PolyhedraPtr poly;
+  dd_rowindex newpos;
+  dd_rowset impl_linset,redset;
+  dd_MatrixPtr Vrep, Hrep;
+
+  if (*err_ptr != dd_NoError) return;
+
+   /* compute the second representation */
+  poly = dd_DDMatrix2Poly(M, err_ptr);
+  if (*err_ptr != dd_NoError) return;
+
+  if (*err_ptr == dd_NoError) {
+    /* compute canonical H-representation */
+    Hrep = dd_CopyInequalities(poly);
+    if (Hrep->rowsize > 0) {  /* workaround for bug with empty matrix */
+      dd_MatrixCanonicalize(&Hrep, &impl_linset, &redset, &newpos, err_ptr);
+      if (*err_ptr == dd_NoError) {
+	set_free(redset);
+	set_free(impl_linset);
+	free(newpos);
+      }
+    }
+    if (*err_ptr == dd_NoError) (*Hrep_ptr) = Hrep;
+  }
+
+  if (*err_ptr == dd_NoError) {
+    /* compute canonical V-representation */
+    Vrep = dd_CopyGenerators(poly);
+    if (Vrep->rowsize > 0) {  /* workaround for bug with empty matrix */
+      dd_MatrixCanonicalize(&Vrep, &impl_linset, &redset, &newpos, err_ptr);
+      if (*err_ptr == dd_NoError) {
+	set_free(redset);
+	set_free(impl_linset);
+	free(newpos);
+      }
+    }
+    if (*err_ptr == dd_NoError) (*Vrep_ptr) = Vrep;
+  }
+
+  dd_FreePolyhedra(poly);
+}
+
+
+void print_both_reps(dd_MatrixPtr Vrep, dd_MatrixPtr Hrep)
+{
+  /* Output V-representation */
+  dd_WriteMatrix(stdout,Vrep);
+  printf("\n");
+
+  /* Output H-representation */
+  dd_WriteMatrix(stdout,Hrep);
+  printf("\n");
+}
+
+
+void compute_both_reps(dd_MatrixPtr M, dd_ErrorType* err_ptr)
+{
+  dd_MatrixPtr Vrep, Hrep;
+  minimal_Vrep_Hrep(M, &Vrep, &Hrep, err_ptr);
+  if (*err_ptr != dd_NoError) return;
+
+  print_both_reps(Vrep, Hrep);
+  dd_FreeMatrix(Hrep);
+  dd_FreeMatrix(Vrep);
+}
+
+
+void compute_all(dd_MatrixPtr M, dd_ErrorType* err_ptr)
+{
+  dd_MatrixPtr Vrep, Hrep;
+  minimal_Vrep_Hrep(M, &Vrep, &Hrep, err_ptr);
+  if (*err_ptr != dd_NoError) return;
+
+  print_both_reps(Vrep, Hrep);
+  compute_adjacency(Vrep, err_ptr);
+  compute_adjacency(Hrep, err_ptr);
+  dd_FreeMatrix(Hrep);
+  dd_FreeMatrix(Vrep);
+}
+
+
+
+void usage(char *name)
+{
+  printf("No known option specified, I don't know what to do!\n"
+	 "Usage:\n"
+	 "%s --option\n"
+	 "where --option is precisely one of the following:\n\n"
+	 "  --all: Compute everything.\n"
+	 "    This will compute minimal H-,V-representation and vertex and facet graph.\n"
+	 "\n"
+	 "  --reps: Compute both a minimal H- and minimal V-representation.\n"
+	 "\n"
+	 "  --adjacency: Compute adjacency information only.\n"
+	 "    The input is assumed to be a minimal representation, as, for example, computed\n"
+	 "    by --reps. Warning, you will not get the correct answer if the input\n"
+	 "    representation is not minimal! The output is the vertex or facet graph,\n"
+	 "    depending on the input.\n"
+	 "\n"
+	 "The input data is a H- or V-representation in cdd's ine/ext format and\n"
+	 "is in each case read from stdin.\n", 
+	 name);
+}
+
+
+enum command_line_arguments { ALL, REPS, ADJACENCY };
+
+
+int parse_arguments(char* arg, enum command_line_arguments* option)
+{
+  if (strcmp(arg,"--all")==0) {
+    *option = ALL;
+    return 0;
+  }
+  if (strcmp(arg,"--reps")==0) {
+    *option = REPS;
+    return 0;
+  }
+  if (strcmp(arg,"--adjacency")==0) {
+    *option = ADJACENCY;
+    return 0;
+  }
+  printf("Unknown option: %s\n", arg);
+  return 1;
+}
+
+
+int main(int argc, char *argv[])
+{
+  dd_ErrorType err=dd_NoError;
+  dd_MatrixPtr M;
+  enum command_line_arguments option;
+
+  if (argc!=2 || parse_arguments(argv[1],&option)) {
+    usage(argv[0]);
+    return 0;
+  } 
+
+  dd_set_global_constants(); 
+
+  /* Read data from stdin */
+  M = dd_PolyFile2Matrix(stdin, &err);
+  if (err != dd_NoError) {
+    printf("I was unable to parse the input data!\n");
+    dd_WriteErrorMessages(stdout,err);
+    dd_free_global_constants();
+    return 1;
+  }
+
+  switch (option) {
+  case ALL:
+    compute_all(M,&err);
+    break;
+  case REPS:
+    compute_both_reps(M,&err);
+    break;
+  case ADJACENCY:
+    compute_adjacency(M,&err);
+    break;
+  default:
+    printf("unreachable option %d\n", option);
+    exit(3); /* unreachable */
+  }
+  
+  /* cleanup */
+  dd_FreeMatrix(M);
+  if (err != dd_NoError) {
+    dd_WriteErrorMessages(stdout,err);
+  }
+
+  dd_free_global_constants();
+  return 0;
+}
+
+

Copied: cddlib/repos/community-x86_64/cdd_both_reps.patch (from rev 125208, cddlib/trunk/cdd_both_reps.patch)
===================================================================
--- community-x86_64/cdd_both_reps.patch	                        (rev 0)
+++ community-x86_64/cdd_both_reps.patch	2015-01-03 11:48:44 UTC (rev 125209)
@@ -0,0 +1,43 @@
+diff -up cddlib-094g/src-gmp/Makefile.am.orig cddlib-094g/src-gmp/Makefile.am
+--- cddlib-094g/src-gmp/Makefile.am.orig	2012-07-05 13:30:30.982562213 -0400
++++ cddlib-094g/src-gmp/Makefile.am	2012-07-05 13:31:14.576563881 -0400
+@@ -11,7 +11,8 @@ testcdd1_gmp \
+ testcdd2_gmp \
+ testlp1_gmp \
+ testlp2_gmp \
+-testlp3_gmp
++testlp3_gmp \
++cdd_both_reps_gmp 
+ #cddmathlink
+ 
+ scdd_gmp_SOURCES                   = simplecdd.c
+@@ -27,6 +28,7 @@ testcdd2_gmp_SOURCES               = tes
+ testlp1_gmp_SOURCES                = testlp1.c
+ testlp2_gmp_SOURCES                = testlp2.c
+ testlp3_gmp_SOURCES                = testlp3.c
++cdd_both_reps_gmp_SOURCES          = cdd_both_reps.c
+ # cddmathlink_SOURCES                = cddmathlink.c cddmlio.h cddmlio.c
+ 
+ LDADD        = ../lib-src-gmp/libcddgmp.la
+diff -up cddlib-094g/src-gmp/Makefile.in.orig cddlib-094g/src-gmp/Makefile.in
+diff -up cddlib-094g/src/Makefile.am.orig cddlib-094g/src/Makefile.am
+--- cddlib-094g/src/Makefile.am.orig	2012-07-05 13:34:07.449570501 -0400
++++ cddlib-094g/src/Makefile.am	2012-07-05 13:34:32.128571446 -0400
+@@ -11,7 +11,8 @@ testshoot \
+ testcdd2 \
+ testlp1 \
+ testlp2 \
+-testlp3
++testlp3 \
++cdd_both_reps
+ #cddmathlink
+ 
+ scdd_SOURCES                   = simplecdd.c
+@@ -27,6 +28,7 @@ testcdd2_SOURCES               = testcdd
+ testlp1_SOURCES                = testlp1.c
+ testlp2_SOURCES                = testlp2.c
+ testlp3_SOURCES                = testlp3.c
++cdd_both_reps_SOURCES          = cdd_both_reps.c
+ # cddmathlink_SOURCES                = cddmathlink.c cddmlio.h cddmlio.c
+ 
+ LDADD        = ../lib-src/libcdd.la



More information about the arch-commits mailing list