vector.h

Go to the documentation of this file.
00001 /*
00002  * vector.h: this file is part of the FM project.
00003  *
00004  * FM, a fast and optimized C implementation of Fourier-Motzkin
00005  * projection algorithm.
00006  *
00007  * Copyright (C) 2006,2007,2008 Louis-Noel Pouchet
00008  *
00009  * This program is free software; you can redistribute it and/or
00010  * modify it under the terms of the GNU Lesser General Public License
00011  * as published by the Free Software Foundation; either version 3
00012  * of the License, or (at your option) any later version.
00013  *
00014  * The complete GNU Lesser General Public Licence Notice can be found
00015  *  as the `COPYING.LESSER' file in the root directory.
00016  *
00017  * Author:
00018  * Louis-Noel Pouchet <Louis-Noel.Pouchet@inria.fr>
00019  *
00020  */
00021 #ifndef FM_VECTOR_H
00022 # define FM_VECTOR_H
00023 
00024 # include <fm/common.h>
00025 # include <fm/rational.h>
00026 
00027 BEGIN_C_DECLS
00028 
00029 struct s_fm_vector
00030 {
00031   size_t                size;
00032   s_fm_rational_t*      vector;
00033   z_type_t              key;
00034 };
00035 
00036 typedef struct s_fm_vector s_fm_vector_t;
00037 
00038 
00039 extern
00040 void
00041 fm_vector_compute_key(z_type_t* key, s_fm_vector_t* v);
00042 
00043 extern
00044 inline
00045 s_fm_vector_t*
00046 fm_vector_alloc (size_t size);
00047 
00048 extern
00049 inline
00050 s_fm_vector_t*
00051 fm_vector_dup (s_fm_vector_t* v1);
00052 
00053 extern
00054 inline
00055 int
00056 fm_vector_init (s_fm_vector_t* v, size_t size);
00057 
00058 extern
00059 inline
00060 void
00061 fm_vector_free (s_fm_vector_t* v);
00062 
00063 extern
00064 inline
00065 void
00066 fm_vector_read (FILE* stream, s_fm_vector_t* v, unsigned size);
00067 
00068 extern
00069 inline
00070 void
00071 fm_vector_print (FILE* stream, s_fm_vector_t* v);
00072 
00073 extern
00074 inline
00075 void
00076 fm_vector_set_ineq (s_fm_vector_t* v);
00077 
00078 extern
00079 inline
00080 void
00081 fm_vector_set_eq (s_fm_vector_t* v);
00082 
00083 extern
00084 inline
00085 int
00086 fm_vector_assign (s_fm_vector_t* v, s_fm_vector_t* v1);
00087 
00088 extern
00089 inline
00090 int
00091 fm_vector_assign_at (s_fm_vector_t* v, s_fm_vector_t* v1, unsigned idx);
00092 
00093 extern
00094 inline
00095 int
00096 fm_vector_assign_idx (s_fm_vector_t* v, s_fm_rational_t* r, unsigned idx);
00097 
00098 extern
00099 inline
00100 int
00101 fm_vector_expand (s_fm_vector_t* v, s_fm_vector_t* v1);
00102 
00103 extern
00104 inline
00105 int
00106 fm_vector_expand_at (s_fm_vector_t* v, s_fm_vector_t* v1, unsigned idx);
00107 
00108 extern
00109 inline
00110 int
00111 fm_vector_shrink (s_fm_vector_t* v, s_fm_vector_t* v1, unsigned idx);
00112 
00113 extern
00114 inline
00115 int
00116 fm_vector_assign_int_idx (s_fm_vector_t* v, z_type_t i, unsigned idx);
00117 
00118 extern
00119 inline
00120 int
00121 fm_vector_is_null (s_fm_vector_t* v);
00122 
00123 extern
00124 inline
00125 int
00126 fm_vector_is_empty (s_fm_vector_t* v);
00127 
00128 extern
00129 inline
00130 int
00131 fm_vector_is_valid (s_fm_vector_t* v);
00132 
00133 extern
00134 inline
00135 int
00136 fm_vector_is_scalar_cst (s_fm_vector_t* v);
00137 
00138 extern
00139 inline
00140 int
00141 fm_vector_opp (s_fm_vector_t* v, s_fm_vector_t* v1);
00142 
00143 extern
00144 inline
00145 int
00146 fm_vector_add (s_fm_vector_t* v, s_fm_vector_t* v1, s_fm_vector_t* v2);
00147 
00148 extern
00149 inline
00150 int
00151 fm_vector_sub (s_fm_vector_t* v, s_fm_vector_t* v1, s_fm_vector_t* v2);
00152 
00153 extern
00154 inline
00155 int
00156 fm_vector_normalize_idx (s_fm_vector_t* v, s_fm_vector_t* v1, unsigned idx);
00157 
00158 extern
00159 inline
00160 int
00161 fm_vector_to_z (s_fm_vector_t* v, s_fm_vector_t* v1);
00162 
00163 extern
00164 inline
00165 int
00166 fm_vector_resize (s_fm_vector_t* v, s_fm_vector_t* v1);
00167 
00168 extern
00169 inline
00170 int
00171 fm_vector_equal (s_fm_vector_t* v1, s_fm_vector_t* v2);
00172 
00173 extern
00174 inline
00175 int
00176 fm_vector_do_subsume (s_fm_vector_t* v1, s_fm_vector_t* v2);
00177 
00178 
00179 extern
00180 s_fm_vector_t*
00181 fm_vector_read_str (char* stream);
00182 
00183 
00184 END_C_DECLS
00185 
00186 
00187 #endif // FM_VECTOR_H

Generated on Fri Oct 31 00:49:13 2008 for FM by  doxygen 1.5.3