equations.h
Go to the documentation of this file.00001 #ifndef EQUATIONSH
00002 #define EQUATIONSH
00003
00004 #include "boolean.h"
00005 #include "variables.h"
00006 #include "equation.h"
00007 #include "simplex.h"
00008
00009 #include <stdio.h>
00010
00018
00025 #define INIT_NUM_EQUATIONS 10
00026
00027
00039 typedef struct
00040 {
00041 Tequation *equation;
00043 unsigned int EqType;
00046 TLinearConstraint *lc;
00049 unsigned int n;
00051 Tequation **Jacobian;
00056 double **Hessian;
00061 } TequationInfo;
00062
00063
00077 typedef struct {
00078 unsigned int max;
00079 unsigned int n;
00080 unsigned int s;
00081 unsigned int c;
00082 unsigned int d;
00083 unsigned int e;
00084 TequationInfo **equation;
00085 } Tequations;
00086
00094 void InitEquations(Tequations *eqs);
00095
00104 void CopyEquations(Tequations *eqs_dst,Tequations *eqs_src);
00105
00117 boolean UsedVarInNonDummyEquations(unsigned int nv,Tequations *eqs);
00118
00129 boolean UsedVarInEquations(unsigned int nv,Tequations *eqs);
00130
00131
00149 void RemoveEquationsWithVar(double epsilon,unsigned int nv,Tequations *eqs);
00150
00151
00170 boolean ReplaceVariableInEquations(double epsilon,unsigned int nv,
00171 TLinearConstraint *lc,Tequations *eqs);
00172
00191 boolean GaussianElimination(Tequations *eqs);
00192
00202 unsigned int NEquations(Tequations *eqs);
00203
00213 unsigned int NSystemEquations(Tequations *eqs);
00214
00224 unsigned int NCoordEquations(Tequations *eqs);
00225
00235 unsigned int NDummyEquations(Tequations *eqs);
00236
00246 unsigned int NEqualityEquations(Tequations *eqs);
00247
00258 boolean IsSystemEquation(unsigned int i,Tequations *eqs);
00259
00270 boolean IsCoordEquation(unsigned int i,Tequations *eqs);
00271
00282 boolean IsDummyEquation(unsigned int i,Tequations *eqs);
00283
00295 unsigned int GetEquationTypeN(unsigned int i,Tequations *eqs);
00296
00307 boolean HasEquation(Tequation *equation,Tequations *eqs);
00308
00319 void AddEquation(Tequation *equation,Tequations *eqs);
00320
00329 Tequation *GetEquation(unsigned int n,Tequations *eqs);
00330
00341 TequationInfo *GetEquationInfo(unsigned int n,Tequations *eqs);
00342
00368 unsigned int CropEquation(unsigned int ne,
00369 double epsilon,double rho,
00370 Tbox *b,
00371 Tequations *eqs);
00372
00462 boolean AddEquation2Simplex(unsigned int ne,
00463 double lr2tm_q,double lr2tm_s,
00464 double epsilon,double rho,
00465 Tbox *b,Tvariables *vs,
00466 TSimplex *lp,Tequations *eqs);
00467
00482 void UpdateSplitWeight(unsigned int ne,double *splitDim,
00483 Tbox *b,Tequations *eqs);
00484
00498 void PrintEquations(FILE *f,char **varNames,Tequations *eqs);
00499
00508 void DeleteEquations(Tequations *eqs);
00509
00510 #endif