variable_set.h
Go to the documentation of this file.
1 #ifndef VARIABLESETH
2 #define VARIABLESETH
3 
4 #include "boolean.h"
5 #include "interval.h"
6 
7 #include <stdlib.h>
8 #include <stdio.h>
9 
10 
21 /************************************************************************************/
28 #define INIT_NUM_VARIABLES 10
29 /************************************************************************************/
30 
36 #define NFUN 0
37 
43 #define SINV 1
44 
50 #define COSV 2
51 
57 #define TANV 3
58 
65 #define SEC2V 4
66 
74 #define SEC2TANV 5
75 
81 #define EXPV 6
82 
89 #define PWPV 7
90 
97 #define PWLV 8
98 
105 #define PWCV 9
106 
131 typedef struct {
132  unsigned int nvars;
133  unsigned int maxvars;
134  unsigned int *var_id;
135  unsigned int *power;
136  unsigned int *fun;
137 } Tvariable_set;
138 
146 void InitVarSet(Tvariable_set *vs);
147 
148 
159 void ResetVarSet(Tvariable_set *vs);
160 
169 void CopyVarSet(Tvariable_set *vs_dst,Tvariable_set *vs_orig);
170 
186 void ShiftVarIndexes(unsigned int nv,Tvariable_set *vs);
187 
201 unsigned int CmpVarSet(Tvariable_set *vs1,Tvariable_set *vs2);
202 
213 boolean PolynomialVarSet(Tvariable_set *vs);
214 
226 unsigned int GetPlaceinSet(unsigned int id,Tvariable_set *vs);
227 
238 boolean VarIncluded(unsigned int id,Tvariable_set *vs);
239 
254 boolean Included(unsigned int id,unsigned int f,
255  unsigned int p,Tvariable_set *vs);
256 
266 boolean EmptyVarSet(Tvariable_set *vs);
267 
278 void AddVariable2Set(unsigned int f,unsigned int varid,unsigned int p,Tvariable_set *vs);
279 
292 
302 void RemoveVariableFromSet(unsigned int varid,Tvariable_set *vs);
303 
315 double FixVariableInVarSet(unsigned int varid,double ct,Tvariable_set *vs);
316 
330 double ReplaceVariableInVarSet(unsigned int varid,
331  double ct,unsigned int newID,Tvariable_set *vs);
332 
343 unsigned int VarSetOrder(Tvariable_set *vs);
344 
345 
355 unsigned int VariableSetSize(Tvariable_set *vs);
356 
369 unsigned int GetVariableN(unsigned int n,Tvariable_set *vs);
370 
380 unsigned int *GetVariables(Tvariable_set *vs);
381 
394 unsigned int GetVariablePowerN(unsigned int n,Tvariable_set *vs);
395 
409 unsigned int GetVariableFunctionN(unsigned int n,Tvariable_set *vs);
410 
420 unsigned int *GetPowers(Tvariable_set *vs);
421 
435 boolean VarSetIntersect(Tvariable_set *vs1,Tvariable_set *vs2);
436 
449 void UnionVarSet(boolean fun,Tvariable_set *vs_new,Tvariable_set *vs);
450 
451 
462 double EvaluateVarSet(double *varValues,Tvariable_set *vs);
463 
474 void EvaluateVarSetInt(Tinterval *varValues,Tinterval *i_out,Tvariable_set *vs);
475 
487 double DeriveVarSet(unsigned int nv,Tvariable_set *dvs,Tvariable_set *vs);
488 
489 
502 void PrintVarSet(FILE *f,char **varNames,Tvariable_set *vs);
503 
511 void DeleteVarSet(Tvariable_set *vs);
512 
513 #endif
Definition of the boolean type.
void DeleteVarSet(Tvariable_set *vs)
Destructor.
Definition: variable_set.c:852
boolean VarSetIntersect(Tvariable_set *vs1, Tvariable_set *vs2)
Checks if two variable sets have elements in common.
Definition: variable_set.c:205
void EvaluateVarSetInt(Tinterval *varValues, Tinterval *i_out, Tvariable_set *vs)
Evaluates a variable set for a given set of ranges for the variables.
Definition: variable_set.c:564
double FixVariableInVarSet(unsigned int varid, double ct, Tvariable_set *vs)
Replaces a variable by a constant.
Definition: variable_set.c:323
unsigned int * GetPowers(Tvariable_set *vs)
Gets the variable powers stored in a variable set.
Definition: variable_set.c:485
void CopyVarSet(Tvariable_set *vs_dst, Tvariable_set *vs_orig)
Copy constructor.
Definition: variable_set.c:84
double DeriveVarSet(unsigned int nv, Tvariable_set *dvs, Tvariable_set *vs)
Derives an variable set.
Definition: variable_set.c:657
unsigned int * var_id
Definition: variable_set.h:134
void UnionVarSet(boolean fun, Tvariable_set *vs_new, Tvariable_set *vs)
Produces a variable set that is the union of two variable sets.
Definition: variable_set.c:221
void PrintVarSet(FILE *f, char **varNames, Tvariable_set *vs)
Prints a variable set.
Definition: variable_set.c:774
boolean Included(unsigned int id, unsigned int f, unsigned int p, Tvariable_set *vs)
Checks if a variable index is included in a set of variable indexes with a given power.
Definition: variable_set.c:188
void ResetVarSet(Tvariable_set *vs)
Resets the information stored in a variable set.
Definition: variable_set.c:79
void RemoveVariableFromSet(unsigned int varid, Tvariable_set *vs)
Removes an element to a variable set.
Definition: variable_set.c:305
unsigned int CmpVarSet(Tvariable_set *vs1, Tvariable_set *vs2)
Variable set comparison.
Definition: variable_set.c:112
unsigned int GetPlaceinSet(unsigned int id, Tvariable_set *vs)
Gets the position of a variable index in a set of variable indexes.
Definition: variable_set.c:165
void AddVariable2Set(unsigned int f, unsigned int varid, unsigned int p, Tvariable_set *vs)
Adds an element to a variable set.
Definition: variable_set.c:265
boolean VarIncluded(unsigned int id, Tvariable_set *vs)
Checks if a variable index is included in a set of variable indexes.
Definition: variable_set.c:183
unsigned int GetVariableFunctionN(unsigned int n, Tvariable_set *vs)
Gets a variable function from a variable set.
Definition: variable_set.c:474
unsigned int GetVariableN(unsigned int n, Tvariable_set *vs)
Gets a variable identifier from a variable set.
Definition: variable_set.c:447
boolean PolynomialVarSet(Tvariable_set *vs)
Identifies polynomial variable sets.
Definition: variable_set.c:153
unsigned int GetVariablePowerN(unsigned int n, Tvariable_set *vs)
Gets a variable power from a variable set.
Definition: variable_set.c:463
unsigned int * fun
Definition: variable_set.h:136
void ShiftVarIndexes(unsigned int nv, Tvariable_set *vs)
Reduces the variable indexes above a given index.
Definition: variable_set.c:99
A set of variable indexes with powers.
Definition: variable_set.h:131
unsigned int nvars
Definition: variable_set.h:132
unsigned int VariableSetSize(Tvariable_set *vs)
Gets the number of elements of a variable set.
Definition: variable_set.c:442
unsigned int * power
Definition: variable_set.h:135
boolean EmptyVarSet(Tvariable_set *vs)
Checks if a variable set is empty.
Definition: variable_set.c:148
double EvaluateVarSet(double *varValues, Tvariable_set *vs)
Evaluates a variable set for a given set of value for the variables.
Definition: variable_set.c:490
unsigned int maxvars
Definition: variable_set.h:133
void ProductVarSet(Tvariable_set *vs1, Tvariable_set *vs2, Tvariable_set *v_out)
Product of two variable sets.
Definition: variable_set.c:282
unsigned int * GetVariables(Tvariable_set *vs)
Gets the variable identifiers stored in a variable set.
Definition: variable_set.c:458
double ReplaceVariableInVarSet(unsigned int varid, double ct, unsigned int newID, Tvariable_set *vs)
Replaces a variable by another variable.
Definition: variable_set.c:398
Defines a interval.
Definition: interval.h:33
unsigned int VarSetOrder(Tvariable_set *vs)
Gets the order of a variable set.
Definition: variable_set.c:423
void InitVarSet(Tvariable_set *vs)
Constructor.
Definition: variable_set.c:70
Definition of the Tinterval type and the associated functions.