From 514c1f189a07f5ca5b6302a1b41fa19ea83ecc8b Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Sun, 14 Mar 2010 09:42:21 +0100 Subject: [PATCH] iscc: add affine hull operation --- doc/barvinok.tex | 1 + doc/isl.tex | 37 +++++++++++++++++++++++-------------- iscc.c | 14 ++++++++++++++ 3 files changed, 38 insertions(+), 14 deletions(-) diff --git a/doc/barvinok.tex b/doc/barvinok.tex index 22a4991..945fef3 100644 --- a/doc/barvinok.tex +++ b/doc/barvinok.tex @@ -9,6 +9,7 @@ \usepackage{newproof} \usepackage{txfonts} \usepackage{graphicx} +\usepackage{supertabular} \makeglossary \makeindex diff --git a/doc/isl.tex b/doc/isl.tex index 28d9434..1b38e6a 100644 --- a/doc/isl.tex +++ b/doc/isl.tex @@ -60,11 +60,31 @@ m^+; (m^+)[0]; \end{verbatim} -\begin{table} -\begin{tabular}{lp{0.7\textwidth}} +\bottomcaption{{\tt iscc} operations. The variables +have the following types, +$s$: set, +$m$: map, +$q$: piecewise quasipolynomial, +$f$: piecewise quasipolynomial fold, +$l$: list, +$i$: integer +} +\label{t:iscc} +\tablehead{ Syntax & Meaning \\ \hline +} +\tabletail{ +\multicolumn{2}{r}{\small\sl continued on next page} +\\ +} +\tablelasttail{} +\begin{supertabular}{lp{0.7\textwidth}} +$s_2$ := \ai[\tt]{aff} $s_1$ & affine hull of $s_1$ +\\ +$m_2$ := \ai[\tt]{aff} $m_1$ & affine hull of $m_1$ +\\ $q$ := \ai[\tt]{card} $s$ & number of elements in the set $s$ \\ @@ -160,15 +180,4 @@ is known to be exact $l$[$i$] & the element at position $i$ in the list $l$ \\ -\end{tabular} -\caption{\protect\ai[\tt]{iscc} operations. The variables -have the following types, -$s$: set, -$m$: map, -$q$: piecewise quasipolynomial, -$f$: piecewise quasipolynomial fold, -$l$: list, -$i$: integer -} -\label{t:iscc} -\end{table} +\end{supertabular} diff --git a/iscc.c b/iscc.c index 5f8d50f..fa3a3e9 100644 --- a/iscc.c +++ b/iscc.c @@ -193,6 +193,16 @@ __isl_give isl_map *map_sample(__isl_take isl_map *map) return isl_map_from_basic_map(isl_map_sample(map)); } +static __isl_give isl_set *set_affine_hull(__isl_take isl_set *set) +{ + return isl_set_from_basic_set(isl_set_affine_hull(set)); +} + +static __isl_give isl_map *map_affine_hull(__isl_take isl_map *map) +{ + return isl_map_from_basic_map(isl_map_affine_hull(map)); +} + typedef void *(*isc_un_op_fn)(void *arg); struct isc_un_op { enum isl_token_type op; @@ -205,6 +215,10 @@ struct isc_named_un_op { struct isc_un_op op; }; struct isc_named_un_op named_un_ops[] = { + {"aff", { -1, isl_obj_map, isl_obj_map, + (isc_un_op_fn) &map_affine_hull } }, + {"aff", { -1, isl_obj_set, isl_obj_set, + (isc_un_op_fn) &set_affine_hull } }, {"card", { -1, isl_obj_set, isl_obj_pw_qpolynomial, (isc_un_op_fn) &isl_set_card } }, {"card", { -1, isl_obj_map, isl_obj_pw_qpolynomial, -- 2.11.4.GIT