File: compress__parms_8h_source.html

package info (click to toggle)
polylib 5.22.5-3%2Bdfsg
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd, stretch, wheezy
  • size: 14,444 kB
  • ctags: 52,958
  • sloc: ansic: 16,342; sh: 10,134; makefile: 560
file content (165 lines) | stat: -rw-r--r-- 18,324 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>polylib: compress_parms.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
      <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
    </ul>
  </div>
<h1>compress_parms.h</h1><a href="compress__parms_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment">    This file is part of PolyLib.</span>
<a name="l00003"></a>00003 <span class="comment"></span>
<a name="l00004"></a>00004 <span class="comment">    PolyLib is free software: you can redistribute it and/or modify</span>
<a name="l00005"></a>00005 <span class="comment">    it under the terms of the GNU General Public License as published by</span>
<a name="l00006"></a>00006 <span class="comment">    the Free Software Foundation, either version 3 of the License, or</span>
<a name="l00007"></a>00007 <span class="comment">    (at your option) any later version.</span>
<a name="l00008"></a>00008 <span class="comment"></span>
<a name="l00009"></a>00009 <span class="comment">    PolyLib is distributed in the hope that it will be useful,</span>
<a name="l00010"></a>00010 <span class="comment">    but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="l00011"></a>00011 <span class="comment">    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span>
<a name="l00012"></a>00012 <span class="comment">    GNU General Public License for more details.</span>
<a name="l00013"></a>00013 <span class="comment"></span>
<a name="l00014"></a>00014 <span class="comment">    You should have received a copy of the GNU General Public License</span>
<a name="l00015"></a>00015 <span class="comment">    along with PolyLib.  If not, see &lt;http://www.gnu.org/licenses/&gt;.</span>
<a name="l00016"></a>00016 <span class="comment">*/</span>
<a name="l00017"></a>00017 <span class="comment"></span>
<a name="l00018"></a>00018 <span class="comment">/**</span>
<a name="l00019"></a>00019 <span class="comment"> * @author B. Meister 12/2003-2006</span>
<a name="l00020"></a>00020 <span class="comment"> * LSIIT -ICPS </span>
<a name="l00021"></a>00021 <span class="comment"> * UMR 7005 CNRS</span>
<a name="l00022"></a>00022 <span class="comment"> * Louis Pasteur University (ULP), Strasbourg, France</span>
<a name="l00023"></a>00023 <span class="comment"> */</span>
<a name="l00024"></a>00024 <span class="preprocessor">#ifndef __BM_COMPRESS_PARMS_H__</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#define __BM_COMPRESS_PARMS_H__</span>
<a name="l00026"></a>00026 <span class="preprocessor"></span>
<a name="l00027"></a>00027 <span class="preprocessor">#include &quot;<a class="code" href="matrix__addon_8h.html">matrix_addon.h</a>&quot;</span>
<a name="l00028"></a>00028 <span class="preprocessor">#include &quot;<a class="code" href="matrix__permutations_8h.html">matrix_permutations.h</a>&quot;</span>
<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;<a class="code" href="assert_8h.html">assert.h</a>&gt;</span>
<a name="l00030"></a>00030 
<a name="l00031"></a>00031 
<a name="l00032"></a>00032 <span class="comment">/* ----- functions applying on equalities ----- */</span>
<a name="l00033"></a>00033 <span class="comment"></span>
<a name="l00034"></a>00034 <span class="comment">/** </span>
<a name="l00035"></a>00035 <span class="comment"> * Given a system of non-redundant equalities, looks if it has an integer</span>
<a name="l00036"></a>00036 <span class="comment"> * solution in the combined space, and if yes, returns one solution.</span>
<a name="l00037"></a>00037 <span class="comment"> */</span>
<a name="l00038"></a>00038 <span class="keywordtype">void</span> <a class="code" href="compress__parms_8c.html#a0395c4623907612a51219536d4d258e6" title="Given a system of equalities, looks if it has an integer solution in the combined...">Equalities_integerSolution</a>(<a class="code" href="structmatrix.html">Matrix</a> * Eqs, <a class="code" href="structmatrix.html">Matrix</a> ** sol);
<a name="l00039"></a>00039 <span class="comment"></span>
<a name="l00040"></a>00040 <span class="comment">/** </span>
<a name="l00041"></a>00041 <span class="comment"> * Computes the validity lattice of a set of equalities. I.e., the lattice</span>
<a name="l00042"></a>00042 <span class="comment"> * induced on the last &lt;tt&gt;b&lt;/tt&gt; variables by the equalities involving the</span>
<a name="l00043"></a>00043 <span class="comment"> * first &lt;tt&gt;a&lt;/tt&gt; integer existential variables.</span>
<a name="l00044"></a>00044 <span class="comment"> */</span>
<a name="l00045"></a>00045 <span class="keywordtype">void</span> <a class="code" href="compress__parms_8c.html#ae018fc28835ce2d99a74dba09055acc0" title="Computes the validity lattice of a set of equalities.">Equalities_validityLattice</a>(<a class="code" href="structmatrix.html">Matrix</a> * Eqs, <span class="keywordtype">int</span> a, <a class="code" href="structmatrix.html">Matrix</a>** vl);
<a name="l00046"></a>00046 <span class="comment"></span>
<a name="l00047"></a>00047 <span class="comment">/** </span>
<a name="l00048"></a>00048 <span class="comment"> * Given an integer matrix B with m rows and integer m-vectors C and d,</span>
<a name="l00049"></a>00049 <span class="comment"> * computes the basis of the integer solutions to (BN+C) mod d = 0 (1).</span>
<a name="l00050"></a>00050 <span class="comment"> * This is an affine lattice (G): (N 1)^T= G(N&apos; 1)^T, forall N&apos; in Z^b.</span>
<a name="l00051"></a>00051 <span class="comment"> * If there is no solution, returns NULL.</span>
<a name="l00052"></a>00052 <span class="comment">*/</span>
<a name="l00053"></a>00053 <span class="keywordtype">void</span> <a class="code" href="compress__parms_8c.html#a12b7b863af43c3d85682b9df2385938c" title="Given an integer matrix B with m rows and integer m-vectors C and d, computes the...">Equalities_intModBasis</a>(<a class="code" href="structmatrix.html">Matrix</a> * B, <a class="code" href="structmatrix.html">Matrix</a> * C, <a class="code" href="structmatrix.html">Matrix</a> * d, <a class="code" href="structmatrix.html">Matrix</a> ** imb);
<a name="l00054"></a>00054 
<a name="l00055"></a>00055 
<a name="l00056"></a>00056 <span class="comment">/* ----- functions applying on constraints ----- */</span>
<a name="l00057"></a>00057 
<a name="l00058"></a>00058 <span class="comment"></span>
<a name="l00059"></a>00059 <span class="comment">/**</span>
<a name="l00060"></a>00060 <span class="comment"> * Eliminates all the equalities in a set of constraints and returns the set of</span>
<a name="l00061"></a>00061 <span class="comment"> * constraints defining a full-dimensional polyhedron, such that there is a</span>
<a name="l00062"></a>00062 <span class="comment"> * bijection between integer points of the original polyhedron and these of the</span>
<a name="l00063"></a>00063 <span class="comment"> * resulting (projected) polyhedron).</span>
<a name="l00064"></a>00064 <span class="comment"> */</span>
<a name="l00065"></a>00065 <span class="keywordtype">void</span> <a class="code" href="compress__parms_8c.html#a1a9cd66aec30116cfd3b07c2e38c73c8" title="Eliminates all the equalities in a set of constraints and returns the set of constraints...">Constraints_fullDimensionize</a>(<a class="code" href="structmatrix.html">Matrix</a> ** M, <a class="code" href="structmatrix.html">Matrix</a> ** C, <a class="code" href="structmatrix.html">Matrix</a> ** VL, 
<a name="l00066"></a>00066                                   <a class="code" href="structmatrix.html">Matrix</a> ** Eqs, <a class="code" href="structmatrix.html">Matrix</a> ** ParmEqs, 
<a name="l00067"></a>00067                                   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ** elimVars, 
<a name="l00068"></a>00068                                   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ** elimParms,
<a name="l00069"></a>00069                                   <span class="keywordtype">int</span> <a class="code" href="testCompressParms_8c.html#a508eb31b6faa4939e1c32adaef41b8c8">maxRays</a>);
<a name="l00070"></a>00070 
<a name="l00071"></a>00071 <span class="comment">/* extracts equalities involving only parameters */</span>
<a name="l00072"></a><a class="code" href="compress__parms_8h.html#a374fb10257b4bbe7a650cff3945e338f">00072</a> <span class="preprocessor">#define Constraints_removeParmEqs(a,b,c,d) Constraints_Remove_parm_eqs(a,b,c,d)</span>
<a name="l00073"></a>00073 <span class="preprocessor"></span><a class="code" href="structmatrix.html">Matrix</a> * <a class="code" href="compress__parms_8c.html#aca0035f9313236fd8046ab042180f544" title="Removes the equalities that involve only parameters, by eliminating some parameters...">Constraints_Remove_parm_eqs</a>(<a class="code" href="structmatrix.html">Matrix</a> ** M, <a class="code" href="structmatrix.html">Matrix</a> ** Ctxt, 
<a name="l00074"></a>00074                                      <span class="keywordtype">int</span> renderSpace, 
<a name="l00075"></a>00075                                      <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ** elimParms);
<a name="l00076"></a>00076 <span class="comment"></span>
<a name="l00077"></a>00077 <span class="comment">/**</span>
<a name="l00078"></a>00078 <span class="comment"> * Eliminates the columns corresponding to a list of eliminated parameters.</span>
<a name="l00079"></a>00079 <span class="comment"> */</span>
<a name="l00080"></a>00080 <span class="keywordtype">void</span> <a class="code" href="compress__parms_8c.html#a3efbee2cc61c1cfb2e0b05f3320a2e83" title="Eliminate the columns corresponding to a list of eliminated parameters.">Constraints_removeElimCols</a>(<a class="code" href="structmatrix.html">Matrix</a> * M, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nbVars, 
<a name="l00081"></a>00081                                 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *elimParms, <a class="code" href="structmatrix.html">Matrix</a> ** newM);
<a name="l00082"></a>00082 
<a name="l00083"></a>00083 
<a name="l00084"></a>00084 <span class="comment">/* ----- function applying on a lattice ----- */</span>
<a name="l00085"></a>00085 <span class="comment"></span>
<a name="l00086"></a>00086 <span class="comment">/**</span>
<a name="l00087"></a>00087 <span class="comment"> * Given a matrix that defines a full-dimensional affine lattice, returns the </span>
<a name="l00088"></a>00088 <span class="comment"> * affine sub-lattice spanned in the k first dimensions.</span>
<a name="l00089"></a>00089 <span class="comment"> * Useful for instance when you only look for the parameters&apos; validity lattice.</span>
<a name="l00090"></a>00090 <span class="comment"> */</span>
<a name="l00091"></a>00091 <span class="keywordtype">void</span> <a class="code" href="compress__parms_8c.html#a9a39676ea22cef575c08911c95badba2" title="Given a matrix that defines a full-dimensional affine lattice, returns the affine...">Lattice_extractSubLattice</a>(<a class="code" href="structmatrix.html">Matrix</a> * lat, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> k, <a class="code" href="structmatrix.html">Matrix</a> ** subLat);
<a name="l00092"></a>00092 
<a name="l00093"></a>00093 
<a name="l00094"></a>00094 <span class="comment">/* ----- functions applying on a polyhedron ----- */</span>
<a name="l00095"></a>00095 
<a name="l00096"></a>00096 
<a name="l00097"></a>00097 <a class="code" href="structpolyhedron.html">Polyhedron</a> * <a class="code" href="compress__parms_8c.html#a86df15994f14c73d49980bbf61f6f7e5" title="Removes equalities involving only parameters, but starting from a Polyhedron and...">Polyhedron_Remove_parm_eqs</a>(<a class="code" href="structpolyhedron.html">Polyhedron</a> ** P, <a class="code" href="structpolyhedron.html">Polyhedron</a> ** C, 
<a name="l00098"></a>00098                                       <span class="keywordtype">int</span> renderSpace, 
<a name="l00099"></a>00099                                       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ** elimParms, 
<a name="l00100"></a>00100                                       <span class="keywordtype">int</span> <a class="code" href="testCompressParms_8c.html#a508eb31b6faa4939e1c32adaef41b8c8">maxRays</a>);
<a name="l00101"></a><a class="code" href="compress__parms_8h.html#ac13a685844ce6cf46d6a5cfac856c551">00101</a> <span class="preprocessor">#define Polyhedron_removeParmEqs(a,b,c,d,e) Polyhedron_Remove_parm_eqs(a,b,c,d,e)</span>
<a name="l00102"></a>00102 <span class="preprocessor"></span>
<a name="l00103"></a>00103 
<a name="l00104"></a>00104 <span class="comment">/* ----- functions kept for backwards compatibility ----- */</span>
<a name="l00105"></a>00105 
<a name="l00106"></a>00106 <span class="comment"></span>
<a name="l00107"></a>00107 <span class="comment">/** </span>
<a name="l00108"></a>00108 <span class="comment"> * given a full-row-rank nxm matrix M(made of row-vectors), </span>
<a name="l00109"></a>00109 <span class="comment"> * computes the basis K (made of n-m column-vectors) of the integer kernel of M</span>
<a name="l00110"></a>00110 <span class="comment"> * so we have: M.K = 0</span>
<a name="l00111"></a>00111 <span class="comment">*/</span>
<a name="l00112"></a>00112 <a class="code" href="structmatrix.html">Matrix</a> * <a class="code" href="compress__parms_8c.html#ad66769b920ca4596c9fe5b76d38d0b3b" title="Given a full-row-rank nxm matrix M made of m row-vectors), computes the basis K (made...">int_ker</a>(<a class="code" href="structmatrix.html">Matrix</a> * M);
<a name="l00113"></a>00113 
<a name="l00114"></a>00114 <span class="comment">/* given a matrix of m parameterized equations, compress the parameters and</span>
<a name="l00115"></a>00115 <span class="comment"> transform the variable space into a n-m space. */</span>
<a name="l00116"></a>00116 <a class="code" href="structmatrix.html">Matrix</a> * <a class="code" href="compress__parms_8c.html#ab67657b853a34d82fdc72a3f771bc72c" title="Given a matrix with m parameterized equations, compress the nb_parms parameters and...">full_dimensionize</a>(<a class="code" href="structmatrix.html">Matrix</a> <span class="keyword">const</span> * M, <span class="keywordtype">int</span> nb_parms, 
<a name="l00117"></a>00117                            <a class="code" href="structmatrix.html">Matrix</a> ** Validity_Lattice);
<a name="l00118"></a>00118 
<a name="l00119"></a>00119 <span class="comment">/* Compute the overall period of the variables I for (MI) mod |d|,</span>
<a name="l00120"></a>00120 <span class="comment"> where M is a matrix and |d| a vector</span>
<a name="l00121"></a>00121 <span class="comment"> Produce a diagonal matrix S = (s_k) where s_k is the overall period of i_k */</span>
<a name="l00122"></a>00122 <a class="code" href="structmatrix.html">Matrix</a> * <a class="code" href="compress__parms_8c.html#abfe5775031fc1fc8b783ef3a248a18b0" title="Computes the overall period of the variables I for (MI) mod |d|, where M is a matrix...">affine_periods</a>(<a class="code" href="structmatrix.html">Matrix</a> * M, <a class="code" href="structmatrix.html">Matrix</a> * d);
<a name="l00123"></a>00123 
<a name="l00124"></a>00124 <span class="comment">/* given a matrix B&apos; with m rows and m-vectors C&apos; and d, computes the </span>
<a name="l00125"></a>00125 <span class="comment"> basis of the integer solutions to (B&apos;N+C&apos;) mod d = 0.</span>
<a name="l00126"></a>00126 <span class="comment">returns NULL if there is no integer solution */</span>
<a name="l00127"></a>00127 <a class="code" href="structmatrix.html">Matrix</a> * <a class="code" href="compress__parms_8c.html#a091ae8062b33511134d13b0035a56777" title="kept here for backwards compatiblity.">int_mod_basis</a>(<a class="code" href="structmatrix.html">Matrix</a> * Bp, <a class="code" href="structmatrix.html">Matrix</a> * Cp, <a class="code" href="structmatrix.html">Matrix</a> * d);
<a name="l00128"></a>00128 
<a name="l00129"></a>00129 <span class="comment">/* given a parameterized constraints matrix with m equalities, computes the</span>
<a name="l00130"></a>00130 <span class="comment"> compression matrix C such that there is an integer solution in the variables</span>
<a name="l00131"></a>00131 <span class="comment"> space for each value of N&apos;, with N = Cmp N&apos; (N are the original parameters) */</span>
<a name="l00132"></a>00132 <a class="code" href="structmatrix.html">Matrix</a> * <a class="code" href="compress__parms_8c.html#a4877b02bfffc51db4d9ac702475c3765" title="Given a parameterized constraints matrix with m equalities, computes the compression...">compress_parms</a>(<a class="code" href="structmatrix.html">Matrix</a> * E, <span class="keywordtype">int</span> nb_parms);
<a name="l00133"></a>00133 
<a name="l00134"></a>00134 
<a name="l00135"></a>00135 <span class="preprocessor">#endif </span><span class="comment">/* __BM_COMPRESS_PARMS_H__ */</span>
</pre></div></div>
<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Nov 25 17:45:25 2009 for polylib by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>