linear_constraint.h
Go to the documentation of this file.00001 #ifndef LINEARCONSTRAINT
00002 #define LINEARCONSTRAINT
00003
00004 #include "interval.h"
00005 #include "boolean.h"
00006 #include "box.h"
00007
00008 #include <stdio.h>
00009
00010
00023
00030 #define INIT_NUM_TERMS_LC 10
00031
00032
00050 typedef struct {
00051 unsigned int n;
00052 unsigned int max;
00053 unsigned int *ind;
00054 double *val;
00055 Tinterval error;
00056 } TLinearConstraint;
00057
00058
00066 void InitLinearConstraint(TLinearConstraint *lc);
00067
00068
00078 void ResetLinearConstraint(TLinearConstraint *lc);
00079
00088 void CopyLinearConstraint(TLinearConstraint *lc_dst,TLinearConstraint *lc_src);
00089
00090
00100 unsigned int GetNumTermsInLinearConstraint(TLinearConstraint *lc);
00101
00102
00112 double *GetLinearConstraintCoefficients(TLinearConstraint *lc);
00113
00114
00130 double GetLinearConstraintCoefficient(unsigned int i,TLinearConstraint *lc);
00131
00142 unsigned int *GetLinearConstraintVariables(TLinearConstraint *lc);
00143
00155 unsigned int GetLinearConstraintVariable(unsigned int i,TLinearConstraint *lc);
00156
00165 void GetLinearConstraintError(Tinterval *error,TLinearConstraint *lc);
00166
00175 void SetLinearConstraintError(Tinterval *error,TLinearConstraint *lc);
00176
00177
00187 void AddCt2LinearConstraint(double ct,TLinearConstraint *lc);
00188
00199 void AddTerm2LinearConstraint(unsigned int ind,double val,TLinearConstraint *lc);
00200
00211 double RemoveTermFromLinearConstraint(unsigned int ind,TLinearConstraint *lc);
00212
00213
00224 boolean LinearConstraintIncludes(unsigned int ind,TLinearConstraint *lc);
00225
00226
00234 void InvertLinearConstraint(TLinearConstraint *lc);
00235
00244 void ScaleLinearConstraint(double a,TLinearConstraint *lc);
00245
00246
00255 void AddLinearConstraints(TLinearConstraint *lc1,TLinearConstraint *lc);
00256
00275 void CleanLinearConstraint(double epsilon,Tinterval *is,TLinearConstraint *lc);
00276
00301 boolean SimplifyLinearConstraint(boolean *full,Tinterval *is,TLinearConstraint *lc);
00302
00329 unsigned int CropLinearConstraint(double epsilon,
00330 Tbox *b,
00331 TLinearConstraint *lc);
00332
00350 boolean CmpLinearConstraints(double *scaleOne2Two,TLinearConstraint *lc1,TLinearConstraint *lc2);
00351
00368 double EvaluateLinearConstraint(double *varValues,TLinearConstraint *lc);
00369
00382 void EvaluateLinearConstraintInt(Tinterval *varValues,Tinterval *i_out,TLinearConstraint *lc);
00383
00398 void PrintLinearConstraint(FILE *f,boolean eq,char **varName,TLinearConstraint *lc);
00399
00408 void SaveLinearConstraint(FILE *f,TLinearConstraint *lc);
00409
00418 void LoadLinearConstraint(FILE *f,TLinearConstraint *lc);
00419
00427 void DeleteLinearConstraint(TLinearConstraint *lc);
00428
00429 #endif